60806040526040518060400160405280600981526020017f4861636b6174726f6e0000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000a5a565b506040518060400160405280600581526020017f4841434b41000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000a5a565b506012600360006101000a81548160ff021916908360ff1602179055506a52b7d2dcc80cd2e40000006004556127106005600454620000df919062000b43565b620000eb919062000bd3565b600a556a01a784379d99db42000000600b556a01a784379d99db42000000600c556064600d55601960125560196013553480156200012857600080fd5b506200013962000a2960201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600454600560006200020a62000a3160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550739e2758952e5d876f6fac1a77ceba4f82de290f48601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600f60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620004c957600080fd5b505afa158015620004de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000504919062000c75565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200058957600080fd5b505afa1580156200059e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c4919062000c75565b6040518363ffffffff1660e01b8152600401620005e392919062000cb8565b602060405180830381600087803b158015620005fe57600080fd5b505af115801562000613573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000639919062000c75565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760006200070962000a3160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000620007c862000a3160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960006200088762000a3160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620009ba62000a3160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000a1b919062000cf6565b60405180910390a362000d78565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b82805462000a689062000d42565b90600052602060002090601f01602090048101928262000a8c576000855562000ad8565b82601f1062000aa757805160ff191683800117855562000ad8565b8280016001018555821562000ad8579182015b8281111562000ad757825182559160200191906001019062000aba565b5b50905062000ae7919062000aeb565b5090565b5b8082111562000b0657600081600090555060010162000aec565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b508262000b0a565b915062000b5d8362000b0a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b995762000b9862000b14565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000be08262000b0a565b915062000bed8362000b0a565b92508262000c005762000bff62000ba4565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c3d8262000c10565b9050919050565b62000c4f8162000c30565b811462000c5b57600080fd5b50565b60008151905062000c6f8162000c44565b92915050565b60006020828403121562000c8e5762000c8d62000c0b565b5b600062000c9e8482850162000c5e565b91505092915050565b62000cb28162000c30565b82525050565b600060408201905062000ccf600083018562000ca7565b62000cde602083018462000ca7565b9392505050565b62000cf08162000b0a565b82525050565b600060208201905062000d0d600083018462000ce5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d5b57607f821691505b6020821081141562000d725762000d7162000d13565b5b50919050565b61417c8062000d886000396000f3fe60806040526004361061028c5760003560e01c80638da5cb5b1161015a578063b0bc2a2d116100c1578063f097ea1a1161007a578063f097ea1a14610a01578063f14210a614610a2a578063f242ab4114610a53578063f2fde38b14610a7e578063f4b3dbc314610aa7578063fe6f1b0514610ae457610293565b8063b0bc2a2d146108df578063bf56b37114610908578063dd62ed3e14610933578063ea5b9e8514610970578063ec44acf214610999578063ed421429146109c457610293565b80639e281a98116101135780639e281a98146107c1578063a2b8a947146107ea578063a457c2d714610813578063a643c1a014610850578063a7c29b4014610879578063a9059cbb146108a257610293565b80638da5cb5b146106b1578063950eb5d5146106dc57806395d89b411461070557806399b102b5146107305780639a36dfa11461076d5780639b6a27501461079857610293565b8063679a3c59116101fe5780637c6a9a9c116101b75780637c6a9a9c146105b3578063844af78e146105de57806384ea21bc146106095780638756aabd14610646578063879dd3c51461066f5780638a8c523c1461069a57610293565b8063679a3c59146104b5578063681aa362146104de57806370a0823114610509578063715018a61461054657806375f0a8741461055d57806379777b4e1461058857610293565b80631884f1e6116102505780631884f1e61461037f57806323b872dd146103aa5780632d129390146103e7578063313ce56714610410578063395093511461043b5780635342acb41461047857610293565b806306fdde03146102985780630758d924146102c3578063095ea7b3146102ee5780630a2d140c1461032b57806318160ddd1461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b0f565b6040516102ba9190613362565b60405180910390f35b3480156102cf57600080fd5b506102d8610ba1565b6040516102e59190613403565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190613497565b610bc7565b60405161032291906134f2565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190613539565b610be5565b005b34801561036057600080fd5b50610369610c97565b6040516103769190613575565b60405180910390f35b34801561038b57600080fd5b50610394610ca1565b6040516103a19190613575565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190613590565b610ca7565b6040516103de91906134f2565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906135e3565b610d5f565b005b34801561041c57600080fd5b50610425610e4f565b604051610432919061363f565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190613497565b610e66565b60405161046f91906134f2565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a919061365a565b610f12565b6040516104ac91906134f2565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d7919061365a565b610f32565b005b3480156104ea57600080fd5b506104f3611011565b6040516105009190613575565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b919061365a565b611017565b60405161053d9190613575565b60405180910390f35b34801561055257600080fd5b5061055b611060565b005b34801561056957600080fd5b506105726111b3565b60405161057f9190613696565b60405180910390f35b34801561059457600080fd5b5061059d6111d9565b6040516105aa91906134f2565b60405180910390f35b3480156105bf57600080fd5b506105c86111ec565b6040516105d59190613575565b60405180910390f35b3480156105ea57600080fd5b506105f36111f2565b6040516106009190613575565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b919061365a565b6111f8565b60405161063d91906134f2565b60405180910390f35b34801561065257600080fd5b5061066d600480360381019061066891906136b1565b611218565b005b34801561067b57600080fd5b506106846112ca565b60405161069191906134f2565b60405180910390f35b3480156106a657600080fd5b506106af6112dd565b005b3480156106bd57600080fd5b506106c661141c565b6040516106d39190613696565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe91906136b1565b611445565b005b34801561071157600080fd5b5061071a6114e4565b6040516107279190613362565b60405180910390f35b34801561073c57600080fd5b506107576004803603810190610752919061365a565b611576565b60405161076491906134f2565b60405180910390f35b34801561077957600080fd5b50610782611596565b60405161078f9190613575565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba91906136b1565b61159c565b005b3480156107cd57600080fd5b506107e860048036038101906107e3919061371c565b61164e565b005b3480156107f657600080fd5b50610811600480360381019061080c91906136b1565b611840565b005b34801561081f57600080fd5b5061083a60048036038101906108359190613497565b6118df565b60405161084791906134f2565b60405180910390f35b34801561085c57600080fd5b506108776004803603810190610872919061365a565b61198b565b005b34801561088557600080fd5b506108a0600480360381019061089b91906135e3565b611a64565b005b3480156108ae57600080fd5b506108c960048036038101906108c49190613497565b611b54565b6040516108d691906134f2565b60405180910390f35b3480156108eb57600080fd5b5061090660048036038101906109019190613539565b611b72565b005b34801561091457600080fd5b5061091d611c24565b60405161092a9190613575565b60405180910390f35b34801561093f57600080fd5b5061095a6004803603810190610955919061375c565b611c2a565b6040516109679190613575565b60405180910390f35b34801561097c57600080fd5b50610997600480360381019061099291906135e3565b611cb1565b005b3480156109a557600080fd5b506109ae611da1565b6040516109bb91906134f2565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e691906136b1565b611db4565b6040516109f89190613575565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a2391906136b1565b611ddd565b005b348015610a3657600080fd5b50610a516004803603810190610a4c91906136b1565b611e8f565b005b348015610a5f57600080fd5b50610a68611fb1565b604051610a759190613696565b60405180910390f35b348015610a8a57600080fd5b50610aa56004803603810190610aa0919061365a565b611fd7565b005b348015610ab357600080fd5b50610ace6004803603810190610ac991906136b1565b612199565b604051610adb9190613575565b60405180910390f35b348015610af057600080fd5b50610af96121c2565b604051610b069190613575565b60405180910390f35b606060018054610b1e906137cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4a906137cb565b8015610b975780601f10610b6c57610100808354040283529160200191610b97565b820191906000526020600020905b815481529060010190602001808311610b7a57829003601f168201915b5050505050905090565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bdb610bd46121c8565b84846121d0565b6001905092915050565b610bed6121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7190613849565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000600454905090565b600a5481565b6000610cb484848461239b565b610d5484610cc06121c8565b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d0a6121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4f9190613898565b6121d0565b600190509392505050565b610d676121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90613849565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360009054906101000a900460ff16905090565b6000610f08610e736121c8565b848460066000610e816121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0391906138cc565b6121d0565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b610f3a6121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbe90613849565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561100d573d6000803e3d6000fd5b5050565b600c5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110686121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90613849565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900460ff1681565b60125481565b60135481565b60096020528060005260406000206000915054906101000a900460ff1681565b6112206121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490613849565b60405180910390fd5b670de0b6b3a7640000816112c19190613922565b600b8190555050565b600f60019054906101000a900460ff1681565b6112e56121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136990613849565b60405180910390fd5b600f60029054906101000a900460ff16156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b9906139c8565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff02191690831515021790555042600e81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61144d6121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d190613849565b60405180910390fd5b8060128190555050565b6060600280546114f3906137cb565b80601f016020809104026020016040519081016040528092919081815260200182805461151f906137cb565b801561156c5780601f106115415761010080835404028352916020019161156c565b820191906000526020600020905b81548152906001019060200180831161154f57829003601f168201915b5050505050905090565b60086020528060005260406000206000915054906101000a900460ff1681565b600b5481565b6115a46121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613849565b60405180910390fd5b670de0b6b3a7640000816116459190613922565b600c8190555050565b6116566121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da90613849565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161171d9190613696565b60206040518083038186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176d91906139fd565b10156117ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a590613a76565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016117e9929190613a96565b602060405180830381600087803b15801561180357600080fd5b505af1158015611817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183b9190613ad4565b505050565b6118486121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc90613849565b60405180910390fd5b8060138190555050565b60006119816118ec6121c8565b8484600660006118fa6121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197c9190613898565b6121d0565b6001905092915050565b6119936121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1790613849565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a6c6121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af090613849565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b68611b616121c8565b848461239b565b6001905092915050565b611b7a6121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe90613849565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b600e5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611cb96121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3d90613849565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60029054906101000a900460ff1681565b600080600d5460125484611dc89190613922565b611dd29190613b30565b905080915050919050565b611de56121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6990613849565b60405180910390fd5b670de0b6b3a764000081611e869190613922565b600a8190555050565b611e976121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1b90613849565b60405180910390fd5b80471015611f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5e90613a76565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fad573d6000803e3d6000fd5b5050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611fdf6121c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461206c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206390613849565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d390613bd3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600d54601354846121ad9190613922565b6121b79190613b30565b905080915050919050565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223790613c3f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a790613cab565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161238e9190613575565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561240b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240290613d17565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561247b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247290613d83565b60405180910390fd5b600081116124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b590613def565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125625750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126ad57600c548111156125ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a390613e5b565b60405180910390fd5b600f60029054906101000a900460ff166126ac578273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561266c57508173ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b6126ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a290613ec7565b60405180910390fd5b5b5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661275757600b548161270b84611017565b61271591906138cc565b1115612756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274d90613f33565b60405180910390fd5b5b612761838361283c565b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128085750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806128205750600f60019054906101000a900460ff16155b1561282a57600090505b61283684848484612a39565b50505050565b600061284730611017565b90506000600a5482101590508080156128ae5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156128c65750600f60009054906101000a900460ff165b801561295757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156129555750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612a335761298b30600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546121d0565b6129b9600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54612fdd565b60004790506000811115612a3157601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a2f573d6000803e3d6000fd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612a935750805b15612c4657600080612aa484611db4565b91508184612ab29190613898565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aff9190613898565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b8d91906138cc565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c2d9190613575565b60405180910390a3612c3f86836131d2565b5050612fd7565b8273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612ca05750805b15612e54576000612cb083612199565b905060008184612cc09190613898565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0d9190613898565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9b91906138cc565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e3b9190613575565b60405180910390a3612e4d86836131d2565b5050612fd6565b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e9f9190613898565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f2d91906138cc565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612fcd9190613575565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff811115612fff57612ffe613f53565b5b60405190808252806020026020018201604052801561302d5781602001602082028036833780820191505090505b509050308160008151811061304557613044613f82565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c557600080fd5b505afa1580156130d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130fd9190613fc6565b8160018151811061311157613110613f82565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c4261317a91906138cc565b6040518663ffffffff1660e01b815260040161319a9594939291906140ec565b600060405180830381600087803b1580156131b457600080fd5b505af11580156131c8573d6000803e3d6000fd5b5050505050505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321d91906138cc565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132bd9190613575565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133035780820151818401526020810190506132e8565b83811115613312576000848401525b50505050565b6000601f19601f8301169050919050565b6000613334826132c9565b61333e81856132d4565b935061334e8185602086016132e5565b61335781613318565b840191505092915050565b6000602082019050818103600083015261337c8184613329565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006133c96133c46133bf84613384565b6133a4565b613384565b9050919050565b60006133db826133ae565b9050919050565b60006133ed826133d0565b9050919050565b6133fd816133e2565b82525050565b600060208201905061341860008301846133f4565b92915050565b600080fd5b600061342e82613384565b9050919050565b61343e81613423565b811461344957600080fd5b50565b60008135905061345b81613435565b92915050565b6000819050919050565b61347481613461565b811461347f57600080fd5b50565b6000813590506134918161346b565b92915050565b600080604083850312156134ae576134ad61341e565b5b60006134bc8582860161344c565b92505060206134cd85828601613482565b9150509250929050565b60008115159050919050565b6134ec816134d7565b82525050565b600060208201905061350760008301846134e3565b92915050565b613516816134d7565b811461352157600080fd5b50565b6000813590506135338161350d565b92915050565b60006020828403121561354f5761354e61341e565b5b600061355d84828501613524565b91505092915050565b61356f81613461565b82525050565b600060208201905061358a6000830184613566565b92915050565b6000806000606084860312156135a9576135a861341e565b5b60006135b78682870161344c565b93505060206135c88682870161344c565b92505060406135d986828701613482565b9150509250925092565b600080604083850312156135fa576135f961341e565b5b60006136088582860161344c565b925050602061361985828601613524565b9150509250929050565b600060ff82169050919050565b61363981613623565b82525050565b60006020820190506136546000830184613630565b92915050565b6000602082840312156136705761366f61341e565b5b600061367e8482850161344c565b91505092915050565b61369081613423565b82525050565b60006020820190506136ab6000830184613687565b92915050565b6000602082840312156136c7576136c661341e565b5b60006136d584828501613482565b91505092915050565b60006136e982613423565b9050919050565b6136f9816136de565b811461370457600080fd5b50565b600081359050613716816136f0565b92915050565b600080604083850312156137335761373261341e565b5b600061374185828601613707565b925050602061375285828601613482565b9150509250929050565b600080604083850312156137735761377261341e565b5b60006137818582860161344c565b92505060206137928582860161344c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137e357607f821691505b602082108114156137f7576137f661379c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138336020836132d4565b915061383e826137fd565b602082019050919050565b6000602082019050818103600083015261386281613826565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138a382613461565b91506138ae83613461565b9250828210156138c1576138c0613869565b5b828203905092915050565b60006138d782613461565b91506138e283613461565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561391757613916613869565b5b828201905092915050565b600061392d82613461565b915061393883613461565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561397157613970613869565b5b828202905092915050565b7f3a20616c726561647920656e61626c6564000000000000000000000000000000600082015250565b60006139b26011836132d4565b91506139bd8261397c565b602082019050919050565b600060208201905081810360008301526139e1816139a5565b9050919050565b6000815190506139f78161346b565b92915050565b600060208284031215613a1357613a1261341e565b5b6000613a21848285016139e8565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b6000613a60600e836132d4565b9150613a6b82613a2a565b602082019050919050565b60006020820190508181036000830152613a8f81613a53565b9050919050565b6000604082019050613aab6000830185613687565b613ab86020830184613566565b9392505050565b600081519050613ace8161350d565b92915050565b600060208284031215613aea57613ae961341e565b5b6000613af884828501613abf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b3b82613461565b9150613b4683613461565b925082613b5657613b55613b01565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613bbd6026836132d4565b9150613bc882613b61565b604082019050919050565b60006020820190508181036000830152613bec81613bb0565b9050919050565b7f20617070726f76652066726f6d20746865207a65726f20616464726573730000600082015250565b6000613c29601e836132d4565b9150613c3482613bf3565b602082019050919050565b60006020820190508181036000830152613c5881613c1c565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000613c95601b836132d4565b9150613ca082613c5f565b602082019050919050565b60006020820190508181036000830152613cc481613c88565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613d01601e836132d4565b9150613d0c82613ccb565b602082019050919050565b60006020820190508181036000830152613d3081613cf4565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000613d6d601c836132d4565b9150613d7882613d37565b602082019050919050565b60006020820190508181036000830152613d9c81613d60565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b6000613dd96020836132d4565b9150613de482613da3565b602082019050919050565b60006020820190508181036000830152613e0881613dcc565b9050919050565b7f206d61782074786e206c696d6974206578636565647300000000000000000000600082015250565b6000613e456016836132d4565b9150613e5082613e0f565b602082019050919050565b60006020820190508181036000830152613e7481613e38565b9050919050565b7f3a2074726164696e672069732064697361626c65000000000000000000000000600082015250565b6000613eb16014836132d4565b9150613ebc82613e7b565b602082019050919050565b60006020820190508181036000830152613ee081613ea4565b9050919050565b7f3a206d617820686f6c64206c696d697420657863656564730000000000000000600082015250565b6000613f1d6018836132d4565b9150613f2882613ee7565b602082019050919050565b60006020820190508181036000830152613f4c81613f10565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613fc081613435565b92915050565b600060208284031215613fdc57613fdb61341e565b5b6000613fea84828501613fb1565b91505092915050565b6000819050919050565b600061401861401361400e84613ff3565b6133a4565b613461565b9050919050565b61402881613ffd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61406381613423565b82525050565b6000614075838361405a565b60208301905092915050565b6000602082019050919050565b60006140998261402e565b6140a38185614039565b93506140ae8361404a565b8060005b838110156140df5781516140c68882614069565b97506140d183614081565b9250506001810190506140b2565b5085935050505092915050565b600060a0820190506141016000830188613566565b61410e602083018761401f565b8181036040830152614120818661408e565b905061412f6060830185613687565b61413c6080830184613566565b969550505050505056fea2646970667358221220929d893609cdfa5336ae1b52a63ad940cd70d363d1a419c1e63a4538683c121664736f6c63430008080033