{
  "_format": "hh-sol-artifact-1",
  "contractName": "UiIncentiveDataProviderV3",
  "sourceName": "contracts/misc/UiIncentiveDataProviderV3.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IPoolAddressesProvider",
          "name": "provider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getFullReservesIncentiveData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "incentiveControllerAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "rewardTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardOracleAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "emissionPerSecond",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "incentivesLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "tokenIncentivesIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "emissionEndTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "int256",
                      "name": "rewardPriceFeed",
                      "type": "int256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rewardTokenDecimals",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "precision",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "priceFeedDecimals",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]",
                  "name": "rewardsTokenInformation",
                  "type": "tuple[]"
                }
              ],
              "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData",
              "name": "aIncentiveData",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "incentiveControllerAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "rewardTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardOracleAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "emissionPerSecond",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "incentivesLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "tokenIncentivesIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "emissionEndTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "int256",
                      "name": "rewardPriceFeed",
                      "type": "int256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rewardTokenDecimals",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "precision",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "priceFeedDecimals",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]",
                  "name": "rewardsTokenInformation",
                  "type": "tuple[]"
                }
              ],
              "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData",
              "name": "vIncentiveData",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "incentiveControllerAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "rewardTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardOracleAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "emissionPerSecond",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "incentivesLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "tokenIncentivesIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "emissionEndTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "int256",
                      "name": "rewardPriceFeed",
                      "type": "int256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rewardTokenDecimals",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "precision",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "priceFeedDecimals",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]",
                  "name": "rewardsTokenInformation",
                  "type": "tuple[]"
                }
              ],
              "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData",
              "name": "sIncentiveData",
              "type": "tuple"
            }
          ],
          "internalType": "struct IUiIncentiveDataProviderV3.AggregatedReserveIncentiveData[]",
          "name": "",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "incentiveControllerAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "rewardTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardOracleAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "userUnclaimedRewards",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "tokenIncentivesUserIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "int256",
                      "name": "rewardPriceFeed",
                      "type": "int256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "priceFeedDecimals",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rewardTokenDecimals",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]",
                  "name": "userRewardsInformation",
                  "type": "tuple[]"
                }
              ],
              "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData",
              "name": "aTokenIncentivesUserData",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "incentiveControllerAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "rewardTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardOracleAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "userUnclaimedRewards",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "tokenIncentivesUserIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "int256",
                      "name": "rewardPriceFeed",
                      "type": "int256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "priceFeedDecimals",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rewardTokenDecimals",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]",
                  "name": "userRewardsInformation",
                  "type": "tuple[]"
                }
              ],
              "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData",
              "name": "vTokenIncentivesUserData",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "incentiveControllerAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "rewardTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardOracleAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "userUnclaimedRewards",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "tokenIncentivesUserIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "int256",
                      "name": "rewardPriceFeed",
                      "type": "int256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "priceFeedDecimals",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rewardTokenDecimals",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]",
                  "name": "userRewardsInformation",
                  "type": "tuple[]"
                }
              ],
              "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData",
              "name": "sTokenIncentivesUserData",
              "type": "tuple"
            }
          ],
          "internalType": "struct IUiIncentiveDataProviderV3.UserReserveIncentiveData[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IPoolAddressesProvider",
          "name": "provider",
          "type": "address"
        }
      ],
      "name": "getReservesIncentivesData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "incentiveControllerAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "rewardTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardOracleAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "emissionPerSecond",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "incentivesLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "tokenIncentivesIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "emissionEndTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "int256",
                      "name": "rewardPriceFeed",
                      "type": "int256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rewardTokenDecimals",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "precision",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "priceFeedDecimals",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]",
                  "name": "rewardsTokenInformation",
                  "type": "tuple[]"
                }
              ],
              "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData",
              "name": "aIncentiveData",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "incentiveControllerAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "rewardTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardOracleAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "emissionPerSecond",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "incentivesLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "tokenIncentivesIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "emissionEndTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "int256",
                      "name": "rewardPriceFeed",
                      "type": "int256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rewardTokenDecimals",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "precision",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "priceFeedDecimals",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]",
                  "name": "rewardsTokenInformation",
                  "type": "tuple[]"
                }
              ],
              "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData",
              "name": "vIncentiveData",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "incentiveControllerAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "rewardTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardOracleAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "emissionPerSecond",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "incentivesLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "tokenIncentivesIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "emissionEndTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "int256",
                      "name": "rewardPriceFeed",
                      "type": "int256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rewardTokenDecimals",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "precision",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "priceFeedDecimals",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]",
                  "name": "rewardsTokenInformation",
                  "type": "tuple[]"
                }
              ],
              "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData",
              "name": "sIncentiveData",
              "type": "tuple"
            }
          ],
          "internalType": "struct IUiIncentiveDataProviderV3.AggregatedReserveIncentiveData[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IPoolAddressesProvider",
          "name": "provider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getUserReservesIncentivesData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "incentiveControllerAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "rewardTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardOracleAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "userUnclaimedRewards",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "tokenIncentivesUserIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "int256",
                      "name": "rewardPriceFeed",
                      "type": "int256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "priceFeedDecimals",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rewardTokenDecimals",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]",
                  "name": "userRewardsInformation",
                  "type": "tuple[]"
                }
              ],
              "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData",
              "name": "aTokenIncentivesUserData",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "incentiveControllerAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "rewardTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardOracleAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "userUnclaimedRewards",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "tokenIncentivesUserIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "int256",
                      "name": "rewardPriceFeed",
                      "type": "int256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "priceFeedDecimals",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rewardTokenDecimals",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]",
                  "name": "userRewardsInformation",
                  "type": "tuple[]"
                }
              ],
              "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData",
              "name": "vTokenIncentivesUserData",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "incentiveControllerAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "rewardTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardOracleAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "rewardTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "userUnclaimedRewards",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "tokenIncentivesUserIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "int256",
                      "name": "rewardPriceFeed",
                      "type": "int256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "priceFeedDecimals",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rewardTokenDecimals",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]",
                  "name": "userRewardsInformation",
                  "type": "tuple[]"
                }
              ],
              "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData",
              "name": "sTokenIncentivesUserData",
              "type": "tuple"
            }
          ],
          "internalType": "struct IUiIncentiveDataProviderV3.UserReserveIncentiveData[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50613cff806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634763753614610046578063799bdcf514610070578063976fafc514610090575b600080fd5b61005961005436600461334b565b6100b0565b6040516100679291906137b7565b60405180910390f35b61008361007e36600461334b565b6100d1565b60405161006791906137e5565b6100a361009e3660046137f8565b6100e4565b6040516100679190613815565b6060806100bc846100f5565b6100c68585611a1e565b915091509250929050565b60606100dd8383611a1e565b9392505050565b60606100ef826100f5565b92915050565b606060008273ffffffffffffffffffffffffffffffffffffffff1663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101689190613838565b905060008173ffffffffffffffffffffffffffffffffffffffff1663d1946dbc6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156101b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101df91908101906138df565b90506000815167ffffffffffffffff8111156101fd576101fd613855565b60405190808252806020026020018201604052801561023657816020015b61022361326f565b81526020019060019003908161021b5790505b50905060005b8251811015611a1557600082828151811061025957610259613991565b6020026020010151905083828151811061027557610275613991565b6020026020010151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008573ffffffffffffffffffffffffffffffffffffffff166335ea6a758685815181106102e4576102e4613991565b60200260200101516040518263ffffffff1660e01b8152600401610324919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6101e060405180830381865afa158015610342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103669190613a49565b9050600081610100015173ffffffffffffffffffffffffffffffffffffffff166375d264136040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103de9190613838565b9050606073ffffffffffffffffffffffffffffffffffffffff821615610a9a576101008301516040517f6657732f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091841690636657732f90602401600060405180830381865afa158015610473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261049b91908101906138df565b9050805167ffffffffffffffff8111156104b7576104b7613855565b60405190808252806020026020018201604052801561057a57816020015b61056760405180610160016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b8152602001906001900390816104d55790505b50915060005b8151811015610a975761061b60405180610160016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b82828151811061062d5761062d613991565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081169183018290526101008801516040517f7eff4ba800000000000000000000000000000000000000000000000000000000815290821660048201526024810192909252861690637eff4ba890604401608060405180830381865afa1580156106bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e09190613b6c565b60c08501526080840152606083015260a08201526101008601516040517f9efd6f7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690639efd6f7290602401602060405180830381865afa158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b9190613ba2565b60ff16610120820152602080820151604080517f313ce567000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263313ce567926004808401938290030181865afa158015610801573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108259190613ba2565b81610100019060ff16908160ff1681525050806020015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108ae9190810190613bc5565b815260208101516040517f2a17bf6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690632a17bf6090602401602060405180830381865afa158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190613838565b73ffffffffffffffffffffffffffffffffffffffff16604080830182905280517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567916004808201926020929091908290030181865afa1580156109b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109da9190613ba2565b81610140019060ff16908160ff1681525050806040015173ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5f9190613c50565b60e082015283518190859084908110610a7a57610a7a613991565b60200260200101819052505080610a9090613c69565b9050610580565b50505b604051806060016040528084610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152508460200181905250600083610140015173ffffffffffffffffffffffffffffffffffffffff166375d264136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b649190613838565b9050606073ffffffffffffffffffffffffffffffffffffffff821615611220576101408501516040517f6657732f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091841690636657732f90602401600060405180830381865afa158015610bf9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c2191908101906138df565b9050805167ffffffffffffffff811115610c3d57610c3d613855565b604051908082528060200260200182016040528015610d0057816020015b610ced60405180610160016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b815260200190600190039081610c5b5790505b50915060005b815181101561121d57610da160405180610160016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b828281518110610db357610db3613991565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081169183018290526101408a01516040517f7eff4ba800000000000000000000000000000000000000000000000000000000815290821660048201526024810192909252861690637eff4ba890604401608060405180830381865afa158015610e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e669190613b6c565b60c08501526080840152606083015260a08201526101408801516040517f9efd6f7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690639efd6f7290602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190613ba2565b60ff16610120820152602080820151604080517f313ce567000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263313ce567926004808401938290030181865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190613ba2565b81610100019060ff16908160ff1681525050806020015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801561100c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110349190810190613bc5565b815260208101516040517f2a17bf6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690632a17bf6090602401602060405180830381865afa1580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc9190613838565b73ffffffffffffffffffffffffffffffffffffffff16604080830182905280517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567916004808201926020929091908290030181865afa15801561113c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111609190613ba2565b81610140019060ff16908160ff1681525050806040015173ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e59190613c50565b60e08201528351819085908490811061120057611200613991565b6020026020010181905250508061121690613c69565b9050610d06565b50505b604051806060016040528086610140015173ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152508660400181905250600085610120015173ffffffffffffffffffffffffffffffffffffffff166375d264136040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ea9190613838565b9050606073ffffffffffffffffffffffffffffffffffffffff8216156119a6576101208701516040517f6657732f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091841690636657732f90602401600060405180830381865afa15801561137f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113a791908101906138df565b9050805167ffffffffffffffff8111156113c3576113c3613855565b60405190808252806020026020018201604052801561148657816020015b61147360405180610160016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b8152602001906001900390816113e15790505b50915060005b81518110156119a35761152760405180610160016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b82828151811061153957611539613991565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081169183018290526101208c01516040517f7eff4ba800000000000000000000000000000000000000000000000000000000815290821660048201526024810192909252861690637eff4ba890604401608060405180830381865afa1580156115c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ec9190613b6c565b60c08501526080840152606083015260a08201526101208a01516040517f9efd6f7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690639efd6f7290602401602060405180830381865afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190613ba2565b60ff16610120820152602080820151604080517f313ce567000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263313ce567926004808401938290030181865afa15801561170d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117319190613ba2565b81610100019060ff16908160ff1681525050806020015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611792573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117ba9190810190613bc5565b815260208101516040517f2a17bf6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690632a17bf6090602401602060405180830381865afa15801561182e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118529190613838565b73ffffffffffffffffffffffffffffffffffffffff16604080830182905280517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567916004808201926020929091908290030181865afa1580156118c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e69190613ba2565b81610140019060ff16908160ff1681525050806040015173ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196b9190613c50565b60e08201528351819085908490811061198657611986613991565b6020026020010181905250508061199c90613c69565b905061148c565b50505b604051806060016040528088610120015173ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815250886060018190525050505050505050508080611a0d90613c69565b91505061023c565b50949350505050565b606060008373ffffffffffffffffffffffffffffffffffffffff1663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a919190613838565b905060008173ffffffffffffffffffffffffffffffffffffffff1663d1946dbc6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611ae0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b0891908101906138df565b9050600073ffffffffffffffffffffffffffffffffffffffff8516611b2e576000611b31565b81515b67ffffffffffffffff811115611b4957611b49613855565b604051908082528060200260200182016040528015611b8257816020015b611b6f61326f565b815260200190600190039081611b675790505b50905060005b82518110156132655760008473ffffffffffffffffffffffffffffffffffffffff166335ea6a75858481518110611bc157611bc1613991565b60200260200101516040518263ffffffff1660e01b8152600401611c01919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6101e060405180830381865afa158015611c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c439190613a49565b9050838281518110611c5757611c57613991565b6020026020010151838381518110611c7157611c71613991565b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600081610100015173ffffffffffffffffffffffffffffffffffffffff166375d264136040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d259190613838565b905073ffffffffffffffffffffffffffffffffffffffff8116156123be576101008201516040517f6657732f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091831690636657732f90602401600060405180830381865afa158015611db8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611de091908101906138df565b90506000815167ffffffffffffffff811115611dfe57611dfe613855565b604051908082528060200260200182016040528015611e8c57816020015b60408051610100810182526060808252600060208084018290529383018190529082018190526080820181905260a0820181905260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611e1c5790505b50905060005b825181101561234d576040805161010081018252606080825260006020830181905292820183905281018290526080810182905260a0810182905260c0810182905260e0810191909152838281518110611eee57611eee613991565b602090810291909101015173ffffffffffffffffffffffffffffffffffffffff908116604080840182905261010089015190517f533f542a0000000000000000000000000000000000000000000000000000000081528f84166004820152908316602482015260448101919091529086169063533f542a90606401602060405180830381865afa158015611f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611faa9190613c50565b608082015260408082015190517fb022418c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e8116600483015291821660248201529086169063b022418c90604401602060405180830381865afa158015612029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204d9190613c50565b816060018181525050806040015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c99190613ba2565b8160e0019060ff16908160ff1681525050806040015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612129573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121519190810190613bc5565b815260408082015190517f2a17bf6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690632a17bf6090602401602060405180830381865afa1580156121c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e99190613838565b73ffffffffffffffffffffffffffffffffffffffff166020808301829052604080517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567926004808401939192918290030181865afa158015612258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227c9190613ba2565b60ff1660c0820152602080820151604080517f50d25bcd000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926350d25bcd926004808401938290030181865afa1580156122f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190613c50565b60a08201528251819084908490811061233057612330613991565b6020026020010181905250508061234690613c69565b9050611e92565b50604051806060016040528085610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001828152508686815181106123ac576123ac613991565b60200260200101516020018190525050505b600082610140015173ffffffffffffffffffffffffffffffffffffffff166375d264136040518163ffffffff1660e01b8152600401602060405180830381865afa158015612410573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124349190613838565b905073ffffffffffffffffffffffffffffffffffffffff811615612b02576101408301516040517f6657732f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091831690636657732f90602401600060405180830381865afa1580156124c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124ef91908101906138df565b90506000815167ffffffffffffffff81111561250d5761250d613855565b60405190808252806020026020018201604052801561259b57816020015b60408051610100810182526060808252600060208084018290529383018190529082018190526080820181905260a0820181905260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161252b5790505b50905060005b8251811015612a91576040805161010081018252606080825260006020830181905292820183905281018290526080810182905260a0810182905260c0810182905260e08101919091528382815181106125fd576125fd613991565b6020026020010151816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1663533f542a8e89610140015184604001516040518463ffffffff1660e01b81526004016126ad9392919073ffffffffffffffffffffffffffffffffffffffff93841681529183166020830152909116604082015260600190565b602060405180830381865afa1580156126ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ee9190613c50565b608082015260408082015190517fb022418c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8f8116600483015291821660248201529086169063b022418c90604401602060405180830381865afa15801561276d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127919190613c50565b816060018181525050806040015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280d9190613ba2565b8160e0019060ff16908160ff1681525050806040015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801561286d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128959190810190613bc5565b815260408082015190517f2a17bf6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690632a17bf6090602401602060405180830381865afa158015612909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292d9190613838565b73ffffffffffffffffffffffffffffffffffffffff166020808301829052604080517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567926004808401939192918290030181865afa15801561299c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c09190613ba2565b60ff1660c0820152602080820151604080517f50d25bcd000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926350d25bcd926004808401938290030181865afa158015612a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a599190613c50565b60a082015282518190849084908110612a7457612a74613991565b60200260200101819052505080612a8a90613c69565b90506125a1565b50604051806060016040528086610140015173ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200182815250878781518110612af057612af0613991565b60200260200101516040018190525050505b600083610120015173ffffffffffffffffffffffffffffffffffffffff166375d264136040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b789190613838565b905073ffffffffffffffffffffffffffffffffffffffff81161561324e576101208401516040517f6657732f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091831690636657732f90602401600060405180830381865afa158015612c0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c3391908101906138df565b90506000815167ffffffffffffffff811115612c5157612c51613855565b604051908082528060200260200182016040528015612cdf57816020015b60408051610100810182526060808252600060208084018290529383018190529082018190526080820181905260a0820181905260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181612c6f5790505b50905060005b82518110156131dd576040805161010081018252606080825260006020830181905292820183905281018290526080810182905260a0810182905260c0810182905260e0810191909152838281518110612d4157612d41613991565b6020026020010151816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1663533f542a8f8a610120015184604001516040518463ffffffff1660e01b8152600401612df19392919073ffffffffffffffffffffffffffffffffffffffff93841681529183166020830152909116604082015260600190565b602060405180830381865afa158015612e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e329190613c50565b8160800181815250508473ffffffffffffffffffffffffffffffffffffffff1663b022418c8f83604001516040518363ffffffff1660e01b8152600401612e9c92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602060405180830381865afa158015612eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edd9190613c50565b816060018181525050806040015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f599190613ba2565b8160e0019060ff16908160ff1681525050806040015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612fb9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fe19190810190613bc5565b815260408082015190517f2a17bf6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690632a17bf6090602401602060405180830381865afa158015613055573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130799190613838565b73ffffffffffffffffffffffffffffffffffffffff166020808301829052604080517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567926004808401939192918290030181865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c9190613ba2565b60ff1660c0820152602080820151604080517f50d25bcd000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926350d25bcd926004808401938290030181865afa158015613181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a59190613c50565b60a0820152825181908490849081106131c0576131c0613991565b602002602001018190525050806131d690613c69565b9050612ce5565b50604051806060016040528087610120015173ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018281525088888151811061323c5761323c613991565b60200260200101516060018190525050505b50505050808061325d90613c69565b915050611b88565b5095945050505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016132e76040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b81526040805160608082018352600080835260208084018290528385018390528086019390935283518083018552818152928301528183015291015290565b73ffffffffffffffffffffffffffffffffffffffff8116811461334857600080fd5b50565b6000806040838503121561335e57600080fd5b823561336981613326565b9150602083013561337981613326565b809150509250929050565b60005b8381101561339f578181015183820152602001613387565b838111156133ae576000848401525b50505050565b600081518084526133cc816020860160208601613384565b601f01601f19169290920160200192915050565b6000606080840173ffffffffffffffffffffffffffffffffffffffff8085511686526020818187015116818801526040915081860151848389015283815180865260809550858a019150858160051b8b0101848401935060005b82811015613531577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808c83030184528451610160815181855261347f828601826133b4565b915050878201516134a78986018273ffffffffffffffffffffffffffffffffffffffff169052565b508882015173ffffffffffffffffffffffffffffffffffffffff16848a01528a8201518b850152898201518a85015260a0808301519085015260c0808301519085015260e080830151908501526101008083015160ff908116918601919091526101208084015182169086015261014092830151169190930152938501939285019260010161343a565b509a9950505050505050505050565b600081518084526020808501808196508360051b8101915082860160005b858110156135ea5782840389528151608073ffffffffffffffffffffffffffffffffffffffff825116865286820151818888015261359e828801826133e0565b915050604080830151878303828901526135b883826133e0565b92505050606080830151925086820381880152506135d681836133e0565b9a87019a955050509084019060010161355e565b5091979650505050505050565b6000606080840173ffffffffffffffffffffffffffffffffffffffff80855116865260208181870151168188015260408087015185828a015284815180875260809650868b019150868160051b8c0101858401935060005b828110156136fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808d830301845284516101008151818552613694828601826133b4565b91505089898301511689850152898883015116888501528b8201518c8501528a8201518b85015260a080830151818601525060c0808301516136da8287018260ff169052565b505060e09182015160ff169390910192909252938601939286019260010161364f565b509b9a5050505050505050505050565b600081518084526020808501808196508360051b8101915082860160005b858110156135ea5782840389528151608073ffffffffffffffffffffffffffffffffffffffff825116865286820151818888015261376b828801826135f7565b9150506040808301518783038289015261378583826135f7565b92505050606080830151925086820381880152506137a381836135f7565b9a87019a955050509084019060010161372b565b6040815260006137ca6040830185613540565b82810360208401526137dc818561370d565b95945050505050565b6020815260006100dd602083018461370d565b60006020828403121561380a57600080fd5b81356100dd81613326565b6020815260006100dd6020830184613540565b805161383381613326565b919050565b60006020828403121561384a57600080fd5b81516100dd81613326565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101e0810167ffffffffffffffff811182821017156138a8576138a8613855565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156138d7576138d7613855565b604052919050565b600060208083850312156138f257600080fd5b825167ffffffffffffffff8082111561390a57600080fd5b818501915085601f83011261391e57600080fd5b81518181111561393057613930613855565b8060051b91506139418483016138ae565b818152918301840191848101908884111561395b57600080fd5b938501935b83851015613985578451925061397583613326565b8282529385019390850190613960565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156139d257600080fd5b6040516020810181811067ffffffffffffffff821117156139f5576139f5613855565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff8116811461383357600080fd5b805164ffffffffff8116811461383357600080fd5b805161ffff8116811461383357600080fd5b60006101e08284031215613a5c57600080fd5b613a64613884565b613a6e84846139c0565b8152613a7c60208401613a02565b6020820152613a8d60408401613a02565b6040820152613a9e60608401613a02565b6060820152613aaf60808401613a02565b6080820152613ac060a08401613a02565b60a0820152613ad160c08401613a22565b60c0820152613ae260e08401613a37565b60e0820152610100613af5818501613828565b90820152610120613b07848201613828565b90820152610140613b19848201613828565b90820152610160613b2b848201613828565b90820152610180613b3d848201613a02565b908201526101a0613b4f848201613a02565b908201526101c0613b61848201613a02565b908201529392505050565b60008060008060808587031215613b8257600080fd5b505082516020840151604085015160609095015191969095509092509050565b600060208284031215613bb457600080fd5b815160ff811681146100dd57600080fd5b600060208284031215613bd757600080fd5b815167ffffffffffffffff80821115613bef57600080fd5b818401915084601f830112613c0357600080fd5b815181811115613c1557613c15613855565b613c286020601f19601f840116016138ae565b9150808252856020828501011115613c3f57600080fd5b611a15816020840160208601613384565b600060208284031215613c6257600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613cc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220a00523f5abc47861f86aa555881b92b921d831c25c6946def5607da67bd85ca164736f6c634300080a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80634763753614610046578063799bdcf514610070578063976fafc514610090575b600080fd5b61005961005436600461334b565b6100b0565b6040516100679291906137b7565b60405180910390f35b61008361007e36600461334b565b6100d1565b60405161006791906137e5565b6100a361009e3660046137f8565b6100e4565b6040516100679190613815565b6060806100bc846100f5565b6100c68585611a1e565b915091509250929050565b60606100dd8383611a1e565b9392505050565b60606100ef826100f5565b92915050565b606060008273ffffffffffffffffffffffffffffffffffffffff1663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101689190613838565b905060008173ffffffffffffffffffffffffffffffffffffffff1663d1946dbc6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156101b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101df91908101906138df565b90506000815167ffffffffffffffff8111156101fd576101fd613855565b60405190808252806020026020018201604052801561023657816020015b61022361326f565b81526020019060019003908161021b5790505b50905060005b8251811015611a1557600082828151811061025957610259613991565b6020026020010151905083828151811061027557610275613991565b6020026020010151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008573ffffffffffffffffffffffffffffffffffffffff166335ea6a758685815181106102e4576102e4613991565b60200260200101516040518263ffffffff1660e01b8152600401610324919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6101e060405180830381865afa158015610342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103669190613a49565b9050600081610100015173ffffffffffffffffffffffffffffffffffffffff166375d264136040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103de9190613838565b9050606073ffffffffffffffffffffffffffffffffffffffff821615610a9a576101008301516040517f6657732f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091841690636657732f90602401600060405180830381865afa158015610473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261049b91908101906138df565b9050805167ffffffffffffffff8111156104b7576104b7613855565b60405190808252806020026020018201604052801561057a57816020015b61056760405180610160016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b8152602001906001900390816104d55790505b50915060005b8151811015610a975761061b60405180610160016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b82828151811061062d5761062d613991565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081169183018290526101008801516040517f7eff4ba800000000000000000000000000000000000000000000000000000000815290821660048201526024810192909252861690637eff4ba890604401608060405180830381865afa1580156106bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e09190613b6c565b60c08501526080840152606083015260a08201526101008601516040517f9efd6f7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690639efd6f7290602401602060405180830381865afa158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b9190613ba2565b60ff16610120820152602080820151604080517f313ce567000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263313ce567926004808401938290030181865afa158015610801573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108259190613ba2565b81610100019060ff16908160ff1681525050806020015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108ae9190810190613bc5565b815260208101516040517f2a17bf6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690632a17bf6090602401602060405180830381865afa158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190613838565b73ffffffffffffffffffffffffffffffffffffffff16604080830182905280517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567916004808201926020929091908290030181865afa1580156109b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109da9190613ba2565b81610140019060ff16908160ff1681525050806040015173ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5f9190613c50565b60e082015283518190859084908110610a7a57610a7a613991565b60200260200101819052505080610a9090613c69565b9050610580565b50505b604051806060016040528084610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152508460200181905250600083610140015173ffffffffffffffffffffffffffffffffffffffff166375d264136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b649190613838565b9050606073ffffffffffffffffffffffffffffffffffffffff821615611220576101408501516040517f6657732f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091841690636657732f90602401600060405180830381865afa158015610bf9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c2191908101906138df565b9050805167ffffffffffffffff811115610c3d57610c3d613855565b604051908082528060200260200182016040528015610d0057816020015b610ced60405180610160016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b815260200190600190039081610c5b5790505b50915060005b815181101561121d57610da160405180610160016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b828281518110610db357610db3613991565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081169183018290526101408a01516040517f7eff4ba800000000000000000000000000000000000000000000000000000000815290821660048201526024810192909252861690637eff4ba890604401608060405180830381865afa158015610e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e669190613b6c565b60c08501526080840152606083015260a08201526101408801516040517f9efd6f7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690639efd6f7290602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190613ba2565b60ff16610120820152602080820151604080517f313ce567000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263313ce567926004808401938290030181865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190613ba2565b81610100019060ff16908160ff1681525050806020015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801561100c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110349190810190613bc5565b815260208101516040517f2a17bf6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690632a17bf6090602401602060405180830381865afa1580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc9190613838565b73ffffffffffffffffffffffffffffffffffffffff16604080830182905280517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567916004808201926020929091908290030181865afa15801561113c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111609190613ba2565b81610140019060ff16908160ff1681525050806040015173ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e59190613c50565b60e08201528351819085908490811061120057611200613991565b6020026020010181905250508061121690613c69565b9050610d06565b50505b604051806060016040528086610140015173ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152508660400181905250600085610120015173ffffffffffffffffffffffffffffffffffffffff166375d264136040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ea9190613838565b9050606073ffffffffffffffffffffffffffffffffffffffff8216156119a6576101208701516040517f6657732f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091841690636657732f90602401600060405180830381865afa15801561137f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113a791908101906138df565b9050805167ffffffffffffffff8111156113c3576113c3613855565b60405190808252806020026020018201604052801561148657816020015b61147360405180610160016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b8152602001906001900390816113e15790505b50915060005b81518110156119a35761152760405180610160016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b82828151811061153957611539613991565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081169183018290526101208c01516040517f7eff4ba800000000000000000000000000000000000000000000000000000000815290821660048201526024810192909252861690637eff4ba890604401608060405180830381865afa1580156115c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ec9190613b6c565b60c08501526080840152606083015260a08201526101208a01516040517f9efd6f7200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690639efd6f7290602401602060405180830381865afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190613ba2565b60ff16610120820152602080820151604080517f313ce567000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263313ce567926004808401938290030181865afa15801561170d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117319190613ba2565b81610100019060ff16908160ff1681525050806020015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611792573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117ba9190810190613bc5565b815260208101516040517f2a17bf6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690632a17bf6090602401602060405180830381865afa15801561182e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118529190613838565b73ffffffffffffffffffffffffffffffffffffffff16604080830182905280517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567916004808201926020929091908290030181865afa1580156118c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e69190613ba2565b81610140019060ff16908160ff1681525050806040015173ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196b9190613c50565b60e08201528351819085908490811061198657611986613991565b6020026020010181905250508061199c90613c69565b905061148c565b50505b604051806060016040528088610120015173ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815250886060018190525050505050505050508080611a0d90613c69565b91505061023c565b50949350505050565b606060008373ffffffffffffffffffffffffffffffffffffffff1663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a919190613838565b905060008173ffffffffffffffffffffffffffffffffffffffff1663d1946dbc6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611ae0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b0891908101906138df565b9050600073ffffffffffffffffffffffffffffffffffffffff8516611b2e576000611b31565b81515b67ffffffffffffffff811115611b4957611b49613855565b604051908082528060200260200182016040528015611b8257816020015b611b6f61326f565b815260200190600190039081611b675790505b50905060005b82518110156132655760008473ffffffffffffffffffffffffffffffffffffffff166335ea6a75858481518110611bc157611bc1613991565b60200260200101516040518263ffffffff1660e01b8152600401611c01919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6101e060405180830381865afa158015611c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c439190613a49565b9050838281518110611c5757611c57613991565b6020026020010151838381518110611c7157611c71613991565b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600081610100015173ffffffffffffffffffffffffffffffffffffffff166375d264136040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d259190613838565b905073ffffffffffffffffffffffffffffffffffffffff8116156123be576101008201516040517f6657732f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091831690636657732f90602401600060405180830381865afa158015611db8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611de091908101906138df565b90506000815167ffffffffffffffff811115611dfe57611dfe613855565b604051908082528060200260200182016040528015611e8c57816020015b60408051610100810182526060808252600060208084018290529383018190529082018190526080820181905260a0820181905260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611e1c5790505b50905060005b825181101561234d576040805161010081018252606080825260006020830181905292820183905281018290526080810182905260a0810182905260c0810182905260e0810191909152838281518110611eee57611eee613991565b602090810291909101015173ffffffffffffffffffffffffffffffffffffffff908116604080840182905261010089015190517f533f542a0000000000000000000000000000000000000000000000000000000081528f84166004820152908316602482015260448101919091529086169063533f542a90606401602060405180830381865afa158015611f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611faa9190613c50565b608082015260408082015190517fb022418c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e8116600483015291821660248201529086169063b022418c90604401602060405180830381865afa158015612029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204d9190613c50565b816060018181525050806040015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c99190613ba2565b8160e0019060ff16908160ff1681525050806040015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612129573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121519190810190613bc5565b815260408082015190517f2a17bf6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690632a17bf6090602401602060405180830381865afa1580156121c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e99190613838565b73ffffffffffffffffffffffffffffffffffffffff166020808301829052604080517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567926004808401939192918290030181865afa158015612258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227c9190613ba2565b60ff1660c0820152602080820151604080517f50d25bcd000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926350d25bcd926004808401938290030181865afa1580156122f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190613c50565b60a08201528251819084908490811061233057612330613991565b6020026020010181905250508061234690613c69565b9050611e92565b50604051806060016040528085610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001828152508686815181106123ac576123ac613991565b60200260200101516020018190525050505b600082610140015173ffffffffffffffffffffffffffffffffffffffff166375d264136040518163ffffffff1660e01b8152600401602060405180830381865afa158015612410573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124349190613838565b905073ffffffffffffffffffffffffffffffffffffffff811615612b02576101408301516040517f6657732f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091831690636657732f90602401600060405180830381865afa1580156124c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124ef91908101906138df565b90506000815167ffffffffffffffff81111561250d5761250d613855565b60405190808252806020026020018201604052801561259b57816020015b60408051610100810182526060808252600060208084018290529383018190529082018190526080820181905260a0820181905260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161252b5790505b50905060005b8251811015612a91576040805161010081018252606080825260006020830181905292820183905281018290526080810182905260a0810182905260c0810182905260e08101919091528382815181106125fd576125fd613991565b6020026020010151816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1663533f542a8e89610140015184604001516040518463ffffffff1660e01b81526004016126ad9392919073ffffffffffffffffffffffffffffffffffffffff93841681529183166020830152909116604082015260600190565b602060405180830381865afa1580156126ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ee9190613c50565b608082015260408082015190517fb022418c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8f8116600483015291821660248201529086169063b022418c90604401602060405180830381865afa15801561276d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127919190613c50565b816060018181525050806040015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280d9190613ba2565b8160e0019060ff16908160ff1681525050806040015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801561286d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128959190810190613bc5565b815260408082015190517f2a17bf6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690632a17bf6090602401602060405180830381865afa158015612909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292d9190613838565b73ffffffffffffffffffffffffffffffffffffffff166020808301829052604080517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567926004808401939192918290030181865afa15801561299c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c09190613ba2565b60ff1660c0820152602080820151604080517f50d25bcd000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926350d25bcd926004808401938290030181865afa158015612a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a599190613c50565b60a082015282518190849084908110612a7457612a74613991565b60200260200101819052505080612a8a90613c69565b90506125a1565b50604051806060016040528086610140015173ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200182815250878781518110612af057612af0613991565b60200260200101516040018190525050505b600083610120015173ffffffffffffffffffffffffffffffffffffffff166375d264136040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b789190613838565b905073ffffffffffffffffffffffffffffffffffffffff81161561324e576101208401516040517f6657732f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091831690636657732f90602401600060405180830381865afa158015612c0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c3391908101906138df565b90506000815167ffffffffffffffff811115612c5157612c51613855565b604051908082528060200260200182016040528015612cdf57816020015b60408051610100810182526060808252600060208084018290529383018190529082018190526080820181905260a0820181905260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181612c6f5790505b50905060005b82518110156131dd576040805161010081018252606080825260006020830181905292820183905281018290526080810182905260a0810182905260c0810182905260e0810191909152838281518110612d4157612d41613991565b6020026020010151816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1663533f542a8f8a610120015184604001516040518463ffffffff1660e01b8152600401612df19392919073ffffffffffffffffffffffffffffffffffffffff93841681529183166020830152909116604082015260600190565b602060405180830381865afa158015612e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e329190613c50565b8160800181815250508473ffffffffffffffffffffffffffffffffffffffff1663b022418c8f83604001516040518363ffffffff1660e01b8152600401612e9c92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b602060405180830381865afa158015612eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edd9190613c50565b816060018181525050806040015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f599190613ba2565b8160e0019060ff16908160ff1681525050806040015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612fb9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fe19190810190613bc5565b815260408082015190517f2a17bf6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015290861690632a17bf6090602401602060405180830381865afa158015613055573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130799190613838565b73ffffffffffffffffffffffffffffffffffffffff166020808301829052604080517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567926004808401939192918290030181865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c9190613ba2565b60ff1660c0820152602080820151604080517f50d25bcd000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926350d25bcd926004808401938290030181865afa158015613181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a59190613c50565b60a0820152825181908490849081106131c0576131c0613991565b602002602001018190525050806131d690613c69565b9050612ce5565b50604051806060016040528087610120015173ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018281525088888151811061323c5761323c613991565b60200260200101516060018190525050505b50505050808061325d90613c69565b915050611b88565b5095945050505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016132e76040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b81526040805160608082018352600080835260208084018290528385018390528086019390935283518083018552818152928301528183015291015290565b73ffffffffffffffffffffffffffffffffffffffff8116811461334857600080fd5b50565b6000806040838503121561335e57600080fd5b823561336981613326565b9150602083013561337981613326565b809150509250929050565b60005b8381101561339f578181015183820152602001613387565b838111156133ae576000848401525b50505050565b600081518084526133cc816020860160208601613384565b601f01601f19169290920160200192915050565b6000606080840173ffffffffffffffffffffffffffffffffffffffff8085511686526020818187015116818801526040915081860151848389015283815180865260809550858a019150858160051b8b0101848401935060005b82811015613531577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808c83030184528451610160815181855261347f828601826133b4565b915050878201516134a78986018273ffffffffffffffffffffffffffffffffffffffff169052565b508882015173ffffffffffffffffffffffffffffffffffffffff16848a01528a8201518b850152898201518a85015260a0808301519085015260c0808301519085015260e080830151908501526101008083015160ff908116918601919091526101208084015182169086015261014092830151169190930152938501939285019260010161343a565b509a9950505050505050505050565b600081518084526020808501808196508360051b8101915082860160005b858110156135ea5782840389528151608073ffffffffffffffffffffffffffffffffffffffff825116865286820151818888015261359e828801826133e0565b915050604080830151878303828901526135b883826133e0565b92505050606080830151925086820381880152506135d681836133e0565b9a87019a955050509084019060010161355e565b5091979650505050505050565b6000606080840173ffffffffffffffffffffffffffffffffffffffff80855116865260208181870151168188015260408087015185828a015284815180875260809650868b019150868160051b8c0101858401935060005b828110156136fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808d830301845284516101008151818552613694828601826133b4565b91505089898301511689850152898883015116888501528b8201518c8501528a8201518b85015260a080830151818601525060c0808301516136da8287018260ff169052565b505060e09182015160ff169390910192909252938601939286019260010161364f565b509b9a5050505050505050505050565b600081518084526020808501808196508360051b8101915082860160005b858110156135ea5782840389528151608073ffffffffffffffffffffffffffffffffffffffff825116865286820151818888015261376b828801826135f7565b9150506040808301518783038289015261378583826135f7565b92505050606080830151925086820381880152506137a381836135f7565b9a87019a955050509084019060010161372b565b6040815260006137ca6040830185613540565b82810360208401526137dc818561370d565b95945050505050565b6020815260006100dd602083018461370d565b60006020828403121561380a57600080fd5b81356100dd81613326565b6020815260006100dd6020830184613540565b805161383381613326565b919050565b60006020828403121561384a57600080fd5b81516100dd81613326565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101e0810167ffffffffffffffff811182821017156138a8576138a8613855565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156138d7576138d7613855565b604052919050565b600060208083850312156138f257600080fd5b825167ffffffffffffffff8082111561390a57600080fd5b818501915085601f83011261391e57600080fd5b81518181111561393057613930613855565b8060051b91506139418483016138ae565b818152918301840191848101908884111561395b57600080fd5b938501935b83851015613985578451925061397583613326565b8282529385019390850190613960565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156139d257600080fd5b6040516020810181811067ffffffffffffffff821117156139f5576139f5613855565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff8116811461383357600080fd5b805164ffffffffff8116811461383357600080fd5b805161ffff8116811461383357600080fd5b60006101e08284031215613a5c57600080fd5b613a64613884565b613a6e84846139c0565b8152613a7c60208401613a02565b6020820152613a8d60408401613a02565b6040820152613a9e60608401613a02565b6060820152613aaf60808401613a02565b6080820152613ac060a08401613a02565b60a0820152613ad160c08401613a22565b60c0820152613ae260e08401613a37565b60e0820152610100613af5818501613828565b90820152610120613b07848201613828565b90820152610140613b19848201613828565b90820152610160613b2b848201613828565b90820152610180613b3d848201613a02565b908201526101a0613b4f848201613a02565b908201526101c0613b61848201613a02565b908201529392505050565b60008060008060808587031215613b8257600080fd5b505082516020840151604085015160609095015191969095509092509050565b600060208284031215613bb457600080fd5b815160ff811681146100dd57600080fd5b600060208284031215613bd757600080fd5b815167ffffffffffffffff80821115613bef57600080fd5b818401915084601f830112613c0357600080fd5b815181811115613c1557613c15613855565b613c286020601f19601f840116016138ae565b9150808252856020828501011115613c3f57600080fd5b611a15816020840160208601613384565b600060208284031215613c6257600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613cc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220a00523f5abc47861f86aa555881b92b921d831c25c6946def5607da67bd85ca164736f6c634300080a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
