0x60806040523480156200001157600080fd5b506040518060400160405280600681526020017f5374616c696e00000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f5354414c494e000000000000000000000000000000000000000000000000000081525081600390816200008f919062000412565b508060049081620000a1919062000412565b505050620000c4620000b8620000ca60201b60201c565b620000d260201b60201c565b620004f9565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200021a57607f821691505b60208210810362000230576200022f620001d2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200029a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200025b565b620002a686836200025b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002f3620002ed620002e784620002be565b620002c8565b620002be565b9050919050565b6000819050919050565b6200030f83620002d2565b620003276200031e82620002fa565b84845462000268565b825550505050565b600090565b6200033e6200032f565b6200034b81848462000304565b505050565b5b8181101562000373576200036760008262000334565b60018101905062000351565b5050565b601f821115620003c2576200038c8162000236565b62000397846200024b565b81016020851015620003a7578190505b620003bf620003b6856200024b565b83018262000350565b50505b505050565b600082821c905092915050565b6000620003e760001984600802620003c7565b1980831691505092915050565b6000620004028383620003d4565b9150826002028217905092915050565b6200041d8262000198565b67ffffffffffffffff811115620004395762000438620001a3565b5b62000445825462000201565b6200045282828562000377565b600060209050601f8311600181146200048a576000841562000475578287015190505b620004818582620003f4565b865550620004f1565b601f1984166200049a8662000236565b60005b82811015620004c4578489015182556001820191506020850194506020810190506200049d565b86831015620004e45784890151620004e0601f891682620003d4565b8355505b6001600288020188555050505b505050505050565b6118db80620005096000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063715018a611610097578063a457c2d711610066578063a457c2d714610264578063a9059cbb14610294578063dd62ed3e146102c4578063f2fde38b146102f4576100f5565b8063715018a6146102145780638da5cb5b1461021e57806395d89b411461023c578063a1ee8c781461025a576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806370a08231146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610310565b60405161010f9190611024565b60405180910390f35b610132600480360381019061012d91906110df565b6103a2565b60405161013f919061113a565b60405180910390f35b6101506103c5565b60405161015d9190611164565b60405180910390f35b610180600480360381019061017b919061117f565b6103cf565b60405161018d919061113a565b60405180910390f35b61019e6103fe565b6040516101ab91906111ee565b60405180910390f35b6101ce60048036038101906101c991906110df565b610407565b6040516101db919061113a565b60405180910390f35b6101fe60048036038101906101f99190611209565b61043e565b60405161020b9190611164565b60405180910390f35b61021c610486565b005b61022661050e565b6040516102339190611245565b60405180910390f35b610244610538565b6040516102519190611024565b60405180910390f35b6102626105ca565b005b61027e600480360381019061027991906110df565b610671565b60405161028b919061113a565b60405180910390f35b6102ae60048036038101906102a991906110df565b6106e8565b6040516102bb919061113a565b60405180910390f35b6102de60048036038101906102d99190611260565b61070b565b6040516102eb9190611164565b60405180910390f35b61030e60048036038101906103099190611209565b610792565b005b60606003805461031f906112cf565b80601f016020809104026020016040519081016040528092919081815260200182805461034b906112cf565b80156103985780601f1061036d57610100808354040283529160200191610398565b820191906000526020600020905b81548152906001019060200180831161037b57829003601f168201915b5050505050905090565b6000806103ad610889565b90506103ba818585610891565b600191505092915050565b6000600254905090565b6000806103da610889565b90506103e7858285610a5a565b6103f2858585610ae6565b60019150509392505050565b60006012905090565b600080610412610889565b9050610433818585610424858961070b565b61042e919061132f565b610891565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61048e610889565b73ffffffffffffffffffffffffffffffffffffffff166104ac61050e565b73ffffffffffffffffffffffffffffffffffffffff1614610502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f9906113af565b60405180910390fd5b61050c6000610d65565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610547906112cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610573906112cf565b80156105c05780601f10610595576101008083540402835291602001916105c0565b820191906000526020600020905b8154815290600101906020018083116105a357829003601f168201915b5050505050905090565b6105d2610889565b73ffffffffffffffffffffffffffffffffffffffff166105f061050e565b73ffffffffffffffffffffffffffffffffffffffff1614610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063d906113af565b60405180910390fd5b61066f7303ea5a10d8c9f0f48960386950df7931880ce5926a52b7d2dcc80cd2e4000000610e2b565b565b60008061067c610889565b9050600061068a828661070b565b9050838110156106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690611441565b60405180910390fd5b6106dc8286868403610891565b60019250505092915050565b6000806106f3610889565b9050610700818585610ae6565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61079a610889565b73ffffffffffffffffffffffffffffffffffffffff166107b861050e565b73ffffffffffffffffffffffffffffffffffffffff161461080e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610805906113af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361087d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610874906114d3565b60405180910390fd5b61088681610d65565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f790611565565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361096f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610966906115f7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a4d9190611164565b60405180910390a3505050565b6000610a66848461070b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ae05781811015610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac990611663565b60405180910390fd5b610adf8484848403610891565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c906116f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90611787565b60405180910390fd5b610bcf838383610f8a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4c90611819565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ce8919061132f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d4c9190611164565b60405180910390a3610d5f848484610f8f565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190611885565b60405180910390fd5b610ea660008383610f8a565b8060026000828254610eb8919061132f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f0d919061132f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f729190611164565b60405180910390a3610f8660008383610f8f565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610fce578082015181840152602081019050610fb3565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ff682610f94565b6110008185610f9f565b9350611010818560208601610fb0565b61101981610fda565b840191505092915050565b6000602082019050818103600083015261103e8184610feb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110768261104b565b9050919050565b6110868161106b565b811461109157600080fd5b50565b6000813590506110a38161107d565b92915050565b6000819050919050565b6110bc816110a9565b81146110c757600080fd5b50565b6000813590506110d9816110b3565b92915050565b600080604083850312156110f6576110f5611046565b5b600061110485828601611094565b9250506020611115858286016110ca565b9150509250929050565b60008115159050919050565b6111348161111f565b82525050565b600060208201905061114f600083018461112b565b92915050565b61115e816110a9565b82525050565b60006020820190506111796000830184611155565b92915050565b60008060006060848603121561119857611197611046565b5b60006111a686828701611094565b93505060206111b786828701611094565b92505060406111c8868287016110ca565b9150509250925092565b600060ff82169050919050565b6111e8816111d2565b82525050565b600060208201905061120360008301846111df565b92915050565b60006020828403121561121f5761121e611046565b5b600061122d84828501611094565b91505092915050565b61123f8161106b565b82525050565b600060208201905061125a6000830184611236565b92915050565b6000806040838503121561127757611276611046565b5b600061128585828601611094565b925050602061129685828601611094565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806112e757607f821691505b6020821081036112fa576112f96112a0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061133a826110a9565b9150611345836110a9565b925082820190508082111561135d5761135c611300565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611399602083610f9f565b91506113a482611363565b602082019050919050565b600060208201905081810360008301526113c88161138c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061142b602583610f9f565b9150611436826113cf565b604082019050919050565b6000602082019050818103600083015261145a8161141e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006114bd602683610f9f565b91506114c882611461565b604082019050919050565b600060208201905081810360008301526114ec816114b0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061154f602483610f9f565b915061155a826114f3565b604082019050919050565b6000602082019050818103600083015261157e81611542565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006115e1602283610f9f565b91506115ec82611585565b604082019050919050565b60006020820190508181036000830152611610816115d4565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061164d601d83610f9f565b915061165882611617565b602082019050919050565b6000602082019050818103600083015261167c81611640565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006116df602583610f9f565b91506116ea82611683565b604082019050919050565b6000602082019050818103600083015261170e816116d2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611771602383610f9f565b915061177c82611715565b604082019050919050565b600060208201905081810360008301526117a081611764565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611803602683610f9f565b915061180e826117a7565b604082019050919050565b60006020820190508181036000830152611832816117f6565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061186f601f83610f9f565b915061187a82611839565b602082019050919050565b6000602082019050818103600083015261189e81611862565b905091905056fea2646970667358221220ec51b702999b5d697c54f10d9d3c660633eb4e9e98d14a110707f054018e52cc64736f6c63430008120033