7ff36c82ca1f91c011de946302a0c7534f2300a9fbe6cf2d4bb959322206cc1692601255600a6014556016805463ffff000019169055604b6017556000601855610100604052602e60a0818152906200557c60c03980516200006a91601b91602090910190620001f3565b50601c80546001600160a01b031916733f0580f99cd9672cb69911afef46365134ab51e91790553480156200009e57600080fd5b50604051620055aa380380620055aa833981016040819052620000c19162000299565b6040518060400160405280600981526020016842697473747261797360b81b81525060405180604001604052806008815260200167424954535452415960c01b8152506200011e620001186200019f60201b60201c565b620001a3565b815162000133906001906020850190620001f3565b50805162000149906002906020840190620001f3565b5050600f80546001600160a01b03199081166001600160a01b03978816179091556010805482169587169590951790945550601180549093169190931617905560601b6001600160601b03191660805262000357565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620002019062000301565b90600052602060002090601f01602090048101928262000225576000855562000270565b82601f106200024057805160ff191683800117855562000270565b8280016001018555821562000270579182015b828111156200027057825182559160200191906001019062000253565b506200027e92915062000282565b5090565b5b808211156200027e576000815560010162000283565b60008060008060808587031215620002b057600080fd5b8451620002bd816200033e565b6020860151909450620002d0816200033e565b6040860151909350620002e3816200033e565b6060860151909250620002f6816200033e565b939692955090935050565b600181811c908216806200031657607f821691505b602082108114156200033857634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b03811681146200035457600080fd5b50565b60805160601c6151ff6200037d6000396000818161096201526129ab01526151ff6000f3fe6080604052600436106103c35760003560e01c8063715018a6116101f2578063c3cda5201161010d578063e985e9c5116100a0578063f1127ed81161006f578063f1127ed814610c35578063f2fde38b14610cb4578063fd65e0e414610cd4578063fe60d12c14610cef57600080fd5b8063e985e9c514610b06578063ebf0c71714610b26578063eef9981014610b3c578063f0503e8014610b4f57600080fd5b8063dab5f340116100dc578063dab5f34014610a7d578063e7a324dc14610a9d578063e8a3d48514610ad1578063e9580e9114610ae657600080fd5b8063c3cda520146109fe578063c87b56dd14610a1e578063c8fc0c2314610a3e578063d50b31eb14610a5d57600080fd5b8063a060ae1811610185578063b57e500111610154578063b57e500114610984578063b88d4fde146109a4578063baedc1c4146109c4578063c1b8e4e1146109e457600080fd5b8063a060ae18146108fb578063a22cb46514610910578063b4b5ea5714610930578063b50cbd9f1461095057600080fd5b80637ecebe00116101c15780637ecebe001461088657806384381b9d146108b35780638da5cb5b146108c857806395d89b41146108e657600080fd5b8063715018a6146107de578063755edd17146107f3578063782d6fe11461081357806378dd69f71461085057600080fd5b806342842e0e116102e25780635ac1e3bb116102755780636352211e116102445780636352211e14610736578063684931ed146107565780636fcfff451461077657806370a08231146107be57600080fd5b80635ac1e3bb146106c15780635c19a95c146106e15780635f295a671461070157806360d938dc1461071657600080fd5b80634c81433f116102b15780634c81433f1461064a5780634f6ccce714610660578063564566a814610680578063587cde1e146106a157600080fd5b806342842e0e146105df57806342966c68146105ff57806349fb340d1461061f5780634a0f30921461063557600080fd5b806318160ddd1161035a578063303e74df11610329578063303e74df1461057b578063313ce5671461059b5780633ccfd60b146105c257806341b5d0de146105ca57600080fd5b806318160ddd146104f257806320606b701461050757806323b872dd1461053b5780632f745c591461055b57600080fd5b806308bfc3531161039657806308bfc35314610479578063095ea7b31461049d5780631249c58b146104bd5780631692ca91146104d257600080fd5b806301b9a397146103c857806301ffc9a7146103ea57806306fdde031461041f578063081812fc14610441575b600080fd5b3480156103d457600080fd5b506103e86103e33660046146c6565b610d05565b005b3480156103f657600080fd5b5061040a61040536600461490b565b610e24565b60405190151581526020015b60405180910390f35b34801561042b57600080fd5b50610434610e80565b6040516104169190614cd8565b34801561044d57600080fd5b5061046161045c3660046148f2565b610f12565b6040516001600160a01b039091168152602001610416565b34801561048557600080fd5b5061048f61271081565b604051908152602001610416565b3480156104a957600080fd5b506103e86104b836600461482d565b610fb8565b3480156104c957600080fd5b5061048f6110ea565b3480156104de57600080fd5b50600f54610461906001600160a01b031681565b3480156104fe57600080fd5b5060095461048f565b34801561051357600080fd5b5061048f7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b34801561054757600080fd5b506103e8610556366004614739565b611266565b34801561056757600080fd5b5061048f61057636600461482d565b6112ed565b34801561058757600080fd5b50601054610461906001600160a01b031681565b3480156105a757600080fd5b506105b0600081565b60405160ff9091168152602001610416565b6103e8611395565b3480156105d657600080fd5b506103e861142d565b3480156105eb57600080fd5b506103e86105fa366004614739565b611530565b34801561060b57600080fd5b506103e861061a3660046148f2565b61154b565b34801561062b57600080fd5b5061048f60145481565b34801561064157600080fd5b506103e86115dc565b34801561065657600080fd5b5061048f60185481565b34801561066c57600080fd5b5061048f61067b3660046148f2565b6116a0565b34801561068c57600080fd5b5060165461040a906301000000900460ff1681565b3480156106ad57600080fd5b506104616106bc3660046146c6565b611744565b3480156106cd57600080fd5b506104346106dc3660046148f2565b611776565b3480156106ed57600080fd5b506103e86106fc3660046146c6565b6118b0565b34801561070d57600080fd5b506103e86118ce565b34801561072257600080fd5b5060165461040a9062010000900460ff1681565b34801561074257600080fd5b506104616107513660046148f2565b6119d7565b34801561076257600080fd5b50601154610461906001600160a01b031681565b34801561078257600080fd5b506107a96107913660046146c6565b600d6020526000908152604090205463ffffffff1681565b60405163ffffffff9091168152602001610416565b3480156107ca57600080fd5b5061048f6107d93660046146c6565b611a62565b3480156107ea57600080fd5b506103e8611afc565b3480156107ff57600080fd5b5061048f61080e3660046146c6565b611b62565b34801561081f57600080fd5b5061083361082e36600461482d565b611cd5565b6040516bffffffffffffffffffffffff9091168152602001610416565b34801561085c57600080fd5b5061048f61086b3660046146c6565b6001600160a01b031660009081526013602052604090205490565b34801561089257600080fd5b5061048f6108a13660046146c6565b600e6020526000908152604090205481565b3480156108bf57600080fd5b506103e8611f84565b3480156108d457600080fd5b506000546001600160a01b0316610461565b3480156108f257600080fd5b50610434612049565b34801561090757600080fd5b5061048f612058565b34801561091c57600080fd5b506103e861092b3660046147fa565b612068565b34801561093c57600080fd5b5061083361094b3660046146c6565b61214b565b34801561095c57600080fd5b506104617f000000000000000000000000000000000000000000000000000000000000000081565b34801561099057600080fd5b506103e861099f3660046146c6565b6121ce565b3480156109b057600080fd5b506103e86109bf36600461477a565b61228e565b3480156109d057600080fd5b506103e86109df366004614945565b61231c565b3480156109f057600080fd5b5060165461040a9060ff1681565b348015610a0a57600080fd5b506103e8610a19366004614859565b612389565b348015610a2a57600080fd5b50610434610a393660046148f2565b6126bb565b348015610a4a57600080fd5b5060165461040a90610100900460ff1681565b348015610a6957600080fd5b506103e8610a783660046146c6565b6127a1565b348015610a8957600080fd5b506103e8610a983660046148f2565b6128b9565b348015610aa957600080fd5b5061048f7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b348015610add57600080fd5b50610434612918565b348015610af257600080fd5b50610833610b013660046146c6565b612940565b348015610b1257600080fd5b5061040a610b21366004614700565b61296c565b348015610b3257600080fd5b5061048f60125481565b6103e8610b4a366004614ab5565b612a6a565b348015610b5b57600080fd5b50610bed610b6a3660046148f2565b6019602052600090815260409020805460019091015465ffffffffffff8083169266010000000000008082048316936c010000000000000000000000008304841693720100000000000000000000000000000000000084048116937801000000000000000000000000000000000000000000000000900481169282821692041687565b6040805165ffffffffffff9889168152968816602088015294871694860194909452918516606085015284166080840152831660a083015290911660c082015260e001610416565b348015610c4157600080fd5b50610c8b610c503660046148bb565b600c60209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b6040805163ffffffff90931683526bffffffffffffffffffffffff909116602083015201610416565b348015610cc057600080fd5b506103e8610ccf3660046146c6565b612f4f565b348015610ce057600080fd5b5061048f66b1a2bc2ec5000081565b348015610cfb57600080fd5b5061048f60175481565b6000546001600160a01b03163314610d645760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60165460ff1615610db75760405162461bcd60e51b815260206004820152601460248201527f44657363726970746f72206973206c6f636b65640000000000000000000000006044820152606401610d5b565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f6e66ab22238a5471005895947c8f57db923c2a9c9c73180eff80864c21295c1b906020015b60405180910390a150565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610e7a5750610e7a8261302e565b92915050565b606060018054610e8f90614f4f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ebb90614f4f565b8015610f085780601f10610edd57610100808354040283529160200191610f08565b820191906000526020600020905b815481529060010190602001808311610eeb57829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b0316610f9c5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610d5b565b506000908152600560205260409020546001600160a01b031690565b6000610fc3826119d7565b9050806001600160a01b0316836001600160a01b0316141561104d5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610d5b565b336001600160a01b03821614806110695750611069813361296c565b6110db5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610d5b565b6110e58383613111565b505050565b600080546001600160a01b031633146111455760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5b565b61271061115160095490565b106111c45760405162461bcd60e51b815260206004820152602960248201527f4d696e7420776f756c6420657863656564206d617820737570706c79206f662060448201527f42697473747261797300000000000000000000000000000000000000000000006064820152608401610d5b565b60006111ce612058565b1161121b5760405162461bcd60e51b815260206004820152601e60248201527f50726f6a656374207265736572766564206d696e7420657863656564656400006044820152606401610d5b565b61271061122760095490565b10156103c3576018805490600061123d83614fa3565b9091555050601a805461126191339190600061125883614fa3565b91905055613197565b905090565b6112703382613566565b6112e25760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610d5b565b6110e583838361364e565b60006112f883611a62565b821061136c5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e64730000000000000000000000000000000000000000006064820152608401610d5b565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b6000546001600160a01b031633146113ef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5b565b601c5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611429573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146114875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5b565b60165460ff16156114da5760405162461bcd60e51b815260206004820152601460248201527f44657363726970746f72206973206c6f636b65640000000000000000000000006044820152606401610d5b565b601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f593e31e306c198bef259d839f7c6dc4ff7fc10c07f76fab193a210b03704105f90600090a1565b6110e58383836040518060200160405280600081525061228e565b6000546001600160a01b031633146115a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5b565b6115ae8161383e565b60405181907f1b2d3a34f9deb4fd25486f342d11dd284539419f2c572fb034053b280b51a2bc90600090a250565b6000546001600160a01b031633146116365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5b565b601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff8116620100009182900460ff1615918202179091556040518181527f941e56f3572dbeda08652c092bc653f6b03bbe58c380f1513535118afbc0a8a690602001610e19565b60006116ab60095490565b821061171f5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e647300000000000000000000000000000000000000006064820152608401610d5b565b600982815481106117325761173261503a565b90600052602060002001549050919050565b6001600160a01b038082166000908152600b6020526040812054909116801561176d578061176f565b825b9392505050565b6000818152600360205260409020546060906001600160a01b03166118035760405162461bcd60e51b815260206004820152602f60248201527f426974737472617973546f6b656e3a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610d5b565b6010546000838152601960205260409081902090517f213319aa0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163213319aa9161185c91869190600401614ceb565b60006040518083038186803b15801561187457600080fd5b505afa158015611888573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e7a919081019061498e565b6001600160a01b0381166118c15750335b6118cb33826138fd565b50565b6000546001600160a01b031633146119285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5b565b601654610100900460ff16156119805760405162461bcd60e51b815260206004820152601060248201527f536565646572206973206c6f636b6564000000000000000000000000000000006044820152606401610d5b565b601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790556040517ff59561f22794afcfb1e6be5c4733f5449fd167252a96b74bb06d341fb0dac7ed90600090a1565b6000818152600360205260408120546001600160a01b031680610e7a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610d5b565b60006001600160a01b038216611ae05760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610d5b565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b03163314611b565760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5b565b611b606000613995565b565b600080546001600160a01b03163314611bbd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5b565b612710611bc960095490565b10611c3c5760405162461bcd60e51b815260206004820152602960248201527f4d696e7420776f756c6420657863656564206d617820737570706c79206f662060448201527f42697473747261797300000000000000000000000000000000000000000000006064820152608401610d5b565b6000611c46612058565b11611c935760405162461bcd60e51b815260206004820152601e60248201527f50726f6a656374207265736572766564206d696e7420657863656564656400006044820152606401610d5b565b612710611c9f60095490565b10156103c35760188054906000611cb583614fa3565b9091555050601a8054610e7a91849190600061125883614fa3565b919050565b6000438210611d4c5760405162461bcd60e51b815260206004820152603760248201527f455243373231436865636b706f696e7461626c653a3a6765745072696f72566f60448201527f7465733a206e6f74207965742064657465726d696e65640000000000000000006064820152608401610d5b565b6001600160a01b0383166000908152600d602052604090205463ffffffff1680611d7a576000915050610e7a565b6001600160a01b0384166000908152600c602052604081208491611d9f600185614ed9565b63ffffffff90811682526020820192909252604001600020541611611e18576001600160a01b0384166000908152600c6020526040812090611de2600184614ed9565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff169150610e7a9050565b6001600160a01b0384166000908152600c6020908152604080832083805290915290205463ffffffff16831015611e53576000915050610e7a565b600080611e61600184614ed9565b90505b8163ffffffff168163ffffffff161115611f395760006002611e868484614ed9565b611e909190614e3b565b611e9a9083614ed9565b6001600160a01b0388166000908152600c6020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff1691810191909152919250871415611f0d57602001519450610e7a9350505050565b805163ffffffff16871115611f2457819350611f32565b611f2f600183614ed9565b92505b5050611e64565b506001600160a01b0385166000908152600c6020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b6000546001600160a01b03163314611fde5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5b565b601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff811663010000009182900460ff1615918202179091556040518181527fafa97d89ca766bd74e787f7998a071ea20f4ddeea353499106df17bc9cf4deb890602001610e19565b606060028054610e8f90614f4f565b60006112616017546018546139fd565b6001600160a01b0382163314156120c15760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610d5b565b3360008181526006602090815260408083206001600160a01b0387168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6001600160a01b0381166000908152600d602052604081205463ffffffff168061217657600061176f565b6001600160a01b0383166000908152600c602052604081209061219a600184614ed9565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff169392505050565b600f546001600160a01b031633146122285760405162461bcd60e51b815260206004820152601f60248201527f53656e646572206973206e6f7420746865206269747374726179732044414f006044820152606401610d5b565b600f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f27f167c68d29e189cdd0c2976a1e1a3925b27dcb7cfb941c411828570090992e90602001610e19565b6122983383613566565b61230a5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610d5b565b61231684848484613a09565b50505050565b6000546001600160a01b031633146123765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5b565b805161142990601b9060208401906145d9565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666123b4610e80565b805190602001206123c24690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a9052825180850390910181526101408401909252815191909301207f1901000000000000000000000000000000000000000000000000000000000000610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015612509573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166125925760405162461bcd60e51b815260206004820152603660248201527f455243373231436865636b706f696e7461626c653a3a64656c6567617465427960448201527f5369673a20696e76616c6964207369676e6174757265000000000000000000006064820152608401610d5b565b6001600160a01b0381166000908152600e602052604081208054916125b683614fa3565b91905055891461262e5760405162461bcd60e51b815260206004820152603260248201527f455243373231436865636b706f696e7461626c653a3a64656c6567617465427960448201527f5369673a20696e76616c6964206e6f6e636500000000000000000000000000006064820152608401610d5b565b874211156126a45760405162461bcd60e51b815260206004820152603660248201527f455243373231436865636b706f696e7461626c653a3a64656c6567617465427960448201527f5369673a207369676e61747572652065787069726564000000000000000000006064820152608401610d5b565b6126ae818b6138fd565b505050505b505050505050565b6000818152600360205260409020546060906001600160a01b03166127485760405162461bcd60e51b815260206004820152602f60248201527f426974737472617973546f6b656e3a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610d5b565b6010546000838152601960205260409081902090517ff228ba750000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163f228ba759161185c91869190600401614ceb565b6000546001600160a01b031633146127fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5b565b601654610100900460ff16156128535760405162461bcd60e51b815260206004820152601060248201527f536565646572206973206c6f636b6564000000000000000000000000000000006044820152606401610d5b565b601180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527fb3025222d01ce9a26c7f9d52bc3bfd0352366bd90a793c273fbfe1c81e0e288e90602001610e19565b6000546001600160a01b031633146129135760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5b565b601255565b6060601b60405160200161292c9190614b9a565b604051602081830303815290604052905090565b6000610e7a61294e83611a62565b6040518060600160405280603d8152602001615156603d9139613a92565b6040517fc45527910000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600091818416917f0000000000000000000000000000000000000000000000000000000000000000169063c45527919060240160206040518083038186803b1580156129ed57600080fd5b505afa158015612a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2591906146e3565b6001600160a01b03161415612a3c57506001610e7a565b6001600160a01b0380841660009081526006602090815260408083209386168352929052205460ff1661176f565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152600090603401604051602081830303815290604052805190602001209050601660029054906101000a900460ff16151560011515148015612ae357506016546301000000900460ff16155b15612c005733600090815260136020526040902054600390612b06908590614dd4565b1115612b7c576040805162461bcd60e51b81526020600482015260248101919091527f4572726f723a20596f752063616e206f6e6c79206d696e74206120746f74616c60448201527f206f6620332042697473747261797320647572696e67207072652d73616c65736064820152608401610d5b565b612b898260125483613aca565b612bfb5760405162461bcd60e51b815260206004820152603360248201527f4572726f723a2057616c6c6574206e6f742077686974656c69737465643a204960448201527f6e76616c6964206d65726b6c652070726f6f66000000000000000000000000006064820152608401610d5b565b612d5d565b6016546301000000900460ff16612c7f5760405162461bcd60e51b815260206004820152603c60248201527f4572726f723a2053616c652f50726573616c65207374617465206d757374206260448201527f652061637469766520746f206d696e74206120426974737472617973000000006064820152608401610d5b565b60145433600090815260156020526040902054612c9d908590614dd4565b1115612d5d5760405162461bcd60e51b815260206004820152606360248201527f4572726f723a20416c7265616479206d696e746564204269747374726179732060448201527f647572696e672073616c65202b2072657175657374656420616d6f756e74206f60648201527f66206e6577204269747374726179732065786365656473206c696d6974206f6660848201527f203130000000000000000000000000000000000000000000000000000000000060a482015260c401610d5b565b612d65612058565b612d7190612710614ec2565b612d83612d7d60095490565b85613b79565b1115612df75760405162461bcd60e51b815260206004820152603960248201527f4572726f723a20596f757220707572636861736520776f756c6420657863656560448201527f64206d617820737570706c79206f6620426974737472617973000000000000006064820152608401610d5b565b612e0866b1a2bc2ec5000084613b85565b341015612e7d5760405162461bcd60e51b815260206004820152603c60248201527f4572726f723a20496e636f727265637420657468657220616d6f756e7420707260448201527f6f766964656420666f722073656c6563746564207175616e74697479000000006064820152608401610d5b565b60005b83811015612ecf57612e90612058565b612e9c90612710614ec2565b6009541015612ebd57601a8054612ebb91339190600061125883614fa3565b505b80612ec781614fa3565b915050612e80565b5060165462010000900460ff1615156001148015612ef757506016546301000000900460ff16155b15612f26573360009081526013602052604081208054859290612f1b908490614dd4565b909155506110e59050565b3360009081526015602052604081208054859290612f45908490614dd4565b9091555050505050565b6000546001600160a01b03163314612fa95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5b565b6001600160a01b0381166130255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610d5b565b6118cb81613995565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806130c157507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610e7a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610e7a565b600081815260056020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155819061315e826119d7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6011546010546040517f422e2e99000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0391821660248201526000928392169063422e2e999060440160e06040518083038186803b15801561320257600080fd5b505afa158015613216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323a9190614a05565b6019600085815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548165ffffffffffff021916908365ffffffffffff16021790555060608201518160000160126101000a81548165ffffffffffff021916908365ffffffffffff16021790555060808201518160000160186101000a81548165ffffffffffff021916908365ffffffffffff16021790555060a08201518160010160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060c08201518160010160066101000a81548165ffffffffffff021916908365ffffffffffff16021790555090506040518060e00160405290816000820160009054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016000820160069054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff16815260200160008201600c9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016000820160129054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016000820160189054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016001820160009054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016001820160069054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff168152505090506134c78484613b91565b827f03436056168167b9a5b066af8678471c79ba19ac196e7f5fcd2572265af3563f826040516135569190600060e08201905065ffffffffffff8084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401528060c08501511660c08401525092915050565b60405180910390a2509092915050565b6000818152600360205260408120546001600160a01b03166135f05760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610d5b565b60006135fb836119d7565b9050806001600160a01b0316846001600160a01b031614806136365750836001600160a01b031661362b84610f12565b6001600160a01b0316145b806136465750613646818561296c565b949350505050565b826001600160a01b0316613661826119d7565b6001600160a01b0316146136dd5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e00000000000000000000000000000000000000000000006064820152608401610d5b565b6001600160a01b0382166137585760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d5b565b613763838383613cf7565b61376e600082613111565b6001600160a01b0383166000908152600460205260408120805460019290613797908490614ec2565b90915550506001600160a01b03821660009081526004602052604081208054600192906137c5908490614dd4565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000613849826119d7565b905061385781600084613cf7565b613862600083613111565b6001600160a01b038116600090815260046020526040812080546001929061388b908490614ec2565b909155505060008281526003602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600061390883611744565b6001600160a01b038481166000818152600b602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016888616908117909155905194955093928516927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4600061398884612940565b9050612316828483613d1a565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061176f8284614ec2565b613a1484848461364e565b613a2084848484613ed7565b6123165760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610d5b565b6000816c010000000000000000000000008410613ac25760405162461bcd60e51b8152600401610d5b9190614cd8565b509192915050565b600081815b8551811015613b6e576000868281518110613aec57613aec61503a565b60200260200101519050808311613b2e576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250613b5b565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080613b6681614fa3565b915050613acf565b509092149392505050565b600061176f8284614dd4565b600061176f8284614e85565b6001600160a01b038216613be75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610d5b565b6000818152600360205260409020546001600160a01b031615613c4c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610d5b565b613c5860008383613cf7565b6001600160a01b0382166000908152600460205260408120805460019290613c81908490614dd4565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b613d02838383614084565b6110e5613d0e84611744565b613d1784611744565b60015b816001600160a01b0316836001600160a01b031614158015613d4a57506000816bffffffffffffffffffffffff16115b156110e5576001600160a01b03831615613e15576001600160a01b0383166000908152600d602052604081205463ffffffff169081613d8a576000613ddc565b6001600160a01b0385166000908152600c6020526040812090613dae600185614ed9565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff165b90506000613e0382856040518060600160405280603781526020016151936037913961413c565b9050613e1186848484614188565b5050505b6001600160a01b038216156110e5576001600160a01b0382166000908152600d602052604081205463ffffffff169081613e50576000613ea2565b6001600160a01b0384166000908152600c6020526040812090613e74600185614ed9565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff165b90506000613ec982856040518060600160405280603681526020016150dc603691396143ca565b90506126b385848484614188565b60006001600160a01b0384163b15614079576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290613f34903390899088908890600401614c9c565b602060405180830381600087803b158015613f4e57600080fd5b505af1925050508015613f7e575060408051601f3d908101601f19168201909252613f7b91810190614928565b60015b61402e573d808015613fac576040519150601f19603f3d011682016040523d82523d6000602084013e613fb1565b606091505b5080516140265760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610d5b565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050613646565b506001949350505050565b6001600160a01b0383166140df576140da81600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b614102565b816001600160a01b0316836001600160a01b031614614102576141028382614421565b6001600160a01b038216614119576110e5816144be565b826001600160a01b0316826001600160a01b0316146110e5576110e5828261456d565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff161115829061417d5760405162461bcd60e51b8152600401610d5b9190614cd8565b506136468385614efe565b60006141ac43604051806080016040528060448152602001615112604491396145b1565b905060008463ffffffff1611801561420657506001600160a01b0385166000908152600c6020526040812063ffffffff8316916141ea600188614ed9565b63ffffffff908116825260208201929092526040016000205416145b1561428f576001600160a01b0385166000908152600c602052604081208391614230600188614ed9565b63ffffffff168152602081019190915260400160002080546bffffffffffffffffffffffff92909216640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff909216919091179055614370565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff80861660208085019182526001600160a01b038b166000908152600c82528681208b8616825290915294909420925183549451909116640100000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416911617919091179055614324846001614dec565b6001600160a01b0386166000908152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff929092169190911790555b604080516bffffffffffffffffffffffff8086168252841660208201526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b6000806143d78486614e14565b9050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff16101583906144185760405162461bcd60e51b8152600401610d5b9190614cd8565b50949350505050565b6000600161442e84611a62565b6144389190614ec2565b60008381526008602052604090205490915080821461448b576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b6009546000906144d090600190614ec2565b6000838152600a6020526040812054600980549394509092849081106144f8576144f861503a565b9060005260206000200154905080600983815481106145195761451961503a565b6000918252602080832090910192909255828152600a909152604080822084905585825281205560098054806145515761455161500b565b6001900381819060005260206000200160009055905550505050565b600061457883611a62565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b6000816401000000008410613ac25760405162461bcd60e51b8152600401610d5b9190614cd8565b8280546145e590614f4f565b90600052602060002090601f016020900481019282614607576000855561464d565b82601f1061462057805160ff191683800117855561464d565b8280016001018555821561464d579182015b8281111561464d578251825591602001919060010190614632565b5061465992915061465d565b5090565b5b80821115614659576000815560010161465e565b600061468561468084614dac565b614d7b565b905082815283838301111561469957600080fd5b828260208301376000602084830101529392505050565b805165ffffffffffff81168114611cd057600080fd5b6000602082840312156146d857600080fd5b813561176f81615098565b6000602082840312156146f557600080fd5b815161176f81615098565b6000806040838503121561471357600080fd5b823561471e81615098565b9150602083013561472e81615098565b809150509250929050565b60008060006060848603121561474e57600080fd5b833561475981615098565b9250602084013561476981615098565b929592945050506040919091013590565b6000806000806080858703121561479057600080fd5b843561479b81615098565b935060208501356147ab81615098565b925060408501359150606085013567ffffffffffffffff8111156147ce57600080fd5b8501601f810187136147df57600080fd5b6147ee87823560208401614672565b91505092959194509250565b6000806040838503121561480d57600080fd5b823561481881615098565b91506020830135801515811461472e57600080fd5b6000806040838503121561484057600080fd5b823561484b81615098565b946020939093013593505050565b60008060008060008060c0878903121561487257600080fd5b863561487d81615098565b95506020870135945060408701359350606087013560ff811681146148a157600080fd5b9598949750929560808101359460a0909101359350915050565b600080604083850312156148ce57600080fd5b82356148d981615098565b9150602083013563ffffffff8116811461472e57600080fd5b60006020828403121561490457600080fd5b5035919050565b60006020828403121561491d57600080fd5b813561176f816150ad565b60006020828403121561493a57600080fd5b815161176f816150ad565b60006020828403121561495757600080fd5b813567ffffffffffffffff81111561496e57600080fd5b8201601f8101841361497f57600080fd5b61364684823560208401614672565b6000602082840312156149a057600080fd5b815167ffffffffffffffff8111156149b757600080fd5b8201601f810184136149c857600080fd5b80516149d661468082614dac565b8181528560208385010111156149eb57600080fd5b6149fc826020830160208601614f23565b95945050505050565b600060e08284031215614a1757600080fd5b60405160e0810181811067ffffffffffffffff82111715614a3a57614a3a615069565b604052614a46836146b0565b8152614a54602084016146b0565b6020820152614a65604084016146b0565b6040820152614a76606084016146b0565b6060820152614a87608084016146b0565b6080820152614a9860a084016146b0565b60a0820152614aa960c084016146b0565b60c08201529392505050565b60008060408385031215614ac857600080fd5b8235915060208084013567ffffffffffffffff80821115614ae857600080fd5b818601915086601f830112614afc57600080fd5b813581811115614b0e57614b0e615069565b8060051b9150614b1f848301614d7b565b8181528481019084860184860187018b1015614b3a57600080fd5b600095505b83861015614b5d578035835260019590950194918601918601614b3f565b508096505050505050509250929050565b60008151808452614b86816020860160208601614f23565b601f01601f19169290920160200192915050565b7f697066733a2f2f000000000000000000000000000000000000000000000000008152600060076000845481600182811c915080831680614bdc57607f831692505b6020808410821415614c15577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015614c295760018114614c5c57614c8d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008616888b015287858b01019650614c8d565b60008b81526020902060005b86811015614c835781548c82018b0152908501908301614c68565b505087858b010196505b50949998505050505050505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152614cce6080830184614b6e565b9695505050505050565b60208152600061176f6020830184614b6e565b600061010082019050838252825465ffffffffffff8082166020850152808260301c166040850152808260601c166060850152808260901c166080850152614d4260a08501828460c01c1665ffffffffffff169052565b600185015465ffffffffffff8282161660c08601529150614d7260e08501828460301c1665ffffffffffff169052565b50509392505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715614da457614da4615069565b604052919050565b600067ffffffffffffffff821115614dc657614dc6615069565b50601f01601f191660200190565b60008219821115614de757614de7614fdc565b500190565b600063ffffffff808316818516808303821115614e0b57614e0b614fdc565b01949350505050565b60006bffffffffffffffffffffffff808316818516808303821115614e0b57614e0b614fdc565b600063ffffffff80841680614e79577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ebd57614ebd614fdc565b500290565b600082821015614ed457614ed4614fdc565b500390565b600063ffffffff83811690831681811015614ef657614ef6614fdc565b039392505050565b60006bffffffffffffffffffffffff83811690831681811015614ef657614ef6614fdc565b60005b83811015614f3e578181015183820152602001614f26565b838111156123165750506000910152565b600181811c90821680614f6357607f821691505b60208210811415614f9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614fd557614fd5614fdc565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b03811681146118cb57600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000811681146118cb57600080fdfe455243373231436865636b706f696e7461626c653a3a5f6d6f766544656c6567617465733a20616d6f756e74206f766572666c6f7773455243373231436865636b706f696e7461626c653a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473455243373231436865636b706f696e7461626c653a3a766f746573546f44656c65676174653a20616d6f756e7420657863656564732039362062697473455243373231436865636b706f696e7461626c653a3a5f6d6f766544656c6567617465733a20616d6f756e7420756e646572666c6f7773a26469706673582212209b8ff68149faf2f731561ad79d54df5b529e46dc4b861d19981fe6037903ea3064736f6c63430008060033516d517852624c714766727a516f734665394b7533464b57564647433734455051487633356a5745576f614d6a6d000000000000000000000000e9ef9b2e21f462f83da78cd0596475620b7d6d360000000000000000000000009da7811ef73222393077730e7b4853a01eede1c30000000000000000000000006a0310fc7d9a9963c97e756947d1aa15a7029b58000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1