{
  "_format": "hh-sol-artifact-1",
  "contractName": "SampleWarperWithAllRentingMechanics",
  "sourceName": "contracts/mocks/warper/ERC721/v1-controller/custom/SampleWarperWithAllRentingMechanics.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "original",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "metahub",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "AssetIsNotRentable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BalanceQueryForZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallForwardToZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotRentingManager",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotWarperAdmin",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ContractIsAlreadyInitialized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ContractIsNotInitializing",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidAvailabilityPeriodEnd",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidAvailabilityPeriodStart",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidMaxRentalPeriod",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidMinRentalPeriod",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "original",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "requiredInterfaceId",
          "type": "bytes4"
        }
      ],
      "name": "InvalidOriginalTokenInterface",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MethodNotAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MintToTheZeroAddress",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "OperatorQueryForNonexistentToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "OwnerQueryForNonexistentToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "RentingHookError",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "TokenIsAlreadyMinted",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "TransferToNonERC721ReceiverImplementer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TransferToTheZeroAddress",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "currentTime",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "availabilityPeriodStart",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "availabilityPeriodEnd",
          "type": "uint32"
        }
      ],
      "name": "WarperIsNotAvailableForRenting",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "requestedRentalPeriod",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "minRentalPeriod",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "maxRentalPeriod",
          "type": "uint32"
        }
      ],
      "name": "WarperRentalPeriodIsOutOfRange",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "__assetClass",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__availabilityPeriodEnd",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__availabilityPeriodRange",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "availabilityPeriodStart",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "availabilityPeriodEnd",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__availabilityPeriodStart",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "universeFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "listerFee",
          "type": "uint256"
        }
      ],
      "name": "__calculatePremiums",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "universePremium",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "listerPremium",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "renter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "__isRentableAsset",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isRentable",
          "type": "bool"
        },
        {
          "internalType": "string",
          "name": "errorMessage",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__maxRentalPeriod",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__metahub",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__minRentalPeriod",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "rentalId_",
          "type": "uint256"
        },
        {
          "components": [
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes4",
                      "name": "class",
                      "type": "bytes4"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Assets.AssetId",
                  "name": "id",
                  "type": "tuple"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Assets.Asset[]",
              "name": "warpedAssets",
              "type": "tuple[]"
            },
            {
              "internalType": "uint256",
              "name": "universeId",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "collectionId",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "listingId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "renter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "startTime",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "endTime",
              "type": "uint32"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes4",
                      "name": "strategyId",
                      "type": "bytes4"
                    },
                    {
                      "internalType": "bytes",
                      "name": "strategyData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct IListingTermsRegistry.ListingTerms",
                  "name": "listingTerms",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "bytes4",
                      "name": "strategyId",
                      "type": "bytes4"
                    },
                    {
                      "internalType": "bytes",
                      "name": "strategyData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITaxTermsRegistry.TaxTerms",
                  "name": "universeTaxTerms",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "bytes4",
                      "name": "strategyId",
                      "type": "bytes4"
                    },
                    {
                      "internalType": "bytes",
                      "name": "strategyData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITaxTermsRegistry.TaxTerms",
                  "name": "protocolTaxTerms",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "paymentToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "paymentTokenQuote",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ITokenQuote.PaymentTokenData",
                  "name": "paymentTokenData",
                  "type": "tuple"
                }
              ],
              "internalType": "struct Rentings.AgreementTerms",
              "name": "agreementTerms",
              "type": "tuple"
            }
          ],
          "internalType": "struct Rentings.Agreement",
          "name": "rentalAgreement_",
          "type": "tuple"
        },
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "enum IPaymentManager.EarningType",
                  "name": "earningType",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isLister",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "internalType": "struct Accounts.UserEarning[]",
              "name": "userEarnings",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "enum IPaymentManager.EarningType",
                  "name": "earningType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "universeId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "internalType": "struct Accounts.UniverseEarning",
              "name": "universeEarning",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "enum IPaymentManager.EarningType",
                  "name": "earningType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "internalType": "struct Accounts.ProtocolEarning",
              "name": "protocolEarning",
              "type": "tuple"
            }
          ],
          "internalType": "struct Accounts.RentalEarnings",
          "name": "rentalEarnings_",
          "type": "tuple"
        }
      ],
      "name": "__onRent",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        },
        {
          "internalType": "string",
          "name": "errorMessage",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__original",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__rentalPeriodRange",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "minRentalPeriod",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "maxRentalPeriod",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "availabilityPeriodEnd",
          "type": "uint32"
        }
      ],
      "name": "__setAvailabilityPeriodEnd",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "availabilityPeriodStart",
          "type": "uint32"
        }
      ],
      "name": "__setAvailabilityPeriodStart",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "maxRentalPeriod",
          "type": "uint32"
        }
      ],
      "name": "__setMaxRentalPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "minRentalPeriod",
          "type": "uint32"
        }
      ],
      "name": "__setMinRentalPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4[]",
          "name": "interfaceIds",
          "type": "bytes4[]"
        }
      ],
      "name": "__supportedInterfaces",
      "outputs": [
        {
          "internalType": "bool[]",
          "name": "",
          "type": "bool[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "rewardAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "agreementId",
          "type": "uint256"
        }
      ],
      "name": "distributeReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "rentalId",
          "type": "uint256"
        }
      ],
      "name": "getRentalAgreement",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes4",
                      "name": "class",
                      "type": "bytes4"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Assets.AssetId",
                  "name": "id",
                  "type": "tuple"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Assets.Asset[]",
              "name": "warpedAssets",
              "type": "tuple[]"
            },
            {
              "internalType": "uint256",
              "name": "universeId",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "collectionId",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "listingId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "renter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "startTime",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "endTime",
              "type": "uint32"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes4",
                      "name": "strategyId",
                      "type": "bytes4"
                    },
                    {
                      "internalType": "bytes",
                      "name": "strategyData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct IListingTermsRegistry.ListingTerms",
                  "name": "listingTerms",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "bytes4",
                      "name": "strategyId",
                      "type": "bytes4"
                    },
                    {
                      "internalType": "bytes",
                      "name": "strategyData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITaxTermsRegistry.TaxTerms",
                  "name": "universeTaxTerms",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "bytes4",
                      "name": "strategyId",
                      "type": "bytes4"
                    },
                    {
                      "internalType": "bytes",
                      "name": "strategyData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITaxTermsRegistry.TaxTerms",
                  "name": "protocolTaxTerms",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "paymentToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "paymentTokenQuote",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ITokenQuote.PaymentTokenData",
                  "name": "paymentTokenData",
                  "type": "tuple"
                }
              ],
              "internalType": "struct Rentings.AgreementTerms",
              "name": "agreementTerms",
              "type": "tuple"
            }
          ],
          "internalType": "struct Rentings.Agreement",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "rentalId",
          "type": "uint256"
        }
      ],
      "name": "getRentalEarnings",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "enum IPaymentManager.EarningType",
                  "name": "earningType",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isLister",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "internalType": "struct Accounts.UserEarning[]",
              "name": "userEarnings",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "enum IPaymentManager.EarningType",
                  "name": "earningType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "universeId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "internalType": "struct Accounts.UniverseEarning",
              "name": "universeEarning",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "enum IPaymentManager.EarningType",
                  "name": "earningType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "internalType": "struct Accounts.ProtocolEarning",
              "name": "protocolEarning",
              "type": "tuple"
            }
          ],
          "internalType": "struct Accounts.RentalEarnings",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "renter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getRenterWarpedTokenIdLastRentalAgreement",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "rentalId",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "renter",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "isBlacklisted",
          "type": "bool"
        }
      ],
      "name": "setBlacklist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "successState_",
          "type": "bool"
        }
      ],
      "name": "setSuccessState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60806040526004805460ff191660011790553480156200001e57600080fd5b506040516200492b3803806200492b833981016040819052620000419162000877565b8181818160006200007b620000676001600080516020620048eb833981519152620008af565b60001b620003fb60201b62001baf1760201c565b5460ff161590506200008c620003fe565b158015620000ba5750620000b56200006760016000805160206200490b833981519152620008af565b5460ff165b15620000d85760405162ea7fe560e71b815260040160405180910390fd5b801562000110576001620001006200006782600080516020620048eb833981519152620008af565b805460ff19169115159190911790555b6200011c83836200041c565b80156200018657600062000145620000676001600080516020620048eb833981519152620008af565b805460ff19169115159190911790556000620001766200006760016000805160206200490b833981519152620008af565b805460ff19169115159190911790555b5060009150620001ad9050620000676001600080516020620048eb833981519152620008af565b5460ff16159050620001be620003fe565b158015620001ec5750620001e76200006760016000805160206200490b833981519152620008af565b5460ff165b156200020a5760405162ea7fe560e71b815260040160405180910390fd5b801562000242576001620002326200006782600080516020620048eb833981519152620008af565b805460ff19169115159190911790555b6200024e83836200041c565b8015620002b857600062000277620000676001600080516020620048eb833981519152620008af565b805460ff19169115159190911790556000620002a86200006760016000805160206200490b833981519152620008af565b805460ff19169115159190911790555b5060009150620002df9050620000676001600080516020620048eb833981519152620008af565b5460ff16159050620002f0620003fe565b1580156200031e5750620003196200006760016000805160206200490b833981519152620008af565b5460ff165b156200033c5760405162ea7fe560e71b815260040160405180910390fd5b801562000374576001620003646200006782600080516020620048eb833981519152620008af565b805460ff19169115159190911790555b6200037e62000483565b62000388620004d8565b8015620003f2576000620003b1620000676001600080516020620048eb833981519152620008af565b805460ff19169115159190911790556000620003e26200006760016000805160206200490b833981519152620008af565b805460ff19169115159190911790555b505050620008d5565b90565b600062000416306200052b60201b62001bb21760201c565b15905090565b6200043c620000676001600080516020620048eb833981519152620008af565b5460ff166200045e576040516369be8d9360e11b815260040160405180910390fd5b62000469826200053a565b620004748262000553565b6200047f81620005e8565b5050565b620004a3620000676001600080516020620048eb833981519152620008af565b5460ff16620004c5576040516369be8d9360e11b815260040160405180910390fd5b620004d6600063ffffffff6200065c565b565b620004f8620000676001600080516020620048eb833981519152620008af565b5460ff166200051a576040516369be8d9360e11b815260040160405180910390fd5b620004d6600063ffffffff620006ab565b6001600160a01b03163b151590565b6200055081620006f460201b62001bc11760201c565b50565b62000573620000676001600080516020620048eb833981519152620008af565b5460ff1662000595576040516369be8d9360e11b815260040160405180910390fd5b80620005c76200006760017f1cd3cead3f33d5ed74fb83a237e17d126ef505cbae350d3d0ffce421e3a1d144620008af565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000608620000676001600080516020620048eb833981519152620008af565b5460ff166200062a576040516369be8d9360e11b815260040160405180910390fd5b80620005c76200006760017fc57d320c8f1e45a5114285d6f31191434d3d45422aff570b70ab6787e45bcf00620008af565b67ffffffff00000000602083901b1663ffffffff82161780620006a56200006760017f339f5f72bc92a5319eb93a988a231d1edc8fd9d738d9b83b98fdc16b8304d846620008af565b55505050565b67ffffffff00000000602083901b1663ffffffff82161780620006a56200006760017f1b3d86ed8dfe582174d4360a5614978a5ce792b2850c12fe4f73655644f0ae46620008af565b6200071e635b5e139f60e01b826001600160a01b03166200076e60201b62001c131790919060201c565b620007585760405163c30175c560e01b81526001600160a01b0382166004820152635b5e139f60e01b602482015260440160405180910390fd5b62000550816200055060201b62001c101760201c565b60006200077b8362000796565b80156200078f57506200078f8383620007cf565b9392505050565b6000620007ab826301ffc9a760e01b620007cf565b8015620007c95750620007c7826001600160e01b0319620007cf565b155b92915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d9150600051905082801562000842575060208210155b80156200084f5750600081115b979650505050505050565b80516001600160a01b03811681146200087257600080fd5b919050565b600080604083850312156200088b57600080fd5b62000896836200085a565b9150620008a6602084016200085a565b90509250929050565b600082821015620008d057634e487b7160e01b600052601160045260246000fd5b500390565b61400680620008e56000396000f3fe6080604052600436106102075760003560e01c80638d796a3711610118578063cb31468c116100a0578063de5b71f71161006f578063de5b71f7146106ff578063e846a5a91461071f578063e985e9c51461075a578063f46c73c61461077a578063ffd5b3171461078f57610216565b8063cb31468c14610652578063d1958f2c14610672578063d1cd183714610687578063d5cf02f4146106ca57610216565b8063ab9a8dcd116100e7578063ab9a8dcd14610555578063ac9650d81461056a578063b88d4fde14610597578063c566b080146105b7578063ca7cee2f146105d757610216565b80638d796a37146104e557806394d008ef14610505578063986e911514610525578063a22cb4651461053a57610216565b80632a58f7ac1161019b5780635e88e74a1161016a5780635e88e74a146104125780636236f3b61461043c57806362bc508a146104695780636352211e1461049757806370a08231146104b757610216565b80632a58f7ac1461039d57806342842e0e146103bd57806356a872bd146103dd5780635a70a283146103fd57610216565b8063153b0d1e116101d7578063153b0d1e146102dd57806318a8a6cf146103235780631f9e33041461035057806323b872dd1461037d57610216565b8062eb6ac71461021e57806301ffc9a714610255578063081812fc14610285578063095ea7b3146102bd57610216565b36610216576102146107a4565b005b6102146107a4565b34801561022a57600080fd5b506102336107b6565b6040805163ffffffff9384168152929091166020830152015b60405180910390f35b34801561026157600080fd5b506102756102703660046129dc565b6107ca565b604051901515815260200161024c565b34801561029157600080fd5b506102a56102a03660046129f9565b61083d565b6040516001600160a01b03909116815260200161024c565b3480156102c957600080fd5b506102146102d8366004612a27565b610920565b3480156102e957600080fd5b506102146102f8366004612a61565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b34801561032f57600080fd5b5061034361033e3660046129f9565b610939565b60405161024c9190612b91565b34801561035c57600080fd5b5061037061036b366004612d47565b610d4b565b60405161024c9190612dda565b34801561038957600080fd5b50610214610398366004612e20565b610d57565b3480156103a957600080fd5b506102146103b8366004612e73565b610d67565b3480156103c957600080fd5b506102146103d8366004612e20565b610ecb565b3480156103e957600080fd5b506102146103f8366004612e73565b610ee6565b34801561040957600080fd5b506102a5611047565b34801561041e57600080fd5b50610427611056565b60405163ffffffff909116815260200161024c565b34801561044857600080fd5b5061045c6104573660046129f9565b611068565b60405161024c9190612f24565b34801561047557600080fd5b50610214610484366004612fd5565b6004805460ff1916911515919091179055565b3480156104a357600080fd5b506102a56104b23660046129f9565b61122b565b3480156104c357600080fd5b506104d76104d2366004612ff2565b6112c9565b60405190815260200161024c565b3480156104f157600080fd5b50610214610500366004612e73565b61138b565b34801561051157600080fd5b5061021461052036600461307e565b6114eb565b34801561053157600080fd5b506104276115e0565b34801561054657600080fd5b506102146102d8366004612a61565b34801561056157600080fd5b506104276115eb565b34801561057657600080fd5b5061058a6105853660046130d6565b6115f6565b60405161024c919061314a565b3480156105a357600080fd5b506102146105b23660046131ac565b6116e3565b3480156105c357600080fd5b506102146105d2366004612e73565b6116f5565b3480156105e357600080fd5b506106446105f2366004613217565b50506001600160a01b0316600090815260056020908152604091829020548251808401909352601683527552656e74657220697320626c61636b6c69737465642160501b9183019190915260ff161591565b60405161024c92919061324c565b34801561065e57600080fd5b5061064461066d366004613280565b611856565b34801561067e57600080fd5b50610233611983565b34801561069357600080fd5b506104d76106a2366004612a27565b6001600160a01b03919091166000908152600260209081526040808320938352929052205490565b3480156106d657600080fd5b506106ea6106e53660046132e2565b61198e565b6040805192835260208301919091520161024c565b34801561070b57600080fd5b5061021461071a366004613217565b6119b9565b34801561072b57600080fd5b507f73ad2146b3d3a286642c794379d750360a2d53a3459a11b3e5d6cc900f55f44a60405161024c919061333e565b34801561076657600080fd5b50610275610775366004613353565b611ae8565b34801561078657600080fd5b506102a5611b9a565b34801561079b57600080fd5b50610427611ba4565b6107b46107af611c2f565b611c6e565b565b6000806107c1611cbb565b90939092509050565b60006001600160e01b0319821663ca7cee2f60e01b14806107fb57506001600160e01b03198216633573c0bd60e21b145b8061080a575061080a82611d04565b80610819575061081982611d25565b80610828575061082882611d61565b80610837575061083782611d9c565b92915050565b60008061084983611ddc565b9050600081600281111561085f5761085f612e90565b036108855760405163e4c0734760e01b8152600481018490526024015b60405180910390fd5b61088d611e75565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b81526004016108d8919061333e565b602060405180830381865afa1580156108f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109199190613381565b9392505050565b6040516341f8b8eb60e11b815260040160405180910390fd5b61094161285a565b600082815260016020908152604080832081518154610120948102820185019093526101008101838152909491938593919285929185015b82821015610a6c576000848152602090206040805160808101825260038502909201805460e01b6001600160e01b03191691830191825260018101805491928492909184916060850191906109cd9061339e565b80601f01602080910402602001604051908101604052809291908181526020018280546109f99061339e565b8015610a465780601f10610a1b57610100808354040283529160200191610a46565b820191906000526020600020905b815481529060010190602001808311610a2957829003601f168201915b505050505081525050815260200160028201548152505081526020019060010190610979565b505050908252506001820154602082015260028201546040808301919091526003830154606083015260048301546001600160a01b03811660808085019190915263ffffffff600160a01b8304811660a080870191909152600160c01b9093041660c08086019190915283519081019093526005850180546001600160e01b031960e091821b1692850192835260068701805491909601959193859392859291850191610b189061339e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b449061339e565b8015610b915780601f10610b6657610100808354040283529160200191610b91565b820191906000526020600020905b815481529060010190602001808311610b7457829003601f168201915b5050509190925250505081526040805180820190915260028301805460e01b6001600160e01b031916825260038401805460209485019484019190610bd59061339e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c019061339e565b8015610c4e5780601f10610c2357610100808354040283529160200191610c4e565b820191906000526020600020905b815481529060010190602001808311610c3157829003601f168201915b5050509190925250505081526040805180820190915260048301805460e01b6001600160e01b031916825260058401805460209485019484019190610c929061339e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbe9061339e565b8015610d0b5780601f10610ce057610100808354040283529160200191610d0b565b820191906000526020600020905b815481529060010190602001808311610cee57829003601f168201915b5050509190925250505081526040805180820190915260068301546001600160a01b03168152600790920154602083810191909152015290525092915050565b60606108373083611ea5565b610d62838383611f67565b505050565b610d6f611e75565b6001600160a01b031663e3dedd6b600080516020613fb18339815191526040518263ffffffff1660e01b8152600401610da8919061333e565b602060405180830381865afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190613381565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6891906133d2565b610e8457604051621c9ee960e91b815260040160405180910390fd5b6000610e8e61202d565b9150508063ffffffff168263ffffffff1610610ebd5760405163e652891d60e01b815260040160405180910390fd5b610ec7828261205f565b5050565b610d62838383604051806020016040528060008152506116e3565b610eee611e75565b6001600160a01b031663e3dedd6b600080516020613fb18339815191526040518263ffffffff1660e01b8152600401610f27919061333e565b602060405180830381865afa158015610f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f689190613381565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610fc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe791906133d2565b61100357604051621c9ee960e91b815260040160405180910390fd5b600061100d611cbb565b9150508063ffffffff168263ffffffff16111561103d5760405163dea1d81f60e01b815260040160405180910390fd5b610ec782826120ab565b6000611051611e75565b905090565b60008061106161202d565b5092915050565b6110706128bc565b60008281526003602090815260408083208151815460809481028201850190935260608101838152909491938593919285929185015b82821015611149576000848152602090206040805160a08101909152600384029091018054829060ff1660068111156110e1576110e1612e90565b60068111156110f2576110f2612e90565b81528154610100810460ff161515602080840191909152620100009091046001600160a01b0390811660408401526001808501546060850152600290940154166080909201919091529183529290920191016110a6565b505050908252506040805160808101909152600183018054602090930192829060ff16600681111561117d5761117d612e90565b600681111561118e5761118e612e90565b8152600182015460208083019190915260028301546040808401919091526003909301546001600160a01b031660609283015292845281519081019091526005840180549390920192909190829060ff1660068111156111f0576111f0612e90565b600681111561120157611201612e90565b8152600182015460208201526002909101546001600160a01b031660409091015290525092915050565b60008061123783611ddc565b9050600081600281111561124d5761124d612e90565b0361126e5760405163e4c0734760e01b81526004810184905260240161087c565b600181600281111561128257611282612e90565b0361128f57610919611e75565b506000828152602081905260409020546001600160a01b0316806108375760405163e4c0734760e01b81526004810184905260240161087c565b60006001600160a01b0382166112f2576040516323d3ad8160e21b815260040160405180910390fd5b60006112fc6120f1565b9050806001600160a01b031663bfe0af99611315611e75565b6040516001600160e01b031960e084901b1681526001600160a01b0391821660048201523060248201529086166044820152606401602060405180830381865afa158015611367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091991906133ef565b611393611e75565b6001600160a01b031663e3dedd6b600080516020613fb18339815191526040518263ffffffff1660e01b81526004016113cc919061333e565b602060405180830381865afa1580156113e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140d9190613381565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148c91906133d2565b6114a857604051621c9ee960e91b815260040160405180910390fd5b60006114b261202d565b5090508163ffffffff168163ffffffff16106114e157604051636b97294960e11b815260040160405180910390fd5b610ec7818361205f565b6001600160a01b0383166115125760405163c96c2a0b60e01b815260040160405180910390fd5b6000828152602081905260409020546001600160a01b03161561154b576040516376b78f6560e01b81526004810183905260240161087c565b611557600084846121df565b60008281526020819052604080822080546001600160a01b0319166001600160a01b03871690811790915590518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46115b960008484846122a4565b610d625760405162aae5b760e01b81526001600160a01b038416600482015260240161087c565b600080610919611cbb565b600080611061611cbb565b6060816001600160401b0381111561161057611610612c94565b60405190808252806020026020018201604052801561164357816020015b606081526020019060019003908161162e5790505b50905060005b82811015611061576116b33085858481811061166757611667613408565b9050602002810190611679919061341e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506123b092505050565b8282815181106116c5576116c5613408565b602002602001018190525080806116db90613481565b915050611649565b6116ef848484846123d5565b50505050565b6116fd611e75565b6001600160a01b031663e3dedd6b600080516020613fb18339815191526040518263ffffffff1660e01b8152600401611736919061333e565b602060405180830381865afa158015611753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117779190613381565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156117d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f691906133d2565b61181257604051621c9ee960e91b815260040160405180910390fd5b600061181c611cbb565b5090508163ffffffff168163ffffffff16111561184c5760405163077f3cbd60e11b815260040160405180910390fd5b610ec781836120ab565b60008381526001602052604081206060908490611873828261387b565b50506000858152600360205260409020839061188f8282613ac7565b90505060005b61189f858061349a565b90508110156119455760006118f16118b7878061349a565b848181106118c7576118c7613408565b90506020028101906118d991906134e3565b6118e390806134e3565b6118ec90613c06565b612413565b91508790506002600061190a60a08a0160808b01612ff2565b6001600160a01b031681526020808201929092526040908101600090812094815293909152909120558061193d81613481565b915050611895565b505060045460408051808201909152601381527254686572652077617320616e206572726f722160681b602082015260ff9091169590945092505050565b6000806107c161202d565b60008061199c600288613c7b565b6000036119ab578291506119ae565b50825b965096945050505050565b60006119c3611e75565b6001600160a01b031663e3dedd6b7fc812c4753531186b178644ec70482dbb7a11384b640929d30f5ed326dcc237bf6040518263ffffffff1660e01b8152600401611a0e919061333e565b602060405180830381865afa158015611a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4f9190613381565b9050611a656001600160a01b0385168285612437565b604051621a04ab60e01b8152600481018390526001600160a01b03858116602483015260448201859052821690621a04ab906064016000604051808303816000875af1158015611ab9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ae19190810190613d63565b5050505050565b6000611af2611e75565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b8152600401611b3d919061333e565b602060405180830381865afa158015611b5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7e9190613381565b6001600160a01b0316826001600160a01b031614905092915050565b6000611051611c2f565b60008061091961202d565b90565b6001600160a01b03163b151590565b611bdb6001600160a01b038216635b5e139f60e01b611c13565b611c105760405163c30175c560e01b81526001600160a01b0382166004820152635b5e139f60e01b602482015260440161087c565b50565b6000611c1e83612489565b8015610919575061091983836124bc565b6000611c5f611baf60017f1cd3cead3f33d5ed74fb83a237e17d126ef505cbae350d3d0ffce421e3a1d144613eae565b546001600160a01b0316919050565b6001600160a01b038116611c955760405163eb0308d160e01b815260040160405180910390fd5b34366000803760008036600084865af13d6000803e808015611cb6573d6000f35b3d6000fd5b60008080611ced611baf60017f1b3d86ed8dfe582174d4360a5614978a5ce792b2850c12fe4f73655644f0ae46613eae565b5463ffffffff602082901c81169591169350915050565b60006001600160e01b031982166332cc51a360e21b14806108375750610837825b60006001600160e01b031982166394d008ef60e01b1480611d5657506001600160e01b031982166380ac58cd60e01b145b806108375750610837825b60006001600160e01b031982166393cec23d60e01b148061082857506001600160e01b0319821663331f761f60e01b14806108375750610837825b60006001600160e01b0319821663a7219d9b60e01b1480611dcd57506001600160e01b031982166370c8db7160e01b145b80610837575061083782612550565b600080611de76120f1565b9050806001600160a01b0316633f09518c611e00611e75565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101869052606401602060405180830381865afa158015611e51573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109199190613ec5565b6000611c5f611baf60017fc57d320c8f1e45a5114285d6f31191434d3d45422aff570b70ab6787e45bcf00613eae565b6060600082516001600160401b03811115611ec257611ec2612c94565b604051908082528060200260200182016040528015611eeb578160200160208202803683370190505b509050611ef784612489565b156109195760005b8351811015611f5f57611f2b85858381518110611f1e57611f1e613408565b60200260200101516124bc565b828281518110611f3d57611f3d613408565b9115156020928302919091019091015280611f5781613481565b915050611eff565b509392505050565b6000818152602081905260409020546001600160a01b0316611f9f5760405163074fede760e51b81526004810182905260240161087c565b6001600160a01b038216611fc65760405163671d1add60e11b815260040160405180910390fd5b611fd18383836121df565b60008181526020819052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008080611ced611baf60017f339f5f72bc92a5319eb93a988a231d1edc8fd9d738d9b83b98fdc16b8304d846613eae565b67ffffffff00000000602083901b1663ffffffff821617806120a5611baf60017f339f5f72bc92a5319eb93a988a231d1edc8fd9d738d9b83b98fdc16b8304d846613eae565b55505050565b67ffffffff00000000602083901b1663ffffffff821617806120a5611baf60017f1b3d86ed8dfe582174d4360a5614978a5ce792b2850c12fe4f73655644f0ae46613eae565b60006120fb611e75565b6001600160a01b031663e3dedd6b600080516020613fb18339815191526040518263ffffffff1660e01b8152600401612134919061333e565b602060405180830381865afa158015612151573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121759190613381565b60405163ebf03f4960e01b81523060048201526001600160a01b03919091169063ebf03f4990602401602060405180830381865afa1580156121bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110519190613381565b6121e7611e75565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b8152600401612232919061333e565b602060405180830381865afa15801561224f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122739190613381565b6001600160a01b0316336001600160a01b031614610d6257604051630fd6440760e01b815260040160405180910390fd5b60006001600160a01b0384163b6122bd575060016123a8565b604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906122ef903390899088908890600401613ee6565b6020604051808303816000875af192505050801561232a575060408051601f3d908101601f1916820190925261232791810190613f19565b60015b612392573d808015612358576040519150601f19603f3d011682016040523d82523d6000602084013e61235d565b606091505b50805160000361238a5760405162aae5b760e01b81526001600160a01b038616600482015260240161087c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60606109198383604051806060016040528060278152602001613f8a602791396125a2565b6123e0848484611f67565b6123ec848484846122a4565b6116ef5760405162aae5b760e01b81526001600160a01b038416600482015260240161087c565b600080826020015180602001905181019061242e9190613f36565b91509150915091565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610d6290849061267f565b600061249c826301ffc9a760e01b6124bc565b801561083757506124b5826001600160e01b03196124bc565b1592915050565b6000806301ffc9a760e01b836040516024016124d8919061333e565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015612539575060208210155b80156125455750600081115b979650505050505050565b60006001600160e01b03198216630b3888fd60e31b148061258157506001600160e01b031982166301ffc9a760e01b145b80610837575061083782612593611c2f565b6001600160a01b031690611c13565b60606001600160a01b0384163b61260a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161087c565b600080856001600160a01b0316856040516126259190613f64565b600060405180830381855af49150503d8060008114612660576040519150601f19603f3d011682016040523d82523d6000602084013e612665565b606091505b5091509150612675828286612751565b9695505050505050565b60006126d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661278a9092919063ffffffff16565b805190915015610d6257808060200190518101906126f291906133d2565b610d625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161087c565b60608315612760575081610919565b8251156127705782518084602001fd5b8160405162461bcd60e51b815260040161087c9190613f76565b60606123a88484600085856001600160a01b0385163b6127ec5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161087c565b600080866001600160a01b031685876040516128089190613f64565b60006040518083038185875af1925050503d8060008114612845576040519150601f19603f3d011682016040523d82523d6000602084013e61284a565b606091505b5091509150612545828286612751565b6040518061010001604052806060815260200160008152602001600080191681526020016000815260200160006001600160a01b03168152602001600063ffffffff168152602001600063ffffffff1681526020016128b7612926565b905290565b60405180606001604052806060815260200161290360408051608081019091528060008152602001600081526020016000815260200160006001600160a01b031681525090565b815260408051606081018252600080825260208281018290529282015291015290565b6040805160c08101909152600060808201908152606060a08301528190815260200161296f604051806040016040528060006001600160e01b0319168152602001606081525090565b815260200161299b604051806040016040528060006001600160e01b0319168152602001606081525090565b81526020016128b7604051806040016040528060006001600160a01b03168152602001600081525090565b6001600160e01b031981168114611c1057600080fd5b6000602082840312156129ee57600080fd5b8135610919816129c6565b600060208284031215612a0b57600080fd5b5035919050565b6001600160a01b0381168114611c1057600080fd5b60008060408385031215612a3a57600080fd5b8235612a4581612a12565b946020939093013593505050565b8015158114611c1057600080fd5b60008060408385031215612a7457600080fd5b8235612a7f81612a12565b91506020830135612a8f81612a53565b809150509250929050565b60005b83811015612ab5578181015183820152602001612a9d565b838111156116ef5750506000910152565b60008151808452612ade816020860160208601612a9a565b601f01601f19169290920160200192915050565b63ffffffff60e01b815116825260006020820151604060208501526123a86040850182612ac6565b6000815160a08452612b2f60a0850182612af2565b905060208301518482036020860152612b488282612af2565b91505060408301518482036040860152612b628282612af2565b60609485015180516001600160a01b031695870195909552602090940151608090950194909452509092915050565b602080825282516101008383018190528151610120850181905260009392610140600583901b87018101939185019290870190865b81811015612c0b5761013f19898703018352845160408151818952612bed828a0182612af2565b928a0151988a01989098525095509386019391860191600101612bc6565b505050838701516040870152604087015160608701526060870151608087015260808701519350612c4760a08701856001600160a01b03169052565b60a087015163ffffffff811660c0880152935060c087015163ffffffff811660e0880152935060e08701519350601f1986840301818701525050612c8b8183612b1a565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715612ccc57612ccc612c94565b60405290565b60405160a081016001600160401b0381118282101715612ccc57612ccc612c94565b604051601f8201601f191681016001600160401b0381118282101715612d1c57612d1c612c94565b604052919050565b60006001600160401b03821115612d3d57612d3d612c94565b5060051b60200190565b60006020808385031215612d5a57600080fd5b82356001600160401b03811115612d7057600080fd5b8301601f81018513612d8157600080fd5b8035612d94612d8f82612d24565b612cf4565b81815260059190911b82018301908381019087831115612db357600080fd5b928401925b82841015612545578335612dcb816129c6565b82529284019290840190612db8565b6020808252825182820181905260009190848201906040850190845b81811015612e14578351151583529284019291840191600101612df6565b50909695505050505050565b600080600060608486031215612e3557600080fd5b8335612e4081612a12565b92506020840135612e5081612a12565b929592945050506040919091013590565b63ffffffff81168114611c1057600080fd5b600060208284031215612e8557600080fd5b813561091981612e61565b634e487b7160e01b600052602160045260246000fd5b60078110612ec457634e487b7160e01b600052602160045260246000fd5b9052565b612ed3828251612ea6565b60208181015190830152604080820151908301526060908101516001600160a01b0316910152565b612f06828251612ea6565b602081810151908301526040908101516001600160a01b0316910152565b6020808252825161010083830152805161012084018190526000929182019083906101408601905b80831015612fae578351612f61838251612ea6565b808601511515838701526040808201516001600160a01b0390811691850191909152606080830151908501526080918201511690830152928401926001929092019160a090910190612f4c565b509286015192612fc16040870185612ec8565b6040870151935061267560c0870185612efb565b600060208284031215612fe757600080fd5b813561091981612a53565b60006020828403121561300457600080fd5b813561091981612a12565b600082601f83011261302057600080fd5b81356001600160401b0381111561303957613039612c94565b61304c601f8201601f1916602001612cf4565b81815284602083860101111561306157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561309357600080fd5b833561309e81612a12565b92506020840135915060408401356001600160401b038111156130c057600080fd5b6130cc8682870161300f565b9150509250925092565b600080602083850312156130e957600080fd5b82356001600160401b038082111561310057600080fd5b818501915085601f83011261311457600080fd5b81358181111561312357600080fd5b8660208260051b850101111561313857600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561319f57603f1988860301845261318d858351612ac6565b94509285019290850190600101613171565b5092979650505050505050565b600080600080608085870312156131c257600080fd5b84356131cd81612a12565b935060208501356131dd81612a12565b92506040850135915060608501356001600160401b038111156131ff57600080fd5b61320b8782880161300f565b91505092959194509250565b60008060006060848603121561322c57600080fd5b833561323781612a12565b95602085013595506040909401359392505050565b82151581526040602082015260006123a86040830184612ac6565b6000610100828403121561327a57600080fd5b50919050565b60008060006060848603121561329557600080fd5b8335925060208401356001600160401b03808211156132b357600080fd5b6132bf87838801613267565b935060408601359150808211156132d557600080fd5b506130cc86828701613267565b60008060008060008060c087890312156132fb57600080fd5b863561330681612a12565b95506020870135945060408701359350606087013561332481612e61565b9598949750929560808101359460a0909101359350915050565b6001600160e01b031991909116815260200190565b6000806040838503121561336657600080fd5b823561337181612a12565b91506020830135612a8f81612a12565b60006020828403121561339357600080fd5b815161091981612a12565b600181811c908216806133b257607f821691505b60208210810361327a57634e487b7160e01b600052602260045260246000fd5b6000602082840312156133e457600080fd5b815161091981612a53565b60006020828403121561340157600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261343557600080fd5b8301803591506001600160401b0382111561344f57600080fd5b60200191503681900382131561346457600080fd5b9250929050565b634e487b7160e01b600052601160045260246000fd5b6000600182016134935761349361346b565b5060010190565b6000808335601e198436030181126134b157600080fd5b8301803591506001600160401b038211156134cb57600080fd5b6020019150600581901b360382131561346457600080fd5b60008235603e198336030181126134f957600080fd5b9190910192915050565b5b81811015610ec75760008155600101613504565b601f821115610d6257806000526020600020601f840160051c8101602085101561353f5750805b611ae1601f850160051c830182613503565b813561355c816129c6565b8060e01c63ffffffff19835416178255506001808201602080850135601e1986360301811261358a57600080fd5b850180356001600160401b038111156135a257600080fd5b80360383830113156135b357600080fd5b6135c7816135c1865461339e565b86613518565b6000601f8211600181146135fd57600083156135e557508382018501355b600019600385901b1c1916600184901b178655613656565b600086815260209020601f19841690835b8281101561362d5786850188013582559387019390890190870161360e565b508482101561364c5760001960f88660031b161c198785880101351681555b50508683881b0186555b505050505050505050565b61367461366e83846134e3565b82613551565b602082013560028201555050565b600160401b83111561369657613696612c94565b80548382558084101561377c577f555555555555555555555555555555555555555555555555555555555555555560018183118116156136d8576136d861346b565b60038287118216156136ec576136ec61346b565b600085815260208120909350878202810190828602015b808210156137765784825583820161371b815461339e565b801561376457601f8082116001811461373657888455613761565b60008481526020902061375283850160051c82018a8301613503565b50600084815260208120818655555b50505b50508460028301558282019150613703565b50505050505b5060008181526020812083915b858110156137ba576137a461379e84876134e3565b83613661565b6020929092019160039190910190600101613789565b505050505050565b6000813561083781612a12565b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000813561083781612e61565b60008235609e198336030181126134f957600080fd5b61381f61366e83846134e3565b61383861382f60208401846134e3565b60028301613551565b61385161384860408401846134e3565b60048301613551565b606082013561385f81612a12565b61386c81600684016137cf565b50608082013560078201555050565b8135601e1983360301811261388f57600080fd5b820180356001600160401b038111156138a757600080fd5b6020820191508060051b36038213156138bf57600080fd5b6138ca818385613682565b5050602082013560018201556040820135600282015560608201356003820155600481016139036138fd608085016137c2565b826137cf565b61393661391260a085016137ef565b82805463ffffffff60a01b191660a09290921b63ffffffff60a01b16919091179055565b61396961394560c085016137ef565b82805463ffffffff60c01b191660c09290921b63ffffffff60c01b16919091179055565b50610ec761397a60e08401846137fc565b60058301613812565b60078110611c1057600080fd5b600782106139ae57634e487b7160e01b600052602160045260246000fd5b60ff1981541660ff831681178255505050565b81356139cc81613983565b6139d68183613990565b5060208201356139e581612a53565b815461ff0019811691151560081b61ff001691821783556040840135613a0a81612a12565b610100600160b01b03199190911690911760109190911b62010000600160b01b0316178155606082013560018201556080820135613a4781612a12565b610d6281600284016137cf565b8135613a5f81613983565b613a698183613990565b5060208201356001820155604082013560028201556060820135613a8c81612a12565b610d6281600384016137cf565b8135613aa481613983565b613aae8183613990565b50602082013560018201556040820135613a4781612a12565b8135601e19833603018112613adb57600080fd5b820180356001600160401b03811115613af357600080fd5b60208201915060a08082023603831315613b0c57600080fd5b600160401b821115613b2057613b20612c94565b835482855580831015613bb3577f55555555555555555555555555555555555555555555555555555555555555556001818311811615613b6257613b6261346b565b6003828611821615613b7657613b7661346b565b600088815260208120909350868202810190828602015b80821015613bad5784825584848301558460028301558282019150613b8d565b50505050505b5060008481526020902060005b83811015613be557613bd285836139c1565b9382019360039190910190600101613bc0565b5050613bf76020860160018601613a54565b611ae181860160058601613a99565b600060408236031215613c1857600080fd5b604051604081016001600160401b038282108183111715613c3b57613c3b612c94565b8160405284359150613c4c826129c6565b90825260208401359080821115613c6257600080fd5b50613c6f3682860161300f565b60208301525092915050565b600082613c9857634e487b7160e01b600052601260045260246000fd5b500690565b600060808284031215613caf57600080fd5b604051608081018181106001600160401b0382111715613cd157613cd1612c94565b80604052508091508251613ce481613983565b8082525060208301516020820152604083015160408201526060830151613d0a81612a12565b6060919091015292915050565b600060608284031215613d2957600080fd5b613d31612caa565b90508151613d3e81613983565b8152602082810151908201526040820151613d5881612a12565b604082015292915050565b60006020808385031215613d7657600080fd5b82516001600160401b0380821115613d8d57600080fd5b908401906101008287031215613da257600080fd5b613daa612caa565b825182811115613db957600080fd5b83019150601f82018713613dcc57600080fd5b8151613dda612d8f82612d24565b81815260a0918202840186019186820191908a841115613df957600080fd5b948701945b83861015613e7b5780868c031215613e165760008081fd5b613e1e612cd2565b8651613e2981613983565b815286890151613e3881612a53565b818a0152604087810151613e4b81612a12565b9082015260608781015190820152608080880151613e6881612a12565b9082015283529485019491870191613dfe565b818552613e8a8b898901613c9d565b88860152613e9a8b828901613d17565b604086015250929998505050505050505050565b600082821015613ec057613ec061346b565b500390565b600060208284031215613ed757600080fd5b81516003811061091957600080fd5b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061267590830184612ac6565b600060208284031215613f2b57600080fd5b8151610919816129c6565b60008060408385031215613f4957600080fd5b8251613f5481612a12565b6020939093015192949293505050565b600082516134f9818460208701612a9a565b6020815260006109196020830184612ac656fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a9bb56dd0bf7501666e4d616edd892185cdc45d735a001a809bd3db50c9004b8a26469706673582212203165a55db7ad83442ab9b1d0a4b69db450286b15c59880b2b6c42cbbab94061464736f6c634300080d0033c2221768d9692f01d28cc433c84b2dc197fbcc867663b61d61e17ca4877697fa37e69e8e563db672cb7e105d3e1915d10ef53975d285d458a13e70818bf53d27",
  "deployedBytecode": "0x6080604052600436106102075760003560e01c80638d796a3711610118578063cb31468c116100a0578063de5b71f71161006f578063de5b71f7146106ff578063e846a5a91461071f578063e985e9c51461075a578063f46c73c61461077a578063ffd5b3171461078f57610216565b8063cb31468c14610652578063d1958f2c14610672578063d1cd183714610687578063d5cf02f4146106ca57610216565b8063ab9a8dcd116100e7578063ab9a8dcd14610555578063ac9650d81461056a578063b88d4fde14610597578063c566b080146105b7578063ca7cee2f146105d757610216565b80638d796a37146104e557806394d008ef14610505578063986e911514610525578063a22cb4651461053a57610216565b80632a58f7ac1161019b5780635e88e74a1161016a5780635e88e74a146104125780636236f3b61461043c57806362bc508a146104695780636352211e1461049757806370a08231146104b757610216565b80632a58f7ac1461039d57806342842e0e146103bd57806356a872bd146103dd5780635a70a283146103fd57610216565b8063153b0d1e116101d7578063153b0d1e146102dd57806318a8a6cf146103235780631f9e33041461035057806323b872dd1461037d57610216565b8062eb6ac71461021e57806301ffc9a714610255578063081812fc14610285578063095ea7b3146102bd57610216565b36610216576102146107a4565b005b6102146107a4565b34801561022a57600080fd5b506102336107b6565b6040805163ffffffff9384168152929091166020830152015b60405180910390f35b34801561026157600080fd5b506102756102703660046129dc565b6107ca565b604051901515815260200161024c565b34801561029157600080fd5b506102a56102a03660046129f9565b61083d565b6040516001600160a01b03909116815260200161024c565b3480156102c957600080fd5b506102146102d8366004612a27565b610920565b3480156102e957600080fd5b506102146102f8366004612a61565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b34801561032f57600080fd5b5061034361033e3660046129f9565b610939565b60405161024c9190612b91565b34801561035c57600080fd5b5061037061036b366004612d47565b610d4b565b60405161024c9190612dda565b34801561038957600080fd5b50610214610398366004612e20565b610d57565b3480156103a957600080fd5b506102146103b8366004612e73565b610d67565b3480156103c957600080fd5b506102146103d8366004612e20565b610ecb565b3480156103e957600080fd5b506102146103f8366004612e73565b610ee6565b34801561040957600080fd5b506102a5611047565b34801561041e57600080fd5b50610427611056565b60405163ffffffff909116815260200161024c565b34801561044857600080fd5b5061045c6104573660046129f9565b611068565b60405161024c9190612f24565b34801561047557600080fd5b50610214610484366004612fd5565b6004805460ff1916911515919091179055565b3480156104a357600080fd5b506102a56104b23660046129f9565b61122b565b3480156104c357600080fd5b506104d76104d2366004612ff2565b6112c9565b60405190815260200161024c565b3480156104f157600080fd5b50610214610500366004612e73565b61138b565b34801561051157600080fd5b5061021461052036600461307e565b6114eb565b34801561053157600080fd5b506104276115e0565b34801561054657600080fd5b506102146102d8366004612a61565b34801561056157600080fd5b506104276115eb565b34801561057657600080fd5b5061058a6105853660046130d6565b6115f6565b60405161024c919061314a565b3480156105a357600080fd5b506102146105b23660046131ac565b6116e3565b3480156105c357600080fd5b506102146105d2366004612e73565b6116f5565b3480156105e357600080fd5b506106446105f2366004613217565b50506001600160a01b0316600090815260056020908152604091829020548251808401909352601683527552656e74657220697320626c61636b6c69737465642160501b9183019190915260ff161591565b60405161024c92919061324c565b34801561065e57600080fd5b5061064461066d366004613280565b611856565b34801561067e57600080fd5b50610233611983565b34801561069357600080fd5b506104d76106a2366004612a27565b6001600160a01b03919091166000908152600260209081526040808320938352929052205490565b3480156106d657600080fd5b506106ea6106e53660046132e2565b61198e565b6040805192835260208301919091520161024c565b34801561070b57600080fd5b5061021461071a366004613217565b6119b9565b34801561072b57600080fd5b507f73ad2146b3d3a286642c794379d750360a2d53a3459a11b3e5d6cc900f55f44a60405161024c919061333e565b34801561076657600080fd5b50610275610775366004613353565b611ae8565b34801561078657600080fd5b506102a5611b9a565b34801561079b57600080fd5b50610427611ba4565b6107b46107af611c2f565b611c6e565b565b6000806107c1611cbb565b90939092509050565b60006001600160e01b0319821663ca7cee2f60e01b14806107fb57506001600160e01b03198216633573c0bd60e21b145b8061080a575061080a82611d04565b80610819575061081982611d25565b80610828575061082882611d61565b80610837575061083782611d9c565b92915050565b60008061084983611ddc565b9050600081600281111561085f5761085f612e90565b036108855760405163e4c0734760e01b8152600481018490526024015b60405180910390fd5b61088d611e75565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b81526004016108d8919061333e565b602060405180830381865afa1580156108f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109199190613381565b9392505050565b6040516341f8b8eb60e11b815260040160405180910390fd5b61094161285a565b600082815260016020908152604080832081518154610120948102820185019093526101008101838152909491938593919285929185015b82821015610a6c576000848152602090206040805160808101825260038502909201805460e01b6001600160e01b03191691830191825260018101805491928492909184916060850191906109cd9061339e565b80601f01602080910402602001604051908101604052809291908181526020018280546109f99061339e565b8015610a465780601f10610a1b57610100808354040283529160200191610a46565b820191906000526020600020905b815481529060010190602001808311610a2957829003601f168201915b505050505081525050815260200160028201548152505081526020019060010190610979565b505050908252506001820154602082015260028201546040808301919091526003830154606083015260048301546001600160a01b03811660808085019190915263ffffffff600160a01b8304811660a080870191909152600160c01b9093041660c08086019190915283519081019093526005850180546001600160e01b031960e091821b1692850192835260068701805491909601959193859392859291850191610b189061339e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b449061339e565b8015610b915780601f10610b6657610100808354040283529160200191610b91565b820191906000526020600020905b815481529060010190602001808311610b7457829003601f168201915b5050509190925250505081526040805180820190915260028301805460e01b6001600160e01b031916825260038401805460209485019484019190610bd59061339e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c019061339e565b8015610c4e5780601f10610c2357610100808354040283529160200191610c4e565b820191906000526020600020905b815481529060010190602001808311610c3157829003601f168201915b5050509190925250505081526040805180820190915260048301805460e01b6001600160e01b031916825260058401805460209485019484019190610c929061339e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbe9061339e565b8015610d0b5780601f10610ce057610100808354040283529160200191610d0b565b820191906000526020600020905b815481529060010190602001808311610cee57829003601f168201915b5050509190925250505081526040805180820190915260068301546001600160a01b03168152600790920154602083810191909152015290525092915050565b60606108373083611ea5565b610d62838383611f67565b505050565b610d6f611e75565b6001600160a01b031663e3dedd6b600080516020613fb18339815191526040518263ffffffff1660e01b8152600401610da8919061333e565b602060405180830381865afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190613381565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6891906133d2565b610e8457604051621c9ee960e91b815260040160405180910390fd5b6000610e8e61202d565b9150508063ffffffff168263ffffffff1610610ebd5760405163e652891d60e01b815260040160405180910390fd5b610ec7828261205f565b5050565b610d62838383604051806020016040528060008152506116e3565b610eee611e75565b6001600160a01b031663e3dedd6b600080516020613fb18339815191526040518263ffffffff1660e01b8152600401610f27919061333e565b602060405180830381865afa158015610f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f689190613381565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610fc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe791906133d2565b61100357604051621c9ee960e91b815260040160405180910390fd5b600061100d611cbb565b9150508063ffffffff168263ffffffff16111561103d5760405163dea1d81f60e01b815260040160405180910390fd5b610ec782826120ab565b6000611051611e75565b905090565b60008061106161202d565b5092915050565b6110706128bc565b60008281526003602090815260408083208151815460809481028201850190935260608101838152909491938593919285929185015b82821015611149576000848152602090206040805160a08101909152600384029091018054829060ff1660068111156110e1576110e1612e90565b60068111156110f2576110f2612e90565b81528154610100810460ff161515602080840191909152620100009091046001600160a01b0390811660408401526001808501546060850152600290940154166080909201919091529183529290920191016110a6565b505050908252506040805160808101909152600183018054602090930192829060ff16600681111561117d5761117d612e90565b600681111561118e5761118e612e90565b8152600182015460208083019190915260028301546040808401919091526003909301546001600160a01b031660609283015292845281519081019091526005840180549390920192909190829060ff1660068111156111f0576111f0612e90565b600681111561120157611201612e90565b8152600182015460208201526002909101546001600160a01b031660409091015290525092915050565b60008061123783611ddc565b9050600081600281111561124d5761124d612e90565b0361126e5760405163e4c0734760e01b81526004810184905260240161087c565b600181600281111561128257611282612e90565b0361128f57610919611e75565b506000828152602081905260409020546001600160a01b0316806108375760405163e4c0734760e01b81526004810184905260240161087c565b60006001600160a01b0382166112f2576040516323d3ad8160e21b815260040160405180910390fd5b60006112fc6120f1565b9050806001600160a01b031663bfe0af99611315611e75565b6040516001600160e01b031960e084901b1681526001600160a01b0391821660048201523060248201529086166044820152606401602060405180830381865afa158015611367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091991906133ef565b611393611e75565b6001600160a01b031663e3dedd6b600080516020613fb18339815191526040518263ffffffff1660e01b81526004016113cc919061333e565b602060405180830381865afa1580156113e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140d9190613381565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148c91906133d2565b6114a857604051621c9ee960e91b815260040160405180910390fd5b60006114b261202d565b5090508163ffffffff168163ffffffff16106114e157604051636b97294960e11b815260040160405180910390fd5b610ec7818361205f565b6001600160a01b0383166115125760405163c96c2a0b60e01b815260040160405180910390fd5b6000828152602081905260409020546001600160a01b03161561154b576040516376b78f6560e01b81526004810183905260240161087c565b611557600084846121df565b60008281526020819052604080822080546001600160a01b0319166001600160a01b03871690811790915590518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46115b960008484846122a4565b610d625760405162aae5b760e01b81526001600160a01b038416600482015260240161087c565b600080610919611cbb565b600080611061611cbb565b6060816001600160401b0381111561161057611610612c94565b60405190808252806020026020018201604052801561164357816020015b606081526020019060019003908161162e5790505b50905060005b82811015611061576116b33085858481811061166757611667613408565b9050602002810190611679919061341e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506123b092505050565b8282815181106116c5576116c5613408565b602002602001018190525080806116db90613481565b915050611649565b6116ef848484846123d5565b50505050565b6116fd611e75565b6001600160a01b031663e3dedd6b600080516020613fb18339815191526040518263ffffffff1660e01b8152600401611736919061333e565b602060405180830381865afa158015611753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117779190613381565b6001600160a01b031663882080d330336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156117d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f691906133d2565b61181257604051621c9ee960e91b815260040160405180910390fd5b600061181c611cbb565b5090508163ffffffff168163ffffffff16111561184c5760405163077f3cbd60e11b815260040160405180910390fd5b610ec781836120ab565b60008381526001602052604081206060908490611873828261387b565b50506000858152600360205260409020839061188f8282613ac7565b90505060005b61189f858061349a565b90508110156119455760006118f16118b7878061349a565b848181106118c7576118c7613408565b90506020028101906118d991906134e3565b6118e390806134e3565b6118ec90613c06565b612413565b91508790506002600061190a60a08a0160808b01612ff2565b6001600160a01b031681526020808201929092526040908101600090812094815293909152909120558061193d81613481565b915050611895565b505060045460408051808201909152601381527254686572652077617320616e206572726f722160681b602082015260ff9091169590945092505050565b6000806107c161202d565b60008061199c600288613c7b565b6000036119ab578291506119ae565b50825b965096945050505050565b60006119c3611e75565b6001600160a01b031663e3dedd6b7fc812c4753531186b178644ec70482dbb7a11384b640929d30f5ed326dcc237bf6040518263ffffffff1660e01b8152600401611a0e919061333e565b602060405180830381865afa158015611a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4f9190613381565b9050611a656001600160a01b0385168285612437565b604051621a04ab60e01b8152600481018390526001600160a01b03858116602483015260448201859052821690621a04ab906064016000604051808303816000875af1158015611ab9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ae19190810190613d63565b5050505050565b6000611af2611e75565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b8152600401611b3d919061333e565b602060405180830381865afa158015611b5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7e9190613381565b6001600160a01b0316826001600160a01b031614905092915050565b6000611051611c2f565b60008061091961202d565b90565b6001600160a01b03163b151590565b611bdb6001600160a01b038216635b5e139f60e01b611c13565b611c105760405163c30175c560e01b81526001600160a01b0382166004820152635b5e139f60e01b602482015260440161087c565b50565b6000611c1e83612489565b8015610919575061091983836124bc565b6000611c5f611baf60017f1cd3cead3f33d5ed74fb83a237e17d126ef505cbae350d3d0ffce421e3a1d144613eae565b546001600160a01b0316919050565b6001600160a01b038116611c955760405163eb0308d160e01b815260040160405180910390fd5b34366000803760008036600084865af13d6000803e808015611cb6573d6000f35b3d6000fd5b60008080611ced611baf60017f1b3d86ed8dfe582174d4360a5614978a5ce792b2850c12fe4f73655644f0ae46613eae565b5463ffffffff602082901c81169591169350915050565b60006001600160e01b031982166332cc51a360e21b14806108375750610837825b60006001600160e01b031982166394d008ef60e01b1480611d5657506001600160e01b031982166380ac58cd60e01b145b806108375750610837825b60006001600160e01b031982166393cec23d60e01b148061082857506001600160e01b0319821663331f761f60e01b14806108375750610837825b60006001600160e01b0319821663a7219d9b60e01b1480611dcd57506001600160e01b031982166370c8db7160e01b145b80610837575061083782612550565b600080611de76120f1565b9050806001600160a01b0316633f09518c611e00611e75565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101869052606401602060405180830381865afa158015611e51573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109199190613ec5565b6000611c5f611baf60017fc57d320c8f1e45a5114285d6f31191434d3d45422aff570b70ab6787e45bcf00613eae565b6060600082516001600160401b03811115611ec257611ec2612c94565b604051908082528060200260200182016040528015611eeb578160200160208202803683370190505b509050611ef784612489565b156109195760005b8351811015611f5f57611f2b85858381518110611f1e57611f1e613408565b60200260200101516124bc565b828281518110611f3d57611f3d613408565b9115156020928302919091019091015280611f5781613481565b915050611eff565b509392505050565b6000818152602081905260409020546001600160a01b0316611f9f5760405163074fede760e51b81526004810182905260240161087c565b6001600160a01b038216611fc65760405163671d1add60e11b815260040160405180910390fd5b611fd18383836121df565b60008181526020819052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008080611ced611baf60017f339f5f72bc92a5319eb93a988a231d1edc8fd9d738d9b83b98fdc16b8304d846613eae565b67ffffffff00000000602083901b1663ffffffff821617806120a5611baf60017f339f5f72bc92a5319eb93a988a231d1edc8fd9d738d9b83b98fdc16b8304d846613eae565b55505050565b67ffffffff00000000602083901b1663ffffffff821617806120a5611baf60017f1b3d86ed8dfe582174d4360a5614978a5ce792b2850c12fe4f73655644f0ae46613eae565b60006120fb611e75565b6001600160a01b031663e3dedd6b600080516020613fb18339815191526040518263ffffffff1660e01b8152600401612134919061333e565b602060405180830381865afa158015612151573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121759190613381565b60405163ebf03f4960e01b81523060048201526001600160a01b03919091169063ebf03f4990602401602060405180830381865afa1580156121bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110519190613381565b6121e7611e75565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b8152600401612232919061333e565b602060405180830381865afa15801561224f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122739190613381565b6001600160a01b0316336001600160a01b031614610d6257604051630fd6440760e01b815260040160405180910390fd5b60006001600160a01b0384163b6122bd575060016123a8565b604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906122ef903390899088908890600401613ee6565b6020604051808303816000875af192505050801561232a575060408051601f3d908101601f1916820190925261232791810190613f19565b60015b612392573d808015612358576040519150601f19603f3d011682016040523d82523d6000602084013e61235d565b606091505b50805160000361238a5760405162aae5b760e01b81526001600160a01b038616600482015260240161087c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60606109198383604051806060016040528060278152602001613f8a602791396125a2565b6123e0848484611f67565b6123ec848484846122a4565b6116ef5760405162aae5b760e01b81526001600160a01b038416600482015260240161087c565b600080826020015180602001905181019061242e9190613f36565b91509150915091565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610d6290849061267f565b600061249c826301ffc9a760e01b6124bc565b801561083757506124b5826001600160e01b03196124bc565b1592915050565b6000806301ffc9a760e01b836040516024016124d8919061333e565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015612539575060208210155b80156125455750600081115b979650505050505050565b60006001600160e01b03198216630b3888fd60e31b148061258157506001600160e01b031982166301ffc9a760e01b145b80610837575061083782612593611c2f565b6001600160a01b031690611c13565b60606001600160a01b0384163b61260a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161087c565b600080856001600160a01b0316856040516126259190613f64565b600060405180830381855af49150503d8060008114612660576040519150601f19603f3d011682016040523d82523d6000602084013e612665565b606091505b5091509150612675828286612751565b9695505050505050565b60006126d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661278a9092919063ffffffff16565b805190915015610d6257808060200190518101906126f291906133d2565b610d625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161087c565b60608315612760575081610919565b8251156127705782518084602001fd5b8160405162461bcd60e51b815260040161087c9190613f76565b60606123a88484600085856001600160a01b0385163b6127ec5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161087c565b600080866001600160a01b031685876040516128089190613f64565b60006040518083038185875af1925050503d8060008114612845576040519150601f19603f3d011682016040523d82523d6000602084013e61284a565b606091505b5091509150612545828286612751565b6040518061010001604052806060815260200160008152602001600080191681526020016000815260200160006001600160a01b03168152602001600063ffffffff168152602001600063ffffffff1681526020016128b7612926565b905290565b60405180606001604052806060815260200161290360408051608081019091528060008152602001600081526020016000815260200160006001600160a01b031681525090565b815260408051606081018252600080825260208281018290529282015291015290565b6040805160c08101909152600060808201908152606060a08301528190815260200161296f604051806040016040528060006001600160e01b0319168152602001606081525090565b815260200161299b604051806040016040528060006001600160e01b0319168152602001606081525090565b81526020016128b7604051806040016040528060006001600160a01b03168152602001600081525090565b6001600160e01b031981168114611c1057600080fd5b6000602082840312156129ee57600080fd5b8135610919816129c6565b600060208284031215612a0b57600080fd5b5035919050565b6001600160a01b0381168114611c1057600080fd5b60008060408385031215612a3a57600080fd5b8235612a4581612a12565b946020939093013593505050565b8015158114611c1057600080fd5b60008060408385031215612a7457600080fd5b8235612a7f81612a12565b91506020830135612a8f81612a53565b809150509250929050565b60005b83811015612ab5578181015183820152602001612a9d565b838111156116ef5750506000910152565b60008151808452612ade816020860160208601612a9a565b601f01601f19169290920160200192915050565b63ffffffff60e01b815116825260006020820151604060208501526123a86040850182612ac6565b6000815160a08452612b2f60a0850182612af2565b905060208301518482036020860152612b488282612af2565b91505060408301518482036040860152612b628282612af2565b60609485015180516001600160a01b031695870195909552602090940151608090950194909452509092915050565b602080825282516101008383018190528151610120850181905260009392610140600583901b87018101939185019290870190865b81811015612c0b5761013f19898703018352845160408151818952612bed828a0182612af2565b928a0151988a01989098525095509386019391860191600101612bc6565b505050838701516040870152604087015160608701526060870151608087015260808701519350612c4760a08701856001600160a01b03169052565b60a087015163ffffffff811660c0880152935060c087015163ffffffff811660e0880152935060e08701519350601f1986840301818701525050612c8b8183612b1a565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715612ccc57612ccc612c94565b60405290565b60405160a081016001600160401b0381118282101715612ccc57612ccc612c94565b604051601f8201601f191681016001600160401b0381118282101715612d1c57612d1c612c94565b604052919050565b60006001600160401b03821115612d3d57612d3d612c94565b5060051b60200190565b60006020808385031215612d5a57600080fd5b82356001600160401b03811115612d7057600080fd5b8301601f81018513612d8157600080fd5b8035612d94612d8f82612d24565b612cf4565b81815260059190911b82018301908381019087831115612db357600080fd5b928401925b82841015612545578335612dcb816129c6565b82529284019290840190612db8565b6020808252825182820181905260009190848201906040850190845b81811015612e14578351151583529284019291840191600101612df6565b50909695505050505050565b600080600060608486031215612e3557600080fd5b8335612e4081612a12565b92506020840135612e5081612a12565b929592945050506040919091013590565b63ffffffff81168114611c1057600080fd5b600060208284031215612e8557600080fd5b813561091981612e61565b634e487b7160e01b600052602160045260246000fd5b60078110612ec457634e487b7160e01b600052602160045260246000fd5b9052565b612ed3828251612ea6565b60208181015190830152604080820151908301526060908101516001600160a01b0316910152565b612f06828251612ea6565b602081810151908301526040908101516001600160a01b0316910152565b6020808252825161010083830152805161012084018190526000929182019083906101408601905b80831015612fae578351612f61838251612ea6565b808601511515838701526040808201516001600160a01b0390811691850191909152606080830151908501526080918201511690830152928401926001929092019160a090910190612f4c565b509286015192612fc16040870185612ec8565b6040870151935061267560c0870185612efb565b600060208284031215612fe757600080fd5b813561091981612a53565b60006020828403121561300457600080fd5b813561091981612a12565b600082601f83011261302057600080fd5b81356001600160401b0381111561303957613039612c94565b61304c601f8201601f1916602001612cf4565b81815284602083860101111561306157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561309357600080fd5b833561309e81612a12565b92506020840135915060408401356001600160401b038111156130c057600080fd5b6130cc8682870161300f565b9150509250925092565b600080602083850312156130e957600080fd5b82356001600160401b038082111561310057600080fd5b818501915085601f83011261311457600080fd5b81358181111561312357600080fd5b8660208260051b850101111561313857600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561319f57603f1988860301845261318d858351612ac6565b94509285019290850190600101613171565b5092979650505050505050565b600080600080608085870312156131c257600080fd5b84356131cd81612a12565b935060208501356131dd81612a12565b92506040850135915060608501356001600160401b038111156131ff57600080fd5b61320b8782880161300f565b91505092959194509250565b60008060006060848603121561322c57600080fd5b833561323781612a12565b95602085013595506040909401359392505050565b82151581526040602082015260006123a86040830184612ac6565b6000610100828403121561327a57600080fd5b50919050565b60008060006060848603121561329557600080fd5b8335925060208401356001600160401b03808211156132b357600080fd5b6132bf87838801613267565b935060408601359150808211156132d557600080fd5b506130cc86828701613267565b60008060008060008060c087890312156132fb57600080fd5b863561330681612a12565b95506020870135945060408701359350606087013561332481612e61565b9598949750929560808101359460a0909101359350915050565b6001600160e01b031991909116815260200190565b6000806040838503121561336657600080fd5b823561337181612a12565b91506020830135612a8f81612a12565b60006020828403121561339357600080fd5b815161091981612a12565b600181811c908216806133b257607f821691505b60208210810361327a57634e487b7160e01b600052602260045260246000fd5b6000602082840312156133e457600080fd5b815161091981612a53565b60006020828403121561340157600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261343557600080fd5b8301803591506001600160401b0382111561344f57600080fd5b60200191503681900382131561346457600080fd5b9250929050565b634e487b7160e01b600052601160045260246000fd5b6000600182016134935761349361346b565b5060010190565b6000808335601e198436030181126134b157600080fd5b8301803591506001600160401b038211156134cb57600080fd5b6020019150600581901b360382131561346457600080fd5b60008235603e198336030181126134f957600080fd5b9190910192915050565b5b81811015610ec75760008155600101613504565b601f821115610d6257806000526020600020601f840160051c8101602085101561353f5750805b611ae1601f850160051c830182613503565b813561355c816129c6565b8060e01c63ffffffff19835416178255506001808201602080850135601e1986360301811261358a57600080fd5b850180356001600160401b038111156135a257600080fd5b80360383830113156135b357600080fd5b6135c7816135c1865461339e565b86613518565b6000601f8211600181146135fd57600083156135e557508382018501355b600019600385901b1c1916600184901b178655613656565b600086815260209020601f19841690835b8281101561362d5786850188013582559387019390890190870161360e565b508482101561364c5760001960f88660031b161c198785880101351681555b50508683881b0186555b505050505050505050565b61367461366e83846134e3565b82613551565b602082013560028201555050565b600160401b83111561369657613696612c94565b80548382558084101561377c577f555555555555555555555555555555555555555555555555555555555555555560018183118116156136d8576136d861346b565b60038287118216156136ec576136ec61346b565b600085815260208120909350878202810190828602015b808210156137765784825583820161371b815461339e565b801561376457601f8082116001811461373657888455613761565b60008481526020902061375283850160051c82018a8301613503565b50600084815260208120818655555b50505b50508460028301558282019150613703565b50505050505b5060008181526020812083915b858110156137ba576137a461379e84876134e3565b83613661565b6020929092019160039190910190600101613789565b505050505050565b6000813561083781612a12565b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000813561083781612e61565b60008235609e198336030181126134f957600080fd5b61381f61366e83846134e3565b61383861382f60208401846134e3565b60028301613551565b61385161384860408401846134e3565b60048301613551565b606082013561385f81612a12565b61386c81600684016137cf565b50608082013560078201555050565b8135601e1983360301811261388f57600080fd5b820180356001600160401b038111156138a757600080fd5b6020820191508060051b36038213156138bf57600080fd5b6138ca818385613682565b5050602082013560018201556040820135600282015560608201356003820155600481016139036138fd608085016137c2565b826137cf565b61393661391260a085016137ef565b82805463ffffffff60a01b191660a09290921b63ffffffff60a01b16919091179055565b61396961394560c085016137ef565b82805463ffffffff60c01b191660c09290921b63ffffffff60c01b16919091179055565b50610ec761397a60e08401846137fc565b60058301613812565b60078110611c1057600080fd5b600782106139ae57634e487b7160e01b600052602160045260246000fd5b60ff1981541660ff831681178255505050565b81356139cc81613983565b6139d68183613990565b5060208201356139e581612a53565b815461ff0019811691151560081b61ff001691821783556040840135613a0a81612a12565b610100600160b01b03199190911690911760109190911b62010000600160b01b0316178155606082013560018201556080820135613a4781612a12565b610d6281600284016137cf565b8135613a5f81613983565b613a698183613990565b5060208201356001820155604082013560028201556060820135613a8c81612a12565b610d6281600384016137cf565b8135613aa481613983565b613aae8183613990565b50602082013560018201556040820135613a4781612a12565b8135601e19833603018112613adb57600080fd5b820180356001600160401b03811115613af357600080fd5b60208201915060a08082023603831315613b0c57600080fd5b600160401b821115613b2057613b20612c94565b835482855580831015613bb3577f55555555555555555555555555555555555555555555555555555555555555556001818311811615613b6257613b6261346b565b6003828611821615613b7657613b7661346b565b600088815260208120909350868202810190828602015b80821015613bad5784825584848301558460028301558282019150613b8d565b50505050505b5060008481526020902060005b83811015613be557613bd285836139c1565b9382019360039190910190600101613bc0565b5050613bf76020860160018601613a54565b611ae181860160058601613a99565b600060408236031215613c1857600080fd5b604051604081016001600160401b038282108183111715613c3b57613c3b612c94565b8160405284359150613c4c826129c6565b90825260208401359080821115613c6257600080fd5b50613c6f3682860161300f565b60208301525092915050565b600082613c9857634e487b7160e01b600052601260045260246000fd5b500690565b600060808284031215613caf57600080fd5b604051608081018181106001600160401b0382111715613cd157613cd1612c94565b80604052508091508251613ce481613983565b8082525060208301516020820152604083015160408201526060830151613d0a81612a12565b6060919091015292915050565b600060608284031215613d2957600080fd5b613d31612caa565b90508151613d3e81613983565b8152602082810151908201526040820151613d5881612a12565b604082015292915050565b60006020808385031215613d7657600080fd5b82516001600160401b0380821115613d8d57600080fd5b908401906101008287031215613da257600080fd5b613daa612caa565b825182811115613db957600080fd5b83019150601f82018713613dcc57600080fd5b8151613dda612d8f82612d24565b81815260a0918202840186019186820191908a841115613df957600080fd5b948701945b83861015613e7b5780868c031215613e165760008081fd5b613e1e612cd2565b8651613e2981613983565b815286890151613e3881612a53565b818a0152604087810151613e4b81612a12565b9082015260608781015190820152608080880151613e6881612a12565b9082015283529485019491870191613dfe565b818552613e8a8b898901613c9d565b88860152613e9a8b828901613d17565b604086015250929998505050505050505050565b600082821015613ec057613ec061346b565b500390565b600060208284031215613ed757600080fd5b81516003811061091957600080fd5b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061267590830184612ac6565b600060208284031215613f2b57600080fd5b8151610919816129c6565b60008060408385031215613f4957600080fd5b8251613f5481612a12565b6020939093015192949293505050565b600082516134f9818460208701612a9a565b6020815260006109196020830184612ac656fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a9bb56dd0bf7501666e4d616edd892185cdc45d735a001a809bd3db50c9004b8a26469706673582212203165a55db7ad83442ab9b1d0a4b69db450286b15c59880b2b6c42cbbab94061464736f6c634300080d0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
