60806040523480156200001157600080fd5b5060405162001d9338038062001d938339810160408190526200003491620001b0565b82826000620000448382620002c3565b506001620000538282620002c3565b505050620000706200006a6200009560201b60201c565b62000099565b60068054911515600160a01b0260ff60a01b19909216919091179055506200038f9050565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200011357600080fd5b81516001600160401b0380821115620001305762000130620000eb565b604051601f8301601f19908116603f011681019082821181831017156200015b576200015b620000eb565b816040528381526020925086838588010111156200017857600080fd5b600091505b838210156200019c57858201830151818301840152908201906200017d565b600093810190920192909252949350505050565b600080600060608486031215620001c657600080fd5b83516001600160401b0380821115620001de57600080fd5b620001ec8783880162000101565b945060208601519150808211156200020357600080fd5b50620002128682870162000101565b925050604084015180151581146200022957600080fd5b809150509250925092565b600181811c908216806200024957607f821691505b6020821081036200026a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002be57600081815260208120601f850160051c81016020861015620002995750805b601f850160051c820191505b81811015620002ba57828155600101620002a5565b5050505b505050565b81516001600160401b03811115620002df57620002df620000eb565b620002f781620002f0845462000234565b8462000270565b602080601f8311600181146200032f5760008415620003165750858301515b600019600386901b1c1916600185901b178555620002ba565b600085815260208120601f198616915b8281101562000360578886015182559484019460019091019084016200033f565b50858210156200037f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6119f4806200039f6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063b88d4fde1161007c578063b88d4fde146102b1578063c87b56dd146102c4578063e985e9c5146102d7578063f2fde38b146102ea578063f73acd62146102fd578063ff9413d81461031057600080fd5b8063715018a614610257578063761f26e41461025f5780638da5cb5b1461027257806395d89b4114610283578063a22cb4651461028b578063b45a3c0e1461029e57600080fd5b806340c10f191161011557806340c10f19146101e257806342842e0e146101f557806355f804b3146102085780636352211e1461021b5780636c0360eb1461022e57806370a082311461023657600080fd5b806301ffc9a71461015257806306fdde031461017a578063081812fc1461018f578063095ea7b3146101ba57806323b872dd146101cf575b600080fd5b6101656101603660046113d7565b610318565b60405190151581526020015b60405180910390f35b610182610343565b6040516101719190611444565b6101a261019d366004611457565b6103d5565b6040516001600160a01b039091168152602001610171565b6101cd6101c836600461148c565b6103fc565b005b6101cd6101dd3660046114b6565b610435565b6101cd6101f036600461148c565b610470565b6101cd6102033660046114b6565b6104a5565b6101cd61021636600461157e565b6104db565b6101a2610229366004611457565b6104ef565b610182610554565b6102496102443660046115c7565b6105e2565b604051908152602001610171565b6101cd610668565b6101cd61026d3660046115c7565b61067c565b6006546001600160a01b03166101a2565b6101826106a6565b6101cd6102993660046115e2565b6106b5565b6101656102ac366004611457565b6106ea565b6101cd6102bf36600461161e565b610731565b6101826102d2366004611457565b61076e565b6101656102e536600461169a565b6107d5565b6101cd6102f83660046115c7565b610803565b6007546101a2906001600160a01b031681565b6101cd61087c565b60006001600160e01b03198216635a2d1e0760e11b148061033d575061033d826108a5565b92915050565b606060008054610352906116cd565b80601f016020809104026020016040519081016040528092919081815260200182805461037e906116cd565b80156103cb5780601f106103a0576101008083540402835291602001916103cb565b820191906000526020600020905b8154815290600101906020018083116103ae57829003601f168201915b5050505050905090565b60006103e0826108f5565b506000908152600460205260409020546001600160a01b031690565b600654600160a01b900460ff16156104275760405163bd291a9560e01b815260040160405180910390fd5b6104318282610954565b5050565b600654600160a01b900460ff16156104605760405163bd291a9560e01b815260040160405180910390fd5b61046b838383610a64565b505050565b6007546001600160a01b0316331461049b5760405163422b638f60e01b815260040160405180910390fd5b6104318282610a95565b600654600160a01b900460ff16156104d05760405163bd291a9560e01b815260040160405180910390fd5b61046b838383610aaf565b6104e3610aca565b60086104318282611755565b6000818152600260205260408120546001600160a01b03168061033d5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064015b60405180910390fd5b60088054610561906116cd565b80601f016020809104026020016040519081016040528092919081815260200182805461058d906116cd565b80156105da5780601f106105af576101008083540402835291602001916105da565b820191906000526020600020905b8154815290600101906020018083116105bd57829003601f168201915b505050505081565b60006001600160a01b03821661064c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161054b565b506001600160a01b031660009081526003602052604090205490565b610670610aca565b61067a6000610b24565b565b610684610aca565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b606060018054610352906116cd565b600654600160a01b900460ff16156106e05760405163bd291a9560e01b815260040160405180910390fd5b6104318282610b76565b6000818152600260205260408120546001600160a01b031661071f5760405163ae9a63f560e01b815260040160405180910390fd5b5050600654600160a01b900460ff1690565b600654600160a01b900460ff161561075c5760405163bd291a9560e01b815260040160405180910390fd5b61076884848484610b81565b50505050565b6060610779826108f5565b6000610783610bb3565b905060008151116107a357604051806020016040528060008152506107ce565b806107ad84610bc2565b6040516020016107be929190611815565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61080b610aca565b6001600160a01b0381166108705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161054b565b61087981610b24565b50565b610884610aca565b6006805460ff60a01b198116600160a01b9182900460ff1615909102179055565b60006001600160e01b031982166380ac58cd60e01b14806108d657506001600160e01b03198216635b5e139f60e01b145b8061033d57506301ffc9a760e01b6001600160e01b031983161461033d565b6000818152600260205260409020546001600160a01b03166108795760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161054b565b600061095f826104ef565b9050806001600160a01b0316836001600160a01b0316036109cc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161054b565b336001600160a01b03821614806109e857506109e881336107d5565b610a5a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161054b565b61046b8383610c55565b610a6e3382610cc3565b610a8a5760405162461bcd60e51b815260040161054b90611844565b61046b838383610d22565b610431828260405180602001604052806000815250610e93565b61046b83838360405180602001604052806000815250610731565b6006546001600160a01b0316331461067a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161054b565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610431338383610ec6565b610b8b3383610cc3565b610ba75760405162461bcd60e51b815260040161054b90611844565b61076884848484610f94565b606060088054610352906116cd565b60606000610bcf83610fc7565b600101905060008167ffffffffffffffff811115610bef57610bef6114f2565b6040519080825280601f01601f191660200182016040528015610c19576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610c2357509392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610c8a826104ef565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610ccf836104ef565b9050806001600160a01b0316846001600160a01b03161480610cf65750610cf681856107d5565b80610d1a5750836001600160a01b0316610d0f846103d5565b6001600160a01b0316145b949350505050565b826001600160a01b0316610d35826104ef565b6001600160a01b031614610d5b5760405162461bcd60e51b815260040161054b90611891565b6001600160a01b038216610dbd5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161054b565b610dca838383600161109f565b826001600160a01b0316610ddd826104ef565b6001600160a01b031614610e035760405162461bcd60e51b815260040161054b90611891565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610e9d8383611127565b610eaa60008484846112c0565b61046b5760405162461bcd60e51b815260040161054b906118d6565b816001600160a01b0316836001600160a01b031603610f275760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161054b565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610f9f848484610d22565b610fab848484846112c0565b6107685760405162461bcd60e51b815260040161054b906118d6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106110065772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611032576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061105057662386f26fc10000830492506010015b6305f5e1008310611068576305f5e100830492506008015b612710831061107c57612710830492506004015b6064831061108e576064830492506002015b600a831061033d5760010192915050565b6001811115610768576001600160a01b038416156110e5576001600160a01b038416600090815260036020526040812080548392906110df90849061193e565b90915550505b6001600160a01b03831615610768576001600160a01b0383166000908152600360205260408120805483929061111c908490611951565b909155505050505050565b6001600160a01b03821661117d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161054b565b6000818152600260205260409020546001600160a01b0316156111e25760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161054b565b6111f060008383600161109f565b6000818152600260205260409020546001600160a01b0316156112555760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161054b565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b156113b657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611304903390899088908890600401611964565b6020604051808303816000875af192505050801561133f575060408051601f3d908101601f1916820190925261133c918101906119a1565b60015b61139c573d80801561136d576040519150601f19603f3d011682016040523d82523d6000602084013e611372565b606091505b5080516000036113945760405162461bcd60e51b815260040161054b906118d6565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610d1a565b506001949350505050565b6001600160e01b03198116811461087957600080fd5b6000602082840312156113e957600080fd5b81356107ce816113c1565b60005b8381101561140f5781810151838201526020016113f7565b50506000910152565b600081518084526114308160208601602086016113f4565b601f01601f19169290920160200192915050565b6020815260006107ce6020830184611418565b60006020828403121561146957600080fd5b5035919050565b80356001600160a01b038116811461148757600080fd5b919050565b6000806040838503121561149f57600080fd5b6114a883611470565b946020939093013593505050565b6000806000606084860312156114cb57600080fd5b6114d484611470565b92506114e260208501611470565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611523576115236114f2565b604051601f8501601f19908116603f0116810190828211818310171561154b5761154b6114f2565b8160405280935085815286868601111561156457600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561159057600080fd5b813567ffffffffffffffff8111156115a757600080fd5b8201601f810184136115b857600080fd5b610d1a84823560208401611508565b6000602082840312156115d957600080fd5b6107ce82611470565b600080604083850312156115f557600080fd5b6115fe83611470565b91506020830135801515811461161357600080fd5b809150509250929050565b6000806000806080858703121561163457600080fd5b61163d85611470565b935061164b60208601611470565b925060408501359150606085013567ffffffffffffffff81111561166e57600080fd5b8501601f8101871361167f57600080fd5b61168e87823560208401611508565b91505092959194509250565b600080604083850312156116ad57600080fd5b6116b683611470565b91506116c460208401611470565b90509250929050565b600181811c908216806116e157607f821691505b60208210810361170157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561046b57600081815260208120601f850160051c8101602086101561172e5750805b601f850160051c820191505b8181101561174d5782815560010161173a565b505050505050565b815167ffffffffffffffff81111561176f5761176f6114f2565b6117838161177d84546116cd565b84611707565b602080601f8311600181146117b857600084156117a05750858301515b600019600386901b1c1916600185901b17855561174d565b600085815260208120601f198616915b828110156117e7578886015182559484019460019091019084016117c8565b50858210156118055787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600083516118278184602088016113f4565b83519083019061183b8183602088016113f4565b01949350505050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561033d5761033d611928565b8082018082111561033d5761033d611928565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061199790830184611418565b9695505050505050565b6000602082840312156119b357600080fd5b81516107ce816113c156fea2646970667358221220f98eae5737fb43876315f54e21328b377d70b7ed03b7c190bee4778dc2b2ed7764736f6c63430008110033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000b417865734163636f756e7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044178657300000000000000000000000000000000000000000000000000000000