60806040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff02191690831515021790555066d529ae9e860000600b556122b8600c556003600d553480156200005d57600080fd5b506040518060400160405280601381526020017f436875626279204c6974746c65204a69726173000000000000000000000000008152506040518060400160405280600381526020017f434c4a00000000000000000000000000000000000000000000000000000000008152508160029080519060200190620000e292919062000aae565b508060039080519060200190620000fb92919062000aae565b506200010c6200042160201b60201c565b600081905550505062000134620001286200042a60201b60201c565b6200043260201b60201c565b60016009819055506200016373debd07a501186ab2b94462633f269774cb481ecf6024620004f860201b60201c565b6200018a732d600e43ba1595ac816ea0b29d80f998e3dba8806024620004f860201b60201c565b620001b1737cda41ce6b1b72b7bee36bf64f733047bef679d26024620004f860201b60201c565b620001d873d127c9df411aa2c71a65d15732a5577c58357aec6024620004f860201b60201c565b62000200735e5ab1e361b859998c55e7ecc212ac8e24e0c4c1610196620004f860201b60201c565b7f8c548daff11a75b6a270cae39f556ad626844ae86b9d409c311539cb2236571760001b600e600060028152602001908152602001600020819055507f9b150a5e745c3cc4c5c449393c852423c19128ab9502bf80b7f349a23deaa51760001b600e600060038152602001908152602001600020819055507fb1e65241444eef38aae934862057b1aaf34237a8685070d155e496c803d49cf860001b600e600060058152602001908152602001600020819055507f2895b24d70763eaf0fd7870a5af87737485561ab1a4ca02a5f77cf762d29617060001b600e600060048152602001908152602001600020819055507f9a0305060418acbe9fe268d117b3c58fb9804663144373ab75fded9be722be4960001b600e600060068152602001908152602001600020819055507f92024009cdf2d8db651a06a2b23d81e3a4278eff5dc0cb1b4098dea6791129aa60001b600e600060078152602001908152602001600020819055507ef8cc2b1f49c9fc4c71c988a081fd5f0c5f74eada1f9a4209cc1d40af0c86ef60001b600e600060088152602001908152602001600020819055507f8b5b7ff672b898288114529fc5d9f37c2214721e19e64c8f9caa9b6ff0dd7b6460001b600e6000600a8152602001908152602001600020819055507fd75b9a62bd1b83cd0daa459ace1be0dbd958bae37d7bfd4faa9761d9c2c44ec160001b600e6000601481526020019081526020016000208190555062000daf565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200051a8282604051806020016040528060008152506200051e60201b60201c565b5050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156200058c576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000831415620005c8576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620005dd60008583866200090d60201b60201c565b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008482019050620007ab8673ffffffffffffffffffffffffffffffffffffffff166200091360201b62001e0d1760201c565b156200087d575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46200082960008784806001019550876200093660201b60201c565b62000860576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808210620007b25782600054146200087757600080fd5b620008e9565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082106200087e575b81600081905550505062000907600085838662000aa860201b60201c565b50505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620009646200042a60201b60201c565b8786866040518563ffffffff1660e01b815260040162000988949392919062000c0a565b602060405180830381600087803b158015620009a357600080fd5b505af1925050508015620009d757506040513d601f19601f82011682018060405250810190620009d4919062000b75565b60015b62000a55573d806000811462000a0a576040519150601f19603f3d011682016040523d82523d6000602084013e62000a0f565b606091505b5060008151141562000a4d576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b82805462000abc9062000d1a565b90600052602060002090601f01602090048101928262000ae0576000855562000b2c565b82601f1062000afb57805160ff191683800117855562000b2c565b8280016001018555821562000b2c579182015b8281111562000b2b57825182559160200191906001019062000b0e565b5b50905062000b3b919062000b3f565b5090565b5b8082111562000b5a57600081600090555060010162000b40565b5090565b60008151905062000b6f8162000d95565b92915050565b60006020828403121562000b8e5762000b8d62000d7f565b5b600062000b9e8482850162000b5e565b91505092915050565b62000bb28162000c7a565b82525050565b600062000bc58262000c5e565b62000bd1818562000c69565b935062000be381856020860162000ce4565b62000bee8162000d84565b840191505092915050565b62000c048162000cda565b82525050565b600060808201905062000c21600083018762000ba7565b62000c30602083018662000ba7565b62000c3f604083018562000bf9565b818103606083015262000c53818462000bb8565b905095945050505050565b600081519050919050565b600082825260208201905092915050565b600062000c878262000cba565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000d0457808201518184015260208101905062000ce7565b8381111562000d14576000848401525b50505050565b6000600282049050600182168062000d3357607f821691505b6020821081141562000d4a5762000d4962000d50565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b62000da08162000c8e565b811462000dac57600080fd5b50565b6147578062000dbf6000396000f3fe60806040526004361061020f5760003560e01c80638da5cb5b11610118578063ca5d9cda116100a0578063e6f6ef1e1161006f578063e6f6ef1e14610757578063e985e9c514610782578063f103b433146107bf578063f2fde38b146107e8578063f43a22dc146108115761020f565b8063ca5d9cda146106c3578063dfe5dd6814610700578063e222c7f914610717578063e58306f91461072e5761020f565b8063a371a062116100e7578063a371a062146105cc578063b88d4fde14610609578063c002d23d14610632578063c7381b951461065d578063c87b56dd146106865761020f565b80638da5cb5b146105225780639168e23e1461054d57806395d89b4114610578578063a22cb465146105a35761020f565b806342842e0e1161019b5780636afcb7b01161016a5780636afcb7b01461046d57806370a0823114610489578063715018a6146104c65780637d72fd57146104dd57806385e9880f146105065761020f565b806342842e0e146103b557806342966c68146103de5780635788ff36146104075780636352211e146104305761020f565b8063095ea7b3116101e2578063095ea7b3146102f657806318160ddd1461031f57806323b872dd1461034a57806332cb6b0c146103735780633ccfd60b1461039e5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c57806308d04b2e146102b9575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190613846565b61083c565b6040516102489190613ce8565b60405180910390f35b34801561025d57600080fd5b5061026661091e565b6040516102739190613d1e565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e91906138a0565b6109b0565b6040516102b09190613c81565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db91906138a0565b610a2c565b6040516102ed9190613d03565b60405180910390f35b34801561030257600080fd5b5061031d60048036038101906103189190613752565b610a44565b005b34801561032b57600080fd5b50610334610b49565b6040516103419190613ea0565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c91906135c8565b610b60565b005b34801561037f57600080fd5b50610388610b70565b6040516103959190613ea0565b60405180910390f35b3480156103aa57600080fd5b506103b3610b76565b005b3480156103c157600080fd5b506103dc60048036038101906103d791906135c8565b610d96565b005b3480156103ea57600080fd5b50610405600480360381019061040091906138a0565b610db6565b005b34801561041357600080fd5b5061042e600480360381019061042991906138a0565b610dc4565b005b34801561043c57600080fd5b50610457600480360381019061045291906138a0565b610e4a565b6040516104649190613c81565b60405180910390f35b610487600480360381019061048291906138cd565b610e60565b005b34801561049557600080fd5b506104b060048036038101906104ab919061355b565b61105d565b6040516104bd9190613ea0565b60405180910390f35b3480156104d257600080fd5b506104db61112d565b005b3480156104e957600080fd5b5061050460048036038101906104ff9190613806565b6111b5565b005b610520600480360381019061051b9190613792565b61124d565b005b34801561052e57600080fd5b506105376114ef565b6040516105449190613c81565b60405180910390f35b34801561055957600080fd5b50610562611519565b60405161056f9190613ce8565b60405180910390f35b34801561058457600080fd5b5061058d61152c565b60405161059a9190613d1e565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190613712565b6115be565b005b3480156105d857600080fd5b506105f360048036038101906105ee919061369e565b611736565b6040516106009190613ce8565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b919061361b565b611826565b005b34801561063e57600080fd5b5061064761189e565b6040516106549190613ea0565b60405180910390f35b34801561066957600080fd5b50610684600480360381019061067f91906138a0565b6118a4565b005b34801561069257600080fd5b506106ad60048036038101906106a891906138a0565b61192a565b6040516106ba9190613d1e565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e5919061355b565b61195b565b6040516106f79190613ebb565b60405180910390f35b34801561070c57600080fd5b5061071561196d565b005b34801561072357600080fd5b5061072c611a15565b005b34801561073a57600080fd5b5061075560048036038101906107509190613752565b611abd565b005b34801561076357600080fd5b5061076c611b9e565b6040516107799190613ce8565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190613588565b611bb1565b6040516107b69190613ce8565b60405180910390f35b3480156107cb57600080fd5b506107e660048036038101906107e191906138a0565b611c45565b005b3480156107f457600080fd5b5061080f600480360381019061080a919061355b565b611d0f565b005b34801561081d57600080fd5b50610826611e07565b6040516108339190613ea0565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061090757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610917575061091682611e30565b5b9050919050565b60606002805461092d90614196565b80601f016020809104026020016040519081016040528092919081815260200182805461095990614196565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b5050505050905090565b60006109bb82611e9a565b6109f1576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600e6020528060005260406000206000915090505481565b6000610a4f82610e4a565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ab7576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ad6611ee8565b73ffffffffffffffffffffffffffffffffffffffff1614610b3957610b0281610afd611ee8565b611bb1565b610b38576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b610b44838383611ef0565b505050565b6000610b53611fa2565b6001546000540303905090565b610b6b838383611fab565b505050565b600c5481565b610b7e611ee8565b73ffffffffffffffffffffffffffffffffffffffff16610b9c6114ef565b73ffffffffffffffffffffffffffffffffffffffff1614610bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be990613dc0565b60405180910390fd5b6000479050730c3a7f745d99661c798bd1a50e4d479754f6040873ffffffffffffffffffffffffffffffffffffffff166108fc600483610c329190614003565b9081150290604051600060405180830381858888f19350505050158015610c5d573d6000803e3d6000fd5b5073925fbdd517842b5a27167d35d9c98be7bb6b5e3a73ffffffffffffffffffffffffffffffffffffffff166108fc600483610c999190614003565b9081150290604051600060405180830381858888f19350505050158015610cc4573d6000803e3d6000fd5b5073df8daa1880680b307ef740c3db425370b2da95b073ffffffffffffffffffffffffffffffffffffffff166108fc600483610d009190614003565b9081150290604051600060405180830381858888f19350505050158015610d2b573d6000803e3d6000fd5b507393ebc766ace620195e373c3ffb13dfb1129057d173ffffffffffffffffffffffffffffffffffffffff166108fc600483610d679190614003565b9081150290604051600060405180830381858888f19350505050158015610d92573d6000803e3d6000fd5b5050565b610db183838360405180602001604052806000815250611826565b505050565b610dc1816001612461565b50565b610dcc611ee8565b73ffffffffffffffffffffffffffffffffffffffff16610dea6114ef565b73ffffffffffffffffffffffffffffffffffffffff1614610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3790613dc0565b60405180910390fd5b80600b8190555050565b6000610e5582612851565b600001519050919050565b60026009541415610ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9d90613e60565b60405180910390fd5b60026009819055503373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610ee657600080fd5b600a60009054906101000a900460ff16610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c90613e00565b60405180910390fd5b8067ffffffffffffffff16600b54610f4d9190614034565b3414610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590613e20565b60405180910390fd5b600c548167ffffffffffffffff16610fa4610b49565b610fae9190613f6f565b1115610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe690613de0565b60405180910390fd5b600d548167ffffffffffffffff16111561103e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103590613d60565b60405180910390fd5b611052338267ffffffffffffffff16612adc565b600160098190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110c5576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611135611ee8565b73ffffffffffffffffffffffffffffffffffffffff166111536114ef565b73ffffffffffffffffffffffffffffffffffffffff16146111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a090613dc0565b60405180910390fd5b6111b36000612afa565b565b6111bd611ee8565b73ffffffffffffffffffffffffffffffffffffffff166111db6114ef565b73ffffffffffffffffffffffffffffffffffffffff1614611231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122890613dc0565b60405180910390fd5b81600e6000838152602001908152602001600020819055505050565b60026009541415611293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128a90613e60565b60405180910390fd5b60026009819055503373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146112d357600080fd5b600a60019054906101000a900460ff16611322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131990613da0565b60405180910390fd5b8167ffffffffffffffff16600b5461133a9190614034565b341461137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290613e20565b60405180910390fd5b600c548267ffffffffffffffff16611391610b49565b61139b9190613f6f565b11156113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d390613de0565b60405180910390fd5b6113e833858584611736565b611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90613e40565b60405180910390fd5b600061143233612bc0565b90508183826114419190613fc5565b67ffffffffffffffff16111561145683612c20565b6040516020016114669190613c54565b604051602081830303815290604052906114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad9190613d1e565b60405180910390fd5b506114cc3384836114c79190613fc5565b612d81565b6114e0338467ffffffffffffffff16612adc565b50600160098190555050505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60019054906101000a900460ff1681565b60606003805461153b90614196565b80601f016020809104026020016040519081016040528092919081815260200182805461156790614196565b80156115b45780601f10611589576101008083540402835291602001916115b4565b820191906000526020600020905b81548152906001019060200180831161159757829003601f168201915b5050505050905090565b6115c6611ee8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561162b576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611638611ee8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166116e5611ee8565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161172a9190613ce8565b60405180910390a35050565b60008060001b600e6000848152602001908152602001600020541415611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890613e80565b60405180910390fd5b6000856040516020016117a49190613c0c565b60405160208183030381529060405280519060200120905061181b858580806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600e60008681526020019081526020016000205483612dee565b915050949350505050565b611831848484611fab565b6118508373ffffffffffffffffffffffffffffffffffffffff16611e0d565b156118985761186184848484612e05565b611897576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b600b5481565b6118ac611ee8565b73ffffffffffffffffffffffffffffffffffffffff166118ca6114ef565b73ffffffffffffffffffffffffffffffffffffffff1614611920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191790613dc0565b60405180910390fd5b80600d8190555050565b606061193582612c20565b6040516020016119459190613c27565b6040516020818303038152906040529050919050565b600061196682612bc0565b9050919050565b611975611ee8565b73ffffffffffffffffffffffffffffffffffffffff166119936114ef565b73ffffffffffffffffffffffffffffffffffffffff16146119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e090613dc0565b60405180910390fd5b600a60019054906101000a900460ff1615600a60016101000a81548160ff021916908315150217905550565b611a1d611ee8565b73ffffffffffffffffffffffffffffffffffffffff16611a3b6114ef565b73ffffffffffffffffffffffffffffffffffffffff1614611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8890613dc0565b60405180910390fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b611ac5611ee8565b73ffffffffffffffffffffffffffffffffffffffff16611ae36114ef565b73ffffffffffffffffffffffffffffffffffffffff1614611b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3090613dc0565b60405180910390fd5b600c5481611b45610b49565b611b4f9190613f6f565b1115611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8790613de0565b60405180910390fd5b611b9a8282612adc565b5050565b600a60009054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611c4d611ee8565b73ffffffffffffffffffffffffffffffffffffffff16611c6b6114ef565b73ffffffffffffffffffffffffffffffffffffffff1614611cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb890613dc0565b60405180910390fd5b600c548110611d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfc90613d40565b60405180910390fd5b80600c8190555050565b611d17611ee8565b73ffffffffffffffffffffffffffffffffffffffff16611d356114ef565b73ffffffffffffffffffffffffffffffffffffffff1614611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613dc0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df290613d80565b60405180910390fd5b611e0481612afa565b50565b600d5481565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611ea5611fa2565b11158015611eb4575060005482105b8015611ee1575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b6000611fb682612851565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612021576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16612042611ee8565b73ffffffffffffffffffffffffffffffffffffffff16148061207157506120708561206b611ee8565b611bb1565b5b806120b6575061207f611ee8565b73ffffffffffffffffffffffffffffffffffffffff1661209e846109b0565b73ffffffffffffffffffffffffffffffffffffffff16145b9050806120ef576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612156576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121638585856001612f65565b61216f60008487611ef0565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156123ef5760005482146123ee57878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461245a8585856001612f6b565b5050505050565b600061246c83612851565b9050600081600001519050821561254d5760008173ffffffffffffffffffffffffffffffffffffffff1661249e611ee8565b73ffffffffffffffffffffffffffffffffffffffff1614806124cd57506124cc826124c7611ee8565b611bb1565b5b8061251257506124db611ee8565b73ffffffffffffffffffffffffffffffffffffffff166124fa866109b0565b73ffffffffffffffffffffffffffffffffffffffff16145b90508061254b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b61255b816000866001612f65565b61256760008583611ef0565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060018160000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060018160000160108282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008781526020019081526020016000209050828160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600181600001601c6101000a81548160ff02191690831515021790555060006001870190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127cb5760005482146127ca57848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b5050505083600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612839816000866001612f6b565b60016000815480929190600101919050555050505050565b6128596133bf565b600082905080612867611fa2565b11612aa557600054811015612aa4576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505090508060400151612aa257600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612986578092505050612ad7565b5b600115612aa157818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612a9c578092505050612ad7565b612987565b5b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b612af6828260405180602001604052806000815250612f71565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160189054906101000a900467ffffffffffffffff169050919050565b60606000821415612c68576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612d7c565b600082905060005b60008214612c9a578080612c83906141f9565b915050600a82612c939190614003565b9150612c70565b60008167ffffffffffffffff811115612cb657612cb5614353565b5b6040519080825280601f01601f191660200182016040528015612ce85781602001600182028036833780820191505090505b5090505b60008514612d7557600182612d01919061408e565b9150600a85612d109190614266565b6030612d1c9190613f6f565b60f81b818381518110612d3257612d31614324565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612d6e9190614003565b9450612cec565b8093505050505b919050565b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b600082612dfb8584613333565b1490509392505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612e2b611ee8565b8786866040518563ffffffff1660e01b8152600401612e4d9493929190613c9c565b602060405180830381600087803b158015612e6757600080fd5b505af1925050508015612e9857506040513d601f19601f82011682018060405250810190612e959190613873565b60015b612f12573d8060008114612ec8576040519150601f19603f3d011682016040523d82523d6000602084013e612ecd565b606091505b50600081511415612f0a576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612fde576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000831415613019576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6130266000858386612f65565b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000819050600084820190506131e78673ffffffffffffffffffffffffffffffffffffffff16611e0d565b156132ac575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461325c6000878480600101955087612e05565b613292576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082106131ed5782600054146132a757600080fd5b613317565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082106132ad575b81600081905550505061332d6000858386612f6b565b50505050565b60008082905060005b845181101561339d57600085828151811061335a57613359614324565b5b6020026020010151905080831161337c5761337583826133a8565b9250613389565b61338681846133a8565b92505b508080613395906141f9565b91505061333c565b508091505092915050565b600082600052816020526040600020905092915050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b600061341561341084613efb565b613ed6565b90508281526020810184848401111561343157613430614391565b5b61343c848285614154565b509392505050565b60008135905061345381614697565b92915050565b60008083601f84011261346f5761346e614387565b5b8235905067ffffffffffffffff81111561348c5761348b614382565b5b6020830191508360208202830111156134a8576134a761438c565b5b9250929050565b6000813590506134be816146ae565b92915050565b6000813590506134d3816146c5565b92915050565b6000813590506134e8816146dc565b92915050565b6000815190506134fd816146dc565b92915050565b600082601f83011261351857613517614387565b5b8135613528848260208601613402565b91505092915050565b600081359050613540816146f3565b92915050565b6000813590506135558161470a565b92915050565b6000602082840312156135715761357061439b565b5b600061357f84828501613444565b91505092915050565b6000806040838503121561359f5761359e61439b565b5b60006135ad85828601613444565b92505060206135be85828601613444565b9150509250929050565b6000806000606084860312156135e1576135e061439b565b5b60006135ef86828701613444565b935050602061360086828701613444565b925050604061361186828701613531565b9150509250925092565b600080600080608085870312156136355761363461439b565b5b600061364387828801613444565b945050602061365487828801613444565b935050604061366587828801613531565b925050606085013567ffffffffffffffff81111561368657613685614396565b5b61369287828801613503565b91505092959194509250565b600080600080606085870312156136b8576136b761439b565b5b60006136c687828801613444565b945050602085013567ffffffffffffffff8111156136e7576136e6614396565b5b6136f387828801613459565b9350935050604061370687828801613531565b91505092959194509250565b600080604083850312156137295761372861439b565b5b600061373785828601613444565b9250506020613748858286016134af565b9150509250929050565b600080604083850312156137695761376861439b565b5b600061377785828601613444565b925050602061378885828601613531565b9150509250929050565b600080600080606085870312156137ac576137ab61439b565b5b600085013567ffffffffffffffff8111156137ca576137c9614396565b5b6137d687828801613459565b945094505060206137e987828801613546565b92505060406137fa87828801613531565b91505092959194509250565b6000806040838503121561381d5761381c61439b565b5b600061382b858286016134c4565b925050602061383c85828601613531565b9150509250929050565b60006020828403121561385c5761385b61439b565b5b600061386a848285016134d9565b91505092915050565b6000602082840312156138895761388861439b565b5b6000613897848285016134ee565b91505092915050565b6000602082840312156138b6576138b561439b565b5b60006138c484828501613531565b91505092915050565b6000602082840312156138e3576138e261439b565b5b60006138f184828501613546565b91505092915050565b613903816140c2565b82525050565b61391a613915826140c2565b614242565b82525050565b613929816140d4565b82525050565b613938816140e0565b82525050565b600061394982613f2c565b6139538185613f42565b9350613963818560208601614163565b61396c816143a0565b840191505092915050565b600061398282613f37565b61398c8185613f53565b935061399c818560208601614163565b6139a5816143a0565b840191505092915050565b60006139bb82613f37565b6139c58185613f64565b93506139d5818560208601614163565b80840191505092915050565b60006139ee601683613f53565b91506139f9826143be565b602082019050919050565b6000613a11602c83613f53565b9150613a1c826143e7565b604082019050919050565b6000613a34602683613f53565b9150613a3f82614436565b604082019050919050565b6000613a57601b83613f53565b9150613a6282614485565b602082019050919050565b6000613a7a600583613f64565b9150613a85826144ae565b600582019050919050565b6000613a9d602083613f53565b9150613aa8826144d7565b602082019050919050565b6000613ac0602683613f64565b9150613acb82614500565b602682019050919050565b6000613ae3601e83613f53565b9150613aee8261454f565b602082019050919050565b6000613b06601a83613f53565b9150613b1182614578565b602082019050919050565b6000613b29600683613f64565b9150613b34826145a1565b600682019050919050565b6000613b4c601a83613f53565b9150613b57826145ca565b602082019050919050565b6000613b6f600d83613f53565b9150613b7a826145f3565b602082019050919050565b6000613b92601f83613f53565b9150613b9d8261461c565b602082019050919050565b6000613bb5601983613f53565b9150613bc082614645565b602082019050919050565b6000613bd8601683613f64565b9150613be38261466e565b601682019050919050565b613bf781614136565b82525050565b613c0681614140565b82525050565b6000613c188284613909565b60148201915081905092915050565b6000613c3282613ab3565b9150613c3e82846139b0565b9150613c4982613a6d565b915081905092915050565b6000613c5f82613bcb565b9150613c6b82846139b0565b9150613c7682613b1c565b915081905092915050565b6000602082019050613c9660008301846138fa565b92915050565b6000608082019050613cb160008301876138fa565b613cbe60208301866138fa565b613ccb6040830185613bee565b8181036060830152613cdd818461393e565b905095945050505050565b6000602082019050613cfd6000830184613920565b92915050565b6000602082019050613d18600083018461392f565b92915050565b60006020820190508181036000830152613d388184613977565b905092915050565b60006020820190508181036000830152613d59816139e1565b9050919050565b60006020820190508181036000830152613d7981613a04565b9050919050565b60006020820190508181036000830152613d9981613a27565b9050919050565b60006020820190508181036000830152613db981613a4a565b9050919050565b60006020820190508181036000830152613dd981613a90565b9050919050565b60006020820190508181036000830152613df981613ad6565b9050919050565b60006020820190508181036000830152613e1981613af9565b9050919050565b60006020820190508181036000830152613e3981613b3f565b9050919050565b60006020820190508181036000830152613e5981613b62565b9050919050565b60006020820190508181036000830152613e7981613b85565b9050919050565b60006020820190508181036000830152613e9981613ba8565b9050919050565b6000602082019050613eb56000830184613bee565b92915050565b6000602082019050613ed06000830184613bfd565b92915050565b6000613ee0613ef1565b9050613eec82826141c8565b919050565b6000604051905090565b600067ffffffffffffffff821115613f1657613f15614353565b5b613f1f826143a0565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613f7a82614136565b9150613f8583614136565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613fba57613fb9614297565b5b828201905092915050565b6000613fd082614140565b9150613fdb83614140565b92508267ffffffffffffffff03821115613ff857613ff7614297565b5b828201905092915050565b600061400e82614136565b915061401983614136565b925082614029576140286142c6565b5b828204905092915050565b600061403f82614136565b915061404a83614136565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561408357614082614297565b5b828202905092915050565b600061409982614136565b91506140a483614136565b9250828210156140b7576140b6614297565b5b828203905092915050565b60006140cd82614116565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015614181578082015181840152602081019050614166565b83811115614190576000848401525b50505050565b600060028204905060018216806141ae57607f821691505b602082108114156141c2576141c16142f5565b5b50919050565b6141d1826143a0565b810181811067ffffffffffffffff821117156141f0576141ef614353565b5b80604052505050565b600061420482614136565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561423757614236614297565b5b600182019050919050565b600061424d82614254565b9050919050565b600061425f826143b1565b9050919050565b600061427182614136565b915061427c83614136565b92508261428c5761428b6142c6565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f43616e6e6f7420696e63726561736520737570706c7900000000000000000000600082015250565b7f496e76616c6964206e756d626572206f6620746f6b656e73207175657269657360008201527f20666f72206d696e74696e670000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f507269766174652073616c65206973206e6f742072756e6e696e670000000000600082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f68747470733a2f2f6368756262796c6974746c656a697261732e696f2f6d657460008201527f61646174612f0000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420656e6f75676820746f6b656e73206c65667420746f206d696e740000600082015250565b7f5075626c69632073616c65206973206e6f742072756e6e696e67000000000000600082015250565b7f20746f74616c0000000000000000000000000000000000000000000000000000600082015250565b7f496e636f7272656374204554482073656e7420746f206d696e74000000000000600082015250565b7f496e76616c69642070726f6f6600000000000000000000000000000000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f496e76616c696420616c6c6f636174696f6e20616d6f756e7400000000000000600082015250565b7f43616e277420636c61696d206d6f7265207468616e2000000000000000000000600082015250565b6146a0816140c2565b81146146ab57600080fd5b50565b6146b7816140d4565b81146146c257600080fd5b50565b6146ce816140e0565b81146146d957600080fd5b50565b6146e5816140ea565b81146146f057600080fd5b50565b6146fc81614136565b811461470757600080fd5b50565b61471381614140565b811461471e57600080fd5b5056fea26469706673582212200a0145b6c594efa905cec00504c9a7d6c2c9c90d8b8e566646ad58e3331725df64736f6c63430008070033