60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600a908051906020019062000051929190620002ae565b5060405180606001604052806035815260200162004e9c60359139600b908051906020019062000083929190620002ae565b5066e8743d03a76000600c5566f8b0a10e470000600d5561198f600e55600a600f55600a6010556000601160006101000a81548160ff02191690831515021790555060006014557fc117da44cd8e89da7f09c9c2110a9e74054f2a2de428605e8103ff2c1560c4df60001b601555348015620000fe57600080fd5b506040518060400160405280600a81526020017f466f7267657466756c73000000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f464f5247455446554c5300000000000000000000000000000000000000000000815250816002908051906020019062000183929190620002ae565b5080600390805190602001906200019c929190620002ae565b50620001ad620001db60201b60201c565b6000819055505050620001d5620001c9620001e060201b60201c565b620001e860201b60201c565b620003c3565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002bc906200035e565b90600052602060002090601f016020900481019282620002e057600085556200032c565b82601f10620002fb57805160ff19168380011785556200032c565b828001600101855582156200032c579182015b828111156200032b5782518255916020019190600101906200030e565b5b5090506200033b91906200033f565b5090565b5b808211156200035a57600081600090555060010162000340565b5090565b600060028204905060018216806200037757607f821691505b602082108114156200038e576200038d62000394565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b614ac980620003d36000396000f3fe6080604052600436106102935760003560e01c80636eddb9e31161015a578063b6d0e3a9116100c1578063d1d192131161007a578063d1d192131461098a578063d5abeb01146109b3578063da3ef23f146109de578063e985e9c514610a07578063f2c4ce1e14610a44578063f2fde38b14610a6d57610293565b8063b6d0e3a91461089d578063b88d4fde146108b4578063ba41b0c6146108dd578063bd32fb66146108f9578063c668286214610922578063c87b56dd1461094d57610293565b80638456cb59116101135780638456cb59146107c55780638da5cb5b146107dc5780638e1f9cfe1461080757806395d89b4114610832578063a22cb4651461085d578063a475b5dd1461088657610293565b80636eddb9e3146106df5780636f8b44b01461070857806370a0823114610731578063715018a61461076e57806377e5635714610785578063811d24371461079c57610293565b806318cae269116101fe57806342842e0e116101b757806342842e0e146105bd57806351830227146105e657806355f804b3146106115780635a23dd991461063a5780636352211e146106775780636c0360eb146106b457610293565b806318cae269146104d0578063231878d11461050d57806323b872dd14610536578063295e4c331461055f57806337546c67146105765780633ccfd60b146105b357610293565b8063095ea7b311610250578063095ea7b3146103d05780630c3f6acf146103f957806313093b1d1461042457806313faede61461044f57806317f7bece1461047a57806318160ddd146104a557610293565b806301ffc9a71461029857806306afd592146102d557806306fdde031461030057806307656e331461032b578063081812fc14610368578063081c8c44146103a5575b600080fd5b3480156102a457600080fd5b506102bf60048036038101906102ba9190613c3c565b610a96565b6040516102cc919061416d565b60405180910390f35b3480156102e157600080fd5b506102ea610b78565b6040516102f79190614305565b60405180910390f35b34801561030c57600080fd5b50610315610b7e565b60405161032291906141a3565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d91906139ec565b610c10565b60405161035f9190614305565b60405180910390f35b34801561037457600080fd5b5061038f600480360381019061038a9190613cdf565b610cda565b60405161039c9190614106565b60405180910390f35b3480156103b157600080fd5b506103ba610d56565b6040516103c791906141a3565b60405180910390f35b3480156103dc57600080fd5b506103f760048036038101906103f29190613bcf565b610de4565b005b34801561040557600080fd5b5061040e610eef565b60405161041b9190614305565b60405180910390f35b34801561043057600080fd5b50610439610ef5565b6040516104469190614305565b60405180910390f35b34801561045b57600080fd5b50610464610efb565b6040516104719190614305565b60405180910390f35b34801561048657600080fd5b5061048f610f01565b60405161049c9190614305565b60405180910390f35b3480156104b157600080fd5b506104ba610f07565b6040516104c79190614305565b60405180910390f35b3480156104dc57600080fd5b506104f760048036038101906104f291906139ec565b610f1e565b6040516105049190614305565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f9190613cdf565b610f36565b005b34801561054257600080fd5b5061055d60048036038101906105589190613a59565b610fbc565b005b34801561056b57600080fd5b50610574610fcc565b005b34801561058257600080fd5b5061059d600480360381019061059891906139ec565b611052565b6040516105aa9190614305565b60405180910390f35b6105bb61106a565b005b3480156105c957600080fd5b506105e460048036038101906105df9190613a59565b611166565b005b3480156105f257600080fd5b506105fb611186565b604051610608919061416d565b60405180910390f35b34801561061d57600080fd5b5061063860048036038101906106339190613c96565b611199565b005b34801561064657600080fd5b50610661600480360381019061065c9190613b2f565b61122f565b60405161066e919061416d565b60405180910390f35b34801561068357600080fd5b5061069e60048036038101906106999190613cdf565b6112b3565b6040516106ab9190614106565b60405180910390f35b3480156106c057600080fd5b506106c96112c9565b6040516106d691906141a3565b60405180910390f35b3480156106eb57600080fd5b5061070660048036038101906107019190613cdf565b611357565b005b34801561071457600080fd5b5061072f600480360381019061072a9190613cdf565b6113dd565b005b34801561073d57600080fd5b50610758600480360381019061075391906139ec565b611463565b6040516107659190614305565b60405180910390f35b34801561077a57600080fd5b50610783611533565b005b34801561079157600080fd5b5061079a6115bb565b005b3480156107a857600080fd5b506107c360048036038101906107be9190613cdf565b611641565b005b3480156107d157600080fd5b506107da6116c7565b005b3480156107e857600080fd5b506107f161174d565b6040516107fe9190614106565b60405180910390f35b34801561081357600080fd5b5061081c611777565b6040516108299190614188565b60405180910390f35b34801561083e57600080fd5b5061084761177d565b60405161085491906141a3565b60405180910390f35b34801561086957600080fd5b50610884600480360381019061087f9190613b8f565b61180f565b005b34801561089257600080fd5b5061089b611987565b005b3480156108a957600080fd5b506108b2611a20565b005b3480156108c057600080fd5b506108db60048036038101906108d69190613aac565b611aa6565b005b6108f760048036038101906108f29190613d0c565b611b22565b005b34801561090557600080fd5b50610920600480360381019061091b9190613c0f565b611fd5565b005b34801561092e57600080fd5b5061093761205b565b60405161094491906141a3565b60405180910390f35b34801561095957600080fd5b50610974600480360381019061096f9190613cdf565b6120e9565b60405161098191906141a3565b60405180910390f35b34801561099657600080fd5b506109b160048036038101906109ac9190613cdf565b612242565b005b3480156109bf57600080fd5b506109c86122c8565b6040516109d59190614305565b60405180910390f35b3480156109ea57600080fd5b50610a056004803603810190610a009190613c96565b6122ce565b005b348015610a1357600080fd5b50610a2e6004803603810190610a299190613a19565b612364565b604051610a3b919061416d565b60405180910390f35b348015610a5057600080fd5b50610a6b6004803603810190610a669190613c96565b6123f8565b005b348015610a7957600080fd5b50610a946004803603810190610a8f91906139ec565b61248e565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b6157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b715750610b7082612586565b5b9050919050565b600c5481565b606060028054610b8d906145df565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb9906145df565b8015610c065780601f10610bdb57610100808354040283529160200191610c06565b820191906000526020600020905b815481529060010190602001808311610be957829003601f168201915b5050505050905090565b600060016014541415610c7157601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f54610c6a91906144eb565b9050610cd5565b60026014541415610cd057601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601054610cc991906144eb565b9050610cd5565b600090505b919050565b6000610ce5826125f0565b610d1b576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600b8054610d63906145df565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8f906145df565b8015610ddc5780601f10610db157610100808354040283529160200191610ddc565b820191906000526020600020905b815481529060010190602001808311610dbf57829003601f168201915b505050505081565b6000610def826112b3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e57576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e7661263e565b73ffffffffffffffffffffffffffffffffffffffff1614158015610ea85750610ea681610ea161263e565b612364565b155b15610edf576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eea838383612646565b505050565b60145481565b600f5481565b600d5481565b60105481565b6000610f116126f8565b6001546000540303905090565b60136020528060005260406000206000915090505481565b610f3e61263e565b73ffffffffffffffffffffffffffffffffffffffff16610f5c61174d565b73ffffffffffffffffffffffffffffffffffffffff1614610fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa990614245565b60405180910390fd5b8060108190555050565b610fc78383836126fd565b505050565b610fd461263e565b73ffffffffffffffffffffffffffffffffffffffff16610ff261174d565b73ffffffffffffffffffffffffffffffffffffffff1614611048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103f90614245565b60405180910390fd5b6001601481905550565b60126020528060005260406000206000915090505481565b61107261263e565b73ffffffffffffffffffffffffffffffffffffffff1661109061174d565b73ffffffffffffffffffffffffffffffffffffffff16146110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd90614245565b60405180910390fd5b60006110f061174d565b73ffffffffffffffffffffffffffffffffffffffff1647604051611113906140f1565b60006040518083038185875af1925050503d8060008114611150576040519150601f19603f3d011682016040523d82523d6000602084013e611155565b606091505b505090508061116357600080fd5b50565b61118183838360405180602001604052806000815250611aa6565b505050565b601160009054906101000a900460ff1681565b6111a161263e565b73ffffffffffffffffffffffffffffffffffffffff166111bf61174d565b73ffffffffffffffffffffffffffffffffffffffff1614611215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120c90614245565b60405180910390fd5b806009908051906020019061122b929190613752565b5050565b600080846040516020016112439190614079565b6040516020818303038152906040528051906020012090506112a9848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060155483612bb3565b9150509392505050565b60006112be82612bca565b600001519050919050565b600980546112d6906145df565b80601f0160208091040260200160405190810160405280929190818152602001828054611302906145df565b801561134f5780601f106113245761010080835404028352916020019161134f565b820191906000526020600020905b81548152906001019060200180831161133257829003601f168201915b505050505081565b61135f61263e565b73ffffffffffffffffffffffffffffffffffffffff1661137d61174d565b73ffffffffffffffffffffffffffffffffffffffff16146113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca90614245565b60405180910390fd5b80600f8190555050565b6113e561263e565b73ffffffffffffffffffffffffffffffffffffffff1661140361174d565b73ffffffffffffffffffffffffffffffffffffffff1614611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145090614245565b60405180910390fd5b80600e8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114cb576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b61153b61263e565b73ffffffffffffffffffffffffffffffffffffffff1661155961174d565b73ffffffffffffffffffffffffffffffffffffffff16146115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a690614245565b60405180910390fd5b6115b96000612e59565b565b6115c361263e565b73ffffffffffffffffffffffffffffffffffffffff166115e161174d565b73ffffffffffffffffffffffffffffffffffffffff1614611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e90614245565b60405180910390fd5b6003601481905550565b61164961263e565b73ffffffffffffffffffffffffffffffffffffffff1661166761174d565b73ffffffffffffffffffffffffffffffffffffffff16146116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b490614245565b60405180910390fd5b80600d8190555050565b6116cf61263e565b73ffffffffffffffffffffffffffffffffffffffff166116ed61174d565b73ffffffffffffffffffffffffffffffffffffffff1614611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a90614245565b60405180910390fd5b6000601481905550565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606003805461178c906145df565b80601f01602080910402602001604051908101604052809291908181526020018280546117b8906145df565b80156118055780601f106117da57610100808354040283529160200191611805565b820191906000526020600020905b8154815290600101906020018083116117e857829003601f168201915b5050505050905090565b61181761263e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561187c576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806007600061188961263e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661193661263e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161197b919061416d565b60405180910390a35050565b61198f61263e565b73ffffffffffffffffffffffffffffffffffffffff166119ad61174d565b73ffffffffffffffffffffffffffffffffffffffff1614611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fa90614245565b60405180910390fd5b6001601160006101000a81548160ff021916908315150217905550565b611a2861263e565b73ffffffffffffffffffffffffffffffffffffffff16611a4661174d565b73ffffffffffffffffffffffffffffffffffffffff1614611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390614245565b60405180910390fd5b6002601481905550565b611ab18484846126fd565b611ad08373ffffffffffffffffffffffffffffffffffffffff16612f1f565b8015611ae55750611ae384848484612f42565b155b15611b1c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000611b2c610f07565b905060008411611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b68906142e5565b60405180910390fd5b600e548482611b80919061440a565b1115611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb890614205565b60405180910390fd5b611bc961174d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611efc57600060145411611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3790614265565b60405180910390fd5b60016014541415611dc4576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611c9a33858561122f565b611cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd0906142c5565b60405180910390fd5b600f54851115611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590614225565b60405180910390fd5b600f548582611d2d919061440a565b1115611d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d65906141e5565b60405180910390fd5b84600c54611d7c9190614491565b341015611dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db5906142a5565b60405180910390fd5b50611efb565b60026014541415611efa576000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601054851115611e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4f90614225565b60405180910390fd5b6010548582611e67919061440a565b1115611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f906141e5565b60405180910390fd5b84600d54611eb69190614491565b341015611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef906142a5565b60405180910390fd5b505b5b5b611f0633856130a2565b60016014541415611f6c5783601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f60919061440a565b92505081905550611fcf565b60026014541415611fce5783601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fc6919061440a565b925050819055505b5b50505050565b611fdd61263e565b73ffffffffffffffffffffffffffffffffffffffff16611ffb61174d565b73ffffffffffffffffffffffffffffffffffffffff1614612051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204890614245565b60405180910390fd5b8060158190555050565b600a8054612068906145df565b80601f0160208091040260200160405190810160405280929190818152602001828054612094906145df565b80156120e15780601f106120b6576101008083540402835291602001916120e1565b820191906000526020600020905b8154815290600101906020018083116120c457829003601f168201915b505050505081565b60606120f4826125f0565b612133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212a90614285565b60405180910390fd5b60001515601160009054906101000a900460ff16151514156121e157600b805461215c906145df565b80601f0160208091040260200160405190810160405280929190818152602001828054612188906145df565b80156121d55780601f106121aa576101008083540402835291602001916121d5565b820191906000526020600020905b8154815290600101906020018083116121b857829003601f168201915b5050505050905061223d565b60006121eb6130c0565b9050600081511161220b5760405180602001604052806000815250612239565b8061221584613152565b600a604051602001612229939291906140c0565b6040516020818303038152906040525b9150505b919050565b61224a61263e565b73ffffffffffffffffffffffffffffffffffffffff1661226861174d565b73ffffffffffffffffffffffffffffffffffffffff16146122be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b590614245565b60405180910390fd5b80600c8190555050565b600e5481565b6122d661263e565b73ffffffffffffffffffffffffffffffffffffffff166122f461174d565b73ffffffffffffffffffffffffffffffffffffffff161461234a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234190614245565b60405180910390fd5b80600a9080519060200190612360929190613752565b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61240061263e565b73ffffffffffffffffffffffffffffffffffffffff1661241e61174d565b73ffffffffffffffffffffffffffffffffffffffff1614612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b90614245565b60405180910390fd5b80600b908051906020019061248a929190613752565b5050565b61249661263e565b73ffffffffffffffffffffffffffffffffffffffff166124b461174d565b73ffffffffffffffffffffffffffffffffffffffff161461250a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250190614245565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561257a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612571906141c5565b60405180910390fd5b61258381612e59565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000816125fb6126f8565b1115801561260a575060005482105b8015612637575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b600061270882612bca565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612773576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1661279461263e565b73ffffffffffffffffffffffffffffffffffffffff1614806127c357506127c2856127bd61263e565b612364565b5b8061280857506127d161263e565b73ffffffffffffffffffffffffffffffffffffffff166127f084610cda565b73ffffffffffffffffffffffffffffffffffffffff16145b905080612841576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156128a8576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128b585858560016132b3565b6128c160008487612646565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612b41576000548214612b4057878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612bac85858560016132b9565b5050505050565b600082612bc085846132bf565b1490509392505050565b612bd26137d8565b600082905080612be06126f8565b11158015612bef575060005481105b15612e22576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505090508060400151612e2057600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612d04578092505050612e54565b5b600115612e1f57818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612e1a578092505050612e54565b612d05565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612f6861263e565b8786866040518563ffffffff1660e01b8152600401612f8a9493929190614121565b602060405180830381600087803b158015612fa457600080fd5b505af1925050508015612fd557506040513d601f19601f82011682018060405250810190612fd29190613c69565b60015b61304f573d8060008114613005576040519150601f19603f3d011682016040523d82523d6000602084013e61300a565b606091505b50600081511415613047576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6130bc828260405180602001604052806000815250613372565b5050565b6060600980546130cf906145df565b80601f01602080910402602001604051908101604052809291908181526020018280546130fb906145df565b80156131485780601f1061311d57610100808354040283529160200191613148565b820191906000526020600020905b81548152906001019060200180831161312b57829003601f168201915b5050505050905090565b6060600082141561319a576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506132ae565b600082905060005b600082146131cc5780806131b590614642565b915050600a826131c59190614460565b91506131a2565b60008167ffffffffffffffff8111156131e8576131e76147a6565b5b6040519080825280601f01601f19166020018201604052801561321a5781602001600182028036833780820191505090505b5090505b600085146132a75760018261323391906144eb565b9150600a8561324291906146b9565b603061324e919061440a565b60f81b81838151811061326457613263614777565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856132a09190614460565b945061321e565b8093505050505b919050565b50505050565b50505050565b60008082905060005b84518110156133675760008582815181106132e6576132e5614777565b5b6020026020010151905080831161332757828160405160200161330a929190614094565b604051602081830303815290604052805190602001209250613353565b808360405160200161333a929190614094565b6040516020818303038152906040528051906020012092505b50808061335f90614642565b9150506132c8565b508091505092915050565b61337f8383836001613384565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156133f1576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084141561342c576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61343960008683876132b3565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060008190506000858201905083801561360357506136028773ffffffffffffffffffffffffffffffffffffffff16612f1f565b5b156136c9575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46136786000888480600101955088612f42565b6136ae576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808214156136095782600054146136c457600080fd5b613735565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808214156136ca575b81600081905550505061374b60008683876132b9565b5050505050565b82805461375e906145df565b90600052602060002090601f01602090048101928261378057600085556137c7565b82601f1061379957805160ff19168380011785556137c7565b828001600101855582156137c7579182015b828111156137c65782518255916020019190600101906137ab565b5b5090506137d4919061381b565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b8082111561383457600081600090555060010161381c565b5090565b600061384b61384684614345565b614320565b905082815260208101848484011115613867576138666147e4565b5b61387284828561459d565b509392505050565b600061388d61388884614376565b614320565b9050828152602081018484840111156138a9576138a86147e4565b5b6138b484828561459d565b509392505050565b6000813590506138cb81614a20565b92915050565b60008083601f8401126138e7576138e66147da565b5b8235905067ffffffffffffffff811115613904576139036147d5565b5b6020830191508360208202830111156139205761391f6147df565b5b9250929050565b60008135905061393681614a37565b92915050565b60008135905061394b81614a4e565b92915050565b60008135905061396081614a65565b92915050565b60008151905061397581614a65565b92915050565b600082601f8301126139905761398f6147da565b5b81356139a0848260208601613838565b91505092915050565b600082601f8301126139be576139bd6147da565b5b81356139ce84826020860161387a565b91505092915050565b6000813590506139e681614a7c565b92915050565b600060208284031215613a0257613a016147ee565b5b6000613a10848285016138bc565b91505092915050565b60008060408385031215613a3057613a2f6147ee565b5b6000613a3e858286016138bc565b9250506020613a4f858286016138bc565b9150509250929050565b600080600060608486031215613a7257613a716147ee565b5b6000613a80868287016138bc565b9350506020613a91868287016138bc565b9250506040613aa2868287016139d7565b9150509250925092565b60008060008060808587031215613ac657613ac56147ee565b5b6000613ad4878288016138bc565b9450506020613ae5878288016138bc565b9350506040613af6878288016139d7565b925050606085013567ffffffffffffffff811115613b1757613b166147e9565b5b613b238782880161397b565b91505092959194509250565b600080600060408486031215613b4857613b476147ee565b5b6000613b56868287016138bc565b935050602084013567ffffffffffffffff811115613b7757613b766147e9565b5b613b83868287016138d1565b92509250509250925092565b60008060408385031215613ba657613ba56147ee565b5b6000613bb4858286016138bc565b9250506020613bc585828601613927565b9150509250929050565b60008060408385031215613be657613be56147ee565b5b6000613bf4858286016138bc565b9250506020613c05858286016139d7565b9150509250929050565b600060208284031215613c2557613c246147ee565b5b6000613c338482850161393c565b91505092915050565b600060208284031215613c5257613c516147ee565b5b6000613c6084828501613951565b91505092915050565b600060208284031215613c7f57613c7e6147ee565b5b6000613c8d84828501613966565b91505092915050565b600060208284031215613cac57613cab6147ee565b5b600082013567ffffffffffffffff811115613cca57613cc96147e9565b5b613cd6848285016139a9565b91505092915050565b600060208284031215613cf557613cf46147ee565b5b6000613d03848285016139d7565b91505092915050565b600080600060408486031215613d2557613d246147ee565b5b6000613d33868287016139d7565b935050602084013567ffffffffffffffff811115613d5457613d536147e9565b5b613d60868287016138d1565b92509250509250925092565b613d758161451f565b82525050565b613d8c613d878261451f565b61468b565b82525050565b613d9b81614531565b82525050565b613daa8161453d565b82525050565b613dc1613dbc8261453d565b61469d565b82525050565b6000613dd2826143bc565b613ddc81856143d2565b9350613dec8185602086016145ac565b613df5816147f3565b840191505092915050565b6000613e0b826143c7565b613e1581856143ee565b9350613e258185602086016145ac565b613e2e816147f3565b840191505092915050565b6000613e44826143c7565b613e4e81856143ff565b9350613e5e8185602086016145ac565b80840191505092915050565b60008154613e77816145df565b613e8181866143ff565b94506001821660008114613e9c5760018114613ead57613ee0565b60ff19831686528186019350613ee0565b613eb6856143a7565b60005b83811015613ed857815481890152600182019150602081019050613eb9565b838801955050505b50505092915050565b6000613ef66026836143ee565b9150613f0182614811565b604082019050919050565b6000613f19601c836143ee565b9150613f2482614860565b602082019050919050565b6000613f3c6016836143ee565b9150613f4782614889565b602082019050919050565b6000613f5f6024836143ee565b9150613f6a826148b2565b604082019050919050565b6000613f826020836143ee565b9150613f8d82614901565b602082019050919050565b6000613fa56016836143ee565b9150613fb08261492a565b602082019050919050565b6000613fc8602f836143ee565b9150613fd382614953565b604082019050919050565b6000613feb6000836143e3565b9150613ff6826149a2565b600082019050919050565b600061400e6012836143ee565b9150614019826149a5565b602082019050919050565b60006140316017836143ee565b915061403c826149ce565b602082019050919050565b6000614054601b836143ee565b915061405f826149f7565b602082019050919050565b61407381614593565b82525050565b60006140858284613d7b565b60148201915081905092915050565b60006140a08285613db0565b6020820191506140b08284613db0565b6020820191508190509392505050565b60006140cc8286613e39565b91506140d88285613e39565b91506140e48284613e6a565b9150819050949350505050565b60006140fc82613fde565b9150819050919050565b600060208201905061411b6000830184613d6c565b92915050565b60006080820190506141366000830187613d6c565b6141436020830186613d6c565b614150604083018561406a565b81810360608301526141628184613dc7565b905095945050505050565b60006020820190506141826000830184613d92565b92915050565b600060208201905061419d6000830184613da1565b92915050565b600060208201905081810360008301526141bd8184613e00565b905092915050565b600060208201905081810360008301526141de81613ee9565b9050919050565b600060208201905081810360008301526141fe81613f0c565b9050919050565b6000602082019050818103600083015261421e81613f2f565b9050919050565b6000602082019050818103600083015261423e81613f52565b9050919050565b6000602082019050818103600083015261425e81613f75565b9050919050565b6000602082019050818103600083015261427e81613f98565b9050919050565b6000602082019050818103600083015261429e81613fbb565b9050919050565b600060208201905081810360008301526142be81614001565b9050919050565b600060208201905081810360008301526142de81614024565b9050919050565b600060208201905081810360008301526142fe81614047565b9050919050565b600060208201905061431a600083018461406a565b92915050565b600061432a61433b565b90506143368282614611565b919050565b6000604051905090565b600067ffffffffffffffff8211156143605761435f6147a6565b5b614369826147f3565b9050602081019050919050565b600067ffffffffffffffff821115614391576143906147a6565b5b61439a826147f3565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061441582614593565b915061442083614593565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614455576144546146ea565b5b828201905092915050565b600061446b82614593565b915061447683614593565b92508261448657614485614719565b5b828204905092915050565b600061449c82614593565b91506144a783614593565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144e0576144df6146ea565b5b828202905092915050565b60006144f682614593565b915061450183614593565b925082821015614514576145136146ea565b5b828203905092915050565b600061452a82614573565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156145ca5780820151818401526020810190506145af565b838111156145d9576000848401525b50505050565b600060028204905060018216806145f757607f821691505b6020821081141561460b5761460a614748565b5b50919050565b61461a826147f3565b810181811067ffffffffffffffff82111715614639576146386147a6565b5b80604052505050565b600061464d82614593565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156146805761467f6146ea565b5b600182019050919050565b6000614696826146a7565b9050919050565b6000819050919050565b60006146b282614804565b9050919050565b60006146c482614593565b91506146cf83614593565b9250826146df576146de614719565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6d6178204e465420706572206164647265737320657863656564656400000000600082015250565b7f6d6178204e4654206c696d697420657863656564656400000000000000000000600082015250565b7f6d6178206d696e7420616d6f756e74207065722073657373696f6e206578636560008201527f6564656400000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f74686520636f6e74726163742069732070617573656400000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b50565b7f696e73756666696369656e742066756e64730000000000000000000000000000600082015250565b7f75736572206973206e6f742077686974656c6973746564000000000000000000600082015250565b7f6e65656420746f206d696e74206174206c656173742031204e46540000000000600082015250565b614a298161451f565b8114614a3457600080fd5b50565b614a4081614531565b8114614a4b57600080fd5b50565b614a578161453d565b8114614a6257600080fd5b50565b614a6e81614547565b8114614a7957600080fd5b50565b614a8581614593565b8114614a9057600080fd5b5056fea2646970667358221220c919fb82c74279b2eaa900ab82f5bbf2877f68bc88ef48daa178a56b7819f69164736f6c63430008070033697066733a2f2f516d556a7a4c585a7167677674514159584b374b4b73434d51556279753664476956786338696367424a68446a52