6080604052601460055560146006553480156200001b57600080fd5b50604080518082018252600a815269446f67652053746f726d60b01b60208083019182528351808501909452600584526453544f524d60d81b908401528151919291633b9aca00916200007291600391906200011e565b508151620000889060049060208501906200011e565b50600780546001600160a01b031916331790556012620000aa90600a620002d9565b620000b69082620002f1565b6002819055600780546001600160a01b0390811660009081526020818152604080832086905593549351948552929091169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505062000350565b8280546200012c9062000313565b90600052602060002090601f0160209004810192826200015057600085556200019b565b82601f106200016b57805160ff19168380011785556200019b565b828001600101855582156200019b579182015b828111156200019b5782518255916020019190600101906200017e565b50620001a9929150620001ad565b5090565b5b80821115620001a95760008155600101620001ae565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200021b578160001904821115620001ff57620001ff620001c4565b808516156200020d57918102915b93841c9390800290620001df565b509250929050565b6000826200023457506001620002d3565b816200024357506000620002d3565b81600181146200025c5760028114620002675762000287565b6001915050620002d3565b60ff8411156200027b576200027b620001c4565b50506001821b620002d3565b5060208310610133831016604e8410600b8410161715620002ac575081810a620002d3565b620002b88383620001da565b8060001904821115620002cf57620002cf620001c4565b0290505b92915050565b6000620002ea60ff84168362000223565b9392505050565b60008160001904831182151516156200030e576200030e620001c4565b500290565b600181811c908216806200032857607f821691505b602082108114156200034a57634e487b7160e01b600052602260045260246000fd5b50919050565b6114d180620003606000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806380bc60da1161010f578063b8ced735116100a2578063dc8889d811610071578063dc8889d814610438578063dd62ed3e1461044b578063e91e2f6d1461045e578063fb361f811461047157600080fd5b8063b8ced735146103f6578063cc1776d314610409578063d6cd9e5414610412578063dc1052e21461042557600080fd5b80639c9457ff116100de5780639c9457ff146103b55780639e5d6726146103c8578063a9059cbb146103db578063b8963681146103ee57600080fd5b806380bc60da146103675780638cd09d501461036f5780638da5cb5b1461038257806395d89b41146103ad57600080fd5b8063313ce5671161018757806370a082311161015657806370a08231146102f4578063715018a61461031d57806378cb3d1c146103275780637e34ec2d1461033a57600080fd5b8063313ce567146102b65780634f7041a5146102c557806353e4a12e146102ce57806358caf294146102e157600080fd5b806323b872dd116101c357806323b872dd1461025b57806328345bfa1461026e5780632aeb68c4146102815780632f54bf6e1461029457600080fd5b806306fdde03146101f5578063095ea7b31461021357806318160ddd146102365780631c11cc6a14610248575b600080fd5b6101fd610479565b60405161020a9190611161565b60405180910390f35b6102266102213660046111d2565b61050b565b604051901515815260200161020a565b6002545b60405190815260200161020a565b6102266102563660046111fc565b610525565b61022661026936600461121e565b6105a6565b61022661027c3660046111fc565b6105c1565b61022661028f36600461125a565b6105f0565b6102266102a23660046111fc565b6007546001600160a01b0391821691161490565b6040516012815260200161020a565b61023a60055481565b6102266102dc3660046111fc565b610707565b6102266102ef36600461125a565b610784565b61023a6103023660046111fc565b6001600160a01b031660009081526020819052604090205490565b61032561081d565b005b61022661033536600461125a565b6108a0565b6102266103483660046111fc565b600c81901a60f890811b6001600160f81b03199081169290911b161490565b61022661095a565b61032561037d366004611297565b610971565b600754610395906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b6101fd6109e9565b6102266103c3366004611297565b6109f8565b6102266103d63660046112b0565b610a0f565b6102266103e93660046111d2565b610a7a565b610226610a89565b61022661040436600461125a565b610ac7565b61023a60065481565b6102266104203660046111fc565b610b88565b610325610433366004611297565b610bf0565b6102266104463660046111fc565b610c62565b61023a6104593660046112e9565b610ce4565b61022661046c3660046111fc565b610d0f565b610226610d1d565b6060600380546104889061131c565b80601f01602080910402602001604051908101604052809291908181526020018280546104b49061131c565b80156105015780601f106104d657610100808354040283529160200191610501565b820191906000526020600020905b8154815290600101906020018083116104e457829003601f168201915b5050505050905090565b600033610519818585610d4e565b60019150505b92915050565b6000606082901b8161053c6002600c86901a611383565b60ff1615905060015b601481101561059b57811515600284836014811061056557610565611357565b6105719291901a611383565b60ff1615141561058657506000949350505050565b90159080610593816113bb565b915050610545565b506001949350505050565b6000336105b4858285610e72565b61059b8585856001610eec565b600033816105cf8285610ce4565b90506105e682856105e18460026113d6565b610d4e565b5060019392505050565b600060018260ff16118015610609575060148260ff1611155b61065a5760405162461bcd60e51b815260206004820152601e60248201527f436f756e74206d757374206265206265747765656e203220616e64203230000060448201526064015b60405180910390fd5b606083901b6001805b60148110156106fb57826106786001836113f5565b6014811061068857610688611357565b1a60f81b6001600160f81b0319168382601481106106a8576106a8611357565b1a60f81b6001600160f81b03191614156106e457816106c6816113bb565b9250508460ff1682106106df576001935050505061051f565b6106e9565b600191505b806106f3816113bb565b915050610663565b50600095945050505050565b6000606082901b815b600a8110156105e657816107258260136113f5565b6014811061073557610735611357565b1a60f81b6001600160f81b03191682826014811061075557610755611357565b1a60f81b6001600160f81b03191614610772575060009392505050565b8061077c816113bb565b915050610710565b600060648260ff1611156107da5760405162461bcd60e51b815260206004820152601c60248201527f50657263656e746167652063616e6e6f742065786365656420313030000000006044820152606401610651565b3360006107e78286610ce4565b9050600060646107fa60ff8716846113d6565b610804919061140c565b9050610811838783610d4e565b50600195945050505050565b6007546001600160a01b0316336001600160a01b0316146108505760405162461bcd60e51b815260040161065190611420565b60075460405161dead916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600780546001600160a01b03191661dead179055565b6000808260ff16116108fe5760405162461bcd60e51b815260206004820152602160248201527f44697669736f72206d7573742062652067726561746572207468616e207a65726044820152606f60f81b6064820152608401610651565b606083901b6000805b60148110156109425782816014811061092257610922611357565b61092e91901a8361146f565b91508061093a816113bb565b915050610907565b5061095060ff851682611487565b1595945050505050565b6000603c61096b6201518042611487565b10905090565b6007546001600160a01b0316336001600160a01b0316146109a45760405162461bcd60e51b815260040161065190611420565b600681905560055460408051918252602082018390527fb841faf0d1b32571f4ef966a2f35e3ae51f3cdda45318c3da5570a5b2ad8560591015b60405180910390a150565b6060600480546104889061131c565b600033610a06818085610d4e565b50600192915050565b6000606083901b815b6014811015610a6f576001600160f81b03198416828260148110610a3e57610a3e611357565b1a60f81b6001600160f81b0319161415610a5d5760019250505061051f565b80610a67816113bb565b915050610a18565b506000949350505050565b60003361051981858585610eec565b6000806007610a9b620151804261140c565b610aa690600461146f565b610ab09190611487565b90508060051480610ac15750806006145b91505090565b600060148260ff161115610b335760405162461bcd60e51b815260206004820152602d60248201527f4e756d626572206f66206c656164696e67207a65726f2062797465732063616e60448201526c06e6f742065786365656420323609c1b6064820152608401610651565b606083901b60005b8360ff1681101561059b57818160148110610b5857610b58611357565b1a60f81b6001600160f81b03191615610b765760009250505061051f565b80610b80816113bb565b915050610b3b565b6000606082901b600c83901a60f81b60015b601481101561059b576001600160f81b03198216838260148110610bc057610bc0611357565b1a60f81b6001600160f81b03191614610bde57506000949350505050565b80610be8816113bb565b915050610b9a565b6007546001600160a01b0316336001600160a01b031614610c235760405162461bcd60e51b815260040161065190611420565b60058190556006546040805183815260208101929092527fb841faf0d1b32571f4ef966a2f35e3ae51f3cdda45318c3da5570a5b2ad8560591016109de565b6000606082901b815b60138110156105e65781610c8082600161146f565b60148110610c9057610c90611357565b1a60f81b6001600160f81b031916828260148110610cb057610cb0611357565b1a60f81b6001600160f81b03191614610cc857610cd2565b5060009392505050565b80610cdc816113bb565b915050610c6b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600033610a06818484610d4e565b600080601e610d2f620151804261140c565b610d399190611487565b610d4490600161146f565b600f101592915050565b6001600160a01b038316610db05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610651565b6001600160a01b038216610e115760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610651565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610e7e8484610ce4565b90506000198114610ee65781811015610ed95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610651565b610ee68484848403610d4e565b50505050565b6001600160a01b038416610f505760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610651565b6001600160a01b038316610fb25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610651565b6001600160a01b0384166000908152602081905260409020548281101561102a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610651565b6000826110505760646005548561104191906113d6565b61104b919061140c565b61106a565b60646006548561106091906113d6565b61106a919061140c565b9050600061107882866113f5565b6001600160a01b038881166000818152602081815260408083208b8a039055938b168083529184902080548601905592518481529394509290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a38115611158576007546001600160a01b03166000908152602081905260408120805484929061110d90849061146f565b90915550506007546040518381526001600160a01b03918216918916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505050505050565b600060208083528351808285015260005b8181101561118e57858101830151858201604001528201611172565b818111156111a0576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146111cd57600080fd5b919050565b600080604083850312156111e557600080fd5b6111ee836111b6565b946020939093013593505050565b60006020828403121561120e57600080fd5b611217826111b6565b9392505050565b60008060006060848603121561123357600080fd5b61123c846111b6565b925061124a602085016111b6565b9150604084013590509250925092565b6000806040838503121561126d57600080fd5b611276836111b6565b9150602083013560ff8116811461128c57600080fd5b809150509250929050565b6000602082840312156112a957600080fd5b5035919050565b600080604083850312156112c357600080fd5b6112cc836111b6565b915060208301356001600160f81b03198116811461128c57600080fd5b600080604083850312156112fc57600080fd5b611305836111b6565b9150611313602084016111b6565b90509250929050565b600181811c9082168061133057607f821691505b6020821081141561135157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600060ff8316806113965761139661136d565b8060ff84160691505092915050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156113cf576113cf6113a5565b5060010190565b60008160001904831182151516156113f0576113f06113a5565b500290565b600082821015611407576114076113a5565b500390565b60008261141b5761141b61136d565b500490565b6020808252602f908201527f4f6e6c792074686520636f6e7472616374206f776e65722063616e2063616c6c60408201526e103a3434b990333ab731ba34b7b71760891b606082015260800190565b60008219821115611482576114826113a5565b500190565b6000826114965761149661136d565b50069056fea2646970667358221220a1439702b09d18bc2e39c358b466a2dec438365119fab69afb09dbd24af2231f64736f6c63430008090033