60806040523480156200001157600080fd5b50604080518082018252601a81527f436f696e626173652043617264205465616d205265776172647300000000000060208083019182528351808501909452600484526310d0549160e21b908401528151919291620000739160009162000102565b5080516200008990600190602084019062000102565b505050620000a6620000a0620000ac60201b60201c565b620000b0565b620001e5565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200011090620001a8565b90600052602060002090601f0160209004810192826200013457600085556200017f565b82601f106200014f57805160ff19168380011785556200017f565b828001600101855582156200017f579182015b828111156200017f57825182559160200191906001019062000162565b506200018d92915062000191565b5090565b5b808211156200018d576000815560010162000192565b600181811c90821680620001bd57607f821691505b60208210811415620001df57634e487b7160e01b600052602260045260246000fd5b50919050565b611e4680620001f56000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80636352211e116100c3578063b88d4fde1161007c578063b88d4fde146102b1578063c87b56dd146102c4578063e8a3d485146102d7578063e985e9c5146102df578063ed4581ba1461031b578063f2fde38b1461032e57600080fd5b80636352211e1461025757806370a082311461026a578063715018a61461027d5780638da5cb5b1461028557806395d89b4114610296578063a22cb4651461029e57600080fd5b8063110bcd4511610115578063110bcd45146101e257806318160ddd146101f5578063230c32fd1461020b57806323b872dd1461021e5780632b2336371461023157806342842e0e1461024457600080fd5b806301ffc9a71461015257806306fdde031461017a578063079c66c01461018f578063081812fc146101a4578063095ea7b3146101cf575b600080fd5b6101656101603660046115f0565b610341565b60405190151581526020015b60405180910390f35b610182610393565b6040516101719190611665565b6101a261019d3660046117e9565b610425565b005b6101b76101b236600461184d565b61049e565b6040516001600160a01b039091168152602001610171565b6101a26101dd366004611866565b610526565b6101a26101f0366004611890565b610637565b6101fd610690565b604051908152602001610171565b6101a26102193660046118d4565b6106a0565b6101a261022c36600461192b565b6106f7565b6101a261023f3660046119e7565b610728565b6101a261025236600461192b565b610793565b6101b761026536600461184d565b6107ae565b6101fd610278366004611a2b565b610825565b6101a26108ac565b6007546001600160a01b03166101b7565b6101826108e2565b6101a26102ac366004611a46565b6108f1565b6101a26102bf366004611a82565b610900565b6101826102d236600461184d565b610932565b610182610ab8565b6101656102ed366004611afe565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101a2610329366004611b31565b610ad8565b6101a261033c366004611a2b565b610ba0565b60006001600160e01b031982166380ac58cd60e01b148061037257506001600160e01b03198216635b5e139f60e01b145b8061038d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103a290611b8b565b80601f01602080910402602001604051908101604052809291908181526020018280546103ce90611b8b565b801561041b5780601f106103f05761010080835404028352916020019161041b565b820191906000526020600020905b8154815290600101906020018083116103fe57829003601f168201915b5050505050905090565b6007546001600160a01b031633146104585760405162461bcd60e51b815260040161044f90611bc6565b60405180910390fd5b60005b82518110156104995761048783828151811061047957610479611bfb565b602002602001015183610637565b8061049181611c27565b91505061045b565b505050565b60006104a982610c3b565b61050a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161044f565b506000908152600460205260409020546001600160a01b031690565b6000610531826107ae565b9050806001600160a01b0316836001600160a01b0316141561059f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161044f565b336001600160a01b03821614806105bb57506105bb81336102ed565b61062d5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161044f565b6104998383610c58565b6007546001600160a01b031633146106615760405162461bcd60e51b815260040161044f90611bc6565b61066f600880546001019055565b600061067a60085490565b90506106868382610cc6565b6104998183610df9565b600061069b60085490565b905090565b6007546001600160a01b031633146106ca5760405162461bcd60e51b815260040161044f90611bc6565b60005b828110156106f1576106df8483610637565b806106e981611c27565b9150506106cd565b50505050565b6107013382610e84565b61071d5760405162461bcd60e51b815260040161044f90611c42565b610499838383610f6a565b6007546001600160a01b031633146107525760405162461bcd60e51b815260040161044f90611bc6565b60005b8151811015610499576107818383838151811061077457610774611bfb565b6020026020010151610637565b8061078b81611c27565b915050610755565b61049983838360405180602001604052806000815250610900565b6000818152600260205260408120546001600160a01b03168061038d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161044f565b60006001600160a01b0382166108905760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161044f565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b031633146108d65760405162461bcd60e51b815260040161044f90611bc6565b6108e0600061110a565b565b6060600180546103a290611b8b565b6108fc33838361115c565b5050565b61090a3383610e84565b6109265760405162461bcd60e51b815260040161044f90611c42565b6106f18484848461122b565b606061093d82610c3b565b6109a35760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b606482015260840161044f565b600082815260066020526040812080546109bc90611b8b565b80601f01602080910402602001604051908101604052809291908181526020018280546109e890611b8b565b8015610a355780601f10610a0a57610100808354040283529160200191610a35565b820191906000526020600020905b815481529060010190602001808311610a1857829003601f168201915b505050505090506000610a62604080518082019091526007815266697066733a2f2f60c81b602082015290565b9050805160001415610a75575092915050565b815115610aa7578082604051602001610a8f929190611c93565b60405160208183030381529060405292505050919050565b610ab08461125e565b949350505050565b6060604051806060016040528060358152602001611ddc60359139905090565b6007546001600160a01b03163314610b025760405162461bcd60e51b815260040161044f90611bc6565b815181518114610b545760405162461bcd60e51b815260206004820152601c60248201527f617272617973206d757374206265207468652073616d652073697a6500000000604482015260640161044f565b60005b818110156106f157610b8e848281518110610b7457610b74611bfb565b602002602001015184838151811061077457610774611bfb565b80610b9881611c27565b915050610b57565b6007546001600160a01b03163314610bca5760405162461bcd60e51b815260040161044f90611bc6565b6001600160a01b038116610c2f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161044f565b610c388161110a565b50565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610c8d826107ae565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b038216610d1c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161044f565b610d2581610c3b565b15610d725760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161044f565b6001600160a01b0382166000908152600360205260408120805460019290610d9b908490611cc2565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b610e0282610c3b565b610e655760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161044f565b6000828152600660209081526040909120825161049992840190611541565b6000610e8f82610c3b565b610ef05760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161044f565b6000610efb836107ae565b9050806001600160a01b0316846001600160a01b03161480610f365750836001600160a01b0316610f2b8461049e565b6001600160a01b0316145b80610ab057506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff16610ab0565b826001600160a01b0316610f7d826107ae565b6001600160a01b031614610fe55760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161044f565b6001600160a01b0382166110475760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161044f565b611052600082610c58565b6001600160a01b038316600090815260036020526040812080546001929061107b908490611cda565b90915550506001600160a01b03821660009081526003602052604081208054600192906110a9908490611cc2565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031614156111be5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161044f565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611236848484610f6a565b61124284848484611345565b6106f15760405162461bcd60e51b815260040161044f90611cf1565b606061126982610c3b565b6112cd5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161044f565b60006112f3604080518082019091526007815266697066733a2f2f60c81b602082015290565b90506000815111611313576040518060200160405280600081525061133e565b8061131d84611443565b60405160200161132e929190611c93565b6040516020818303038152906040525b9392505050565b60006001600160a01b0384163b1561143857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611389903390899088908890600401611d43565b6020604051808303816000875af19250505080156113c4575060408051601f3d908101601f191682019092526113c191810190611d80565b60015b61141e573d8080156113f2576040519150601f19603f3d011682016040523d82523d6000602084013e6113f7565b606091505b5080516114165760405162461bcd60e51b815260040161044f90611cf1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610ab0565b506001949350505050565b6060816114675750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611491578061147b81611c27565b915061148a9050600a83611db3565b915061146b565b60008167ffffffffffffffff8111156114ac576114ac611678565b6040519080825280601f01601f1916602001820160405280156114d6576020820181803683370190505b5090505b8415610ab0576114eb600183611cda565b91506114f8600a86611dc7565b611503906030611cc2565b60f81b81838151811061151857611518611bfb565b60200101906001600160f81b031916908160001a90535061153a600a86611db3565b94506114da565b82805461154d90611b8b565b90600052602060002090601f01602090048101928261156f57600085556115b5565b82601f1061158857805160ff19168380011785556115b5565b828001600101855582156115b5579182015b828111156115b557825182559160200191906001019061159a565b506115c19291506115c5565b5090565b5b808211156115c157600081556001016115c6565b6001600160e01b031981168114610c3857600080fd5b60006020828403121561160257600080fd5b813561133e816115da565b60005b83811015611628578181015183820152602001611610565b838111156106f15750506000910152565b6000815180845261165181602086016020860161160d565b601f01601f19169290920160200192915050565b60208152600061133e6020830184611639565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156116b7576116b7611678565b604052919050565b600067ffffffffffffffff8211156116d9576116d9611678565b5060051b60200190565b80356001600160a01b03811681146116fa57600080fd5b919050565b600082601f83011261171057600080fd5b81356020611725611720836116bf565b61168e565b82815260059290921b8401810191818101908684111561174457600080fd5b8286015b8481101561176657611759816116e3565b8352918301918301611748565b509695505050505050565b600067ffffffffffffffff83111561178b5761178b611678565b61179e601f8401601f191660200161168e565b90508281528383830111156117b257600080fd5b828260208301376000602084830101529392505050565b600082601f8301126117da57600080fd5b61133e83833560208501611771565b600080604083850312156117fc57600080fd5b823567ffffffffffffffff8082111561181457600080fd5b611820868387016116ff565b9350602085013591508082111561183657600080fd5b50611843858286016117c9565b9150509250929050565b60006020828403121561185f57600080fd5b5035919050565b6000806040838503121561187957600080fd5b611882836116e3565b946020939093013593505050565b600080604083850312156118a357600080fd5b6118ac836116e3565b9150602083013567ffffffffffffffff8111156118c857600080fd5b611843858286016117c9565b6000806000606084860312156118e957600080fd5b6118f2846116e3565b925060208401359150604084013567ffffffffffffffff81111561191557600080fd5b611921868287016117c9565b9150509250925092565b60008060006060848603121561194057600080fd5b611949846116e3565b9250611957602085016116e3565b9150604084013590509250925092565b600082601f83011261197857600080fd5b81356020611988611720836116bf565b82815260059290921b840181019181810190868411156119a757600080fd5b8286015b8481101561176657803567ffffffffffffffff8111156119cb5760008081fd5b6119d98986838b01016117c9565b8452509183019183016119ab565b600080604083850312156119fa57600080fd5b611a03836116e3565b9150602083013567ffffffffffffffff811115611a1f57600080fd5b61184385828601611967565b600060208284031215611a3d57600080fd5b61133e826116e3565b60008060408385031215611a5957600080fd5b611a62836116e3565b915060208301358015158114611a7757600080fd5b809150509250929050565b60008060008060808587031215611a9857600080fd5b611aa1856116e3565b9350611aaf602086016116e3565b925060408501359150606085013567ffffffffffffffff811115611ad257600080fd5b8501601f81018713611ae357600080fd5b611af287823560208401611771565b91505092959194509250565b60008060408385031215611b1157600080fd5b611b1a836116e3565b9150611b28602084016116e3565b90509250929050565b60008060408385031215611b4457600080fd5b823567ffffffffffffffff80821115611b5c57600080fd5b611b68868387016116ff565b93506020850135915080821115611b7e57600080fd5b5061184385828601611967565b600181811c90821680611b9f57607f821691505b60208210811415611bc057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611c3b57611c3b611c11565b5060010190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008351611ca581846020880161160d565b835190830190611cb981836020880161160d565b01949350505050565b60008219821115611cd557611cd5611c11565b500190565b600082821015611cec57611cec611c11565b500390565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d7690830184611639565b9695505050505050565b600060208284031215611d9257600080fd5b815161133e816115da565b634e487b7160e01b600052601260045260246000fd5b600082611dc257611dc2611d9d565b500490565b600082611dd657611dd6611d9d565b50069056fe697066733a2f2f516d51436f437254697567586552706b63444b5935737039637232746a336a7a3854336e4e396376544c46713754a264697066735822122023164361a74b45858bf61a3ef1d287730fe37b7b53170efef485548aa22127c864736f6c634300080b0033