60c0604052600e60808190526d4d696e696e67204d616368696e6560901b60a0908152620000319160029190620000b3565b50604080518082019091526002808252614d4d60f01b60209092019182526200005d91600391620000b3565b503480156200006b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000196565b828054620000c19062000159565b90600052602060002090601f016020900481019282620000e5576000855562000130565b82601f106200010057805160ff191683800117855562000130565b8280016001018555821562000130579182015b828111156200013057825182559160200191906001019062000113565b506200013e92915062000142565b5090565b5b808211156200013e576000815560010162000143565b600181811c908216806200016e57607f821691505b602082108114156200019057634e487b7160e01b600052602260045260246000fd5b50919050565b61219c80620001a66000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806355f804b31161010f578063a8c62e76116100a2578063e4997dc511610071578063e4997dc514610462578063e985e9c514610475578063f2fde38b146104b1578063fca3b5aa146104c457600080fd5b8063a8c62e7614610406578063b88d4fde14610419578063c87b56dd1461042c578063e47d60601461043f57600080fd5b8063715018a6116100de578063715018a6146103d25780638da5cb5b146103da57806395d89b41146103eb578063a22cb465146103f357600080fd5b806355f804b31461036d57806359bf1abe146103805780636352211e146103ac57806370a08231146103bf57600080fd5b806323b872dd1161018757806342842e0e1161015657806342842e0e146102eb57806342966c68146102fe5780634d42845c146103115780634f6ccce71461035a57600080fd5b806323b872dd1461029f5780632f745c59146102b257806333a100ca146102c557806340c10f19146102d857600080fd5b8063081812fc116101c3578063081812fc14610252578063095ea7b3146102655780630ecb93c01461027a57806318160ddd1461028d57600080fd5b806301ffc9a7146101ea57806306fdde03146102125780630754617214610227575b600080fd5b6101fd6101f8366004611dbb565b6104d7565b60405190151581526020015b60405180910390f35b61021a610502565b6040516102099190611f16565b600c5461023a906001600160a01b031681565b6040516001600160a01b039091168152602001610209565b61023a610260366004611e39565b610594565b610278610273366004611d90565b61062e565b005b610278610288366004611c4e565b610744565b600f545b604051908152602001610209565b6102786102ad366004611ca2565b6107ba565b6102916102c0366004611d90565b6107ec565b6102786102d3366004611c4e565b610882565b6102786102e6366004611d90565b6108ce565b6102786102f9366004611ca2565b610a33565b61027861030c366004611e39565b610a4e565b61033f61031f366004611e39565b600160208190526000918252604090912080549181015460029091015483565b60408051938452602084019290925290820152606001610209565b610291610368366004611e39565b610ac8565b61027861037b366004611df3565b610b69565b6101fd61038e366004611c4e565b6001600160a01b031660009081526008602052604090205460ff1690565b61023a6103ba366004611e39565b610baa565b6102916103cd366004611c4e565b610c21565b610278610ca8565b6000546001600160a01b031661023a565b61021a610d1c565b610278610401366004611d5f565b610d2b565b600b5461023a906001600160a01b031681565b610278610427366004611ce2565b610df0565b61021a61043a366004611e39565b610e28565b6101fd61044d366004611c4e565b60086020526000908152604090205460ff1681565b610278610470366004611c4e565b610f03565b6101fd610483366004611c6a565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6102786104bf366004611c4e565b610f76565b6102786104d2366004611c4e565b611060565b60006001600160e01b0319821663780e9d6360e01b14806104fc57506104fc826110ac565b92915050565b6060600280546105119061208f565b80601f016020809104026020016040519081016040528092919081815260200182805461053d9061208f565b801561058a5780601f1061055f5761010080835404028352916020019161058a565b820191906000526020600020905b81548152906001019060200180831161056d57829003601f168201915b5050505050905090565b6000818152600460205260408120546001600160a01b03166106125760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b600061063982610baa565b9050806001600160a01b0316836001600160a01b031614156106a75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610609565b336001600160a01b03821614806106c357506106c38133610483565b6107355760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610609565b61073f83836110fc565b505050565b6000546001600160a01b0316331461076e5760405162461bcd60e51b815260040161060990611f7b565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc9190a250565b6107c5335b8261116a565b6107e15760405162461bcd60e51b815260040161060990611fb0565b61073f838383611261565b60006107f783610c21565b82106108595760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610609565b506001600160a01b03919091166000908152600d60209081526040808320938352929052205490565b6000546001600160a01b031633146108ac5760405162461bcd60e51b815260040161060990611f7b565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b031633146109145760405162461bcd60e51b81526020600482015260096024820152683337b93134b23232b760b91b6044820152606401610609565b600061091f60095490565b600b5460405163e8e9162960e01b815260048101839052602481018590526001600160a01b0386811660448301529293506000928392839291169063e8e9162990606401606060405180830381600087803b15801561097d57600080fd5b505af1158015610991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b59190611e51565b9250925092506109c586856112c4565b610a1d84846109d4888661202d565b6109de898661202d565b60408051606081018252938452602080850193845284820192835260009586526001908190529420925183559051928201929092559051600290910155565b610a2b600980546001019055565b505050505050565b61073f83838360405180602001604052806000815250610df0565b610a57336107bf565b610abc5760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b6064820152608401610609565b610ac581611412565b50565b6000610ad3600f5490565b8210610b365760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610609565b600f8281548110610b5757634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b6000546001600160a01b03163314610b935760405162461bcd60e51b815260040161060990611f7b565b8051610ba690600a906020840190611b3f565b5050565b6000818152600460205260408120546001600160a01b0316806104fc5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610609565b60006001600160a01b038216610c8c5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610609565b506001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610cd25760405162461bcd60e51b815260040161060990611f7b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600380546105119061208f565b6001600160a01b038216331415610d845760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610609565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610dfa338361116a565b610e165760405162461bcd60e51b815260040161060990611fb0565b610e22848484846114b9565b50505050565b6000818152600460205260409020546060906001600160a01b0316610ea75760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610609565b6000610eb16114ec565b90506000815111610ed15760405180602001604052806000815250610efc565b80610edb846114fb565b604051602001610eec929190611eaa565b6040516020818303038152906040525b9392505050565b6000546001600160a01b03163314610f2d5760405162461bcd60e51b815260040161060990611f7b565b6001600160a01b038116600081815260086020526040808220805460ff19169055517fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c9190a250565b6000546001600160a01b03163314610fa05760405162461bcd60e51b815260040161060990611f7b565b6001600160a01b0381166110055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610609565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461108a5760405162461bcd60e51b815260040161060990611f7b565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b031982166380ac58cd60e01b14806110dd57506001600160e01b03198216635b5e139f60e01b145b806104fc57506301ffc9a760e01b6001600160e01b03198316146104fc565b600081815260066020526040902080546001600160a01b0319166001600160a01b038416908117909155819061113182610baa565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600460205260408120546001600160a01b03166111e35760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610609565b60006111ee83610baa565b9050806001600160a01b0316846001600160a01b031614806112295750836001600160a01b031661121e84610594565b6001600160a01b0316145b8061125957506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b949350505050565b6001600160a01b03831660009081526008602052604090205460ff16156112b95760405162461bcd60e51b815260206004820152600c60248201526b1a5b88189b1858dad31a5cdd60a21b6044820152606401610609565b61073f838383611615565b6001600160a01b03821661131a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610609565b6000818152600460205260409020546001600160a01b03161561137f5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610609565b61138b600083836117c0565b6001600160a01b03821660009081526005602052604081208054600192906113b4908490612001565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600061141d82610baa565b905061142b816000846117c0565b6114366000836110fc565b6001600160a01b038116600090815260056020526040812080546001929061145f90849061204c565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6114c4848484611261565b6114d084848484611878565b610e225760405162461bcd60e51b815260040161060990611f29565b6060600a80546105119061208f565b60608161151f5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156115495780611533816120ca565b91506115429050600a83612019565b9150611523565b60008167ffffffffffffffff81111561157257634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561159c576020820181803683370190505b5090505b8415611259576115b160018361204c565b91506115be600a866120e5565b6115c9906030612001565b60f81b8183815181106115ec57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535061160e600a86612019565b94506115a0565b826001600160a01b031661162882610baa565b6001600160a01b0316146116905760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610609565b6001600160a01b0382166116f25760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610609565b6116fd8383836117c0565b6117086000826110fc565b6001600160a01b038316600090815260056020526040812080546001929061173190849061204c565b90915550506001600160a01b038216600090815260056020526040812080546001929061175f908490612001565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b03831661181b5761181681600f80546000838152601060205260408120829055600182018355919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020155565b61183e565b816001600160a01b0316836001600160a01b03161461183e5761183e8382611985565b6001600160a01b0382166118555761073f81611a22565b826001600160a01b0316826001600160a01b03161461073f5761073f8282611afb565b60006001600160a01b0384163b1561197a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906118bc903390899088908890600401611ed9565b602060405180830381600087803b1580156118d657600080fd5b505af1925050508015611906575060408051601f3d908101601f1916820190925261190391810190611dd7565b60015b611960573d808015611934576040519150601f19603f3d011682016040523d82523d6000602084013e611939565b606091505b5080516119585760405162461bcd60e51b815260040161060990611f29565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611259565b506001949350505050565b6000600161199284610c21565b61199c919061204c565b6000838152600e60205260409020549091508082146119ef576001600160a01b0384166000908152600d602090815260408083208584528252808320548484528184208190558352600e90915290208190555b506000918252600e602090815260408084208490556001600160a01b039094168352600d81528383209183525290812055565b600f54600090611a349060019061204c565b600083815260106020526040812054600f8054939450909284908110611a6a57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600f8381548110611a9957634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925582815260109091526040808220849055858252812055600f805480611adf57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000611b0683610c21565b6001600160a01b039093166000908152600d602090815260408083208684528252808320859055938252600e9052919091209190915550565b828054611b4b9061208f565b90600052602060002090601f016020900481019282611b6d5760008555611bb3565b82601f10611b8657805160ff1916838001178555611bb3565b82800160010185558215611bb3579182015b82811115611bb3578251825591602001919060010190611b98565b50611bbf929150611bc3565b5090565b5b80821115611bbf5760008155600101611bc4565b600067ffffffffffffffff80841115611bf357611bf3612125565b604051601f8501601f19908116603f01168101908282118183101715611c1b57611c1b612125565b81604052809350858152868686011115611c3457600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611c5f578081fd5b8135610efc8161213b565b60008060408385031215611c7c578081fd5b8235611c878161213b565b91506020830135611c978161213b565b809150509250929050565b600080600060608486031215611cb6578081fd5b8335611cc18161213b565b92506020840135611cd18161213b565b929592945050506040919091013590565b60008060008060808587031215611cf7578081fd5b8435611d028161213b565b93506020850135611d128161213b565b925060408501359150606085013567ffffffffffffffff811115611d34578182fd5b8501601f81018713611d44578182fd5b611d5387823560208401611bd8565b91505092959194509250565b60008060408385031215611d71578182fd5b8235611d7c8161213b565b915060208301358015158114611c97578182fd5b60008060408385031215611da2578182fd5b8235611dad8161213b565b946020939093013593505050565b600060208284031215611dcc578081fd5b8135610efc81612150565b600060208284031215611de8578081fd5b8151610efc81612150565b600060208284031215611e04578081fd5b813567ffffffffffffffff811115611e1a578182fd5b8201601f81018413611e2a578182fd5b61125984823560208401611bd8565b600060208284031215611e4a578081fd5b5035919050565b600080600060608486031215611e65578283fd5b8351925060208401519150604084015190509250925092565b60008151808452611e96816020860160208601612063565b601f01601f19169290920160200192915050565b60008351611ebc818460208801612063565b835190830190611ed0818360208801612063565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611f0c90830184611e7e565b9695505050505050565b602081526000610efc6020830184611e7e565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115612014576120146120f9565b500190565b6000826120285761202861210f565b500490565b6000816000190483118215151615612047576120476120f9565b500290565b60008282101561205e5761205e6120f9565b500390565b60005b8381101561207e578181015183820152602001612066565b83811115610e225750506000910152565b600181811c908216806120a357607f821691505b602082108114156120c457634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156120de576120de6120f9565b5060010190565b6000826120f4576120f461210f565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610ac557600080fd5b6001600160e01b031981168114610ac557600080fdfea26469706673582212207c77040e25e58450be17349da12a551115c5c8e137b7213c557ef07e324d343b64736f6c63430008040033