60806040526008805462ff0000191690553480156200001d57600080fd5b506040518060400160405280600e81526020016d125b5b5d5d18589b195ccb985c9d60921b815250604051806040016040528060058152602001641756d85c9d60da1b8152506200007d62000077620002d460201b60201c565b620002d8565b600180556040516200008f9062000328565b604051809103906000f080158015620000ac573d6000803e3d6000fd5b50600880546001600160a01b0392831663010000009081026301000000600160b81b03198316811793849055604051632546562960e21b8152306004820181905260016024830152604482015261ffff9182169190931617606483015260006084830181905260a48301529091049091169063951958a49060c401600060405180830381600087803b1580156200014257600080fd5b505af115801562000157573d6000803e3d6000fd5b50506040805180820190915260188082527f687474703a2f2f696d6d757461626c65732e6172742f232f00000000000000006020909201918252620001a193506014925062000336565b5060408051808201909152601a8082527f687474703a2f2f6e66742e696d6d757461626c65732e6172742f0000000000006020909201918252620001e89160159162000336565b506016805460ff1916905581516200020890601790602085019062000336565b5080516200021e90601890602084019062000336565b505060006005819055600019601d55601e81905560068190556008805462ffffff1916612328179055600280546001600160b01b0319908116909155600380549091169055600f805461ffff19166103e8179055338082526004602052604091829020805460ff1916600190811790915591519092507f395c8250a24c0334974196af39013f5f036bc82eb5270ee99dffe50d48455ac491620002c691901515815260200190565b60405180910390a262000419565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6113b780620061a183390190565b8280546200034490620003dc565b90600052602060002090601f016020900481019282620003685760008555620003b3565b82601f106200038357805160ff1916838001178555620003b3565b82800160010185558215620003b3579182015b82811115620003b357825182559160200191906001019062000396565b50620003c1929150620003c5565b5090565b5b80821115620003c15760008155600101620003c6565b600181811c90821680620003f157607f821691505b602082108114156200041357634e487b7160e01b600052602260045260246000fd5b50919050565b615d7880620004296000396000f3fe6080604052600436106104ac5760003560e01c80637bd806261161026b578063cbe5b9381161014f578063e66f53b7116100c1578063f4c9d86c11610085578063f4c9d86c14610fb1578063f4f3b20014610fd1578063f85a5a9714610ff1578063fd0c459a14611011578063fd8be44f14611024578063ff29ab4e1461105157600080fd5b8063e66f53b714610eed578063e985e9c514610f0d578063ea75794614610f56578063f2fde38b14610f71578063f337968e14610f9157600080fd5b8063d7b044b611610113578063d7b044b614610e06578063d815d0b214610e3c578063dd733ea714610e68578063dfa674a014610e88578063e25edbb314610ea8578063e6545a8614610ed857600080fd5b8063cbe5b93814610d7d578063cd00c1f914610d9d578063d0dcd5a214610dbd578063d0ee265e14610dd0578063d58f2f2714610df057600080fd5b8063a47d29cb116101e8578063b72216cd116101ac578063b72216cd14610cc7578063b83a2e8e14610ce7578063b88d4fde14610d07578063c2b3b6d114610d27578063c87b56dd14610d47578063c92f695b14610d6757600080fd5b8063a47d29cb14610c11578063a83572aa14610c47578063afd9e4f314610c67578063b03c128814610c87578063b15a9a9b14610ca757600080fd5b8063990cede81161022f578063990cede814610b715780639a5f79ad14610b915780639ddcd85914610bb1578063a0e16a3a14610bd1578063a22cb46514610bf157600080fd5b80637bd8062614610ac85780638da5cb5b14610afe5780639521a42c14610b1c57806395d89b4114610b3c5780639735b4d814610b5157600080fd5b806338af3eed116103925780635c60da1b1161030f5780636eb86599116102d35780636eb8659914610a0257806370a0823114610a22578063715018a614610a425780637878707214610a5757806378fa524814610a7757806379a84bb914610a9757600080fd5b80635c60da1b146109615780635ff82791146109885780636352211e146109a8578063641d4e38146109c85780636dc78f0c146109e857600080fd5b80634624aea4116103565780634624aea4146108d157806346c94c36146108f1578063472cad9914610911578063479767731461092c5780635961d1191461094c57600080fd5b806338af3eed1461083a5780633b1c9b681461085a5780633ccfd60b1461087c57806342842e0e146108915780634529cf18146108b157600080fd5b80631a5206b91161042b57806323b872dd116103ef57806323b872dd1461077a5780632969be221461079a5780632a08313e146107b05780632a55205a146107d05780632ab4d0521461080f5780633219bdcf1461082557600080fd5b80631a5206b9146106a85780631b689c0b146106dd5780631c0970071461070a5780631cbb4e391461072a5780632290bd4c1461074a57600080fd5b8063081812fc11610472578063081812fc146105c9578063095ea7b314610601578063107046bd1461062357806316967c0b1461065b5780631a3ef1381461067b57600080fd5b806233f9ee146104fa5780629a9b7b1461053057806301ffc9a71461055457806306fdde031461058457806307b62c001461059957600080fd5b366104f5577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b34801561050657600080fd5b5061051a610515366004614a81565b611071565b6040516105279190614af2565b60405180910390f35b34801561053c57600080fd5b50610546601e5481565b604051908152602001610527565b34801561056057600080fd5b5061057461056f366004614b1b565b61113b565b6040519015158152602001610527565b34801561059057600080fd5b5061051a61118d565b3480156105a557600080fd5b506105746105b4366004614b4d565b60046020526000908152604090205460ff1681565b3480156105d557600080fd5b506105e96105e4366004614a81565b61121f565b6040516001600160a01b039091168152602001610527565b34801561060d57600080fd5b5061062161061c366004614b6a565b6112b9565b005b34801561062f57600080fd5b5061064361063e366004614a81565b6113cf565b6040516105279c9b9a99989796959493929190614b96565b34801561066757600080fd5b50610621610676366004614c6e565b61176a565b34801561068757600080fd5b50610546610696366004614a81565b600b6020526000908152604090205481565b3480156106b457600080fd5b506002546106ca90600160a01b900461ffff1681565b60405161ffff9091168152602001610527565b3480156106e957600080fd5b506105466106f8366004614a81565b601f6020526000908152604090205481565b34801561071657600080fd5b50610621610725366004614c6e565b61182b565b34801561073657600080fd5b50610621610745366004614cca565b61186d565b34801561075657600080fd5b50610574610765366004614a81565b60126020526000908152604090205460ff1681565b34801561078657600080fd5b50610621610795366004614d15565b6118f8565b3480156107a657600080fd5b5061054660065481565b3480156107bc57600080fd5b506106216107cb366004614b4d565b611929565b3480156107dc57600080fd5b506107f06107eb366004614d56565b6119ae565b604080516001600160a01b039093168352602083019190915201610527565b34801561081b57600080fd5b50610546601d5481565b34801561083157600080fd5b50610621611a40565b34801561084657600080fd5b506003546105e9906001600160a01b031681565b34801561086657600080fd5b506003546106ca90600160a01b900461ffff1681565b34801561088857600080fd5b50610621611a8e565b34801561089d57600080fd5b506106216108ac366004614d15565b611c12565b3480156108bd57600080fd5b506106216108cc366004614a81565b611c2d565b3480156108dd57600080fd5b506106216108ec366004614b4d565b611c5c565b3480156108fd57600080fd5b5061062161090c366004614d56565b611ccb565b34801561091d57600080fd5b506008546106ca9061ffff1681565b34801561093857600080fd5b50610621610947366004614a81565b611d9d565b34801561095857600080fd5b5061051a611e04565b34801561096d57600080fd5b506008546105e990630100000090046001600160a01b031681565b34801561099457600080fd5b506106216109a3366004614a81565b611e92565b3480156109b457600080fd5b506105e96109c3366004614a81565b611ed5565b3480156109d457600080fd5b506106216109e3366004614e03565b611f4c565b3480156109f457600080fd5b506016546105749060ff1681565b348015610a0e57600080fd5b50610621610a1d366004614e03565b611ff8565b348015610a2e57600080fd5b50610546610a3d366004614b4d565b6120aa565b348015610a4e57600080fd5b50610621612131565b348015610a6357600080fd5b50610621610a72366004614e5d565b612167565b348015610a8357600080fd5b50610621610a92366004614b4d565b61228c565b348015610aa357600080fd5b506106ca610ab2366004614a81565b600d6020526000908152604090205461ffff1681565b348015610ad457600080fd5b506105e9610ae3366004614a81565b600e602052600090815260409020546001600160a01b031681565b348015610b0a57600080fd5b506000546001600160a01b03166105e9565b348015610b2857600080fd5b5061051a610b37366004614a81565b612312565b348015610b4857600080fd5b5061051a61232b565b348015610b5d57600080fd5b50610621610b6c366004614cca565b61233a565b348015610b7d57600080fd5b50610621610b8c366004614e03565b612414565b348015610b9d57600080fd5b50610621610bac366004614cca565b6124c6565b348015610bbd57600080fd5b50610621610bcc366004614e92565b612577565b348015610bdd57600080fd5b50610621610bec366004614ec8565b612610565b348015610bfd57600080fd5b50610621610c0c366004614f14565b612711565b348015610c1d57600080fd5b506105e9610c2c366004614a81565b600a602052600090815260409020546001600160a01b031681565b348015610c5357600080fd5b50610621610c62366004614a81565b6127d6565b348015610c7357600080fd5b50610621610c82366004614a81565b612888565b348015610c9357600080fd5b50610621610ca2366004614b4d565b612908565b348015610cb357600080fd5b50610546610cc2366004614d56565b61296f565b348015610cd357600080fd5b50610621610ce2366004614a81565b6129a0565b348015610cf357600080fd5b50610621610d02366004614f42565b6129f3565b348015610d1357600080fd5b50610621610d22366004614f67565b612ad4565b348015610d3357600080fd5b50610621610d42366004614a81565b612b0c565b348015610d5357600080fd5b5061051a610d62366004614a81565b612b54565b348015610d7357600080fd5b5061054660075481565b348015610d8957600080fd5b5061051a610d98366004614a81565b612c8e565b348015610da957600080fd5b50610621610db8366004614e03565b612ca7565b610621610dcb366004614fe6565b612d59565b348015610ddc57600080fd5b50610621610deb366004615104565b612f86565b348015610dfc57600080fd5b5061054660055481565b348015610e1257600080fd5b506105e9610e21366004614a81565b600c602052600090815260409020546001600160a01b031681565b348015610e4857600080fd5b50610546610e57366004614a81565b602080526000908152604090205481565b348015610e7457600080fd5b50610621610e83366004614e5d565b612fbc565b348015610e9457600080fd5b50610621610ea3366004615104565b61304c565b348015610eb457600080fd5b50610574610ec3366004614b4d565b60136020526000908152604090205460ff1681565b348015610ee457600080fd5b5061051a613082565b348015610ef957600080fd5b506002546105e9906001600160a01b031681565b348015610f1957600080fd5b50610574610f28366004615145565b6001600160a01b039182166000908152601c6020908152604080832093909416825291909152205460ff1690565b348015610f6257600080fd5b50600f546106ca9061ffff1681565b348015610f7d57600080fd5b50610621610f8c366004614b4d565b61308f565b348015610f9d57600080fd5b506008546105749062010000900460ff1681565b348015610fbd57600080fd5b50610621610fcc366004615173565b61312a565b348015610fdd57600080fd5b50610621610fec366004614b4d565b6131d6565b348015610ffd57600080fd5b5061062161100c3660046151fe565b61344a565b61062161101f366004614a81565b613487565b34801561103057600080fd5b5061104461103f366004614a81565b613724565b604051610527919061521b565b34801561105d57600080fd5b5061062161106c366004614d56565b613786565b60606000604051806101c001604052806101838152602001615b6061018391396000848152601f60209081526040808320548352600982528083208784529180529091205491925082916110c4906137eb565b6040516020016110d693929190615334565b6040516020818303038152906040529050806110f1846137eb565b60405160200161110292919061537d565b6040516020818303038152906040529050806040516020016111249190615430565b60408051601f198184030181529190529392505050565b60006001600160e01b031982166380ac58cd60e01b148061116c57506001600160e01b03198216635b5e139f60e01b145b8061118757506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606017805461119c9061525f565b80601f01602080910402602001604051908101604052809291908181526020018280546111c89061525f565b80156112155780601f106111ea57610100808354040283529160200191611215565b820191906000526020600020905b8154815290600101906020018083116111f857829003601f168201915b5050505050905090565b6000818152601960205260408120546001600160a01b031661129d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152601b60205260409020546001600160a01b031690565b60006112c482611ed5565b9050806001600160a01b0316836001600160a01b031614156113325760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401611294565b336001600160a01b038216148061134e575061134e8133610f28565b6113c05760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401611294565b6113ca83836138f0565b505050565b6009602052600090815260409020805481906113ea9061525f565b80601f01602080910402602001604051908101604052809291908181526020018280546114169061525f565b80156114635780601f1061143857610100808354040283529160200191611463565b820191906000526020600020905b81548152906001019060200180831161144657829003601f168201915b5050505050908060010180546114789061525f565b80601f01602080910402602001604051908101604052809291908181526020018280546114a49061525f565b80156114f15780601f106114c6576101008083540402835291602001916114f1565b820191906000526020600020905b8154815290600101906020018083116114d457829003601f168201915b5050505050908060020180546115069061525f565b80601f01602080910402602001604051908101604052809291908181526020018280546115329061525f565b801561157f5780601f106115545761010080835404028352916020019161157f565b820191906000526020600020905b81548152906001019060200180831161156257829003601f168201915b5050506003840154600485015460058601546006870180549697939692955060ff9091169350906115af9061525f565b80601f01602080910402602001604051908101604052809291908181526020018280546115db9061525f565b80156116285780601f106115fd57610100808354040283529160200191611628565b820191906000526020600020905b81548152906001019060200180831161160b57829003601f168201915b50505050509080600701805461163d9061525f565b80601f01602080910402602001604051908101604052809291908181526020018280546116699061525f565b80156116b65780601f1061168b576101008083540402835291602001916116b6565b820191906000526020600020905b81548152906001019060200180831161169957829003601f168201915b5050505050908060080180546116cb9061525f565b80601f01602080910402602001604051908101604052809291908181526020018280546116f79061525f565b80156117445780601f1061171957610100808354040283529160200191611744565b820191906000526020600020905b81548152906001019060200180831161172757829003601f168201915b5050506009909301549192505060ff80821691610100810482169162010000909104168c565b6000546001600160a01b031633146117945760405162461bcd60e51b8152600401611294906154d1565b6113888161ffff1610156117d35760405162461bcd60e51b815260206004820152600660248201526503e3d353030360d41b6044820152606401611294565b6127108161ffff1611156118135760405162461bcd60e51b815260206004820152600760248201526603c3d31303030360cc1b6044820152606401611294565b6008805461ffff191661ffff92909216919091179055565b6000546001600160a01b031633146118555760405162461bcd60e51b8152600401611294906154d1565b600f805461ffff191661ffff92909216919091179055565b3360009081526004602052604090205460ff1661189c5760405162461bcd60e51b815260040161129490615506565b60008381526009602052604090206118b8906008018383614974565b50827f0ead99b16970b21b06560d282fb889ff21e4b0319cf089a240eb235861d9c71383836040516118eb929190615524565b60405180910390a2505050565b611902338261395e565b61191e5760405162461bcd60e51b815260040161129490615553565b6113ca838383613a51565b3360009081526004602052604090205460ff166119585760405162461bcd60e51b815260040161129490615506565b6001600160a01b0381166000818152601360209081526040808320805460ff19169055519182527f20aa4ef1fb91d08c6d77207eacda99d5bd43dcc49f5f3c3c9521192759d1723691015b60405180910390a250565b600080601e548411156119ed5760405162461bcd60e51b81526020600482015260076024820152661d1bdad95b925960ca1b6044820152606401611294565b6000848152601f60209081526040808320548352600e909152902054600f546001600160a01b039091169061271090611a2a9061ffff16866155ba565b611a3491906155ef565b915091505b9250929050565b3360009081526004602052604090205460ff16611a6f5760405162461bcd60e51b815260040161129490615506565b6008805462ff0000198116620100009182900460ff1615909102179055565b60026001541415611ae15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611294565b6002600181905554479060009061271090611b0790600160a01b900461ffff16846155ba565b611b1191906155ef565b60035490915060009061271090611b3390600160a01b900461ffff16856155ba565b611b3d91906155ef565b9050600081611b4c8486615603565b611b569190615603565b9050611bdc81306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9557600080fd5b505afa158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd919061561a565b6001600160a01b031690613bf1565b600254611bf2906001600160a01b031684613bf1565b600354611c08906001600160a01b031683613bf1565b5050600180555050565b6113ca83838360405180602001604052806000815250612ad4565b6000546001600160a01b03163314611c575760405162461bcd60e51b8152600401611294906154d1565b600555565b6000546001600160a01b03163314611c865760405162461bcd60e51b8152600401611294906154d1565b6001600160a01b038116600081815260046020908152604091829020805460ff191660019081179091559151918252600080516020615d2383398151915291016119a3565b60008281526009602081905260409091200154829062010000900460ff1615611d065760405162461bcd60e51b815260040161129490615637565b33600090815260046020526040902054839060ff1680611d3c57506000818152600a60205260409020546001600160a01b031633145b611d585760405162461bcd60e51b815260040161129490615657565b600084815260096020526040902060030154831015611d7657600080fd5b620f4240831115611d8657600080fd5b505060009182526009602052604090912060040155565b6000818152600e60205260408082205481516386d1a69f60e01b815291516001600160a01b03909116926386d1a69f926004808201939182900301818387803b158015611de957600080fd5b505af1158015611dfd573d6000803e3d6000fd5b5050505050565b60148054611e119061525f565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3d9061525f565b8015611e8a5780601f10611e5f57610100808354040283529160200191611e8a565b820191906000526020600020905b815481529060010190602001808311611e6d57829003601f168201915b505050505081565b3360009081526004602052604090205460ff16611ec15760405162461bcd60e51b815260040161129490615506565b600654811115611ed057600080fd5b600755565b6000818152601960205260408120546001600160a01b0316806111875760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401611294565b60008281526009602081905260409091200154829062010000900460ff1615611f875760405162461bcd60e51b815260040161129490615637565b33600090815260046020526040902054839060ff1680611fbd57506000818152600a60205260409020546001600160a01b031633145b611fd95760405162461bcd60e51b815260040161129490615657565b60008481526009602090815260409091208451611dfd928601906149f8565b60008281526009602081905260409091200154829062010000900460ff16156120335760405162461bcd60e51b815260040161129490615637565b33600090815260046020526040902054839060ff168061206957506000818152600a60205260409020546001600160a01b031633145b6120855760405162461bcd60e51b815260040161129490615657565b60008481526009602090815260409091208451611dfd926007909201918601906149f8565b60006001600160a01b0382166121155760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401611294565b506001600160a01b03166000908152601a602052604090205490565b6000546001600160a01b0316331461215b5760405162461bcd60e51b8152600401611294906154d1565b6121656000613d0a565b565b6000546001600160a01b031633146121915760405162461bcd60e51b8152600401611294906154d1565b6003546121ab90600160a01b900461ffff1661271061567b565b61ffff168161ffff1611156121bf57600080fd5b6121c7611a8e565b600280546001600160a01b039081166000908152600460209081526040808320805460ff19169055935493519182529290911691600080516020615d23833981519152910160405180910390a26001600160a01b038216600081815260046020908152604091829020805460ff191660019081179091559151918252600080516020615d23833981519152910160405180910390a26002805461ffff909216600160a01b026001600160b01b03199092166001600160a01b0390931692909217179055565b3360009081526004602052604090205460ff166122bb5760405162461bcd60e51b815260040161129490615506565b6001600160a01b038116600081815260136020908152604091829020805460ff1916600190811790915591519182527f20aa4ef1fb91d08c6d77207eacda99d5bd43dcc49f5f3c3c9521192759d1723691016119a3565b60116020526000908152604090208054611e119061525f565b60606018805461119c9061525f565b8261234481611ed5565b6001600160a01b0316336001600160a01b0316148061238657506000818152601f60209081526040808320548352600a9091529020546001600160a01b031633145b6123c05760405162461bcd60e51b815260206004820152600b60248201526a30b93a34b9ba27bbb732b960a91b6044820152606401611294565b816123ca57600080fd5b83336001600160a01b03167f6bf78aac9400f5646828d4ec69efbb0b134dc78f211f851d8ddf5336d6de1e2e8585604051612406929190615524565b60405180910390a350505050565b60008281526009602081905260409091200154829062010000900460ff161561244f5760405162461bcd60e51b815260040161129490615637565b33600090815260046020526040902054839060ff168061248557506000818152600a60205260409020546001600160a01b031633145b6124a15760405162461bcd60e51b815260040161129490615657565b60008481526009602090815260409091208451611dfd926006909201918601906149f8565b60008381526009602081905260409091200154839062010000900460ff16156125015760405162461bcd60e51b815260040161129490615637565b33600090815260046020526040902054849060ff168061253757506000818152600a60205260409020546001600160a01b031633145b6125535760405162461bcd60e51b815260040161129490615657565b600085815260096020526040902061256f906002018585614974565b505050505050565b33600090815260046020526040902054829060ff16806125ad57506000818152600a60205260409020546001600160a01b031633145b6125c95760405162461bcd60e51b815260040161129490615657565b60008260ff16116125d957600080fd5b60ff8260ff1611156125ea57600080fd5b50600091825260096020526040909120600501805460ff191660ff909216919091179055565b6000838152600a602052604090205483906001600160a01b031633146126615760405162461bcd60e51b8152602060048201526006602482015265185c9d1a5cdd60d21b6044820152606401611294565b6000848152600c6020908152604080832080546001600160a01b0319166001600160a01b03888116918217909255600d8452828520805461ffff191661ffff8916908117909155600e90945293829020549151630b44cc2360e31b8152600481019490945260248401929092521690635a26611890604401600060405180830381600087803b1580156126f357600080fd5b505af1158015612707573d6000803e3d6000fd5b5050505050505050565b6001600160a01b03821633141561276a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401611294565b336000818152601c602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60008181526009602081905260409091200154819062010000900460ff16156128115760405162461bcd60e51b815260040161129490615637565b33600090815260046020526040902054829060ff168061284757506000818152600a60205260409020546001600160a01b031633145b6128635760405162461bcd60e51b815260040161129490615657565b5050600090815260096020819052604090912001805462ff0000191662010000179055565b33600090815260046020526040902054819060ff16806128be57506000818152600a60205260409020546001600160a01b031633145b6128da5760405162461bcd60e51b815260040161129490615657565b50600090815260096020819052604090912001805461ff001981166101009182900460ff1615909102179055565b6000546001600160a01b031633146129325760405162461bcd60e51b8152600401611294906154d1565b6001600160a01b0381166000818152600460209081526040808320805460ff1916905551918252600080516020615d2383398151915291016119a3565b6021602052816000526040600020818154811061298b57600080fd5b90600052602060002001600091509150505481565b3360009081526004602052604090205460ff166129cf5760405162461bcd60e51b815260040161129490615506565b600090815260096020819052604090912001805460ff19811660ff90911615179055565b6000828152600a602052604090205482906001600160a01b03163314612a445760405162461bcd60e51b8152602060048201526006602482015265185c9d1a5cdd60d21b6044820152606401611294565b6000838152600a6020908152604080832080546001600160a01b0319166001600160a01b03878116918217909255600e90935292819020549051632541519f60e01b8152600481019290925290911690632541519f90602401600060405180830381600087803b158015612ab757600080fd5b505af1158015612acb573d6000803e3d6000fd5b50505050505050565b612ade338361395e565b612afa5760405162461bcd60e51b815260040161129490615553565b612b0684848484613d5a565b50505050565b6000546001600160a01b03163314612b365760405162461bcd60e51b8152600401611294906154d1565b600090815260096020819052604090912001805462ff000019169055565b6000818152601960205260409020546060906001600160a01b0316612bd35760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401611294565b60165460ff1615612c3a576000612be8613d8d565b90506000815111612c085760405180602001604052806000815250612c33565b80612c1284613d9c565b604051602001612c2392919061569e565b6040516020818303038152906040525b9392505050565b6000612c76612c4884613e99565b612c5185613f5d565b604051602001612c629291906156cd565b604051602081830303815290604052614120565b9050806040516020016111249190615723565b919050565b60106020526000908152604090208054611e119061525f565b60008281526009602081905260409091200154829062010000900460ff1615612ce25760405162461bcd60e51b815260040161129490615637565b33600090815260046020526040902054839060ff1680612d1857506000818152600a60205260409020546001600160a01b031633145b612d345760405162461bcd60e51b815260040161129490615657565b60008481526009602090815260409091208451611dfd926001909201918601906149f8565b60085462010000900460ff1615612db2573360009081526013602052604090205460ff16612db25760405162461bcd60e51b8152600401611294906020808252600490820152630c2eae8d60e31b604082015260600190565b600554341015612df25760405162461bcd60e51b815260206004820152600b60248201526a70726f6a6563742066656560a81b6044820152606401611294565b8a612dfc57600080fd5b88612e0657600080fd5b600085118015612e195750620f42408511155b612e2257600080fd5b60068054906000612e3283615768565b90915550506006546000818152600960205260409020612e53908e8e614974565b506000818152600960205260409020612e70906001018c8c614974565b506000818152600960205260409020612e8d906002018a8a614974565b506000818152600a6020818152604080842080546001600160a01b03191633179055600b82528084208b90556009909152822060038101929092556004820188905560058201805460ff19169091179055612eec906006018686614974565b506000818152600960205260409020612f09906007018484614974565b50600081815260096020819052604090912001805462ffffff1916610100179055612f3381614285565b80336001600160a01b03167f5c140d52cf47197b4d624d765c480f3363ad0fc2ccf9115197cdfe2add9e877e8f8f604051612f6f929190615524565b60405180910390a350505050505050505050505050565b6000546001600160a01b03163314612fb05760405162461bcd60e51b8152600401611294906154d1565b6113ca60158383614974565b6000546001600160a01b03163314612fe65760405162461bcd60e51b8152600401611294906154d1565b60025461300090600160a01b900461ffff1661271061567b565b61ffff168161ffff16111561301457600080fd5b61301c611a8e565b6003805461ffff909216600160a01b026001600160b01b03199092166001600160a01b0390931692909217179055565b6000546001600160a01b031633146130765760405162461bcd60e51b8152600401611294906154d1565b6113ca60148383614974565b60158054611e119061525f565b6000546001600160a01b031633146130b95760405162461bcd60e51b8152600401611294906154d1565b6001600160a01b03811661311e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611294565b61312781613d0a565b50565b33600090815260046020526040902054869060ff168061316057506000818152600a60205260409020546001600160a01b031633145b61317c5760405162461bcd60e51b815260040161129490615657565b6000878152601060205260409020613195908787614974565b5060008781526011602052604090206131af908585614974565b5050600095865260126020526040909520805460ff19169515159590951790945550505050565b600260015414156132295760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611294565b60026001556040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b15801561327057600080fd5b505afa158015613284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a89190615783565b9050600081116132e65760405162461bcd60e51b81526020600482015260096024820152686e6f20746f6b656e7360b81b6044820152606401611294565b6002546000906127109061330590600160a01b900461ffff16846155ba565b61330f91906155ef565b6003549091506000906127109061333190600160a01b900461ffff16856155ba565b61333b91906155ef565b905060008161334a8486615603565b6133549190615603565b90506133d185306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561339357600080fd5b505afa1580156133a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133cb919061561a565b8361440b565b6002546001600160a01b0316158015906133eb5750600083115b15613408576002546134089086906001600160a01b03168561440b565b6003546001600160a01b0316158015906134225750600082115b1561343f5760035461343f9086906001600160a01b03168461440b565b505060018055505050565b6000546001600160a01b031633146134745760405162461bcd60e51b8152600401611294906154d1565b6016805460ff1916911515919091179055565b6000818152600b60205260409020543410156134d05760405162461bcd60e51b81526020600482015260086024820152676d696e742066656560c01b6044820152606401611294565b60008181526009602052604090206004810154600390910154106135215760405162461bcd60e51b81526020600482015260086024820152671cdbdb19081bdd5d60c21b6044820152606401611294565b6000818152600960208190526040909120015460ff168061355857506000818152600a60205260409020546001600160a01b031633145b8061357257503360009081526004602052604090205460ff165b6135ab5760405162461bcd60e51b815260206004820152600a6024820152696e6f742061637469766560b01b6044820152606401611294565b60008181526009602081905260409091200154610100900460ff1615806135e857506000818152600a60205260409020546001600160a01b031633145b8061360257503360009081526004602052604090205460ff165b6136375760405162461bcd60e51b81526020600482015260066024820152651c185d5cd95960d21b6044820152606401611294565b6000601e6000815461364890615768565b9182905550600083815260096020526040812060030180549293509091829061367090615768565b91829055506000838152601f60209081526040808320879055818052808320849055868352602182528220805460018101825590835291200183905590506136b8338361445d565b6000838152600e60205260409020546136da906001600160a01b031634613bf1565b8183336001600160a01b03167f35d0381720eeb0a767201805f38d34425c787d27861d1210e5086ad17df7de038460405161371791815260200190565b60405180910390a4505050565b60008181526021602090815260409182902080548351818402810184019094528084526060939283018282801561377a57602002820191906000526020600020905b815481526020019060010190808311613766575b50505050509050919050565b33600090815260046020526040902054829060ff16806137bc57506000818152600a60205260409020546001600160a01b031633145b6137d85760405162461bcd60e51b815260040161129490615657565b506000918252600b602052604090912055565b60608161380f5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613839578061382381615768565b91506138329050600a836155ef565b9150613813565b6000816001600160401b0381111561385357613853614d78565b6040519080825280601f01601f19166020018201604052801561387d576020820181803683370190505b5090505b84156138e857613892600183615603565b915061389f600a8661579c565b6138aa9060306157b0565b60f81b8183815181106138bf576138bf6157c8565b60200101906001600160f81b031916908160001a9053506138e1600a866155ef565b9450613881565b949350505050565b6000818152601b6020526040902080546001600160a01b0319166001600160a01b038416908117909155819061392582611ed5565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152601960205260408120546001600160a01b03166139d75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401611294565b60006139e283611ed5565b9050806001600160a01b0316846001600160a01b03161480613a1d5750836001600160a01b0316613a128461121f565b6001600160a01b0316145b806138e857506001600160a01b038082166000908152601c602090815260408083209388168352929052205460ff166138e8565b826001600160a01b0316613a6482611ed5565b6001600160a01b031614613acc5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401611294565b6001600160a01b038216613b2e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401611294565b613b396000826138f0565b6001600160a01b0383166000908152601a60205260408120805460019290613b62908490615603565b90915550506001600160a01b0382166000908152601a60205260408120805460019290613b909084906157b0565b909155505060008181526019602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b80471015613c415760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611294565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613c8e576040519150601f19603f3d011682016040523d82523d6000602084013e613c93565b606091505b50509050806113ca5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611294565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b613d65848484613a51565b613d718484848461459f565b612b065760405162461bcd60e51b8152600401611294906157de565b60606015805461119c9061525f565b606081613dc05750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613dea5780613dd481615768565b9150613de39050600a836155ef565b9150613dc4565b6000816001600160401b03811115613e0457613e04614d78565b6040519080825280601f01601f191660200182016040528015613e2e576020820181803683370190505b5090505b84156138e857613e43600183615603565b9150613e50600a8661579c565b613e5b9060306157b0565b60f81b818381518110613e7057613e706157c8565b60200101906001600160f81b031916908160001a905350613e92600a866155ef565b9450613e32565b6000818152601f60205260408120546060916014613eb6836137eb565b6000868152602080526040902054613ecd906137eb565b604051602001613edf93929190615830565b60408051601f198184030181529181526000848152600960209081528282208883529080529181205492935091613f15906137eb565b600085815260096020526040902060020184613f30896146ac565b604051602001613f44959493929190615876565b60408051601f1981840301815291905295945050505050565b6000818152601f602090815260408083205483526010909152812080546060929190613f889061525f565b80601f0160208091040260200160405190810160405280929190818152602001828054613fb49061525f565b80156140015780601f10613fd657610100808354040283529160200191614001565b820191906000526020600020905b815481529060010190602001808311613fe457829003601f168201915b5050506000868152601f602090815260408083205483526011909152812080549495509093909250614033915061525f565b80601f016020809104026020016040519081016040528092919081815260200182805461405f9061525f565b80156140ac5780601f10614081576101008083540402835291602001916140ac565b820191906000526020600020905b81548152906001019060200180831161408f57829003601f168201915b50505050509050600082511180156140c5575060008151115b156140ff57816140d4856137eb565b826040516020016140e793929190615942565b60405160208183030381529060405292505050919050565b61411061410b85611071565b614120565b6040516020016140e79190615985565b805160609080614140575050604080516020810190915260008152919050565b6000600361414f8360026157b0565b61415991906155ef565b6141649060046155ba565b905060006141738260206157b0565b6001600160401b0381111561418a5761418a614d78565b6040519080825280601f01601f1916602001820160405280156141b4576020820181803683370190505b5090506000604051806060016040528060408152602001615ce3604091399050600181016020830160005b86811015614240576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b8352600490920191016141df565b50600386066001811461425a576002811461426b57614277565b613d3d60f01b600119830152614277565b603d60f81b6000198301525b505050918152949350505050565b6000818152600e60205260409020546001600160a01b0316156143005760405162461bcd60e51b815260206004820152602d60248201527f726f79616c7479206d616e6167657220616c726561647920657869737473206660448201526c1bdc8817dc1c9bda9958dd1259609a1b6064820152608401611294565b60085460009061431f90630100000090046001600160a01b03166146ff565b6000838152600e6020908152604080832080546001600160a01b0319166001600160a01b03868116918217909255600a909352818420546008549251632546562960e21b8152306004820152602481018990529116604482015261ffff90911660648201526084810183905260a481019290925291925063951958a49060c401600060405180830381600087803b1580156143b957600080fd5b505af11580156143cd573d6000803e3d6000fd5b50506040518492506001600160a01b03841691507f429754bcf618a929bf6c4c1c01b1d381eb920cf0445093c8e7e0aa4b2af457c390600090a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526113ca908490614797565b6001600160a01b0382166144b35760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401611294565b6000818152601960205260409020546001600160a01b0316156145185760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401611294565b6001600160a01b0382166000908152601a602052604081208054600192906145419084906157b0565b909155505060008181526019602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b156146a157604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906145e39033908990889088906004016159ca565b602060405180830381600087803b1580156145fd57600080fd5b505af192505050801561462d575060408051601f3d908101601f1916820190925261462a91810190615a07565b60015b614687573d80801561465b576040519150601f19603f3d011682016040523d82523d6000602084013e614660565b606091505b50805161467f5760405162461bcd60e51b8152600401611294906157de565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506138e8565b506001949350505050565b6000818152601f6020908152604080832054808452600983528184209151606094919391926146e79290916001830191600884019101615a24565b60408051601f19818403018152919052949350505050565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528260601b60148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09150506001600160a01b038116612c895760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401611294565b60006147ec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166148699092919063ffffffff16565b8051909150156113ca578080602001905181019061480a9190615b26565b6113ca5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611294565b60606138e8848460008585843b6148c25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611294565b600080866001600160a01b031685876040516148de9190615b43565b60006040518083038185875af1925050503d806000811461491b576040519150601f19603f3d011682016040523d82523d6000602084013e614920565b606091505b509150915061493082828661493b565b979650505050505050565b6060831561494a575081612c33565b82511561495a5782518084602001fd5b8160405162461bcd60e51b81526004016112949190614af2565b8280546149809061525f565b90600052602060002090601f0160209004810192826149a257600085556149e8565b82601f106149bb5782800160ff198235161785556149e8565b828001600101855582156149e8579182015b828111156149e85782358255916020019190600101906149cd565b506149f4929150614a6c565b5090565b828054614a049061525f565b90600052602060002090601f016020900481019282614a2657600085556149e8565b82601f10614a3f57805160ff19168380011785556149e8565b828001600101855582156149e8579182015b828111156149e8578251825591602001919060010190614a51565b5b808211156149f45760008155600101614a6d565b600060208284031215614a9357600080fd5b5035919050565b60005b83811015614ab5578181015183820152602001614a9d565b83811115612b065750506000910152565b60008151808452614ade816020860160208601614a9a565b601f01601f19169290920160200192915050565b602081526000612c336020830184614ac6565b6001600160e01b03198116811461312757600080fd5b600060208284031215614b2d57600080fd5b8135612c3381614b05565b6001600160a01b038116811461312757600080fd5b600060208284031215614b5f57600080fd5b8135612c3381614b38565b60008060408385031215614b7d57600080fd5b8235614b8881614b38565b946020939093013593505050565b61018081526000614bab61018083018f614ac6565b8281036020840152614bbd818f614ac6565b90508281036040840152614bd1818e614ac6565b90508b60608401528a6080840152614bee60a084018b60ff169052565b82810360c0840152614c00818a614ac6565b905082810360e0840152614c148189614ac6565b9050828103610100840152614c298188614ac6565b915050614c3b61012083018615159052565b921515610140820152901515610160909101529a9950505050505050505050565b803561ffff81168114612c8957600080fd5b600060208284031215614c8057600080fd5b612c3382614c5c565b60008083601f840112614c9b57600080fd5b5081356001600160401b03811115614cb257600080fd5b602083019150836020828501011115611a3957600080fd5b600080600060408486031215614cdf57600080fd5b8335925060208401356001600160401b03811115614cfc57600080fd5b614d0886828701614c89565b9497909650939450505050565b600080600060608486031215614d2a57600080fd5b8335614d3581614b38565b92506020840135614d4581614b38565b929592945050506040919091013590565b60008060408385031215614d6957600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115614da857614da8614d78565b604051601f8501601f19908116603f01168101908282118183101715614dd057614dd0614d78565b81604052809350858152868686011115614de957600080fd5b858560208301376000602087830101525050509392505050565b60008060408385031215614e1657600080fd5b8235915060208301356001600160401b03811115614e3357600080fd5b8301601f81018513614e4457600080fd5b614e5385823560208401614d8e565b9150509250929050565b60008060408385031215614e7057600080fd5b8235614e7b81614b38565b9150614e8960208401614c5c565b90509250929050565b60008060408385031215614ea557600080fd5b82359150602083013560ff81168114614ebd57600080fd5b809150509250929050565b600080600060608486031215614edd57600080fd5b833592506020840135614eef81614b38565b9150614efd60408501614c5c565b90509250925092565b801515811461312757600080fd5b60008060408385031215614f2757600080fd5b8235614f3281614b38565b91506020830135614ebd81614f06565b60008060408385031215614f5557600080fd5b823591506020830135614ebd81614b38565b60008060008060808587031215614f7d57600080fd5b8435614f8881614b38565b93506020850135614f9881614b38565b92506040850135915060608501356001600160401b03811115614fba57600080fd5b8501601f81018713614fcb57600080fd5b614fda87823560208401614d8e565b91505092959194509250565b60008060008060008060008060008060008060e08d8f03121561500857600080fd5b6001600160401b038d35111561501d57600080fd5b61502a8e8e358f01614c89565b909c509a506001600160401b0360208e0135111561504757600080fd5b6150578e60208f01358f01614c89565b909a5098506001600160401b0360408e0135111561507457600080fd5b6150848e60408f01358f01614c89565b909850965060608d0135955060808d013594506001600160401b0360a08e013511156150af57600080fd5b6150bf8e60a08f01358f01614c89565b90945092506001600160401b0360c08e013511156150dc57600080fd5b6150ec8e60c08f01358f01614c89565b81935080925050509295989b509295989b509295989b565b6000806020838503121561511757600080fd5b82356001600160401b0381111561512d57600080fd5b61513985828601614c89565b90969095509350505050565b6000806040838503121561515857600080fd5b823561516381614b38565b91506020830135614ebd81614b38565b6000806000806000806080878903121561518c57600080fd5b8635955060208701356001600160401b03808211156151aa57600080fd5b6151b68a838b01614c89565b909750955060408901359150808211156151cf57600080fd5b506151dc89828a01614c89565b90945092505060608701356151f081614f06565b809150509295509295509295565b60006020828403121561521057600080fd5b8135612c3381614f06565b6020808252825182820181905260009190848201906040850190845b8181101561525357835183529284019291840191600101615237565b50909695505050505050565b600181811c9082168061527357607f821691505b6020821081141561529457634e487b7160e01b600052602260045260246000fd5b50919050565b8054600090600181811c90808316806152b457607f831692505b60208084108214156152d657634e487b7160e01b600052602260045260246000fd5b8180156152ea57600181146152fb57615328565b60ff19861689528489019650615328565b60008881526020902060005b868110156153205781548b820152908501908301615307565b505084890196505b50505050505092915050565b60008451615346818460208901614a9a565b6153528184018661529a565b90506201011960ed1b81528351615370816003840160208801614a9a565b0160030195945050505050565b6000835161538f818460208801614a9a565b80830190507f3c2f746578743e3c7465787420636c6173733d2265646974696f6e2220783d2281527f3530252220793d223130252220646f6d696e616e742d626173656c696e653d2260208201527f6d6964646c652220746578742d616e63686f723d226d6964646c65223e5d5b616040820152640393a1011960dd1b60608201528351615424816065840160208801614a9a565b01606501949350505050565b60008251615442818460208701614a9a565b7f3c2f746578743e3c7465787420636c6173733d22626173652220783d223530259201918252507f222079203d20223530252220646f6d696e616e742d626173656c696e653d226d60208201527f6964646c652220746578742d616e63686f723d226d6964646c65223e5d5b3c2f60408201526a3a32bc3a1f1e17b9bb339f60a91b6060820152606b01919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600490820152637465616d60e01b604082015260600190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156155d4576155d46155a4565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826155fe576155fe6155d9565b500490565b600082821015615615576156156155a4565b500390565b60006020828403121561562c57600080fd5b8151612c3381614b38565b6020808252600690820152651b1bd8dad95960d21b604082015260600190565b6020808252600a90820152696172746973745465616d60b01b604082015260600190565b600061ffff83811690831681811015615696576156966155a4565b039392505050565b600083516156b0818460208801614a9a565b8351908301906156c4818360208801614a9a565b01949350505050565b600083516156df818460208801614a9a565b6b16101134b6b0b3b2911d101160a11b908301908152835161570881600c840160208801614a9a565b61227d60f01b600c9290910191820152600e01949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161575b81601d850160208701614a9a565b91909101601d0192915050565b600060001982141561577c5761577c6155a4565b5060010190565b60006020828403121561579557600080fd5b5051919050565b6000826157ab576157ab6155d9565b500690565b600082198211156157c3576157c36155a4565b500190565b634e487b7160e01b600052603260045260246000fd5b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600061583c828661529a565b845161584c818360208901614a9a565b602f60f81b91019081528351615869816001840160208801614a9a565b0160010195945050505050565b693d913730b6b2911d101160b11b81526000615895600a83018861529a565b6201011960ed1b815286516158b1816003840160208b01614a9a565b72111610113232b9b1b934b83a34b7b7111d101160691b600392909101918201526158df601682018761529a565b731116101132bc3a32b93730b62fbab936111d101160611b8152855190915061590f816014840160208901614a9a565b6201116160ed1b601492909101918201528351615933816017840160208801614a9a565b01601701979650505050505050565b60008451615954818460208901614a9a565b845190830190615968818360208901614a9a565b845191019061597b818360208801614a9a565b0195945050505050565b7f646174613a696d6167652f7376672b786d6c3b6261736536342c0000000000008152600082516159bd81601a850160208701614a9a565b91909101601a0192915050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906159fd90830184614ac6565b9695505050505050565b600060208284031215615a1957600080fd5b8151612c3381614b05565b6e2261747472696275746573223a205b60881b81527f7b2274726169745f74797065223a202250726f6a656374222c202276616c7565600f82015263111d101160e11b602f8201819052600090615a7e603384018761529a565b62089f4b60ea1b8082527f7b2274726169745f74797065223a2022417274697374222c202276616c7565226003830152621d101160e91b6023830152615ac7602683018861529a565b9150808252507f7b2274726169745f74797065223a202243617465676f7279222c2276616c75656003820152816023820152615b06602782018661529a565b61227d60f01b8152605d60f81b6002820152600301979650505050505050565b600060208284031215615b3857600080fd5b8151612c3381614f06565b60008251615b55818460208701614a9a565b919091019291505056fe3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e202e65646974696f6e207b2066696c6c3a20236666666666663b20666f6e742d66616d696c793a204f70656e2053616e733b20666f6e742d73697a653a20313270783b207d202e62617365207b2066696c6c3a20236666666666663b20666f6e742d66616d696c793a204f70656e2053616e733b20666f6e742d73697a653a2031383070783b207d203c2f7374796c653e203c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d222339343030443322202f3e203c7465787420636c6173733d2265646974696f6e2220783d223530252220793d2235252220646f6d696e616e742d626173656c696e653d226d6964646c652220746578742d616e63686f723d226d6964646c65223e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f395c8250a24c0334974196af39013f5f036bc82eb5270ee99dffe50d48455ac4a2646970667358221220fc456a27ca0a426c7859bc559500cb05254a855e0a4d1e7b8c83b60318e64cc764736f6c63430008090033608060405234801561001057600080fd5b5060018055611393806100246000396000f3fe6080604052600436106100ab5760003560e01c80635a266118116100645780635a266118146101e057806386d1a69f14610200578063951958a4146102155780639b562c5914610235578063f447566b14610257578063fc94e54e1461027957600080fd5b80632437abfa146100ec5780632541519f1461010e57806343bc16121461012e578063472cad991461016b57806351b68370146101a057806359748cb2146101c057600080fd5b366100e75760405134815233907f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7709060200160405180910390a2005b600080fd5b3480156100f857600080fd5b5061010c610107366004611116565b61029d565b005b34801561011a57600080fd5b5061010c610129366004611116565b610585565b34801561013a57600080fd5b5060045461014e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561017757600080fd5b5060055461018d90600160a01b900461ffff1681565b60405161ffff9091168152602001610162565b3480156101ac57600080fd5b5060025461014e906001600160a01b031681565b3480156101cc57600080fd5b5060055461014e906001600160a01b031681565b3480156101ec57600080fd5b5061010c6101fb36600461114a565b61068f565b34801561020c57600080fd5b5061010c6108ef565b34801561022157600080fd5b5061010c61023036600461117f565b610b12565b34801561024157600080fd5b5060055461018d90600160c01b900461ffff1681565b34801561026357600080fd5b5060055461018d90600160b01b900461ffff1681565b34801561028557600080fd5b5061028f60035481565b604051908152602001610162565b600260015414156102f55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b15801561033c57600080fd5b505afa158015610350573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037491906111f2565b9050600081116103b25760405162461bcd60e51b81526020600482015260096024820152686e6f20746f6b656e7360b81b60448201526064016102ec565b600554600090612710906103d190600160b01b900461ffff1684611221565b6103db9190611240565b600554909150600090612710906103fd90600160c01b900461ffff1685611221565b6104079190611240565b90506000816104168486611262565b6104209190611262565b60025490915061043b9086906001600160a01b031683610d42565b6002546040518281526001600160a01b03918216918716907f8bdce7585b0e3cc7225a864f2c9e8e4e08b7f89e20a5bac39917b68a0a3fb5e39060200160405180910390a36004546001600160a01b03161580159061049a5750600083115b156104fd576004546104b79086906001600160a01b031685610d42565b6004546040518481526001600160a01b03918216918716907f8bdce7585b0e3cc7225a864f2c9e8e4e08b7f89e20a5bac39917b68a0a3fb5e39060200160405180910390a35b6005546001600160a01b0316158015906105175750600082115b1561057a576005546105349086906001600160a01b031684610d42565b6005546040518381526001600160a01b03918216918716907f8bdce7585b0e3cc7225a864f2c9e8e4e08b7f89e20a5bac39917b68a0a3fb5e39060200160405180910390a35b505060018055505050565b6002546001600160a01b0316336001600160a01b031614806105ba57506004546001600160a01b0316336001600160a01b0316145b6105ef5760405162461bcd60e51b81526004016102ec906020808252600490820152630c2eae8d60e31b604082015260600190565b600454600554604051600160b01b90910461ffff1681526001600160a01b03909116907f104b8837ec12e86f303ac7ce5e3bf20c6790f843fabd7451943f3390fc8376cb9060200160405180910390a2600480546001600160a01b0319166001600160a01b038316908117909155600554604051600160b01b90910461ffff16815260008051602061133e8339815191529060200160405180910390a250565b6002546001600160a01b0316336001600160a01b031614806106c457506004546001600160a01b0316336001600160a01b0316145b6106f95760405162461bcd60e51b81526004016102ec906020808252600490820152630c2eae8d60e31b604082015260600190565b60055461ffff600160a01b9091048116908216111561074c5760405162461bcd60e51b815260206004820152600f60248201526e70657263656e7420746f6f2062696760881b60448201526064016102ec565b6107546108ef565b600454600554604051600160b01b90910461ffff1681526001600160a01b03909116907f104b8837ec12e86f303ac7ce5e3bf20c6790f843fabd7451943f3390fc8376cb9060200160405180910390a26005546001600160a01b03161561080257600554604051600160c01b820461ffff1681526001600160a01b03909116907f104b8837ec12e86f303ac7ce5e3bf20c6790f843fabd7451943f3390fc8376cb9060200160405180910390a25b6005805461ffff808416600160c01b02600165ffff0000000160a01b03199092166001600160a01b03861617919091179182905561084a918391600160a01b90910416611279565b6005805461ffff60b01b1916600160b01b61ffff938416810291909117918290556004546040519190920490921682526001600160a01b03169060008051602061133e8339815191529060200160405180910390a26005546001600160a01b0316156108eb57600554604051600160c01b820461ffff1681526001600160a01b039091169060008051602061133e8339815191529060200160405180910390a25b5050565b600260015414156109425760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102ec565b6002600155478015610b0b576005546000906127109061096d90600160b01b900461ffff1684611221565b6109779190611240565b6005549091506000906127109061099990600160c01b900461ffff1685611221565b6109a39190611240565b90506000816109b28486611262565b6109bc9190611262565b6002549091506109d5906001600160a01b031682610d99565b6002546040518281526001600160a01b03909116907fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b0569060200160405180910390a26004546001600160a01b031615801590610a315750600083115b15610a8f57600454610a4c906001600160a01b031684610d99565b6004546040518481526001600160a01b03909116907fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b0569060200160405180910390a25b6005546001600160a01b031615801590610aa95750600082115b15610b0757600554610ac4906001600160a01b031683610d99565b6005546040518381526001600160a01b03909116907fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b0569060200160405180910390a25b5050505b5060018055565b600054610100900460ff1680610b2b575060005460ff16155b610b8e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102ec565b600054610100900460ff16158015610bb0576000805461ffff19166101011790555b600280546001600160a01b03808a166001600160a01b03199283161790925560038890556004805488841692169190911790556005805461ffff858116600160c01b02600165ffff0000000160a01b0319918916600160a01b0291909116600163ffff000160b01b03199092169190911792861692909217919091179055610c388285611279565b6005805461ffff60b01b1916600160b01b61ffff9384160217908190556002546001600160a01b03169160008051602061133e83398151915291610c8791600160a01b90910416612710611279565b60405161ffff909116815260200160405180910390a2600454600554604051600160b01b90910461ffff1681526001600160a01b039091169060008051602061133e8339815191529060200160405180910390a26005546001600160a01b031615610d2757600554604051600160c01b820461ffff1681526001600160a01b039091169060008051602061133e8339815191529060200160405180910390a25b8015610d39576000805461ff00191690555b50505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610d94908490610eb2565b505050565b80471015610de95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102ec565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610e36576040519150601f19603f3d011682016040523d82523d6000602084013e610e3b565b606091505b5050905080610d945760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102ec565b6000610f07826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610f849092919063ffffffff16565b805190915015610d945780806020019051810190610f25919061129c565b610d945760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102ec565b6060610f938484600085610f9d565b90505b9392505050565b606082471015610ffe5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102ec565b843b61104c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102ec565b600080866001600160a01b0316858760405161106891906112ee565b60006040518083038185875af1925050503d80600081146110a5576040519150601f19603f3d011682016040523d82523d6000602084013e6110aa565b606091505b50915091506110ba8282866110c5565b979650505050505050565b606083156110d4575081610f96565b8251156110e45782518084602001fd5b8160405162461bcd60e51b81526004016102ec919061130a565b6001600160a01b038116811461111357600080fd5b50565b60006020828403121561112857600080fd5b8135610f96816110fe565b803561ffff8116811461114557600080fd5b919050565b6000806040838503121561115d57600080fd5b8235611168816110fe565b915061117660208401611133565b90509250929050565b60008060008060008060c0878903121561119857600080fd5b86356111a3816110fe565b95506020870135945060408701356111ba816110fe565b93506111c860608801611133565b925060808701356111d8816110fe565b91506111e660a08801611133565b90509295509295509295565b60006020828403121561120457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561123b5761123b61120b565b500290565b60008261125d57634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156112745761127461120b565b500390565b600061ffff838116908316818110156112945761129461120b565b039392505050565b6000602082840312156112ae57600080fd5b81518015158114610f9657600080fd5b60005b838110156112d95781810151838201526020016112c1565b838111156112e8576000848401525b50505050565b600082516113008184602087016112be565b9190910192915050565b60208152600082518060208401526113298160408501602087016112be565b601f01601f1916919091016040019291505056fe40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905faca264697066735822122096772b62db352165086235cb24be2231481653d0ff6e366d1f6ad784e0c3411964736f6c63430008090033