60a0806040523460c857306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c1660b957506001600160401b036002600160401b0319828216016075575b60405161447a90816100ce8239608051818181611b4a0152611c670152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880806056565b63f92ee8a960e01b8152600490fd5b600080fdfe608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a714612b2557508163022d63fb14612ae957816306fdde0314611338578163095ea7b314612a615781630aa6220b1461293b5781630c05f82c146128e757816318160ddd1461288d57816323b872dd14612832578163248a9ca3146127ca5781632784c5db146126955781632e1b2a411461257e5781632f2ff15d146124fc578163313ce567146124c25781633644e5151461241c57816336568abe1461224157816340c10f191461201b57816342966c6814611fd55781634904ac8f14611ef95781634f1ef28614611bbf57816352d1902d14611b0257816353735f3714611aa95781636113f83a14611a0657816361d027b314611994578163634e93da14611803578163649a5ec71461158b578163651fd2681461154757816370a08231146114d95781637ecebe001461148757816384ef8ffc146114155781638da5cb5b1461141557816391726446146113cd57816391d148541461133d57816395d89b4114611338578163998955d3146112f45781639dc29fac14611276578163a1eda53c146111c7578163a217fddf1461118e578163a781a3fd14611142578163a9059cbb146110f3578163ad3cb1cc1461107c578163c0c1fbb914610f54578163c0c53b8b14610c28578163c1eb713714610ba2578163cc8463c814610b58578163cefc142914610980578163cf6eefb7146108fd578163d4ec137a1461088b578163d505accf146106b5578163d547741f14610608578163d5abeb01146105cd578163d602b9fd14610514578163d8ddf18f146104b457508063dd62ed3e14610459578063f0f4426014610390578063f5b541a614610338578063f5eb42dc146102e75763fe575a871461029857600080fd5b346102e35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e3576020906102da6102d5612cc5565b613285565b90519015158152f35b5080fd5b50346102e35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e357602091610322612cc5565b906387a211a2600c525281600c20549051908152f35b50346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e357602090517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b82346104565760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104565773ffffffffffffffffffffffffffffffffffffffff6103dd612cc5565b6103e561334f565b167f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb00817fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f8280a280f35b80fd5b50346102e357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e357602091610493612cc5565b9061049c612ce8565b8452637f5e9f20600c52526034600c20549051908152f35b8284346104565760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610456575061050d6020926fffffffffffffffffffffffffffffffff610505613052565b169035613b4a565b9051908152f35b833461045657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104565761054b61334f565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840080547fffffffffffff0000000000000000000000000000000000000000000000000000811690915560a01c65ffffffffffff166105a65780f35b7f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a96051098180a180f35b5050346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35760209061050d613113565b839150346102e357827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e3578035610643612ce8565b91811561068e5750610685600184958361068a96527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020528620015461341c565b613cfe565b5080f35b84517f3fc3c27a000000000000000000000000000000000000000000000000000000008152fd5b8383346102e35760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e3576106ee612cc5565b6106f6612ce8565b60443590606435916084359460ff8616860361088757610714612de5565b93845160208096012081421161087b5782519760c073ffffffffffffffffffffffffffffffffffffffff809916988997169965383775081901600e52878c5288600c2094855480957f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84528b84019081528d8985017fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc68152606086019c8d469052608087019330855260a08820602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988525252898b525260a082015220604e526042602c208a5260ff16865260a435835260c435606052858060808b60015afa90873d510361086f577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259798999a5001905586777f5e9f2000000000000000000000000000000000000000001790526034602c2055a380f35b8a63ddafbaef8b52601cfd5b89631a15a3cc8a52601cfd5b8680fd5b5050346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35760209073ffffffffffffffffffffffffffffffffffffffff7f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb0154169051908152f35b82843461045657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261045657507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840054815173ffffffffffffffffffffffffffffffffffffffff8216815260a09190911c65ffffffffffff166020820152f35b839150346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e3577feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984005473ffffffffffffffffffffffffffffffffffffffff919082163303610b28577feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840054929373ffffffffffffffffffffffffffffffffffffffff84169360a01c65ffffffffffff169081158015610b1e575b610af05785610aa586610a9f877feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984018054907fffffffffffffffffffffffff000000000000000000000000000000000000000082169055166141ce565b50613c61565b507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984007fffffffffffff0000000000000000000000000000000000000000000000000000815416905580f35b6024935051917f19ca5ebb000000000000000000000000000000000000000000000000000000008352820152fd5b5042821015610a43565b6024908451907fc22c80220000000000000000000000000000000000000000000000000000000082523390820152fd5b5050346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35760209065ffffffffffff610b9a61309c565b915191168152f35b905034610c245760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c24578160209373ffffffffffffffffffffffffffffffffffffffff610bf4612cc5565b1681527f4f7337d0ed9263ce19d7b42b3e4f1fab493f50854a84b6d021b0bdd3f1d6ea0085522001549051908152f35b8280fd5b905034610c245760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c2457610c61612cc5565b610c69612ce8565b6044359173ffffffffffffffffffffffffffffffffffffffff80841693848103610f50577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009586549560ff878a1c16159667ffffffffffffffff811680159081610f48575b6001149081610f3e575b159081610f35575b50610f0d578760017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316178a55610ed8575b5060ff88548a1c1615610eb05715610e81575090610d76610e229493927feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840079ffffffffffffffffffffffffffffffffffffffffffffffffffff8154169055613c61565b507f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb0091167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905573ffffffffffffffffffffffffffffffffffffffff7f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb0191167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b610e2a578280f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291817fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff602093541690555160018152a138808280f35b602490898951917fc22c8022000000000000000000000000000000000000000000000000000000008352820152fd5b5087517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fd5b7fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000166801000000000000000117885538610d13565b828a517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501538610ce0565b303b159150610cd8565b899150610cce565b8780fd5b91905034610c245760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c24578135916fffffffffffffffffffffffffffffffff9283811680910361107857610fad6133c0565b83610fb6613052565b160292831692830361104c57507f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb0280547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff84161790557f7d1fa2fe734d16276290c7f8713b6aac4d03f2ef2a604f4ef62525ccead2cf13916020915b51908152a180f35b8360116024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8480fd5b5050346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35780516110ef916110bb82612d4e565b600582527f352e302e3000000000000000000000000000000000000000000000000000000060208301525191829182612c14565b0390f35b5050346102e357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35760209061113b611131612cc5565b602435903361349f565b5160018152f35b5050346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e3576020906fffffffffffffffffffffffffffffffff610b9a613052565b5050346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35751908152602090f35b82843461045657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610456577feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401548060d01c918215158061126c575b1561125e575065ffffffffffff6110ef9160a01c1691925b5165ffffffffffff928316815292909116602083015281906040820190565b928392506110ef915061123f565b5042831015611227565b5050346102e3577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610456576112e16112b0612cc5565b602435903373ffffffffffffffffffffffffffffffffffffffff8216036112e4575b6112dc823361370d565b6137f9565b80f35b6112ef823383613461565b6112d2565b5050346102e35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35760209061050d611333612cc5565b612fbc565b612c7a565b905034610c2457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c24578160209360ff9261137c612ce8565b903582527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800865273ffffffffffffffffffffffffffffffffffffffff83832091168252855220541690519015158152f35b5050346102e3577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610456576112e1611407612cc5565b61140f612ce8565b90612f02565b5050346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35760209073ffffffffffffffffffffffffffffffffffffffff7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840154169051908152f35b5050346102e35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e3576020916114c3612cc5565b906338377508600c525281600c20549051908152f35b5050346102e35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e357602091611515612cc5565b906387a211a2600c525261050d82600c20546fffffffffffffffffffffffffffffffff611540613052565b16906139ea565b5050346102e35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35760209061050d611586612cc5565b612e67565b8383346102e35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e357823565ffffffffffff80821690818303611078576115d861334f565b6115e142613fe6565b91816115eb61309c565b168082111561179d57507ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b95965091611639916116ed936206978080821060001461179657505b1690613ab7565b927feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840180548060d01c806116f3575b5050805473ffffffffffffffffffffffffffffffffffffffff1660a085901b79ffffffffffff0000000000000000000000000000000000000000161760d086901b7fffffffffffff0000000000000000000000000000000000000000000000000000161790555165ffffffffffff92831681529190921660208201529081906040820190565b0390a180f35b42111561176c577feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984009079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260301b1691161790555b8780611667565b507f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec58780a1611765565b9050611632565b039081116117d7577ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b9495506116ed916116399190613ab7565b6024856011887f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5050346102e35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e3577f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed6602061185f612cc5565b61186761334f565b61188161187342613fe6565b61187b61309c565b90613ab7565b9073ffffffffffffffffffffffffffffffffffffffff6118e37feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400549065ffffffffffff73ffffffffffffffffffffffffffffffffffffffff83169260a01c1690565b92905016947feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984008054877fffffffffffff000000000000000000000000000000000000000000000000000079ffffffffffff00000000000000000000000000000000000000008760a01b1692161717905565ffffffffffff80921661196b575b5191168152a280f35b7f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a96051098780a1611962565b5050346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35760209073ffffffffffffffffffffffffffffffffffffffff7f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb0054169051908152f35b5050346102e35760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e3577f4685740526219b4ff488696cbb5472d797c9b65ddcf8959382f72b3dfda4fb80611a60612cc5565b9173ffffffffffffffffffffffffffffffffffffffff60243593604435611a8561334f565b611a8f8683613d9f565b611a998183613eb6565b835195865260208601521692a280f35b8284346104565760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610456575061050d6020926fffffffffffffffffffffffffffffffff611afa613052565b1690356139ea565b82843461045657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610456575073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003611b9957602090517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b918091507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c2457611bf3612cc5565b90602493843567ffffffffffffffff81116102e357366023820112156102e35780850135611c2081612dab565b94611c2d85519687612d6a565b81865260209182870193368a8383010111611ef5578186928b86930187378801015273ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016803014908115611ec7575b50611e9f57611c9f61334f565b81169585517f52d1902d00000000000000000000000000000000000000000000000000000000815283818a818b5afa869181611e70575b50611d0b5750505050505051917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352820152fd5b9088888894938c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc91828103611e435750853b15611e16575080547fffffffffffffffffffffffff000000000000000000000000000000000000000016821790558451889392917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a2825115611ddf57505061068a9582915190845af4913d15611dd5573d611dc7611dbe82612dab565b92519283612d6a565b81528581943d92013e6143a4565b50606092506143a4565b955095505050505034611df157505080f35b7fb398979f000000000000000000000000000000000000000000000000000000008152fd5b83838851917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352820152fd5b84908851917faa1d49a4000000000000000000000000000000000000000000000000000000008352820152fd5b9091508481813d8311611e98575b611e888183612d6a565b8101031261088757519038611cd6565b503d611e7e565b8786517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141538611c92565b8580fd5b83346104565760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104565773ffffffffffffffffffffffffffffffffffffffff611f46612cc5565b611f4e61334f565b7f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055167fc2315c0e6785ae744f588d76c3aa8b08329e38dc33e849116b425556ef076ea48280a280f35b8390346102e35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e3576112e19035612015813361370d565b336137f9565b905034610c2457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c2457612053612cc5565b60243592612061843361360e565b73ffffffffffffffffffffffffffffffffffffffff85817f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb01541691826121d6575b5050506805345cdf77eb68f44c908154936fffffffffffffffffffffffffffffffff916120d8836120d1613052565b16876139ea565b8781019081106121af57836120eb613052565b1690670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183099102808210910303101561218957505061213d90612136613052565b1685613b4a565b80930190556387a211a2600c5283526020600c20908154019055602052600c5160601c817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a380f35b517fe5cfe957000000000000000000000000000000000000000000000000000000008152fd5b50517fe5cfe957000000000000000000000000000000000000000000000000000000008152fd5b823b156102e35760448451809481937f53c033c2000000000000000000000000000000000000000000000000000000008352858a840152881660248301525afa801561223757612228575b85816120a2565b61223190612d0b565b38612221565b82513d88823e3d90fd5b8383346102e357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e357823561227b612ce8565b918115806123d9575b6122d9575b3373ffffffffffffffffffffffffffffffffffffffff8416036122b157509061068a91613cfe565b8490517f6697b232000000000000000000000000000000000000000000000000000000008152fd5b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984005465ffffffffffff60a082901c169073ffffffffffffffffffffffffffffffffffffffff16158015906123c9575b80156123b7575b61238057507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984007fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff8154169055612289565b8565ffffffffffff60249351927f19ca5ebb0000000000000000000000000000000000000000000000000000000084521690820152fd5b504265ffffffffffff8216101561232f565b5065ffffffffffff811615612328565b5073ffffffffffffffffffffffffffffffffffffffff807feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401541690841614612284565b5050346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35760209060a0612459612de5565b8381519101208251907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8252848201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc683820152466060820152306080820152209051908152f35b5050346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e3576020905160068152f35b839150346102e357827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e3578035612537612ce8565b91811561068e5750612579600184958361068a96527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020528620015461341c565b614109565b905034610c245760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c2457356fffffffffffffffffffffffffffffffff91828216809203612691577f7d1fa2fe734d16276290c7f8713b6aac4d03f2ef2a604f4ef62525ccead2cf139261262e6020936125fc6133c0565b6126136805345cdf77eb68f44c5484611540613052565b9083612627612620613052565b9284612e5a565b9116613552565b1690611044826fffffffffffffffffffffffffffffffff7f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb0291167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055565b8380fd5b905034610c245760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c245780356fffffffffffffffffffffffffffffffff91828216809203611078576126ec6133c0565b6127036805345cdf77eb68f44c5484611540613052565b8361271661270f613052565b9483612e1e565b931692612724828286613552565b93096127b5575b50916020917f7d1fa2fe734d16276290c7f8713b6aac4d03f2ef2a604f4ef62525ccead2cf13931690611044826fffffffffffffffffffffffffffffffff7f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb0291167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055565b90600101908161272b5763ae47f7028552601cfd5b905034610c245760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c2457816020936001923581527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680085522001549051908152f35b5050346102e35760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35760209061113b612871612cc5565b612879612ce8565b60443591612888833383613461565b61349f565b5050346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35760209061050d6805345cdf77eb68f44c546fffffffffffffffffffffffffffffffff611540613052565b5050346102e35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35760038160209373ffffffffffffffffffffffffffffffffffffffff610bf4612cc5565b833461045657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104565761297261334f565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840180548060d01c806129be575b505073ffffffffffffffffffffffffffffffffffffffff815416905580f35b421115612a37577feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984009079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260301b1691161790555b828061299f565b507f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec58280a1612a30565b5050346102e357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e357602091612a9c612cc5565b602435908452637f5e9f20600c52338252806034600c20558152602c5160601c907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b5050346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35760209051620697808152f35b849134610c245760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c2457357fffffffff000000000000000000000000000000000000000000000000000000008116809103610c2457602092507f31498786000000000000000000000000000000000000000000000000000000008114908115612bb7575b5015158152f35b7f7965db0b00000000000000000000000000000000000000000000000000000000811491508115612bea575b5083612bb0565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483612be3565b60208082528251818301819052939260005b858110612c66575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b818101830151848201604001528201612c26565b34612cc05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112612cc0576110ef612cb4612de5565b60405191829182612c14565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff82168203612cc057565b6024359073ffffffffffffffffffffffffffffffffffffffff82168203612cc057565b67ffffffffffffffff8111612d1f57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff821117612d1f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612d1f57604052565b67ffffffffffffffff8111612d1f57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60405190612df282612d4e565b600482527f5553442b000000000000000000000000000000000000000000000000000000006020830152565b91908203918211612e2b57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b91908201809211612e2b57565b73ffffffffffffffffffffffffffffffffffffffff166000527f4f7337d0ed9263ce19d7b42b3e4f1fab493f50854a84b6d021b0bdd3f1d6ea0060205260406000206003810154907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91828114612efd57612efa925067ffffffffffffffff825416916005600182015491015492613ad1565b90565b505090565b73ffffffffffffffffffffffffffffffffffffffff807f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb01541680612f47575b50505050565b803b15612cc0576000926044918360405196879586947f53c033c20000000000000000000000000000000000000000000000000000000086521660048501521660248301525afa8015612fb057612fa1575b808080612f41565b612faa90612d0b565b38612f99565b6040513d6000823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff166000527f4f7337d0ed9263ce19d7b42b3e4f1fab493f50854a84b6d021b0bdd3f1d6ea0060205260406000206004810154907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91828114612efd57612efa925067ffffffffffffffff825460401c16916006600282015491015492613ad1565b6fffffffffffffffffffffffffffffffff7f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb025416801561308f5790565b50670de0b6b3a764000090565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401548060d01c8015159081613109575b50156130e05760a01c65ffffffffffff1690565b507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984005460d01c90565b90504211386130cc565b61311b613052565b670de0b6b3a7640000906fffffffffffffffffffffffffffffffff81811691908383101561314f575050612efa915061391b565b838392931161318057505050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90565b670de0b6b3a763ffff93828510156132285782907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09907ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c0000936001841901161680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b60649083604051917f63a057780000000000000000000000000000000000000000000000000000000083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600484015260248301526044820152fd5b73ffffffffffffffffffffffffffffffffffffffff90817f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb01541691826132cd57505050600090565b602460209260405194859384927ffe575a870000000000000000000000000000000000000000000000000000000084521660048301525afa908115612fb057600091613317575090565b6020813d602011613347575b8161333060209383612d6a565b810103126102e35751908115158203610456575090565b3d9150613323565b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604081205460ff16156133895750565b604490604051907fe2517d3f0000000000000000000000000000000000000000000000000000000082523360048301526024820152fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260409020547f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9299060ff16156133895750565b806000527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260406000203360005260205260ff60406000205416156133895750565b90602052637f5e9f20600c526000526034600c209081546001810161348557505050565b80821161349157039055565b6313be252b6000526004601cfd5b91906134ab8184612f02565b6134ce6fffffffffffffffffffffffffffffffff6134c7613052565b1683613b4a565b906387a211a28460601b17600c526020600c2080548084116135445783900390556000526020600c2090815401905560205273ffffffffffffffffffffffffffffffffffffffff600c5160601c91167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3565b63f4d678b86000526004601cfd5b90600091818102917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81830991838310840180840393146135f257828611156135e557908591099160018585038616809604600280826003021880830282030280830282030280830282030280830282030280830282030280920290030295808086850304960304019211900302170290565b63ae47f70285526004601cfd5b50505090821561360157500490565b63ae47f70290526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff166000527f4f7337d0ed9263ce19d7b42b3e4f1fab493f50854a84b6d021b0bdd3f1d6ea0060205260406000206003810154917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831461370857815467ffffffffffffffff926136a160018201546005830196875491878616613ad1565b918383106136de577fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006136da9542169116179055612e1e565b9055565b60046040517f9a047dc9000000000000000000000000000000000000000000000000000000008152fd5b505050565b73ffffffffffffffffffffffffffffffffffffffff166000527f4f7337d0ed9263ce19d7b42b3e4f1fab493f50854a84b6d021b0bdd3f1d6ea0060205260406000206004810154917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83146137085767ffffffffffffffff6137a281845460401c166002850154956006860196875492613ad1565b908282106136de576136da936137f49142167fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff6fffffffffffffffff000000000000000083549260401b169116179055565b612e1e565b73ffffffffffffffffffffffffffffffffffffffff90817f531780929781d75f94b208ae2c2a4530451c739f715a1a03bbbb934f354cbb015416806138bb575b5061385d6fffffffffffffffffffffffffffffffff613856613052565b1684613b4a565b926387a211a2600c52816000526020600c209384549485821161354457816000960390556805345cdf77eb68f44c9081540390558352167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a3565b803b15612cc0576000604491604051928380927f53c033c200000000000000000000000000000000000000000000000000000000825287871660048301528460248301525afa8015612fb057156138395761391590612d0b565b38613839565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff918281810981600003908282821091019080820391146139d957670de0b6b3a7640000808210156139a257837faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac10669959609918211900360ee1b910160000360121c170290565b60448685604051917f5173648d00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b50670de0b6b3a76400009004925050565b9190917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83820983820291828083109203918083039214613aa657670de0b6b3a76400009081831015613a6f57947faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066994950990828211900360ee1b910360121c170290565b60449086604051917f5173648d00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b5050670de0b6b3a764000090049150565b91909165ffffffffffff80809416911601918211612e2b57565b9291928383148015613b26575b613b205767ffffffffffffffff613af6911642612e1e565b818102918183041490151715612e2b57613b0f91612e5a565b90808211613b1b575090565b905090565b50505090565b5067ffffffffffffffff620151808183160190808211612e2b574291161115613ade565b670de0b6b3a7640000917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8383099280830292838086109503948086039514613c245782851015613be857908291096001821901821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b82606492604051927f63a05778000000000000000000000000000000000000000000000000000000008452600484015260248301526044820152fd5b505080925015613c32570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984019081549173ffffffffffffffffffffffffffffffffffffffff92838116613cd4577fffffffffffffffffffffffff0000000000000000000000000000000000000000612efa9484169116179055614031565b60046040517f3fc3c27a000000000000000000000000000000000000000000000000000000008152fd5b90612efa91801580613d5c575b156142a4577feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984017fffffffffffffffffffffffff000000000000000000000000000000000000000081541690556142a4565b5073ffffffffffffffffffffffffffffffffffffffff807feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401541690831614613d0b565b73ffffffffffffffffffffffffffffffffffffffff166000527f4f7337d0ed9263ce19d7b42b3e4f1fab493f50854a84b6d021b0bdd3f1d6ea006020526040600020907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808214613e7957507fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000600383018054620151808554948067ffffffffffffffff9488613e6a6001820196613e638b8260058b549601958c87549316613ad1565b9085614365565b90555504905542169116179055565b60059150916000927fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416825583600183015560038201550155565b73ffffffffffffffffffffffffffffffffffffffff166000527f4f7337d0ed9263ce19d7b42b3e4f1fab493f50854a84b6d021b0bdd3f1d6ea0060205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91828114613faa57613fa892506004820190620151808254918067ffffffffffffffff9485875460401c16613f606002890196613e638854938260068d0195865492613ad1565b90555504905542167fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff6fffffffffffffffff000000000000000083549260401b169116179055565b565b50806000927fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff6006935416825583600283015560048201550155565b65ffffffffffff90818111613ff9571690565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252603060048301526024820152fd5b73ffffffffffffffffffffffffffffffffffffffff1660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120549091907f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009060ff16612efd57828052602052604082208183526020526040822060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b906000918083527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268008060205273ffffffffffffffffffffffffffffffffffffffff6040852093169283855260205260ff60408520541615600014613b2057818452602052604083208284526020526040832060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b73ffffffffffffffffffffffffffffffffffffffff1660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120549091907f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009060ff1615612efd5782805260205260408220818352602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8180a4600190565b906000918083527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268008060205273ffffffffffffffffffffffffffffffffffffffff6040852093169283855260205260ff604085205416600014613b205781845260205260408320828452602052604083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b919091828111614391576143799192612e1e565b8082111561438a57612efa91612e1e565b5050600090565b612efa9261439e91612e1e565b90612e5a565b906143e357508051156143b957805190602001fd5b60046040517f1425ea42000000000000000000000000000000000000000000000000000000008152fd5b8151158061443b575b6143f4575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b156143ec56fea2646970667358221220dfc16345fa5c85d987b9e7f818627e87718cec4a19805497a4fe8de50d9713c164736f6c63430008190033