0x60806040523480156200001157600080fd5b506040518060400160405280600481526020017f434a434d000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f434a434d0000000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000280565b508060049080519060200190620000af92919062000280565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e36000801b33620000e960201b60201c565b62000326565b620000fb8282620000ff60201b60201c565b5050565b6200012e8160066000858152602001908152602001600020600001620001a360201b620010191790919060201c565b156200019f5762000144620001db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620001d3836000018373ffffffffffffffffffffffffffffffffffffffff1660001b620001e360201b60201c565b905092915050565b600033905090565b6000620001f783836200025d60201b60201c565b6200025257826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000257565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002c357805160ff1916838001178555620002f4565b82800160010185558215620002f4579182015b82811115620002f3578251825591602001919060010190620002d6565b5b50905062000303919062000307565b5090565b5b808211156200032257600081600090555060010162000308565b5090565b611dca80620003366000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d714610635578063a9059cbb14610699578063ca15c873146106fd578063d53913931461073f578063d547741f1461075d578063dd62ed3e146107ab57610137565b806370a08231146104765780639010d07c146104ce57806391d148541461053057806395d89b4114610594578063a217fddf1461061757610137565b80632f2ff15d116100ff5780632f2ff15d14610307578063313ce5671461035557806336568abe1461037657806339509351146103c457806340c10f191461042857610137565b806306fdde031461013c578063095ea7b3146101bf57806318160ddd1461022357806323b872dd14610241578063248a9ca3146102c5575b600080fd5b610144610823565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610184578082015181840152602081019050610169565b50505050905090810190601f1680156101b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020b600480360360408110156101d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108c5565b60405180821515815260200191505060405180910390f35b61022b6108e3565b6040518082815260200191505060405180910390f35b6102ad6004803603606081101561025757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108ed565b60405180821515815260200191505060405180910390f35b6102f1600480360360208110156102db57600080fd5b81019080803590602001909291905050506109c6565b6040518082815260200191505060405180910390f35b6103536004803603604081101561031d57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109e6565b005b61035d610a70565b604051808260ff16815260200191505060405180910390f35b6103c26004803603604081101561038c57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a87565b005b610410600480360360408110156103da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b20565b60405180821515815260200191505060405180910390f35b6104746004803603604081101561043e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd3565b005b6104b86004803603602081101561048c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c7d565b6040518082815260200191505060405180910390f35b610504600480360360408110156104e457600080fd5b810190808035906020019092919080359060200190929190505050610cc5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61057c6004803603604081101561054657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cf7565b60405180821515815260200191505060405180910390f35b61059c610d29565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105dc5780820151818401526020810190506105c1565b50505050905090810190601f1680156106095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61061f610dcb565b6040518082815260200191505060405180910390f35b6106816004803603604081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dd2565b60405180821515815260200191505060405180910390f35b6106e5600480360360408110156106af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e9f565b60405180821515815260200191505060405180910390f35b6107296004803603602081101561071357600080fd5b8101908080359060200190929190505050610ebd565b6040518082815260200191505060405180910390f35b610747610ee4565b6040518082815260200191505060405180910390f35b6107a96004803603604081101561077357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f08565b005b61080d600480360360408110156107c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f92565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108bb5780601f10610890576101008083540402835291602001916108bb565b820191906000526020600020905b81548152906001019060200180831161089e57829003601f168201915b5050505050905090565b60006108d96108d2611049565b8484611051565b6001905092915050565b6000600254905090565b60006108fa848484611248565b6109bb84610906611049565b6109b685604051806060016040528060288152602001611cd060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061096c611049565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115099092919063ffffffff16565b611051565b600190509392505050565b600060066000838152602001908152602001600020600201549050919050565b610a0d6006600084815260200190815260200160002060020154610a08611049565b610cf7565b610a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611c29602f913960400191505060405180910390fd5b610a6c82826115c9565b5050565b6000600560009054906101000a900460ff16905090565b610a8f611049565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611d66602f913960400191505060405180910390fd5b610b1c828261165d565b5050565b6000610bc9610b2d611049565b84610bc48560016000610b3e611049565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116f190919063ffffffff16565b611051565b6001905092915050565b610bfd7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610cf7565b610c6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f43616c6c6572206973206e6f742061206d696e7465720000000000000000000081525060200191505060405180910390fd5b610c798282611779565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610cef826006600086815260200190815260200160002060000161194090919063ffffffff16565b905092915050565b6000610d21826006600086815260200190815260200160002060000161195a90919063ffffffff16565b905092915050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dc15780601f10610d9657610100808354040283529160200191610dc1565b820191906000526020600020905b815481529060010190602001808311610da457829003601f168201915b5050505050905090565b6000801b81565b6000610e95610ddf611049565b84610e9085604051806060016040528060258152602001611d416025913960016000610e09611049565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115099092919063ffffffff16565b611051565b6001905092915050565b6000610eb3610eac611049565b8484611248565b6001905092915050565b6000610edd6006600084815260200190815260200160002060000161198a565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610f2f6006600084815260200190815260200160002060020154610f2a611049565b610cf7565b610f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611ca06030913960400191505060405180910390fd5b610f8e828261165d565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000611041836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61199f565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611d1d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561115d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611c586022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611cf86025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611354576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611c066023913960400191505060405180910390fd5b61135f838383611a0f565b6113ca81604051806060016040528060268152602001611c7a602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115099092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061145d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116f190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906115b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561157b578082015181840152602081019050611560565b50505050905090810190601f1680156115a85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6115f1816006600085815260200190815260200160002060000161101990919063ffffffff16565b15611659576115fe611049565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6116858160066000858152602001908152602001600020600001611a1490919063ffffffff16565b156116ed57611692611049565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60008082840190508381101561176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561181c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61182860008383611a0f565b61183d816002546116f190919063ffffffff16565b600281905550611894816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116f190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600061194f8360000183611a44565b60001c905092915050565b6000611982836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611ac7565b905092915050565b600061199882600001611aea565b9050919050565b60006119ab8383611ac7565b611a04578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611a09565b600090505b92915050565b505050565b6000611a3c836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611afb565b905092915050565b600081836000018054905011611aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611be46022913960400191505060405180910390fd5b826000018281548110611ab457fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b60008083600101600084815260200190815260200160002054905060008114611bd75760006001820390506000600186600001805490500390506000866000018281548110611b4657fe5b9060005260206000200154905080876000018481548110611b6357fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480611b9b57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611bdd565b60009150505b9291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7445524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212207a489827b146da53ac5aacdaa9acdfadf1513e396497cb82473183d1378fdce664736f6c634300060c0033