60c06040523480156200001157600080fd5b506040516200434938038062004349833981016040819052620000349162000b4b565b826040518060400160405280600f81526020016e15195cdd08151a58dad95d08139195608a1b815250604051806040016040528060038152602001622a2a2760e91b815250620000936200008d6200049c60201b60201c565b620004a0565b8151620000a8906003906020850190620009b1565b508051620000be906004906020840190620009b1565b50505060601b6001600160601b031916608052604080518082019091526001808252602f60f81b602090920182905289518a9291839162000100919062000cbd565b815181106200011f57634e487b7160e01b600052603260045260246000fd5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016146200018457604051636b6afd1760e11b81526020600482015260076024820152666261736555524960c81b60448201526064015b60405180910390fd5b88516200019990600d9060208c0190620009b1565b508751620001d9576040516318a996bb60e21b815260206004820152600b60248201526a636f6e747261637455524960a81b60448201526064016200017b565b8751620001ee9060099060208b0190620009b1565b506001600160a01b038716620002395760405163eac0d38960e01b815260206004820152600e60248201526d726f79616c74794164647265737360901b60448201526064016200017b565b620002458787620004f0565b6000856001600160a01b0316635d83c2b86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028157600080fd5b505afa15801562000296573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bc919062000c28565b60f081901b6001600160f01b03191660a0526040516301ffc9a760e01b815263b75e1f9f60e01b600482018190529192506001600160a01b038816906301ffc9a79060240160206040518083038186803b1580156200031a57600080fd5b505afa1580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000af8565b6200039457604051636b6afd1760e11b815260206004820152600d60248201526c1858d8d95cdcd4185cdcd39195609a1b60448201526064016200017b565b601080546001600160a01b0319166001600160a01b03898116919091179091558616620003f65760405163eac0d38960e01b815260206004820152600e60248201526d3b393321b7b7b93234b730ba37b960911b60448201526064016200017b565b601180546001600160a01b0319166001600160a01b03888116919091179091558516620004535760405163eac0d38960e01b815260206004820152600960248201526837333a2437b63232b960b91b60448201526064016200017b565b60005b8261ffff1681101562000484576200046f8682620005f1565b806200047b8162000d47565b91505062000456565b505050600a919091555062000daa9650505050505050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6127106001600160601b0382161115620005605760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016200017b565b6001600160a01b038216620005b85760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016200017b565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600155565b620006138282604051806020016040528060008152506200061760201b60201c565b5050565b6200062383836200068f565b620006326000848484620007e5565b6200068a5760405162461bcd60e51b815260206004820152603260248201526000805160206200432983398151915260448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016200017b565b505050565b6001600160a01b038216620006e75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016200017b565b6000818152600560205260409020546001600160a01b0316156200074e5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016200017b565b6200075c600083836200094e565b6001600160a01b03821660009081526006602052604081208054600192906200078790849062000ca2565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600062000806846001600160a01b0316620009a260201b62001c311760201c565b156200094257604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906200084090339089908890889060040162000c4c565b602060405180830381600087803b1580156200085b57600080fd5b505af19250505080156200088e575060408051601f3d908101601f191682019092526200088b9181019062000b21565b60015b62000927573d808015620008bf576040519150601f19603f3d011682016040523d82523d6000602084013e620008c4565b606091505b5080516200091f5760405162461bcd60e51b815260206004820152603260248201526000805160206200432983398151915260448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016200017b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905062000946565b5060015b949350505050565b600a54421080156200096e57506000818152600b602052604090205460ff165b156200068a57600a54604051630f69d62960e41b81526004810183905242602482015260448101919091526064016200017b565b6001600160a01b03163b151590565b828054620009bf9062000d0a565b90600052602060002090601f016020900481019282620009e3576000855562000a2e565b82601f10620009fe57805160ff191683800117855562000a2e565b8280016001018555821562000a2e579182015b8281111562000a2e57825182559160200191906001019062000a11565b5062000a3c92915062000a40565b5090565b5b8082111562000a3c576000815560010162000a41565b805162000a648162000d91565b919050565b600082601f83011262000a7a578081fd5b81516001600160401b038082111562000a975762000a9762000d7b565b604051601f8301601f19908116603f0116810190828211818310171562000ac25762000ac262000d7b565b8160405283815286602085880101111562000adb578485fd5b62000aee84602083016020890162000cd7565b9695505050505050565b60006020828403121562000b0a578081fd5b8151801515811462000b1a578182fd5b9392505050565b60006020828403121562000b33578081fd5b81516001600160e01b03198116811462000b1a578182fd5b600080600080600080600080610100898b03121562000b68578384fd5b88516001600160401b038082111562000b7f578586fd5b62000b8d8c838d0162000a69565b995060208b015191508082111562000ba3578586fd5b5062000bb28b828c0162000a69565b975050604089015162000bc58162000d91565b60608a01519096506001600160601b038116811462000be2578485fd5b945062000bf260808a0162000a57565b935062000c0260a08a0162000a57565b925062000c1260c08a0162000a57565b915060e089015190509295985092959890939650565b60006020828403121562000c3a578081fd5b815161ffff8116811462000b1a578182fd5b600060018060a01b03808716835280861660208401525083604083015260806060830152825180608084015262000c8b8160a085016020870162000cd7565b601f01601f19169190910160a00195945050505050565b6000821982111562000cb85762000cb862000d65565b500190565b60008282101562000cd25762000cd262000d65565b500390565b60005b8381101562000cf457818101518382015260200162000cda565b8381111562000d04576000848401525b50505050565b600181811c9082168062000d1f57607f821691505b6020821081141562000d4157634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141562000d5e5762000d5e62000d65565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811462000da757600080fd5b50565b60805160601c60a05160f01c61352262000e07600039600081816103c90152818161044e015281816107630152818161086601528181611140015281816118ce0152612a3e015260008181610e960152610ef101526135226000f3fe608060405234801561001057600080fd5b50600436106102d25760003560e01c80636926726e11610186578063a22cb465116100e3578063d7068bb011610097578063e985e9c511610071578063e985e9c514610603578063f2fde38b1461063f578063f56841831461065257600080fd5b8063d7068bb0146105d5578063e59af732146105e8578063e8a3d485146105fb57600080fd5b8063c6ee20d2116100c8578063c6ee20d21461059a578063c87b56dd146105af578063d01b84ec146105c257600080fd5b8063a22cb46514610574578063b88d4fde1461058757600080fd5b80638da5cb5b1161013a578063938e3d7b1161011f578063938e3d7b1461054c57806395d89b411461055f5780639d7142301461056757600080fd5b80638da5cb5b14610528578063927e603d1461053957600080fd5b806370084da51161016b57806370084da5146104fa57806370a082311461050d578063715018a61461052057600080fd5b80636926726e146104ea5780636c0360eb146104f257600080fd5b80631fe543e31161023457806342842e0e116101e85780635d20df71116101cd5780635d20df71146104b25780635f24c872146104c55780636352211e146104d757600080fd5b806342842e0e1461048c5780635cd6d3111461049f57600080fd5b80632a55205a116102195780632a55205a146104175780632ab4d052146104495780632c77ddfd1461048357600080fd5b80631fe543e3146103f157806323b872dd1461040457600080fd5b8063081812fc1161028b578063095ea7b311610270578063095ea7b3146103915780630e392288146103a457806318160ddd146103c757600080fd5b8063081812fc1461035357806308e0ae991461037e57600080fd5b806301ffc9a7116102bc57806301ffc9a71461030857806304634d8d1461032b57806306fdde031461033e57600080fd5b80626d6cae146102d757806301e362bf146102f3575b600080fd5b6102e060125481565b6040519081526020015b60405180910390f35b610306610301366004612e02565b61065b565b005b61031b610316366004612e7a565b61092c565b60405190151581526020016102ea565b610306610339366004612dc5565b610970565b610346610a97565b6040516102ea919061323f565b610366610361366004612f12565b610b29565b6040516001600160a01b0390911681526020016102ea565b61030661038c366004612f12565b610bbe565b61030661039f366004612d9a565b610d3b565b61031b6103b2366004612f12565b600b6020526000908152604090205460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000061ffff166102e0565b6103066103ff366004612f42565b610e8b565b610306610412366004612cb0565b610f2c565b61042a610425366004612ff6565b610fb3565b604080516001600160a01b0390931683526020830191909152016102ea565b6104707f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff90911681526020016102ea565b6102e0600a5481565b61030661049a366004612cb0565b611070565b6103066104ad366004612e02565b61108b565b6102e06104c0366004612f12565b6112d0565b600e5461031b90610100900460ff1681565b6103666104e5366004612f12565b6112f1565b610470600281565b61034661137c565b601054610366906001600160a01b031681565b6102e061051b366004612c39565b61140a565b6103066114a4565b6000546001600160a01b0316610366565b61031b610547366004612c39565b61150a565b61030661055a366004612eb2565b611591565b6103466116a0565b600e5461031b9060ff1681565b610306610582366004612d6d565b6116af565b610306610595366004612cf0565b6116ba565b6105a2611748565b6040516102ea9190613216565b6103466105bd366004612f12565b611828565b61031b6105d0366004612ef8565b611892565b6103066105e3366004613017565b611935565b601154610366906001600160a01b031681565b610346611b42565b61031b610611366004612c78565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b61030661064d366004612c39565b611b4f565b6102e060135481565b6000546001600160a01b031633146106ba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60026106c4611748565b60058111156106e357634e487b7160e01b600052602160045260246000fd5b81600581111561070357634e487b7160e01b600052602160045260246000fd5b1461074557610710611748565b816040517ff975326c0000000000000000000000000000000000000000000000000000000081526004016106b1929190613224565b8161075e57600e805461ff0019166101001790556108ee565b61ffff7f00000000000000000000000000000000000000000000000000000000000000001682146107d257604051636b6afd1760e11b815260206004820152600d60248201527f686173526567697374657265640000000000000000000000000000000000000060448201526064016106b1565b6000805b61ffff811684111561085d5784848261ffff1681811061080657634e487b7160e01b600052603260045260246000fd5b905060200201602081019061081b9190612e42565b61084b5761ffff81166000908152600f60205260409020805460ff1916600117905581610847816133ff565b9250505b80610855816133ff565b9150506107d6565b50600261088a827f0000000000000000000000000000000000000000000000000000000000000000613364565b61ffff1610156108dd57604051636b6afd1760e11b815260206004820152601460248201527f6e6f7452656769737465726564436f756e74657200000000000000000000000060448201526064016106b1565b50600e805461ff0019166101001790555b7fd6d49fea2b82ccb15931df3db5db7b18cf21a3ce0d589e7f416924cdcf5d8786838360405161091f92919061319e565b60405180910390a1505050565b60006001600160e01b031982167f89a32daf00000000000000000000000000000000000000000000000000000000148061096a575061096a82611c40565b92915050565b6000546001600160a01b031633146109ca5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b1565b6001600160a01b038216610a3a576040517feac0d38900000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f726f79616c74794164647265737300000000000000000000000000000000000060448201526064016106b1565b610a448282611c4b565b604080516001600160a01b03841681526bffffffffffffffffffffffff831660208201527f8a0eef20ed65c9cc65bee4dba772db9344af8922e098f35e280b99494f859163910160405180910390a15050565b606060038054610aa6906133ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad2906133ca565b8015610b1f5780601f10610af457610100808354040283529160200191610b1f565b820191906000526020600020905b815481529060010190602001808311610b0257829003601f168201915b5050505050905090565b6000818152600560205260408120546001600160a01b0316610ba25760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106b1565b506000908152600760205260409020546001600160a01b031690565b6000546001600160a01b03163314610c185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b1565b60046000610c27600183613387565b6005811115610c4657634e487b7160e01b600052602160045260246000fd5b9050816005811115610c6857634e487b7160e01b600052602160045260246000fd5b610c70611748565b6005811115610c8f57634e487b7160e01b600052602160045260246000fd5b10610c9c57610710611748565b4283108015610caa57508215155b15610cf857604051636b6afd1760e11b815260206004820152600d60248201527f66726f7a656e506572696f645f0000000000000000000000000000000000000060448201526064016106b1565b600a5460408051918252602082018590527fca3a479dbfc39910d316dad70bca2decb3bdf89328b9549ce05650a850f7f5f6910160405180910390a15050600a55565b6000610d46826112f1565b9050806001600160a01b0316836001600160a01b03161415610dd05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016106b1565b336001600160a01b0382161480610e0a57506001600160a01b038116600090815260086020908152604080832033845290915290205460ff165b610e7c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016106b1565b610e868383611d65565b505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f1e576040517f1cf993f40000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044016106b1565b610f288282611de0565b5050565b610f363382611f04565b610fa85760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016106b1565b610e86838383611ffb565b60008281526002602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff169282019290925282916110325750604080518082019091526001546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090611056906bffffffffffffffffffffffff1687613345565b6110609190613331565b91519350909150505b9250929050565b610e86838383604051806020016040528060008152506116ba565b6000546001600160a01b031633146110e55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b1565b60016110ef611748565b600581111561110e57634e487b7160e01b600052602160045260246000fd5b81600581111561112e57634e487b7160e01b600052602160045260246000fd5b1461113b57610710611748565b61ffff7f00000000000000000000000000000000000000000000000000000000000000001682146111af57604051636b6afd1760e11b815260206004820152600760248201527f77696e6e6572730000000000000000000000000000000000000000000000000060448201526064016106b1565b60005b828110156112905760105461127e9033906001600160a01b0316636352211e8787868181106111f157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906112069190612ef8565b6040516001600160e01b031960e084901b16815261ffff909116600482015260240160206040518083038186803b15801561124057600080fd5b505afa158015611254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112789190612c5c565b83611070565b8061128881613421565b9150506111b2565b50600e805460ff191660011790556040517f4537f390251a569ded7118789a782a771e102b70a50817f5d58fb1fe5bf126899061091f90859085906131da565b600c81815481106112e057600080fd5b600091825260209091200154905081565b6000818152600560205260408120546001600160a01b03168061096a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016106b1565b600d8054611389906133ca565b80601f01602080910402602001604051908101604052809291908181526020018280546113b5906133ca565b80156114025780601f106113d757610100808354040283529160200191611402565b820191906000526020600020905b8154815290600101906020018083116113e557829003601f168201915b505050505081565b60006001600160a01b0382166114885760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016106b1565b506001600160a01b031660009081526006602052604090205490565b6000546001600160a01b031633146114fe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b1565b61150860006121e0565b565b6000805b600c5461ffff8216101561158857826001600160a01b031661155e600c8361ffff168154811061154e57634e487b7160e01b600052603260045260246000fd5b90600052602060002001546112f1565b6001600160a01b031614156115765750600192915050565b80611580816133ff565b91505061150e565b50600092915050565b6000546001600160a01b031633146115eb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b1565b8051611653576040517f62a65aec00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f636f6e747261637455524900000000000000000000000000000000000000000060448201526064016106b1565b7fd144c5914915e649557dfce6d3199a18bae1ec7c249c1766603a2b76ade11c06600982604051611685929190613252565b60405180910390a18051610f28906009906020840190612aee565b606060048054610aa6906133ca565b610f2833838361223d565b6116c43383611f04565b6117365760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016106b1565b6117428484848461230c565b50505050565b600060135460001461176a57600a544210156117645750600490565b50600590565b600e54610100900460ff16156117805750600390565b600e5460ff16156117915750600290565b601060009054906101000a90046001600160a01b03166001600160a01b0316633f3ac92c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117df57600080fd5b505afa1580156117f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118179190612e5e565b156118225750600190565b50600090565b6000818152600560205260409020546060906001600160a01b031661186057604051634a1850bf60e11b815260040160405180910390fd5b600d61186b83612395565b60405160200161187c9291906130ba565b6040516020818303038152906040529050919050565b600060038061189f611748565b60058111156118be57634e487b7160e01b600052602160045260246000fd5b10156118cc57610710611748565b7f000000000000000000000000000000000000000000000000000000000000000061ffff168361ffff161061191457604051634a1850bf60e11b815260040160405180910390fd5b61ffff83166000908152600f602052604090205460ff161591505b50919050565b6000546001600160a01b0316331461198f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b1565b6003611999611748565b60058111156119b857634e487b7160e01b600052602160045260246000fd5b8160058111156119d857634e487b7160e01b600052602160045260246000fd5b146119e557610710611748565b620249f08263ffffffff161015611a3f57604051636b6afd1760e11b815260206004820152601060248201527f63616c6c6261636b4761734c696d69740000000000000000000000000000000060448201526064016106b1565b6011546040517f5d3b1d300000000000000000000000000000000000000000000000000000000081526004810185905267ffffffffffffffff861660248201526003604482015263ffffffff84166064820152600160848201526001600160a01b03909116908190635d3b1d309060a401602060405180830381600087803b158015611aca57600080fd5b505af1158015611ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b029190612f2a565b60128190556040519081527f34035302829687f51841b2858b7a87f37db58335690aec14aced0df98ad7f590906020015b60405180910390a15050505050565b60098054611389906133ca565b6000546001600160a01b03163314611ba95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b1565b6001600160a01b038116611c255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106b1565b611c2e816121e0565b50565b6001600160a01b03163b151590565b600061096a826124e3565b6127106bffffffffffffffffffffffff82161115611cd15760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c2065786365656460448201527f2073616c6550726963650000000000000000000000000000000000000000000060648201526084016106b1565b6001600160a01b038216611d275760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016106b1565b604080518082019091526001600160a01b039092168083526bffffffffffffffffffffffff9091166020909201829052600160a01b90910217600155565b6000818152600760205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091558190611da7826112f1565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b8160125414611e3257604051636b6afd1760e11b815260206004820152600960248201527f726571756573744964000000000000000000000000000000000000000000000060448201526064016106b1565b60135415611e6c576040517fba4ace8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600081518110611e8d57634e487b7160e01b600052603260045260246000fd5b60200260200101516013819055507f3d870ce8fb4499f2050897f38d3d9d5a938b7710a6a5e1d712db97db55dfbb9d81600081518110611edd57634e487b7160e01b600052603260045260246000fd5b6020026020010151604051611ef491815260200190565b60405180910390a1610f28612555565b6000818152600560205260408120546001600160a01b0316611f7d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106b1565b6000611f88836112f1565b9050806001600160a01b0316846001600160a01b03161480611fcf57506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff165b80611ff35750836001600160a01b0316611fe884610b29565b6001600160a01b0316145b949350505050565b826001600160a01b031661200e826112f1565b6001600160a01b03161461208a5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016106b1565b6001600160a01b0382166121055760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106b1565b612110838383612704565b61211b600082611d65565b6001600160a01b0383166000908152600660205260408120805460019290612144908490613387565b90915550506001600160a01b0382166000908152600660205260408120805460019290612172908490613319565b9091555050600081815260056020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b816001600160a01b0316836001600160a01b0316141561229f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106b1565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612317848484611ffb565b6123238484848461276e565b6117425760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106b1565b6060816123d557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156123ff57806123e981613421565b91506123f89050600a83613331565b91506123d9565b60008167ffffffffffffffff81111561242857634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612452576020820181803683370190505b5090505b8415611ff357612467600183613387565b9150612474600a8661345d565b61247f906030613319565b60f81b8183815181106124a257634e487b7160e01b600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506124dc600a86613331565b9450612456565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061254657506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061096a575061096a826128d1565b601060008061256f838261256881613421565b9450612938565b9050600080805b600261ffff821610156126d057838361258e81613421565b9450815181106125ae57634e487b7160e01b600052603260045260246000fd5b60200260200101519150858314156125dc576125d586866125ce81613421565b9750612938565b9350600092505b61ffff82166000908152600f602052604090205460ff1680612611575061ffff82166000908152600b602052604090205460ff165b1561266d57838361262181613421565b94508151811061264157634e487b7160e01b600052603260045260246000fd5b60200260200101519150858314156126685761266186866125ce81613421565b9350600092505b6125dc565b600c8054600181810190925561ffff84167fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c79091018190556000908152600b60205260409020805460ff19169091179055806126c8816133ff565b915050612576565b507fecfc5e59150509bdb8e40e673268957cf1c290eddbdf40be1d1973c84bd7cde0600a54604051611b3391815260200190565b600a544210801561272357506000818152600b602052604090205460ff165b15610e8657600a546040517ff69d62900000000000000000000000000000000000000000000000000000000081526004810183905242602482015260448101919091526064016106b1565b60006001600160a01b0384163b156128c657604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906127b2903390899088908890600401613162565b602060405180830381600087803b1580156127cc57600080fd5b505af19250505080156127fc575060408051601f3d908101601f191682019092526127f991810190612e96565b60015b6128ac573d80801561282a576040519150601f19603f3d011682016040523d82523d6000602084013e61282f565b606091505b5080516128a45760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106b1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611ff3565b506001949350505050565b60006001600160e01b031982167f2a55205a00000000000000000000000000000000000000000000000000000000148061096a57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b031983161461096a565b606061ffff600061294a601086613331565b9050600061295960108761345d565b111561296d5761296a600182613319565b90505b60006129798286613345565b612984906010613345565b90506000612993836010613345565b67ffffffffffffffff8111156129b957634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156129e2578160200160208202803683370190505b50905060005b83811015612ae357601354600090612a008584613319565b6040805160208101939093528201526060016040516020818303038152906040528051906020012060001c905060005b6010811015612ace57612a657f000000000000000000000000000000000000000000000000000000000000000083891661343c565b8482612a72866010613345565b612a7c9190613319565b81518110612a9a57634e487b7160e01b600052603260045260246000fd5b61ffff90921660209283029190910190910152612aba6201000083613331565b915080612ac681613421565b915050612a30565b50508080612adb90613421565b9150506129e8565b509695505050505050565b828054612afa906133ca565b90600052602060002090601f016020900481019282612b1c5760008555612b62565b82601f10612b3557805160ff1916838001178555612b62565b82800160010185558215612b62579182015b82811115612b62578251825591602001919060010190612b47565b50612b6e929150612b72565b5090565b5b80821115612b6e5760008155600101612b73565b600067ffffffffffffffff831115612ba157612ba161349d565b612bb4601f8401601f19166020016132e8565b9050828152838383011115612bc857600080fd5b828260208301376000602084830101529392505050565b60008083601f840112612bf0578182fd5b50813567ffffffffffffffff811115612c07578182fd5b6020830191508360208260051b850101111561106957600080fd5b803561ffff81168114612c3457600080fd5b919050565b600060208284031215612c4a578081fd5b8135612c55816134b3565b9392505050565b600060208284031215612c6d578081fd5b8151612c55816134b3565b60008060408385031215612c8a578081fd5b8235612c95816134b3565b91506020830135612ca5816134b3565b809150509250929050565b600080600060608486031215612cc4578081fd5b8335612ccf816134b3565b92506020840135612cdf816134b3565b929592945050506040919091013590565b60008060008060808587031215612d05578081fd5b8435612d10816134b3565b93506020850135612d20816134b3565b925060408501359150606085013567ffffffffffffffff811115612d42578182fd5b8501601f81018713612d52578182fd5b612d6187823560208401612b87565b91505092959194509250565b60008060408385031215612d7f578182fd5b8235612d8a816134b3565b91506020830135612ca5816134c8565b60008060408385031215612dac578182fd5b8235612db7816134b3565b946020939093013593505050565b60008060408385031215612dd7578182fd5b8235612de2816134b3565b915060208301356bffffffffffffffffffffffff81168114612ca5578182fd5b60008060208385031215612e14578182fd5b823567ffffffffffffffff811115612e2a578283fd5b612e3685828601612bdf565b90969095509350505050565b600060208284031215612e53578081fd5b8135612c55816134c8565b600060208284031215612e6f578081fd5b8151612c55816134c8565b600060208284031215612e8b578081fd5b8135612c55816134d6565b600060208284031215612ea7578081fd5b8151612c55816134d6565b600060208284031215612ec3578081fd5b813567ffffffffffffffff811115612ed9578182fd5b8201601f81018413612ee9578182fd5b611ff384823560208401612b87565b600060208284031215612f09578081fd5b612c5582612c22565b600060208284031215612f23578081fd5b5035919050565b600060208284031215612f3b578081fd5b5051919050565b60008060408385031215612f54578182fd5b8235915060208084013567ffffffffffffffff80821115612f73578384fd5b818601915086601f830112612f86578384fd5b813581811115612f9857612f9861349d565b8060051b9150612fa98483016132e8565b8181528481019084860184860187018b1015612fc3578788fd5b8795505b83861015612fe5578035835260019590950194918601918601612fc7565b508096505050505050509250929050565b60008060408385031215613008578182fd5b50508035926020909101359150565b60008060006060848603121561302b578081fd5b833567ffffffffffffffff81168114613042578182fd5b925060208401359150604084013563ffffffff81168114613061578182fd5b809150509250925092565b6000815180845261308481602086016020860161339e565b601f01601f19169290920160200192915050565b600681106130b657634e487b7160e01b600052602160045260246000fd5b9052565b60008084546130c8816133ca565b600182811680156130e057600181146130f15761311d565b60ff1984168752828701945061311d565b8886526020808720875b858110156131145781548a8201529084019082016130fb565b50505082870194505b50505050835161313181836020880161339e565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000009101908152600501949350505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152613194608083018461306c565b9695505050505050565b60208082528181018390526000908460408401835b86811015612ae35782356131c6816134c8565b1515825291830191908301906001016131b3565b60208082528181018390526000908460408401835b86811015612ae35761ffff61320384612c22565b16825291830191908301906001016131ef565b6020810161096a8284613098565b604081016132328285613098565b612c556020830184613098565b602081526000612c55602083018461306c565b604081526000808454613264816133ca565b8060408601526060600180841660008114613286576001811461329a576132c8565b60ff198516888401526080880195506132c8565b8987526020808820885b868110156132bf5781548b82018701529084019082016132a4565b8a018501975050505b505050505082810360208401526132df818561306c565b95945050505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156133115761331161349d565b604052919050565b6000821982111561332c5761332c613471565b500190565b60008261334057613340613487565b500490565b600081600019048311821515161561335f5761335f613471565b500290565b600061ffff8381169083168181101561337f5761337f613471565b039392505050565b60008282101561339957613399613471565b500390565b60005b838110156133b95781810151838201526020016133a1565b838111156117425750506000910152565b600181811c908216806133de57607f821691505b6020821081141561192f57634e487b7160e01b600052602260045260246000fd5b600061ffff8083168181141561341757613417613471565b6001019392505050565b600060001982141561343557613435613471565b5060010190565b600061ffff8084168061345157613451613487565b92169190910692915050565b60008261346c5761346c613487565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611c2e57600080fd5b8015158114611c2e57600080fd5b6001600160e01b031981168114611c2e57600080fdfea2646970667358221220a88fbcb06373693d9fb8f87e7cc866342e21f0ffdc2bb3f1f2a51c5118ab21c264736f6c634300080400334552433732313a207472616e7366657220746f206e6f6e20455243373231526500000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000455ad5835b5f732a8c28d0ad79abf7942f58690600000000000000000000000000000000000000000000000000000000000003520000000000000000000000005f2438d636e8cdaffa9452a8061b43afe3a6654a000000000000000000000000271682deb8c4e0901d1a1550ad2e64d568e69909000000000000000000000000455ad5835b5f732a8c28d0ad79abf7942f5869060000000000000000000000000000000000000000000000000000000063b0cd000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d665a63457a595134663578744e6d476d59466173516e4e52786a4168633159746f3553737a4a394e415a745a2f00000000000000000000000000000000000000000000000000000000000000000000000000000000005468747470733a2f2f73332e65752d776573742d322e616d617a6f6e6177732e636f6d2f6d617261646f6e616f6666696369616c2e696f2f746573745469636b65744e4654436f6e74726163745552492e6a736f6e000000000000000000000000