solc-0.8.36-doubleshift20 0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d default

18567 bytes

6080604052600436106101a9575f3560e01c8063018a2c37146101ad57806301ffc9a7146101d557806306fdde0314610211578063081812fc1461023b578063095ea7b314610277578063109695231461029f57806318160ddd146102c757806318e20a38146102f157806323b872dd1461031b5780632f745c591461034357806334918dfd1461037f5780633ccfd60b1461039557806342842e0e146103ab5780634f6ccce7146103d357806355f804b31461040f578063571dff3b14610437578063607e20e3146104615780636352211e1461048b5780636c0360eb146104c757806370a08231146104f1578063715018a61461052d5780637a3f451e146105435780637d17fcbe1461056d5780638da5cb5b1461058357806395d89b41146105ad578063a22cb465146105d7578063a723533e146105ff578063b0f674271461061b578063b88d4fde14610631578063bb8a16bd14610659578063c87b56dd14610683578063cb774d47146106bf578063e36d6498146106e9578063e985e9c514610713578063e98665501461074f578063eb8d244414610765578063f2fde38b1461078f575b5f5ffd5b3480156101b8575f5ffd5b506101d360048036038101906101ce9190612d8f565b6107b7565b005b3480156101e0575f5ffd5b506101fb60048036038101906101f69190612e0f565b61083d565b6040516102089190612e54565b60405180910390f35b34801561021c575f5ffd5b506102256108a0565b6040516102329190612edd565b60405180910390f35b348015610246575f5ffd5b50610261600480360381019061025c9190612d8f565b610930565b60405161026e9190612f3c565b60405180910390f35b348015610282575f5ffd5b5061029d60048036038101906102989190612f7f565b6109b1565b005b3480156102aa575f5ffd5b506102c560048036038101906102c091906130e9565b610ac7565b005b3480156102d2575f5ffd5b506102db610b56565b6040516102e8919061313f565b60405180910390f35b3480156102fc575f5ffd5b50610305610b66565b604051610312919061313f565b60405180910390f35b348015610326575f5ffd5b50610341600480360381019061033c9190613158565b610b6c565b005b34801561034e575f5ffd5b5061036960048036038101906103649190612f7f565b610bcc565b604051610376919061313f565b60405180910390f35b34801561038a575f5ffd5b50610393610c24565b005b3480156103a0575f5ffd5b506103a9610cca565b005b3480156103b6575f5ffd5b506103d160048036038101906103cc9190613158565b610d91565b005b3480156103de575f5ffd5b506103f960048036038101906103f49190612d8f565b610db0565b604051610406919061313f565b60405180910390f35b34801561041a575f5ffd5b50610435600480360381019061043091906130e9565b610dd2565b005b348015610442575f5ffd5b5061044b610e5a565b604051610458919061313f565b60405180910390f35b34801561046c575f5ffd5b50610475610e5f565b6040516104829190612edd565b60405180910390f35b348015610496575f5ffd5b506104b160048036038101906104ac9190612d8f565b610eeb565b6040516104be9190612f3c565b60405180910390f35b3480156104d2575f5ffd5b506104db610f21565b6040516104e89190612edd565b60405180910390f35b3480156104fc575f5ffd5b50610517600480360381019061051291906131a8565b610fb1565b604051610524919061313f565b60405180910390f35b348015610538575f5ffd5b5061054161106c565b005b34801561054e575f5ffd5b506105576111a5565b604051610564919061313f565b60405180910390f35b348015610578575f5ffd5b506105816111b1565b005b34801561058e575f5ffd5b5061059761127a565b6040516105a49190612f3c565b60405180910390f35b3480156105b8575f5ffd5b506105c16112a2565b6040516105ce9190612edd565b60405180910390f35b3480156105e2575f5ffd5b506105fd60048036038101906105f891906131fd565b611332565b005b61061960048036038101906106149190612d8f565b6114ad565b005b348015610626575f5ffd5b5061062f611673565b005b34801561063c575f5ffd5b50610657600480360381019061065291906132d9565b61172e565b005b348015610664575f5ffd5b5061066d611790565b60405161067a919061313f565b60405180910390f35b34801561068e575f5ffd5b506106a960048036038101906106a49190612d8f565b611796565b6040516106b69190612edd565b60405180910390f35b3480156106ca575f5ffd5b506106d3611900565b6040516106e0919061313f565b60405180910390f35b3480156106f4575f5ffd5b506106fd611906565b60405161070a919061313f565b60405180910390f35b34801561071e575f5ffd5b5061073960048036038101906107349190613359565b61190c565b6040516107469190612e54565b60405180910390f35b34801561075a575f5ffd5b5061076361199a565b005b348015610770575f5ffd5b50610779611aa4565b6040516107869190612e54565b60405180910390f35b34801561079a575f5ffd5b506107b560048036038101906107b091906131a8565b611ab6565b005b6107bf611c5e565b73ffffffffffffffffffffffffffffffffffffffff166107dd61127a565b73ffffffffffffffffffffffffffffffffffffffff1614610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082a906133e1565b60405180910390fd5b8060108190555050565b5f5f5f837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f9054906101000a900460ff169050919050565b6060600680546108af9061342c565b80601f01602080910402602001604051908101604052809291908181526020018280546108db9061342c565b80156109265780601f106108fd57610100808354040283529160200191610926565b820191905f5260205f20905b81548152906001019060200180831161090957829003601f168201915b5050505050905090565b5f61093a82611c65565b610979576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610970906134cc565b60405180910390fd5b60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f6109bb82610eeb565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a229061355a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a4a611c5e565b73ffffffffffffffffffffffffffffffffffffffff161480610a795750610a7881610a73611c5e565b61190c565b5b610ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaf906135e8565b60405180910390fd5b610ac28383611c81565b505050565b610acf611c5e565b73ffffffffffffffffffffffffffffffffffffffff16610aed61127a565b73ffffffffffffffffffffffffffffffffffffffff1614610b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3a906133e1565b60405180910390fd5b80600b9081610b5291906137b7565b5050565b5f610b616002611d37565b905090565b60105481565b610b7d610b77611c5e565b82611d4a565b610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb3906138f6565b60405180910390fd5b610bc7838383611e26565b505050565b5f610c1c8260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061203690919063ffffffff16565b905092915050565b610c2c611c5e565b73ffffffffffffffffffffffffffffffffffffffff16610c4a61127a565b73ffffffffffffffffffffffffffffffffffffffff1614610ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c97906133e1565b60405180910390fd5b600f5f9054906101000a900460ff1615600f5f6101000a81548160ff021916908315150217905550565b610cd2611c5e565b73ffffffffffffffffffffffffffffffffffffffff16610cf061127a565b73ffffffffffffffffffffffffffffffffffffffff1614610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d906133e1565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610d8d573d5f5f3e3d5ffd5b5050565b610dab83838360405180602001604052805f81525061172e565b505050565b5f5f610dc683600261204d90919063ffffffff16565b50905080915050919050565b610dda611c5e565b73ffffffffffffffffffffffffffffffffffffffff16610df861127a565b73ffffffffffffffffffffffffffffffffffffffff1614610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e45906133e1565b60405180910390fd5b610e5781612074565b50565b601481565b600b8054610e6c9061342c565b80601f0160208091040260200160405190810160405280929190818152602001828054610e989061342c565b8015610ee35780601f10610eba57610100808354040283529160200191610ee3565b820191905f5260205f20905b815481529060010190602001808311610ec657829003601f168201915b505050505081565b5f610f1a8260405180606001604052806029815260200161485e6029913960026120879092919063ffffffff16565b9050919050565b606060098054610f309061342c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5c9061342c565b8015610fa75780601f10610f7e57610100808354040283529160200191610fa7565b820191905f5260205f20905b815481529060010190602001808311610f8a57829003601f168201915b5050505050905090565b5f5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101790613984565b60405180910390fd5b61106560015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206120a2565b9050919050565b611074611c5e565b73ffffffffffffffffffffffffffffffffffffffff1661109261127a565b73ffffffffffffffffffffffffffffffffffffffff16146110e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110df906133e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b67011c37937e08000081565b6111b9611c5e565b73ffffffffffffffffffffffffffffffffffffffff166111d761127a565b73ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611224906133e1565b60405180910390fd5b5f600d5414611271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611268906139ec565b60405180910390fd5b43600c81905550565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546112b19061342c565b80601f01602080910402602001604051908101604052809291908181526020018280546112dd9061342c565b80156113285780601f106112ff57610100808354040283529160200191611328565b820191905f5260205f20905b81548152906001019060200180831161130b57829003601f168201915b5050505050905090565b61133a611c5e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e90613a54565b60405180910390fd5b8060055f6113b3611c5e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661145c611c5e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114a19190612e54565b60405180910390a35050565b600f5f9054906101000a900460ff166114fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f290613abc565b60405180910390fd5b601481111561153f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153690613b4a565b60405180910390fd5b600e5461155c8261154e610b56565b6120b590919063ffffffff16565b111561159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613bd8565b60405180910390fd5b346115b98267011c37937e08000061211290919063ffffffff16565b11156115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f190613c40565b60405180910390fd5b5f5f90505b8181101561163c575f611610610b56565b9050600e5461161d610b56565b101561162e5761162d3382612189565b5b5080806001019150506115ff565b505f600c541480156116635750600e54611654610b56565b148061166257506010544210155b5b156116705743600c819055505b50565b61167b611c5e565b73ffffffffffffffffffffffffffffffffffffffff1661169961127a565b73ffffffffffffffffffffffffffffffffffffffff16146116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e6906133e1565b60405180910390fd5b5f6116f8610b56565b90505f5f90505b601e81101561172a5761171d3382846117189190613c8b565b612189565b80806001019150506116ff565b5050565b61173f611739611c5e565b83611d4a565b61177e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611775906138f6565b60405180910390fd5b61178a848484846121a6565b50505050565b600e5481565b60606117a182611c65565b6117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d790613d2e565b60405180910390fd5b5f60085f8481526020019081526020015f2080546117fd9061342c565b80601f01602080910402602001604051908101604052809291908181526020018280546118299061342c565b80156118745780601f1061184b57610100808354040283529160200191611874565b820191905f5260205f20905b81548152906001019060200180831161185757829003601f168201915b505050505090505f611884610f21565b90505f8151036118985781925050506118fb565b5f825111156118cc5780826040516020016118b4929190613d86565b604051602081830303815290604052925050506118fb565b806118d685612202565b6040516020016118e7929190613d86565b604051602081830303815290604052925050505b919050565b600d5481565b600c5481565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f600d54146119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d5906139ec565b60405180910390fd5b5f600c5403611a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1990613df3565b60405180910390fd5b600e54600c54405f1c611a359190613e3e565b600d8190555060ff611a52600c544361236c90919063ffffffff16565b1115611a7c57600e54600143611a689190613e6e565b405f1c611a759190613e3e565b600d819055505b5f600d5403611aa257611a9b6001600d546120b590919063ffffffff16565b600d819055505b565b600f5f9054906101000a900460ff1681565b611abe611c5e565b73ffffffffffffffffffffffffffffffffffffffff16611adc61127a565b73ffffffffffffffffffffffffffffffffffffffff1614611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b29906133e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790613f11565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f611c7a8260026123c490919063ffffffff16565b9050919050565b8160045f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611cf183610eeb565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f611d43825f016123db565b9050919050565b5f611d5482611c65565b611d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8a90613f9f565b60405180910390fd5b5f611d9d83610eeb565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e0c57508373ffffffffffffffffffffffffffffffffffffffff16611df484610930565b73ffffffffffffffffffffffffffffffffffffffff16145b80611e1d5750611e1c818561190c565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611e4682610eeb565b73ffffffffffffffffffffffffffffffffffffffff1614611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e939061402d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f01906140bb565b60405180910390fd5b611f158383836123ea565b611f1f5f82611c81565b611f6e8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206123ef90919063ffffffff16565b50611fbe8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061240690919063ffffffff16565b50611fd58183600261241d9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b5f612043835f018361244e565b5f1c905092915050565b5f5f5f5f61205d865f01866124bd565b91509150815f1c815f1c9350935050509250929050565b806009908161208391906137b7565b5050565b5f612097845f01845f1b84612540565b5f1c90509392505050565b5f6120ae825f016125da565b9050919050565b5f5f82846120c39190613c8b565b905083811015612108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ff90614123565b60405180910390fd5b8091505092915050565b5f5f8303612122575f9050612183565b5f828461212f9190614141565b905082848261213e9190614182565b1461217e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217590614222565b60405180910390fd5b809150505b92915050565b6121a2828260405180602001604052805f8152506125e9565b5050565b6121b1848484611e26565b6121bd84848484612643565b6121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f3906142b0565b60405180910390fd5b50505050565b60605f8203612248576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612367565b5f8290505f5b5f8214612277578080612260906142ce565b915050600a826122709190614182565b915061224e565b5f8167ffffffffffffffff81111561229257612291612fc5565b5b6040519080825280601f01601f1916602001820160405280156122c45781602001600182028036833780820191505090505b5090505f6001836122d59190613e6e565b90508593505b5f841461235f57600a846122ef9190613e3e565b60306122fb9190613c8b565b60f81b82828061230a90614315565b93508151811061231d5761231c61433c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a846123589190614182565b93506122db565b819450505050505b919050565b5f828211156123b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a7906143b3565b60405180910390fd5b81836123bc9190613e6e565b905092915050565b5f6123d3835f01835f1b6127a4565b905092915050565b5f815f01805490509050919050565b505050565b5f6123fe835f01835f1b6127c4565b905092915050565b5f612415835f01835f1b6128c4565b905092915050565b5f612445845f01845f1b8473ffffffffffffffffffffffffffffffffffffffff165f1b61292b565b90509392505050565b5f81835f018054905011612497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248e90614441565b60405180910390fd5b825f0182815481106124ac576124ab61433c565b5b905f5260205f200154905092915050565b5f5f82845f018054905011612507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fe906144cf565b60405180910390fd5b5f845f01848154811061251d5761251c61433c565b5b905f5260205f2090600202019050805f0154816001015492509250509250929050565b5f5f846001015f8581526020019081526020015f205490505f811415839061259e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125959190612edd565b60405180910390fd5b50845f016001826125af9190613e6e565b815481106125c0576125bf61433c565b5b905f5260205f209060020201600101549150509392505050565b5f815f01805490509050919050565b6125f38383612a05565b6125ff5f848484612643565b61263e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612635906142b0565b60405180910390fd5b505050565b5f6126638473ffffffffffffffffffffffffffffffffffffffff16612b8d565b612670576001905061279c565b5f61273663150b7a0260e01b612684611c5e565b88878760405160240161269a949392919061455f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180606001604052806032815260200161482c603291398773ffffffffffffffffffffffffffffffffffffffff16612b9e9092919063ffffffff16565b90505f8180602001905181019061274d91906145bd565b905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b5f5f836001015f8481526020019081526020015f20541415905092915050565b5f5f836001015f8481526020019081526020015f205490505f81146128b9575f6001826127f19190613e6e565b90505f6001865f01805490506128079190613e6e565b90505f865f01828154811061281f5761281e61433c565b5b905f5260205f200154905080875f0184815481106128405761283f61433c565b5b905f5260205f2001819055506001836128599190613c8b565b876001015f8381526020019081526020015f2081905550865f01805480612883576128826145e8565b5b600190038181905f5260205f20015f90559055866001015f8781526020019081526020015f205f905560019450505050506128be565b5f9150505b92915050565b5f6128cf8383612bb5565b61292157825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050612925565b5f90505b92915050565b5f5f846001015f8581526020019081526020015f205490505f81036129c457845f01604051806040016040528086815260200185815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f0155602082015181600101555050845f0180549050856001015f8681526020019081526020015f208190555060019150506129fe565b82855f016001836129d59190613e6e565b815481106129e6576129e561433c565b5b905f5260205f209060020201600101819055505f9150505b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6a9061465f565b60405180910390fd5b612a7c81611c65565b15612abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab3906146c7565b60405180910390fd5b612ac75f83836123ea565b612b168160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061240690919063ffffffff16565b50612b2d8183600261241d9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f5f823b90505f8111915050919050565b6060612bac84845f85612bd5565b90509392505050565b5f5f836001015f8481526020019081526020015f20541415905092915050565b606082471015612c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1190614755565b60405180910390fd5b612c2385612b8d565b612c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c59906147bd565b60405180910390fd5b5f5f8673ffffffffffffffffffffffffffffffffffffffff168587604051612c8a9190614815565b5f6040518083038185875af1925050503d805f8114612cc4576040519150601f19603f3d011682016040523d82523d5f602084013e612cc9565b606091505b5091509150612cd9828286612ce5565b92505050949350505050565b60608315612cf557829050612d44565b5f83511115612d075782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3b9190612edd565b60405180910390fd5b9392505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b612d6e81612d5c565b8114612d78575f5ffd5b50565b5f81359050612d8981612d65565b92915050565b5f60208284031215612da457612da3612d54565b5b5f612db184828501612d7b565b91505092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612dee81612dba565b8114612df8575f5ffd5b50565b5f81359050612e0981612de5565b92915050565b5f60208284031215612e2457612e23612d54565b5b5f612e3184828501612dfb565b91505092915050565b5f8115159050919050565b612e4e81612e3a565b82525050565b5f602082019050612e675f830184612e45565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612eaf82612e6d565b612eb98185612e77565b9350612ec9818560208601612e87565b612ed281612e95565b840191505092915050565b5f6020820190508181035f830152612ef58184612ea5565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f2682612efd565b9050919050565b612f3681612f1c565b82525050565b5f602082019050612f4f5f830184612f2d565b92915050565b612f5e81612f1c565b8114612f68575f5ffd5b50565b5f81359050612f7981612f55565b92915050565b5f5f60408385031215612f9557612f94612d54565b5b5f612fa285828601612f6b565b9250506020612fb385828601612d7b565b9150509250929050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ffb82612e95565b810181811067ffffffffffffffff8211171561301a57613019612fc5565b5b80604052505050565b5f61302c612d4b565b90506130388282612ff2565b919050565b5f67ffffffffffffffff82111561305757613056612fc5565b5b61306082612e95565b9050602081019050919050565b828183375f83830152505050565b5f61308d6130888461303d565b613023565b9050828152602081018484840111156130a9576130a8612fc1565b5b6130b484828561306d565b509392505050565b5f82601f8301126130d0576130cf612fbd565b5b81356130e084826020860161307b565b91505092915050565b5f602082840312156130fe576130fd612d54565b5b5f82013567ffffffffffffffff81111561311b5761311a612d58565b5b613127848285016130bc565b91505092915050565b61313981612d5c565b82525050565b5f6020820190506131525f830184613130565b92915050565b5f5f5f6060848603121561316f5761316e612d54565b5b5f61317c86828701612f6b565b935050602061318d86828701612f6b565b925050604061319e86828701612d7b565b9150509250925092565b5f602082840312156131bd576131bc612d54565b5b5f6131ca84828501612f6b565b91505092915050565b6131dc81612e3a565b81146131e6575f5ffd5b50565b5f813590506131f7816131d3565b92915050565b5f5f6040838503121561321357613212612d54565b5b5f61322085828601612f6b565b9250506020613231858286016131e9565b9150509250929050565b5f67ffffffffffffffff82111561325557613254612fc5565b5b61325e82612e95565b9050602081019050919050565b5f61327d6132788461323b565b613023565b90508281526020810184848401111561329957613298612fc1565b5b6132a484828561306d565b509392505050565b5f82601f8301126132c0576132bf612fbd565b5b81356132d084826020860161326b565b91505092915050565b5f5f5f5f608085870312156132f1576132f0612d54565b5b5f6132fe87828801612f6b565b945050602061330f87828801612f6b565b935050604061332087828801612d7b565b925050606085013567ffffffffffffffff81111561334157613340612d58565b5b61334d878288016132ac565b91505092959194509250565b5f5f6040838503121561336f5761336e612d54565b5b5f61337c85828601612f6b565b925050602061338d85828601612f6b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6133cb602083612e77565b91506133d682613397565b602082019050919050565b5f6020820190508181035f8301526133f8816133bf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061344357607f821691505b602082108103613456576134556133ff565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e65785f8201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b5f6134b6602c83612e77565b91506134c18261345c565b604082019050919050565b5f6020820190508181035f8301526134e3816134aa565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e655f8201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b5f613544602183612e77565b915061354f826134ea565b604082019050919050565b5f6020820190508181035f83015261357181613538565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f775f8201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b5f6135d2603883612e77565b91506135dd82613578565b604082019050919050565b5f6020820190508181035f8301526135ff816135c6565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026136627fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613627565b61366c8683613627565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6136a76136a261369d84612d5c565b613684565b612d5c565b9050919050565b5f819050919050565b6136c08361368d565b6136d46136cc826136ae565b848454613633565b825550505050565b5f5f905090565b6136eb6136dc565b6136f68184846136b7565b505050565b5f5b8281101561371c576137115f8284016136e3565b6001810190506136fd565b505050565b601f82111561376f578282111561376e5761373b81613606565b61374483613618565b61374d85613618565b602086101561375a575f90505b808301613769828403826136fb565b505050505b5b505050565b5f82821c905092915050565b5f61378f5f1984600802613774565b1980831691505092915050565b5f6137a78383613780565b9150826002028217905092915050565b6137c082612e6d565b67ffffffffffffffff8111156137d9576137d8612fc5565b5b6137e3825461342c565b6137ee828285613721565b5f60209050601f83116001811461381f575f841561380d578287015190505b613817858261379c565b86555061387e565b601f19841661382d86613606565b5f5b828110156138545784890151825560018201915060208501945060208101905061382f565b86831015613871578489015161386d601f891682613780565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f5f8201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b5f6138e0603183612e77565b91506138eb82613886565b604082019050919050565b5f6020820190508181035f83015261390d816138d4565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a655f8201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b5f61396e602a83612e77565b915061397982613914565b604082019050919050565b5f6020820190508181035f83015261399b81613962565b9050919050565b7f5374617274696e6720696e64657820697320616c7265616479207365740000005f82015250565b5f6139d6601d83612e77565b91506139e1826139a2565b602082019050919050565b5f6020820190508181035f830152613a03816139ca565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c6572000000000000005f82015250565b5f613a3e601983612e77565b9150613a4982613a0a565b602082019050919050565b5f6020820190508181035f830152613a6b81613a32565b9050919050565b7f53616c65206d7573742062652061637469766520746f206d696e7420417065005f82015250565b5f613aa6601f83612e77565b9150613ab182613a72565b602082019050919050565b5f6020820190508181035f830152613ad381613a9a565b9050919050565b7f43616e206f6e6c79206d696e7420323020746f6b656e7320617420612074696d5f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b34602183612e77565b9150613b3f82613ada565b604082019050919050565b5f6020820190508181035f830152613b6181613b28565b9050919050565b7f507572636861736520776f756c6420657863656564206d617820737570706c795f8201527f206f662041706573000000000000000000000000000000000000000000000000602082015250565b5f613bc2602883612e77565b9150613bcd82613b68565b604082019050919050565b5f6020820190508181035f830152613bef81613bb6565b9050919050565b7f45746865722076616c75652073656e74206973206e6f7420636f7272656374005f82015250565b5f613c2a601f83612e77565b9150613c3582613bf6565b602082019050919050565b5f6020820190508181035f830152613c5781613c1e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c9582612d5c565b9150613ca083612d5c565b9250828201905080821115613cb857613cb7613c5e565b5b92915050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f5f8201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b5f613d18602f83612e77565b9150613d2382613cbe565b604082019050919050565b5f6020820190508181035f830152613d4581613d0c565b9050919050565b5f81905092915050565b5f613d6082612e6d565b613d6a8185613d4c565b9350613d7a818560208601612e87565b80840191505092915050565b5f613d918285613d56565b9150613d9d8284613d56565b91508190509392505050565b7f5374617274696e6720696e64657820626c6f636b206d757374206265207365745f82015250565b5f613ddd602083612e77565b9150613de882613da9565b602082019050919050565b5f6020820190508181035f830152613e0a81613dd1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e4882612d5c565b9150613e5383612d5c565b925082613e6357613e62613e11565b5b828206905092915050565b5f613e7882612d5c565b9150613e8383612d5c565b9250828203905081811115613e9b57613e9a613c5e565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613efb602683612e77565b9150613f0682613ea1565b604082019050919050565b5f6020820190508181035f830152613f2881613eef565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e65785f8201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b5f613f89602c83612e77565b9150613f9482613f2f565b604082019050919050565b5f6020820190508181035f830152613fb681613f7d565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e207468617420695f8201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b5f614017602983612e77565b915061402282613fbd565b604082019050919050565b5f6020820190508181035f8301526140448161400b565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6140a5602483612e77565b91506140b08261404b565b604082019050919050565b5f6020820190508181035f8301526140d281614099565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61410d601b83612e77565b9150614118826140d9565b602082019050919050565b5f6020820190508181035f83015261413a81614101565b9050919050565b5f61414b82612d5c565b915061415683612d5c565b925082820261416481612d5c565b9150828204841483151761417b5761417a613c5e565b5b5092915050565b5f61418c82612d5c565b915061419783612d5c565b9250826141a7576141a6613e11565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61420c602183612e77565b9150614217826141b2565b604082019050919050565b5f6020820190508181035f83015261423981614200565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e2045524337323152655f8201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b5f61429a603283612e77565b91506142a582614240565b604082019050919050565b5f6020820190508181035f8301526142c78161428e565b9050919050565b5f6142d882612d5c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361430a57614309613c5e565b5b600182019050919050565b5f61431f82612d5c565b91505f820361433157614330613c5e565b5b600182039050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f536166654d6174683a207375627472616374696f6e206f766572666c6f7700005f82015250565b5f61439d601e83612e77565b91506143a882614369565b602082019050919050565b5f6020820190508181035f8301526143ca81614391565b9050919050565b7f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e5f8201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b5f61442b602283612e77565b9150614436826143d1565b604082019050919050565b5f6020820190508181035f8301526144588161441f565b9050919050565b7f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e5f8201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b5f6144b9602283612e77565b91506144c48261445f565b604082019050919050565b5f6020820190508181035f8301526144e6816144ad565b9050919050565b5f6144f782612efd565b9050919050565b614507816144ed565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f6145318261450d565b61453b8185614517565b935061454b818560208601612e87565b61455481612e95565b840191505092915050565b5f6080820190506145725f8301876144fe565b61457f6020830186612f2d565b61458c6040830185613130565b818103606083015261459e8184614527565b905095945050505050565b5f815190506145b781612de5565b92915050565b5f602082840312156145d2576145d1612d54565b5b5f6145df848285016145a9565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f4552433732313a206d696e7420746f20746865207a65726f20616464726573735f82015250565b5f614649602083612e77565b915061465482614615565b602082019050919050565b5f6020820190508181035f8301526146768161463d565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e746564000000005f82015250565b5f6146b1601c83612e77565b91506146bc8261467d565b602082019050919050565b5f6020820190508181035f8301526146de816146a5565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f61473f602683612e77565b915061474a826146e5565b604082019050919050565b5f6020820190508181035f83015261476c81614733565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6147a7601d83612e77565b91506147b282614773565b602082019050919050565b5f6020820190508181035f8301526147d48161479b565b9050919050565b5f81905092915050565b5f6147ef8261450d565b6147f981856147db565b9350614809818560208601612e87565b80840191505092915050565b5f61482082846147e5565b91508190509291505056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e