60806040523480156200001157600080fd5b5060405162004acb38038062004acb833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b506040525050506040518060400160405280600e81526020017f476f647320556e636861696e65640000000000000000000000000000000000008152506040518060400160405280600281526020017f47550000000000000000000000000000000000000000000000000000000000008152506200017c6301ffc9a760e01b6200032e60201b60201c565b816006908051906020019062000194929190620008ba565b508060079080519060200190620001ad929190620008ba565b50620001c66380ac58cd60e01b6200032e60201b60201c565b620001de635b5e139f60e01b6200032e60201b60201c565b620001f663780e9d6360e01b6200032e60201b60201c565b50506200020d6000801b336200043760201b60201c565b60608162000226306200044d60201b62001d701760201c565b6040516020018083805190602001908083835b602083106200025e578051825260208201915060208101905060208303925062000239565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310620002b157805182526020820191506020810190506020830392506200028c565b6001836020036101000a038019825116818451168082178552505050505050905001807f2f0000000000000000000000000000000000000000000000000000000000000081525060010192505050604051602081830303815290604052905062000326816200071d60201b620020341760201c565b505062000960565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620003cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6200044982826200073960201b60201c565b5050565b606060008273ffffffffffffffffffffffffffffffffffffffff1660001b90506060602a67ffffffffffffffff811180156200048857600080fd5b506040519080825280601f01601f191660200182016040528015620004bc5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110620004ee57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106200054c57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b601481101562000712576040518060400160405280601081526020017f3031323334353637383961626364656600000000000000000000000000000000815250600484600c840160208110620005d057fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff16815181106200060957fe5b602001015160f81c60f81b8260028302600201815181106200062757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506040518060400160405280601081526020017f3031323334353637383961626364656600000000000000000000000000000000815250600f60f81b84600c840160208110620006a157fe5b1a60f81b1660f81c60ff1681518110620006b757fe5b602001015160f81c60f81b826002830260030181518110620006d557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506200057e565b508092505050919050565b806009908051906020019062000735929190620008ba565b5050565b6200076881600a6000858152602001908152602001600020600001620007dd60201b6200204e1790919060201c565b15620007d9576200077e6200081560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006200080d836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200081d60201b60201c565b905092915050565b600033905090565b60006200083183836200089760201b60201c565b6200088c57826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000891565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620008fd57805160ff19168380011785556200092e565b828001600101855582156200092e579182015b828111156200092d57825182559160200191906001019062000910565b5b5090506200093d919062000941565b5090565b5b808211156200095c57600081600090555060010162000942565b5090565b61415b80620009706000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636352211e116100f9578063a22cb46511610097578063c87b56dd11610071578063c87b56dd14610b23578063ca15c87314610bca578063d547741f14610c0c578063e985e9c514610c5a576101c4565b8063a22cb4651461097e578063b88d4fde146109ce578063b93a89f714610ad3576101c4565b80639010d07c116100d35780639010d07c1461081757806391d148541461087957806395d89b41146108dd578063a217fddf14610960576101c4565b80636352211e146106e45780636c0360eb1461073c57806370a08231146107bf576101c4565b8063248a9ca31161016657806336568abe1161014057806336568abe146105b857806342842e0e1461060657806342966c68146106745780634f6ccce7146106a2576101c4565b8063248a9ca3146104c65780632f2ff15d146105085780632f745c5914610556576101c4565b8063095ea7b3116101a2578063095ea7b31461030757806318160ddd1461035557806319ee6e3f1461037357806323b872dd14610458576101c4565b806301ffc9a7146101c957806306fdde031461022c578063081812fc146102af575b600080fd5b610214600480360360208110156101df57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610cd4565b60405180821515815260200191505060405180910390f35b610234610d3b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610274578082015181840152602081019050610259565b50505050905090810190601f1680156102a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102db600480360360208110156102c557600080fd5b8101908080359060200190929190505050610ddd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103536004803603604081101561031d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e78565b005b61035d610fbc565b6040518082815260200191505060405180910390f35b6104566004803603606081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610fcd565b005b6104c46004803603606081101561046e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611140565b005b6104f2600480360360208110156104dc57600080fd5b81019080803590602001909291905050506111b6565b6040518082815260200191505060405180910390f35b6105546004803603604081101561051e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111d6565b005b6105a26004803603604081101561056c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611260565b6040518082815260200191505060405180910390f35b610604600480360360408110156105ce57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112bb565b005b6106726004803603606081101561061c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611354565b005b6106a06004803603602081101561068a57600080fd5b8101908080359060200190929190505050611374565b005b6106ce600480360360208110156106b857600080fd5b81019080803590602001909291905050506113ff565b6040518082815260200191505060405180910390f35b610710600480360360208110156106fa57600080fd5b8101908080359060200190929190505050611422565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610744611459565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610784578082015181840152602081019050610769565b50505050905090810190601f1680156107b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610801600480360360208110156107d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114fb565b6040518082815260200191505060405180910390f35b61084d6004803603604081101561082d57600080fd5b8101908080359060200190929190803590602001909291905050506115d0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108c56004803603604081101561088f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611602565b60405180821515815260200191505060405180910390f35b6108e5611634565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561092557808201518184015260208101905061090a565b50505050905090810190601f1680156109525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109686116d6565b6040518082815260200191505060405180910390f35b6109cc6004803603604081101561099457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506116dd565b005b610ad1600480360360808110156109e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610a4b57600080fd5b820183602082011115610a5d57600080fd5b80359060200191846001830284011164010000000083111715610a7f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611893565b005b610aff60048036036020811015610ae957600080fd5b810190808035906020019092919050505061190b565b604051808361ffff1681526020018260ff1681526020019250505060405180910390f35b610b4f60048036036020811015610b3957600080fd5b810190808035906020019092919050505061195a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b8f578082015181840152602081019050610b74565b50505050905090810190601f168015610bbc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610bf660048036036020811015610be057600080fd5b8101908080359060200190929190505050611c2b565b6040518082815260200191505060405180910390f35b610c5860048036036040811015610c2257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c52565b005b610cbc60048036036040811015610c7057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cdc565b60405180821515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dd35780601f10610da857610100808354040283529160200191610dd3565b820191906000526020600020905b815481529060010190602001808311610db657829003601f168201915b5050505050905090565b6000610de88261207e565b610e3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614021602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e8382611422565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806140a56021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f2961209b565b73ffffffffffffffffffffffffffffffffffffffff161480610f585750610f5781610f5261209b565b611cdc565b5b610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180613f746038913960400191505060405180910390fd5b610fb783836120a3565b505050565b6000610fc8600261215c565b905090565b610fda6000801b33611602565b61104c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f43616c6c6572206973206e6f7420616e2061646d696e0000000000000000000081525060200191505060405180910390fd5b600080600061105a84612171565b92509250925061106a86846123c6565b81600b600085815260200190815260200160002060006101000a81548161ffff021916908361ffff16021790555080600c600085815260200190815260200160002060006101000a81548160ff021916908360ff1602179055507fbf99d779c2ab31f02685e678c03732a14df95079ad88b1377d152f985fba27a58686858585604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018361ffff1681526020018260ff1681526020019550505050505060405180910390a1505050505050565b61115161114b61209b565b826125ba565b6111a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806140c66031913960400191505060405180910390fd5b6111b18383836126ae565b505050565b6000600a6000838152602001908152602001600020600201549050919050565b6111fd600a6000848152602001908152602001600020600201546111f861209b565b611602565b611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613e6d602f913960400191505060405180910390fd5b61125c82826128f1565b5050565b60006112b382600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061298590919063ffffffff16565b905092915050565b6112c361209b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806140f7602f913960400191505060405180910390fd5b611350828261299f565b5050565b61136f83838360405180602001604052806000815250611893565b505050565b6113816000801b33611602565b6113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f43616c6c6572206973206e6f7420616e2061646d696e0000000000000000000081525060200191505060405180910390fd5b6113fc81612a33565b50565b600080611416836002612b6d90919063ffffffff16565b50905080915050919050565b600061145282604051806060016040528060298152602001613fd6602991396002612b999092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114f15780601f106114c6576101008083540402835291602001916114f1565b820191906000526020600020905b8154815290600101906020018083116114d457829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613fac602a913960400191505060405180910390fd5b6115c9600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612bb8565b9050919050565b60006115fa82600a6000868152602001908152602001600020600001612bcd90919063ffffffff16565b905092915050565b600061162c82600a6000868152602001908152602001600020600001612be790919063ffffffff16565b905092915050565b606060078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116cc5780601f106116a1576101008083540402835291602001916116cc565b820191906000526020600020905b8154815290600101906020018083116116af57829003601f168201915b5050505050905090565b6000801b81565b6116e561209b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611786576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806005600061179361209b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661184061209b565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6118a461189e61209b565b836125ba565b6118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806140c66031913960400191505060405180910390fd5b61190584848484612c17565b50505050565b600080600b600084815260200190815260200160002060009054906101000a900461ffff16600c600085815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606119658261207e565b6119ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180614076602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a635780601f10611a3857610100808354040283529160200191611a63565b820191906000526020600020905b815481529060010190602001808311611a4657829003601f168201915b505050505090506060611a74611459565b9050600081511415611a8a578192505050611c26565b600082511115611b5b5780826040516020018083805190602001908083835b60208310611acc5780518252602082019150602081019050602083039250611aa9565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310611b1d5780518252602082019150602081019050602083039250611afa565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050611c26565b80611b6585612c89565b6040516020018083805190602001908083835b60208310611b9b5780518252602082019150602081019050602083039250611b78565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310611bec5780518252602082019150602081019050602083039250611bc9565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050505b919050565b6000611c4b600a6000848152602001908152602001600020600001612dd0565b9050919050565b611c79600a600084815260200190815260200160002060020154611c7461209b565b611602565b611cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613f446030913960400191505060405180910390fd5b611cd8828261299f565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060008273ffffffffffffffffffffffffffffffffffffffff1660001b90506060602a67ffffffffffffffff81118015611daa57600080fd5b506040519080825280601f01601f191660200182016040528015611ddd5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611e0e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611e6b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015612029576040518060400160405280601081526020017f3031323334353637383961626364656600000000000000000000000000000000815250600484600c840160208110611eed57fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff1681518110611f2557fe5b602001015160f81c60f81b826002830260020181518110611f4257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506040518060400160405280601081526020017f3031323334353637383961626364656600000000000000000000000000000000815250600f60f81b84600c840160208110611fbb57fe5b1a60f81b1660f81c60ff1681518110611fd057fe5b602001015160f81c60f81b826002830260030181518110611fed57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050611e9d565b508092505050919050565b806009908051906020019061204a929190613d65565b5050565b6000612076836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612de5565b905092915050565b6000612094826002612e5590919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661211683611422565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061216a82600001612e6f565b9050919050565b600080600060606121b7856040518060400160405280600181526020017f3a00000000000000000000000000000000000000000000000000000000000000815250612e80565b90506002815114612230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f496e76616c696420626c6f62000000000000000000000000000000000000000081525060200191505060405180910390fd5b60606122698260008151811061224257fe5b60200260200101516001808560008151811061225a57fe5b60200260200101515103613085565b905060606122a48360018151811061227d57fe5b60200260200101516001808660018151811061229557fe5b60200260200101515103613085565b905060606122e7826040518060400160405280600181526020017f2c00000000000000000000000000000000000000000000000000000000000000815250612e80565b90506002815114612360576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e76616c696420706172616d20636f756e740000000000000000000000000081525060200191505060405180910390fd5b600061236b84613158565b9050600061238c8360008151811061237f57fe5b6020026020010151613158565b905060006123ad846001815181106123a057fe5b6020026020010151613158565b9050828282995099509950505050505050509193909250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b6124728161207e565b156124e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b6124f1600083836131c9565b61254281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206131ce90919063ffffffff16565b50612559818360026131e89092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006125c58261207e565b61261a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613f18602c913960400191505060405180910390fd5b600061262583611422565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061269457508373ffffffffffffffffffffffffffffffffffffffff1661267c84610ddd565b73ffffffffffffffffffffffffffffffffffffffff16145b806126a557506126a48185611cdc565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166126ce82611422565b73ffffffffffffffffffffffffffffffffffffffff161461273a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061404d6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613ece6024913960400191505060405180910390fd5b6127cb8383836131c9565b6127d66000826120a3565b61282781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061321d90919063ffffffff16565b5061287981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206131ce90919063ffffffff16565b50612890818360026131e89092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b61291981600a600085815260200190815260200160002060000161204e90919063ffffffff16565b156129815761292661209b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006129948360000183613237565b60001c905092915050565b6129c781600a60008581526020019081526020016000206000016132ba90919063ffffffff16565b15612a2f576129d461209b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000612a3e82611422565b9050612a4c816000846131c9565b612a576000836120a3565b60006008600084815260200190815260200160002080546001816001161561010002031660029004905014612aa657600860008381526020019081526020016000206000612aa59190613de5565b5b612af782600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061321d90919063ffffffff16565b50612b0c8260026132ea90919063ffffffff16565b5081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080600080612b808660000186613304565b915091508160001c8160001c9350935050509250929050565b6000612bac846000018460001b8461339d565b60001c90509392505050565b6000612bc682600001613493565b9050919050565b6000612bdc8360000183613237565b60001c905092915050565b6000612c0f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6134a4565b905092915050565b612c228484846126ae565b612c2e848484846134c7565b612c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180613e9c6032913960400191505060405180910390fd5b50505050565b60606000821415612cd1576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612dcb565b600082905060005b60008214612cfb578080600101915050600a8281612cf357fe5b049150612cd9565b60608167ffffffffffffffff81118015612d1457600080fd5b506040519080825280601f01601f191660200182016040528015612d475781602001600182028036833780820191505090505b50905060006001830390508593505b60008414612dc357600a8481612d6857fe5b0660300160f81b82828060019003935081518110612d8257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481612dbb57fe5b049350612d56565b819450505050505b919050565b6000612dde82600001613493565b9050919050565b6000612df183836134a4565b612e4a578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612e4f565b600090505b92915050565b6000612e67836000018360001b6136e0565b905092915050565b600081600001805490509050919050565b606080839050600080600190505b8251821015612ee8576000612ea4878785613703565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811415612ed45750612ee8565b818060010192505060018101925050612e8e565b8067ffffffffffffffff81118015612eff57600080fd5b50604051908082528060200260200182016040528015612f3357816020015b6060815260200190600190039081612f1e5790505b50935060009150600090505b825182101561307c576000612f55878785613703565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811415612f8457835190505b606083820367ffffffffffffffff81118015612f9f57600080fd5b506040519080825280601f01601f191660200182016040528015612fd25781602001600182028036833780820191505090505b50905060608190506000808690505b8481101561304e57878181518110612ff557fe5b602001015160f81c60f81b83838060010194508151811061301257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050612fe1565b506001840195508188868060010197508151811061306857fe5b602002602001018190525050505050612f3f565b50505092915050565b606080849050606084840367ffffffffffffffff811180156130a657600080fd5b506040519080825280601f01601f1916602001820160405280156130d95781602001600182028036833780820191505090505b50905060008590505b8481101561314b578281815181106130f657fe5b602001015160f81c60f81b828783038151811061310f57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506130e2565b5080925050509392505050565b600060608290506000805b82518110156131be57600083828151811061317a57fe5b602001015160f81c60f81b60f81c60ff1690506030811015801561319f575060398111155b156131b05760308103600a84020192505b508080600101915050613163565b508092505050919050565b505050565b60006131e0836000018360001b612de5565b905092915050565b6000613214846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b6137e8565b90509392505050565b600061322f836000018360001b6138c4565b905092915050565b600081836000018054905011613298576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613e4b6022913960400191505060405180910390fd5b8260000182815481106132a757fe5b9060005260206000200154905092915050565b60006132e2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6138c4565b905092915050565b60006132fc836000018360001b6139ac565b905092915050565b60008082846000018054905011613366576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613fff6022913960400191505060405180910390fd5b600084600001848154811061337757fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008084600101600085815260200190815260200160002054905060008114158390613464576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561342957808201518184015260208101905061340e565b50505050905090810190601f1680156134565780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061347757fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b60006134e88473ffffffffffffffffffffffffffffffffffffffff16613ac5565b6134f557600190506136d8565b606061365f63150b7a0260e01b61350a61209b565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561358e578082015181840152602081019050613573565b50505050905090810190601f1680156135bb5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001613e9c603291398773ffffffffffffffffffffffffffffffffffffffff16613ad89092919063ffffffff16565b9050600081806020019051602081101561367857600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b600060608490506060849050600181511461371a57fe5b60008490505b82518110156137ba578160008151811061373657fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191683828151811061376f57fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156137ad578093505050506137e1565b8080600101915050613720565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff925050505b9392505050565b600080846001016000858152602001908152602001600020549050600081141561388f578460000160405180604001604052808681526020018581525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010155505084600001805490508560010160008681526020019081526020016000208190555060019150506138bd565b828560000160018303815481106138a257fe5b90600052602060002090600202016001018190555060009150505b9392505050565b600080836001016000848152602001908152602001600020549050600081146139a0576000600182039050600060018660000180549050039050600086600001828154811061390f57fe5b906000526020600020015490508087600001848154811061392c57fe5b906000526020600020018190555060018301876001016000838152602001908152602001600020819055508660000180548061396457fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506139a6565b60009150505b92915050565b60008083600101600084815260200190815260200160002054905060008114613ab957600060018203905060006001866000018054905003905060008660000182815481106139f757fe5b9060005260206000209060020201905080876000018481548110613a1757fe5b9060005260206000209060020201600082015481600001556001820154816001015590505060018301876001016000836000015481526020019081526020016000208190555086600001805480613a6a57fe5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055866001016000878152602001908152602001600020600090556001945050505050613abf565b60009150505b92915050565b600080823b905060008111915050919050565b6060613ae78484600085613af0565b90509392505050565b606082471015613b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613ef26026913960400191505060405180910390fd5b613b5485613ac5565b613bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613c165780518252602082019150602081019050602083039250613bf3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613c78576040519150601f19603f3d011682016040523d82523d6000602084013e613c7d565b606091505b5091509150613c8d828286613c99565b92505050949350505050565b60608315613ca957829050613d5e565b600083511115613cbc5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d23578082015181840152602081019050613d08565b50505050905090810190601f168015613d505780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613da657805160ff1916838001178555613dd4565b82800160010185558215613dd4579182015b82811115613dd3578251825591602001919060010190613db8565b5b509050613de19190613e2d565b5090565b50805460018160011615610100020316600290046000825580601f10613e0b5750613e2a565b601f016020900490600052602060002090810190613e299190613e2d565b5b50565b5b80821115613e46576000816000905550600101613e2e565b509056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220a29bb913afc1093f33fff2b962b1ef8b56ff927ec7beb922a6cfece79dbd2ebe64736f6c634300070300330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002068747470733a2f2f6170692e696d6d757461626c652e636f6d2f61737365742f