60806040523480156200001157600080fd5b50604051620026bd380380620026bd8339818101604052810190620000379190620002d4565b6040518060400160405280601081526020017f43727970746f2044657620546f6b656e000000000000000000000000000000008152506040518060400160405280600281526020017f43440000000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb9291906200020d565b508060049080519060200190620000d49291906200020d565b505050620000f7620000eb6200013f60201b60201c565b6200014760201b60201c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620003b3565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200021b9062000334565b90600052602060002090601f0160209004810192826200023f57600085556200028b565b82601f106200025a57805160ff19168380011785556200028b565b828001600101855582156200028b579182015b828111156200028a5782518255916020019190600101906200026d565b5b5090506200029a91906200029e565b5090565b5b80821115620002b95760008160009055506001016200029f565b5090565b600081519050620002ce8162000399565b92915050565b600060208284031215620002e757600080fd5b6000620002f784828501620002bd565b91505092915050565b60006200030d8262000314565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200034d57607f821691505b602082108114156200036457620003636200036a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620003a48162000300565b8114620003b057600080fd5b50565b6122fa80620003c36000396000f3fe60806040526004361061012e5760003560e01c80635f3690af116100ab57806395d89b411161006f57806395d89b41146103da578063a0712d6814610405578063a457c2d714610421578063a9059cbb1461045e578063dd62ed3e1461049b578063f2fde38b146104d857610135565b80635f3690af146102f357806370a0823114610330578063715018a61461036d5780637ff9b596146103845780638da5cb5b146103af57610135565b8063313ce567116100f2578063313ce56714610232578063395093511461025d5780633ccfd60b1461029a5780634e71d92d146102b15780635afcc2f5146102c857610135565b806306fdde0314610137578063095ea7b31461016257806318160ddd1461019f57806323b872dd146101ca5780632ab4d0521461020757610135565b3661013557005b005b34801561014357600080fd5b5061014c610501565b60405161015991906119e6565b60405180910390f35b34801561016e57600080fd5b506101896004803603810190610184919061161c565b610593565b60405161019691906119cb565b60405180910390f35b3480156101ab57600080fd5b506101b46105b6565b6040516101c19190611c08565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec91906115cd565b6105c0565b6040516101fe91906119cb565b60405180910390f35b34801561021357600080fd5b5061021c6105ef565b6040516102299190611c08565b60405180910390f35b34801561023e57600080fd5b506102476105fd565b6040516102549190611c23565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f919061161c565b610606565b60405161029191906119cb565b60405180910390f35b3480156102a657600080fd5b506102af61063d565b005b3480156102bd57600080fd5b506102c661074a565b005b3480156102d457600080fd5b506102dd6109d9565b6040516102ea9190611c08565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190611658565b6109e5565b60405161032791906119cb565b60405180910390f35b34801561033c57600080fd5b5061035760048036038101906103529190611568565b610a05565b6040516103649190611c08565b60405180910390f35b34801561037957600080fd5b50610382610a4d565b005b34801561039057600080fd5b50610399610a61565b6040516103a69190611c08565b60405180910390f35b3480156103bb57600080fd5b506103c4610a6c565b6040516103d19190611987565b60405180910390f35b3480156103e657600080fd5b506103ef610a96565b6040516103fc91906119e6565b60405180910390f35b61041f600480360381019061041a9190611658565b610b28565b005b34801561042d57600080fd5b506104486004803603810190610443919061161c565b610c08565b60405161045591906119cb565b60405180910390f35b34801561046a57600080fd5b506104856004803603810190610480919061161c565b610c7f565b60405161049291906119cb565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd9190611591565b610ca2565b6040516104cf9190611c08565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa9190611568565b610d29565b005b60606003805461051090611d9d565b80601f016020809104026020016040519081016040528092919081815260200182805461053c90611d9d565b80156105895780601f1061055e57610100808354040283529160200191610589565b820191906000526020600020905b81548152906001019060200180831161056c57829003601f168201915b5050505050905090565b60008061059e610dad565b90506105ab818585610db5565b600191505092915050565b6000600254905090565b6000806105cb610dad565b90506105d8858285610f80565b6105e385858561100c565b60019150509392505050565b69021e19e0c9bab240000081565b60006012905090565b600080610611610dad565b90506106328185856106238589610ca2565b61062d9190611c65565b610db5565b600191505092915050565b610645611284565b60004790506000811161068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068490611b28565b60405180910390fd5b6000610697610a6c565b905060008173ffffffffffffffffffffffffffffffffffffffff16836040516106bf90611972565b60006040518083038185875af1925050503d80600081146106fc576040519150601f19603f3d011682016040523d82523d6000602084013e610701565b606091505b5050905080610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073c90611ae8565b60405180910390fd5b505050565b60003390506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016107ac9190611987565b60206040518083038186803b1580156107c457600080fd5b505afa1580156107d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fc9190611681565b905060008111610841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083890611b88565b60405180910390fd5b6000805b82811015610973576000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c5986846040518363ffffffff1660e01b81526004016108ac9291906119a2565b60206040518083038186803b1580156108c457600080fd5b505afa1580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611681565b90506007600082815260200190815260200160002060009054906101000a900460ff1661095f576001836109309190611c65565b925060016007600083815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50808061096b90611dcf565b915050610845565b50600081116109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae90611aa8565b60405180910390fd5b6109d433678ac7230489e80000836109cf9190611cbb565b611302565b505050565b678ac7230489e8000081565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a55611284565b610a5f6000611459565b565b66038d7ea4c6800081565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610aa590611d9d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad190611d9d565b8015610b1e5780601f10610af357610100808354040283529160200191610b1e565b820191906000526020600020905b815481529060010190602001808311610b0157829003601f168201915b5050505050905090565b60008166038d7ea4c68000610b3d9190611cbb565b905080341015610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7990611a28565b60405180910390fd5b6000670de0b6b3a764000083610b989190611cbb565b905069021e19e0c9bab240000081610bae6105b6565b610bb89190611c65565b1115610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090611b48565b60405180910390fd5b610c033382611302565b505050565b600080610c13610dad565b90506000610c218286610ca2565b905083811015610c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5d90611bc8565b60405180910390fd5b610c738286868403610db5565b60019250505092915050565b600080610c8a610dad565b9050610c9781858561100c565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d31611284565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890611a48565b60405180910390fd5b610daa81611459565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1c90611ba8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8c90611a68565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f739190611c08565b60405180910390a3505050565b6000610f8c8484610ca2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110065781811015610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef90611a88565b60405180910390fd5b6110058484848403610db5565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561107c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107390611b68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e390611a08565b60405180910390fd5b6110f783838361151f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490611ac8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161126b9190611c08565b60405180910390a361127e848484611524565b50505050565b61128c610dad565b73ffffffffffffffffffffffffffffffffffffffff166112aa610a6c565b73ffffffffffffffffffffffffffffffffffffffff1614611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f790611b08565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136990611be8565b60405180910390fd5b61137e6000838361151f565b80600260008282546113909190611c65565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114419190611c08565b60405180910390a361145560008383611524565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b60008135905061153881612296565b92915050565b60008135905061154d816122ad565b92915050565b600081519050611562816122ad565b92915050565b60006020828403121561157a57600080fd5b600061158884828501611529565b91505092915050565b600080604083850312156115a457600080fd5b60006115b285828601611529565b92505060206115c385828601611529565b9150509250929050565b6000806000606084860312156115e257600080fd5b60006115f086828701611529565b935050602061160186828701611529565b92505060406116128682870161153e565b9150509250925092565b6000806040838503121561162f57600080fd5b600061163d85828601611529565b925050602061164e8582860161153e565b9150509250929050565b60006020828403121561166a57600080fd5b60006116788482850161153e565b91505092915050565b60006020828403121561169357600080fd5b60006116a184828501611553565b91505092915050565b6116b381611d15565b82525050565b6116c281611d27565b82525050565b60006116d382611c3e565b6116dd8185611c54565b93506116ed818560208601611d6a565b6116f681611e76565b840191505092915050565b600061170e602383611c54565b915061171982611e87565b604082019050919050565b6000611731601783611c54565b915061173c82611ed6565b602082019050919050565b6000611754602683611c54565b915061175f82611eff565b604082019050919050565b6000611777602283611c54565b915061178282611f4e565b604082019050919050565b600061179a601d83611c54565b91506117a582611f9d565b602082019050919050565b60006117bd602783611c54565b91506117c882611fc6565b604082019050919050565b60006117e0602683611c54565b91506117eb82612015565b604082019050919050565b6000611803601483611c54565b915061180e82612064565b602082019050919050565b6000611826602083611c54565b91506118318261208d565b602082019050919050565b6000611849602b83611c54565b9150611854826120b6565b604082019050919050565b600061186c602783611c54565b915061187782612105565b604082019050919050565b600061188f602583611c54565b915061189a82612154565b604082019050919050565b60006118b2602083611c54565b91506118bd826121a3565b602082019050919050565b60006118d5600083611c49565b91506118e0826121cc565b600082019050919050565b60006118f8602483611c54565b9150611903826121cf565b604082019050919050565b600061191b602583611c54565b91506119268261221e565b604082019050919050565b600061193e601f83611c54565b91506119498261226d565b602082019050919050565b61195d81611d53565b82525050565b61196c81611d5d565b82525050565b600061197d826118c8565b9150819050919050565b600060208201905061199c60008301846116aa565b92915050565b60006040820190506119b760008301856116aa565b6119c46020830184611954565b9392505050565b60006020820190506119e060008301846116b9565b92915050565b60006020820190508181036000830152611a0081846116c8565b905092915050565b60006020820190508181036000830152611a2181611701565b9050919050565b60006020820190508181036000830152611a4181611724565b9050919050565b60006020820190508181036000830152611a6181611747565b9050919050565b60006020820190508181036000830152611a818161176a565b9050919050565b60006020820190508181036000830152611aa18161178d565b9050919050565b60006020820190508181036000830152611ac1816117b0565b9050919050565b60006020820190508181036000830152611ae1816117d3565b9050919050565b60006020820190508181036000830152611b01816117f6565b9050919050565b60006020820190508181036000830152611b2181611819565b9050919050565b60006020820190508181036000830152611b418161183c565b9050919050565b60006020820190508181036000830152611b618161185f565b9050919050565b60006020820190508181036000830152611b8181611882565b9050919050565b60006020820190508181036000830152611ba1816118a5565b9050919050565b60006020820190508181036000830152611bc1816118eb565b9050919050565b60006020820190508181036000830152611be18161190e565b9050919050565b60006020820190508181036000830152611c0181611931565b9050919050565b6000602082019050611c1d6000830184611954565b92915050565b6000602082019050611c386000830184611963565b92915050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000611c7082611d53565b9150611c7b83611d53565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611cb057611caf611e18565b5b828201905092915050565b6000611cc682611d53565b9150611cd183611d53565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d0a57611d09611e18565b5b828202905092915050565b6000611d2082611d33565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611d88578082015181840152602081019050611d6d565b83811115611d97576000848401525b50505050565b60006002820490506001821680611db557607f821691505b60208210811415611dc957611dc8611e47565b5b50919050565b6000611dda82611d53565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611e0d57611e0c611e18565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45746865722073656e7420697320696e636f7272656374000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f596f75206861766520616c726561647920636c61696d656420616c6c2074686560008201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f7468696e6720746f2077697468647261772c20636f6e747261637420626160008201527f6c616e636520656d707479000000000000000000000000000000000000000000602082015250565b7f4578636565647320746865206d617820746f74616c20737570706c792061766160008201527f696c61626c652e00000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520646f6e2774206f776e20616e792043727970746f20446576204e4654600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61229f81611d15565b81146122aa57600080fd5b50565b6122b681611d53565b81146122c157600080fd5b5056fea2646970667358221220974cef4229338168435d9caec16b996f4a68aa80cfac73d693635c97ad5c6db564736f6c63430008040033000000000000000000000000e0ff5d1f58b7ae241bc95030dc7117be9dc8962f