608060405234801561001057600080fd5b506140a6806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200002e5760003560e01c806351e2d5f11462000033575b600080fd5b6200005160048036038101906200004b9190620002c3565b62000053565b005b6000828260405162000065906200013f565b62000072929190620003d1565b604051809103906000f0801580156200008f573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b8152600401620000cd919062000451565b600060405180830381600087803b158015620000e857600080fd5b505af1158015620000fd573d6000803e3d6000fd5b505050507f55e3dd820a8227657ef70594274cf5bf2ee0eb6f4ccae4ac6b11bdbc912f9f3a8160405162000132919062000451565b60405180910390a1505050565b613c02806200046f83390190565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620001b6826200016b565b810181811067ffffffffffffffff82111715620001d857620001d76200017c565b5b80604052505050565b6000620001ed6200014d565b9050620001fb8282620001ab565b919050565b600067ffffffffffffffff8211156200021e576200021d6200017c565b5b62000229826200016b565b9050602081019050919050565b82818337600083830152505050565b60006200025c620002568462000200565b620001e1565b9050828152602081018484840111156200027b576200027a62000166565b5b6200028884828562000236565b509392505050565b600082601f830112620002a857620002a762000161565b5b8135620002ba84826020860162000245565b91505092915050565b60008060408385031215620002dd57620002dc62000157565b5b600083013567ffffffffffffffff811115620002fe57620002fd6200015c565b5b6200030c8582860162000290565b925050602083013567ffffffffffffffff81111562000330576200032f6200015c565b5b6200033e8582860162000290565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200038457808201518184015260208101905062000367565b60008484015250505050565b60006200039d8262000348565b620003a9818562000353565b9350620003bb81856020860162000364565b620003c6816200016b565b840191505092915050565b60006040820190508181036000830152620003ed818562000390565b9050818103602083015262000403818462000390565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000439826200040c565b9050919050565b6200044b816200042c565b82525050565b600060208201905062000468600083018462000440565b9291505056fe60806040526040518060400160405280600881526020017f697066733a2f2f2f000000000000000000000000000000000000000000000000815250600990816200004a919062000479565b50683635c9adc5dea00000600a55611388600b556602c2ad68fd9000600c556000600d556000600e556000600f556001601060006101000a81548160ff021916908315150217905550348015620000a057600080fd5b5060405162003c0238038062003c028339818101604052810190620000c69190620006c4565b81818160029081620000d9919062000479565b508060039081620000eb919062000479565b50620000fc6200012c60201b60201c565b600081905550505062000124620001186200013160201b60201c565b6200013960201b60201c565b505062000749565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200028157607f821691505b60208210810362000297576200029662000239565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002c2565b6200030d8683620002c2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200035a620003546200034e8462000325565b6200032f565b62000325565b9050919050565b6000819050919050565b620003768362000339565b6200038e620003858262000361565b848454620002cf565b825550505050565b600090565b620003a562000396565b620003b28184846200036b565b505050565b5b81811015620003da57620003ce6000826200039b565b600181019050620003b8565b5050565b601f8211156200042957620003f3816200029d565b620003fe84620002b2565b810160208510156200040e578190505b620004266200041d85620002b2565b830182620003b7565b50505b505050565b600082821c905092915050565b60006200044e600019846008026200042e565b1980831691505092915050565b60006200046983836200043b565b9150826002028217905092915050565b6200048482620001ff565b67ffffffffffffffff811115620004a0576200049f6200020a565b5b620004ac825462000268565b620004b9828285620003de565b600060209050601f831160018114620004f15760008415620004dc578287015190505b620004e885826200045b565b86555062000558565b601f19841662000501866200029d565b60005b828110156200052b5784890151825560018201915060208501945060208101905062000504565b868310156200054b578489015162000547601f8916826200043b565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200059a826200057e565b810181811067ffffffffffffffff82111715620005bc57620005bb6200020a565b5b80604052505050565b6000620005d162000560565b9050620005df82826200058f565b919050565b600067ffffffffffffffff8211156200060257620006016200020a565b5b6200060d826200057e565b9050602081019050919050565b60005b838110156200063a5780820151818401526020810190506200061d565b60008484015250505050565b60006200065d6200065784620005e4565b620005c5565b9050828152602081018484840111156200067c576200067b62000579565b5b620006898482856200061a565b509392505050565b600082601f830112620006a957620006a862000574565b5b8151620006bb84826020860162000646565b91505092915050565b60008060408385031215620006de57620006dd6200056a565b5b600083015167ffffffffffffffff811115620006ff57620006fe6200056f565b5b6200070d8582860162000691565b925050602083015167ffffffffffffffff8111156200073157620007306200056f565b5b6200073f8582860162000691565b9150509250929050565b6134a980620007596000396000f3fe60806040526004361061020f5760003560e01c8063715018a611610118578063b88d4fde116100a0578063d5abeb011161006f578063d5abeb0114610713578063e985e9c51461073e578063efdc77881461077b578063f2fde38b146107a4578063f6511f93146107cd5761020f565b8063b88d4fde14610664578063c6a91b4214610680578063c87b56dd146106ab578063d547cfb7146106e85761020f565b8063982d669e116100e7578063982d669e146105a057806398710d1e146105cb5780639bd6e3d7146105f65780639e9fcffc14610612578063a22cb4651461063b5761020f565b8063715018a614610529578063853828b6146105405780638da5cb5b1461054a57806395d89b41146105755761020f565b80631e84c4131161019b57806328cad13d1161016a57806328cad13d1461044157806342842e0e1461046a57806355f804b3146104865780636352211e146104af57806370a08231146104ec5761020f565b80631e84c413146103a8578063202f298a146103d3578063228025e8146103fc57806323b872dd146104255761020f565b8063095ea7b3116101e2578063095ea7b3146102e45780630a00ae831461030057806318160ddd146103295780631919fed714610354578063193ad7b41461037d5761020f565b806301ffc9a71461021457806306fdde031461025157806307e89ec01461027c578063081812fc146102a7575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612556565b61080a565b604051610248919061259e565b60405180910390f35b34801561025d57600080fd5b5061026661089c565b6040516102739190612649565b60405180910390f35b34801561028857600080fd5b5061029161092e565b60405161029e9190612684565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c991906126cb565b610934565b6040516102db9190612739565b60405180910390f35b6102fe60048036038101906102f99190612780565b6109b3565b005b34801561030c57600080fd5b50610327600480360381019061032291906126cb565b610af7565b005b34801561033557600080fd5b5061033e610b7d565b60405161034b9190612684565b60405180910390f35b34801561036057600080fd5b5061037b600480360381019061037691906126cb565b610b94565b005b34801561038957600080fd5b50610392610c1a565b60405161039f9190612684565b60405180910390f35b3480156103b457600080fd5b506103bd610c20565b6040516103ca919061259e565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f591906126cb565b610c33565b005b34801561040857600080fd5b50610423600480360381019061041e91906126cb565b610cb9565b005b61043f600480360381019061043a91906127c0565b610d3f565b005b34801561044d57600080fd5b506104686004803603810190610463919061283f565b611061565b005b610484600480360381019061047f91906127c0565b6110fa565b005b34801561049257600080fd5b506104ad60048036038101906104a891906129a1565b61111a565b005b3480156104bb57600080fd5b506104d660048036038101906104d191906126cb565b6111a9565b6040516104e39190612739565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e91906129ea565b6111bb565b6040516105209190612684565b60405180910390f35b34801561053557600080fd5b5061053e611273565b005b6105486112fb565b005b34801561055657600080fd5b5061055f611506565b60405161056c9190612739565b60405180910390f35b34801561058157600080fd5b5061058a611530565b6040516105979190612649565b60405180910390f35b3480156105ac57600080fd5b506105b56115c2565b6040516105c29190612684565b60405180910390f35b3480156105d757600080fd5b506105e06115c8565b6040516105ed9190612684565b60405180910390f35b610610600480360381019061060b91906126cb565b6115ce565b005b34801561061e57600080fd5b50610639600480360381019061063491906126cb565b61185d565b005b34801561064757600080fd5b50610662600480360381019061065d9190612a17565b6118e3565b005b61067e60048036038101906106799190612af8565b6119ee565b005b34801561068c57600080fd5b50610695611a61565b6040516106a29190612684565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd91906126cb565b611a67565b6040516106df9190612649565b60405180910390f35b3480156106f457600080fd5b506106fd611a6e565b60405161070a9190612649565b60405180910390f35b34801561071f57600080fd5b50610728611afc565b6040516107359190612684565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190612b7b565b611b02565b604051610772919061259e565b60405180910390f35b34801561078757600080fd5b506107a2600480360381019061079d91906126cb565b611b96565b005b3480156107b057600080fd5b506107cb60048036038101906107c691906129ea565b611cb9565b005b3480156107d957600080fd5b506107f460048036038101906107ef91906126cb565b611db0565b6040516108019190612684565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061086557506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108955750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600280546108ab90612bea565b80601f01602080910402602001604051908101604052809291908181526020018280546108d790612bea565b80156109245780601f106108f957610100808354040283529160200191610924565b820191906000526020600020905b81548152906001019060200180831161090757829003601f168201915b5050505050905090565b600c5481565b600061093f82611e3b565b610975576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109be826111a9565b90508073ffffffffffffffffffffffffffffffffffffffff166109df611e9a565b73ffffffffffffffffffffffffffffffffffffffff1614610a4257610a0b81610a06611e9a565b611b02565b610a41576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610aff611ea2565b73ffffffffffffffffffffffffffffffffffffffff16610b1d611506565b73ffffffffffffffffffffffffffffffffffffffff1614610b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6a90612c67565b60405180910390fd5b80600d8190555050565b6000610b87611eaa565b6001546000540303905090565b610b9c611ea2565b73ffffffffffffffffffffffffffffffffffffffff16610bba611506565b73ffffffffffffffffffffffffffffffffffffffff1614610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0790612c67565b60405180910390fd5b80600c8190555050565b600f5481565b601060009054906101000a900460ff1681565b610c3b611ea2565b73ffffffffffffffffffffffffffffffffffffffff16610c59611506565b73ffffffffffffffffffffffffffffffffffffffff1614610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca690612c67565b60405180910390fd5b80600e8190555050565b610cc1611ea2565b73ffffffffffffffffffffffffffffffffffffffff16610cdf611506565b73ffffffffffffffffffffffffffffffffffffffff1614610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c90612c67565b60405180910390fd5b80600a8190555050565b6000610d4a82611eaf565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610db1576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610dbd84611f7b565b91509150610dd38187610dce611e9a565b611fa2565b610e1f57610de886610de3611e9a565b611b02565b610e1e576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610e85576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e928686866001611fe6565b8015610e9d57600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610f6b85610f47888887611fec565b7c020000000000000000000000000000000000000000000000000000000017612014565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603610ff15760006001850190506000600460008381526020019081526020016000205403610fef576000548114610fee578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611059868686600161203f565b505050505050565b611069611ea2565b73ffffffffffffffffffffffffffffffffffffffff16611087611506565b73ffffffffffffffffffffffffffffffffffffffff16146110dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d490612c67565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b611115838383604051806020016040528060008152506119ee565b505050565b611122611ea2565b73ffffffffffffffffffffffffffffffffffffffff16611140611506565b73ffffffffffffffffffffffffffffffffffffffff1614611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90612c67565b60405180910390fd5b80600990816111a59190612e33565b5050565b60006111b482611eaf565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611222576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b61127b611ea2565b73ffffffffffffffffffffffffffffffffffffffff16611299611506565b73ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e690612c67565b60405180910390fd5b6112f96000612045565b565b611303611ea2565b73ffffffffffffffffffffffffffffffffffffffff16611321611506565b73ffffffffffffffffffffffffffffffffffffffff1614611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136e90612c67565b60405180910390fd5b600047905060006064605a8361138d9190612f34565b6113979190612fa5565b905060006064600a846113aa9190612f34565b6113b49190612fa5565b9050600073be992398706ab42e7c139908d666b00567200f2d73ffffffffffffffffffffffffffffffffffffffff16836040516113f090613007565b60006040518083038185875af1925050503d806000811461142d576040519150601f19603f3d011682016040523d82523d6000602084013e611432565b606091505b50509050600073be992398706ab42e7c139908d666b00567200f2d73ffffffffffffffffffffffffffffffffffffffff168360405161147090613007565b60006040518083038185875af1925050503d80600081146114ad576040519150601f19603f3d011682016040523d82523d6000602084013e6114b2565b606091505b505090508180156114c05750805b6114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690613068565b60405180910390fd5b5050505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461153f90612bea565b80601f016020809104026020016040519081016040528092919081815260200182805461156b90612bea565b80156115b85780601f1061158d576101008083540402835291602001916115b8565b820191906000526020600020905b81548152906001019060200180831161159b57829003601f168201915b5050505050905090565b600d5481565b600e5481565b6001600a546115dd9190613088565b816115e6610b7d565b6115f09190613088565b1115611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613108565b60405180910390fd5b600061163c82611db0565b9050600073be992398706ab42e7c139908d666b00567200f2d9050600d5483600f546116689190613088565b11156116fd57348211156116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a890613174565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156116f7573d6000803e3d6000fd5b5061184e565b600e548361170a336111bb565b6117149190613088565b11156117ee573482111561175d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175490613174565b60405180910390fd5b600b548311156117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990613206565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156117e8573d6000803e3d6000fd5b5061184d565b600e54831115611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a90613206565b60405180910390fd5b82600f60008282546118459190613088565b925050819055505b5b611858338461210b565b505050565b611865611ea2565b73ffffffffffffffffffffffffffffffffffffffff16611883611506565b73ffffffffffffffffffffffffffffffffffffffff16146118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d090612c67565b60405180910390fd5b80600b8190555050565b80600760006118f0611e9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661199d611e9a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119e2919061259e565b60405180910390a35050565b6119f9848484610d3f565b60008373ffffffffffffffffffffffffffffffffffffffff163b14611a5b57611a2484848484612129565b611a5a576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b600b5481565b6060919050565b60098054611a7b90612bea565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa790612bea565b8015611af45780601f10611ac957610100808354040283529160200191611af4565b820191906000526020600020905b815481529060010190602001808311611ad757829003601f168201915b505050505081565b600a5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b9e611ea2565b73ffffffffffffffffffffffffffffffffffffffff16611bbc611506565b73ffffffffffffffffffffffffffffffffffffffff1614611c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0990612c67565b60405180910390fd5b60008111611c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4c90613272565b60405180910390fd5b600a5481611c61610b7d565b611c6b9190613088565b1115611cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca3906132de565b60405180910390fd5b611cb6338261210b565b50565b611cc1611ea2565b73ffffffffffffffffffffffffffffffffffffffff16611cdf611506565b73ffffffffffffffffffffffffffffffffffffffff1614611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90612c67565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b90613370565b60405180910390fd5b611dad81612045565b50565b600060098203611dc75764e8990a46009050611e36565b60078203611dde57661c6c0c6eaae8009050611e36565b60468203611df65767011c37aac67ee8009050611e36565b60148203611e0d57661c6c0c6eaae8009050611e36565b60328203611e25576709b6e64a8ec600009050611e36565b81600c54611e339190612f34565b90505b919050565b600081611e46611eaa565b11158015611e55575060005482105b8015611e93575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b600033905090565b600090565b60008082905080611ebe611eaa565b11611f4457600054811015611f435760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603611f41575b60008103611f37576004600083600190039350838152602001908152602001600020549050611f0d565b8092505050611f76565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8612003868684612279565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612125828260405180602001604052806000815250612282565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261214f611e9a565b8786866040518563ffffffff1660e01b815260040161217194939291906133e5565b6020604051808303816000875af19250505080156121ad57506040513d601f19601f820116820180604052508101906121aa9190613446565b60015b612226573d80600081146121dd576040519150601f19603f3d011682016040523d82523d6000602084013e6121e2565b606091505b50600081510361221e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60009392505050565b61228c838361231f565b60008373ffffffffffffffffffffffffffffffffffffffff163b1461231a57600080549050600083820390505b6122cc6000868380600101945086612129565b612302576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181106122b957816000541461231757600080fd5b50505b505050565b6000805490506000820361235f576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61236c6000848385611fe6565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506123e3836123d46000866000611fec565b6123dd856124da565b17612014565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b81811461248457808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612449565b50600082036124bf576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190555050506124d5600084838561203f565b505050565b60006001821460e11b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612533816124fe565b811461253e57600080fd5b50565b6000813590506125508161252a565b92915050565b60006020828403121561256c5761256b6124f4565b5b600061257a84828501612541565b91505092915050565b60008115159050919050565b61259881612583565b82525050565b60006020820190506125b3600083018461258f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125f35780820151818401526020810190506125d8565b60008484015250505050565b6000601f19601f8301169050919050565b600061261b826125b9565b61262581856125c4565b93506126358185602086016125d5565b61263e816125ff565b840191505092915050565b600060208201905081810360008301526126638184612610565b905092915050565b6000819050919050565b61267e8161266b565b82525050565b60006020820190506126996000830184612675565b92915050565b6126a88161266b565b81146126b357600080fd5b50565b6000813590506126c58161269f565b92915050565b6000602082840312156126e1576126e06124f4565b5b60006126ef848285016126b6565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612723826126f8565b9050919050565b61273381612718565b82525050565b600060208201905061274e600083018461272a565b92915050565b61275d81612718565b811461276857600080fd5b50565b60008135905061277a81612754565b92915050565b60008060408385031215612797576127966124f4565b5b60006127a58582860161276b565b92505060206127b6858286016126b6565b9150509250929050565b6000806000606084860312156127d9576127d86124f4565b5b60006127e78682870161276b565b93505060206127f88682870161276b565b9250506040612809868287016126b6565b9150509250925092565b61281c81612583565b811461282757600080fd5b50565b60008135905061283981612813565b92915050565b600060208284031215612855576128546124f4565b5b60006128638482850161282a565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128ae826125ff565b810181811067ffffffffffffffff821117156128cd576128cc612876565b5b80604052505050565b60006128e06124ea565b90506128ec82826128a5565b919050565b600067ffffffffffffffff82111561290c5761290b612876565b5b612915826125ff565b9050602081019050919050565b82818337600083830152505050565b600061294461293f846128f1565b6128d6565b9050828152602081018484840111156129605761295f612871565b5b61296b848285612922565b509392505050565b600082601f8301126129885761298761286c565b5b8135612998848260208601612931565b91505092915050565b6000602082840312156129b7576129b66124f4565b5b600082013567ffffffffffffffff8111156129d5576129d46124f9565b5b6129e184828501612973565b91505092915050565b600060208284031215612a00576129ff6124f4565b5b6000612a0e8482850161276b565b91505092915050565b60008060408385031215612a2e57612a2d6124f4565b5b6000612a3c8582860161276b565b9250506020612a4d8582860161282a565b9150509250929050565b600067ffffffffffffffff821115612a7257612a71612876565b5b612a7b826125ff565b9050602081019050919050565b6000612a9b612a9684612a57565b6128d6565b905082815260208101848484011115612ab757612ab6612871565b5b612ac2848285612922565b509392505050565b600082601f830112612adf57612ade61286c565b5b8135612aef848260208601612a88565b91505092915050565b60008060008060808587031215612b1257612b116124f4565b5b6000612b208782880161276b565b9450506020612b318782880161276b565b9350506040612b42878288016126b6565b925050606085013567ffffffffffffffff811115612b6357612b626124f9565b5b612b6f87828801612aca565b91505092959194509250565b60008060408385031215612b9257612b916124f4565b5b6000612ba08582860161276b565b9250506020612bb18582860161276b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c0257607f821691505b602082108103612c1557612c14612bbb565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c516020836125c4565b9150612c5c82612c1b565b602082019050919050565b60006020820190508181036000830152612c8081612c44565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612ce97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612cac565b612cf38683612cac565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612d30612d2b612d268461266b565b612d0b565b61266b565b9050919050565b6000819050919050565b612d4a83612d15565b612d5e612d5682612d37565b848454612cb9565b825550505050565b600090565b612d73612d66565b612d7e818484612d41565b505050565b5b81811015612da257612d97600082612d6b565b600181019050612d84565b5050565b601f821115612de757612db881612c87565b612dc184612c9c565b81016020851015612dd0578190505b612de4612ddc85612c9c565b830182612d83565b50505b505050565b600082821c905092915050565b6000612e0a60001984600802612dec565b1980831691505092915050565b6000612e238383612df9565b9150826002028217905092915050565b612e3c826125b9565b67ffffffffffffffff811115612e5557612e54612876565b5b612e5f8254612bea565b612e6a828285612da6565b600060209050601f831160018114612e9d5760008415612e8b578287015190505b612e958582612e17565b865550612efd565b601f198416612eab86612c87565b60005b82811015612ed357848901518255600182019150602085019450602081019050612eae565b86831015612ef05784890151612eec601f891682612df9565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f3f8261266b565b9150612f4a8361266b565b9250828202612f588161266b565b91508282048414831517612f6f57612f6e612f05565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612fb08261266b565b9150612fbb8361266b565b925082612fcb57612fca612f76565b5b828204905092915050565b600081905092915050565b50565b6000612ff1600083612fd6565b9150612ffc82612fe1565b600082019050919050565b600061301282612fe4565b9150819050919050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b60006130526010836125c4565b915061305d8261301c565b602082019050919050565b6000602082019050818103600083015261308181613045565b9050919050565b60006130938261266b565b915061309e8361266b565b92508282019050808211156130b6576130b5612f05565b5b92915050565b7f4e6f206d6f726500000000000000000000000000000000000000000000000000600082015250565b60006130f26007836125c4565b91506130fd826130bc565b602082019050919050565b60006020820190508181036000830152613121816130e5565b9050919050565b7f496e636f7272656374204554482076616c75652073656e740000000000000000600082015250565b600061315e6018836125c4565b915061316982613128565b602082019050919050565b6000602082019050818103600083015261318d81613151565b9050919050565b7f4d6178206d696e747320706572207472616e73616374696f6e2065786365656460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006131f06022836125c4565b91506131fb82613194565b604082019050919050565b6000602082019050818103600083015261321f816131e3565b9050919050565b7f496e76616c6964206d696e7420616d6f756e7400000000000000000000000000600082015250565b600061325c6013836125c4565b915061326782613226565b602082019050919050565b6000602082019050818103600083015261328b8161324f565b9050919050565b7f4d6178696d756d20737570706c79206578636565646564000000000000000000600082015250565b60006132c86017836125c4565b91506132d382613292565b602082019050919050565b600060208201905081810360008301526132f7816132bb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061335a6026836125c4565b9150613365826132fe565b604082019050919050565b600060208201905081810360008301526133898161334d565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006133b782613390565b6133c1818561339b565b93506133d18185602086016125d5565b6133da816125ff565b840191505092915050565b60006080820190506133fa600083018761272a565b613407602083018661272a565b6134146040830185612675565b818103606083015261342681846133ac565b905095945050505050565b6000815190506134408161252a565b92915050565b60006020828403121561345c5761345b6124f4565b5b600061346a84828501613431565b9150509291505056fea264697066735822122026afa2e45f65d93bef171ead7cf00a06fff96dabaeaefe1ae6d32d8a9b7842e764736f6c63430008110033a2646970667358221220839fba847ceac5b134ee10fa73efa14c7bcb8c933a7be5e6420021601531231d64736f6c63430008110033