Codercat Studio | Cookbook

This cookbook contains a collection of useful HoudiniFX node setups. All examples are stored using the new Houdini recipe API and can be copied from this website directly into Houdini using our simple shelf tools. We also periodically make a backup of the recipes here.

Copy a snippet of interest from this page, then use Paste on the "Cookbook" shelf to paste it in.

If you would like to share a recipe, click the Create button and paste in the output of the "Copy" shelf tool. Note that you must be logged in to do so. If you have any questions or comments, feel free to reach out at codercatclub@gmail.com.

Get new recipes updates over RSS feed.

⚠️ Changelog

11.20.2025 - We updated the copy shelf tool to include the Houdini version, which is also visible on the recipes listing. Please update your shelf tools using the Python one-liner from the Recommended Install section.

📦 Recommended Install

To install Cookbook shelf tools copy this code to Houdini Python Shell and press Enter. You will see Cookbook shelf apper on the top panel.

To open Python Shell press Alt-Shift-P or go to main menu Window > Python Shell.

📂 Alternative Manual Install
⬇️ Download shelf tool file and place it to your Houdini toolbar folder:
  • Windows:
  • macOS:
  • Linux:

Replace USERNAME and X.Y with your account name and Houdini version.

Restart Houdini.

? About this project

Motivation and Goals

We created this Houdini Cookbook because:

  • We needed a way to quickly share and store small Houdini node setups. Previously, we attempted to create HDA libraries, but it was too cumbersome for our small team.
  • We believe there is a better way to share Houdini examples than by sharing entire Houdini files.
  • We enjoy sharing our small setups with the Houdini community.
  • We strongly believe in the idea of "Own Your Data," therefore we do not hold any published recipes hostage. All recipes are backed up once a day to a public Git repository here. Even if this service goes down, anyone can still download the full collection and use it directly with the Cookbook shelf tool or by using the two Python functions described below.
  • We also embrace the idea of decentralization, and we are considering open sourcing the Cookbook web service so that anyone can run it locally with their own collection or as their own public webpage. Let us know if this is something that interests you.

How Does It Work

In Houdini 20.5, SideFX introduced a new Recipe system that allows users to save collections of nodes into human-readable structured text files (JSON). Within this, they added a new collection of Python utilities (hou.data) that allows for creating and loading recipes programmatically.

In particular, the Cookbook shelf tools use hou.data.selectedItemsAsData(...) for copying nodes and hou.createItemsFromData(...) for pasting.

For this web service, we use the Go programming language and store all submitted recipes in plain text JSON files.

Starter Crowd Setup
This setup is a quick start to a crowd simulation. It supports custom characters as agents, layers for clothing, and motion path avoidance, and terrain adaptation. This snippet was stripped down from our crowd simulation work for the Cant Wait music video.
Nov 30, 2025 | 20.5.584 | animation Cooked By: snay
ewogICAgIkFHRU5UMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJoYXRfcHJldmlldyIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMS4xMiwKICAgICAgICAgICAgLTguNzQKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogIm51bGwiCiAgICB9LAogICAgIkFHRU5UMiI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJuYW1lMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMy44MywKICAgICAgICAgICAgLTguNjEKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogIm51bGwiCiAgICB9LAogICAgIkNST1dEIjogewogICAgICAgICJmbGFncyI6IHsKICAgICAgICAgICAgImRpc3BsYXkiOiB0cnVlLAogICAgICAgICAgICAicmVuZGVyIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiYWdlbnR0ZXJyYWluYWRhcHRhdGlvbjEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDMuNywKICAgICAgICAgICAgLTE4Ljc4CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJudWxsIgogICAgfSwKICAgICJURVJSQUlOIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImFzc2lnbl9kZW5zaXR5X3RvX3BvaW50cyIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgOS44NiwKICAgICAgICAgICAgLTguOTcKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogIm51bGwiCiAgICB9LAogICAgIl9fY29va2Jvb2tNZXRhIjogewogICAgICAgICJjb250ZXh0IjogInNvcCIsCiAgICAgICAgInZlcnNpb24iOiAiMjAuNS41ODQiCiAgICB9LAogICAgIl9fc3RpY2t5bm90ZTEiOiB7CiAgICAgICAgImNvbG9yIjogWwogICAgICAgICAgICAxLAogICAgICAgICAgICAwLjk3LAogICAgICAgICAgICAwLjUyCiAgICAgICAgXSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIC0zLjIyLAogICAgICAgICAgICAtMC41NQogICAgICAgIF0sCiAgICAgICAgInNpemUiOiBbCiAgICAgICAgICAgIDIuNSwKICAgICAgICAgICAgMi41CiAgICAgICAgXSwKICAgICAgICAidGV4dCI6ICJ0ZXN0IGdlb21ldHJ5IGNhbiBiZSByZXBsYWNlZCB3aXRoIGFuIGZieCBjaGFyYWNlciB3aXRoIHdhbGsgY3ljbGUgYW5pbWF0aW9uLiBKdXN0IGJlIHN1cmUgdG8gcmVwbGFjZSB0aGUgd2FsayBjeWNsZSBuYW1lIGluIHRoZSBhZ2VudGNsaXAgbm9kZS4iLAogICAgICAgICJ0ZXh0X2NvbG9yIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwLAogICAgICAgICAgICAwCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJTdGlja3lOb3RlIgogICAgfSwKICAgICJfX3N0aWNreW5vdGUyIjogewogICAgICAgICJjb2xvciI6IFsKICAgICAgICAgICAgMSwKICAgICAgICAgICAgMC45NywKICAgICAgICAgICAgMC41MgogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICA1LjY3LAogICAgICAgICAgICAtNy41NgogICAgICAgIF0sCiAgICAgICAgInNpemUiOiBbCiAgICAgICAgICAgIDIuMTQsCiAgICAgICAgICAgIDEKICAgICAgICBdLAogICAgICAgICJ0ZXh0IjogIlRoaXMgY2FuIGJlIGEgY29tcGxldGVseSBkaWZmZXJlbnQgYWdlbnQgIiwKICAgICAgICAidGV4dF9jb2xvciI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiU3RpY2t5Tm90ZSIKICAgIH0sCiAgICAiYWdlbnRfaGF0X2xheWVyIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImFnZW50Y2xpcDIiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJtZXJnZXBhY2tlZDEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMQogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJjdXJyZW50bGF5ZXJzIjogIm5hbWUxIGRlZmF1bHQiLAogICAgICAgICAgICAibGF5ZXJuYW1lYXR0cmliIjogIm5hbWUiLAogICAgICAgICAgICAibnVtbGF5ZXJzIjogMCwKICAgICAgICAgICAgInNldGN1cnJlbnRsYXllcnMiOiBmYWxzZSwKICAgICAgICAgICAgInRyYW5zZm9ybW5hbWUiOiAiQ19IZWFkIiwKICAgICAgICAgICAgInVzZWxheWVybmFtZWF0dHJpYiI6IHRydWUKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMS4xMiwKICAgICAgICAgICAgLTMuOQogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiYWdlbnRsYXllcjo6Mi4wIgogICAgfSwKICAgICJhZ2VudF9tYWluX2xheWVyIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImFnZW50ZnJvbXJpZzEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJ0ZXN0Z2VvbWV0cnlfY2FweWJhcmExIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAidGVzdGdlb21ldHJ5X2NhcHliYXJhMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDEsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAyCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgIm51bWxheWVycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiY29weXNvdXJjZWxheWVyIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImVuYWJsZWxheWVyIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImV4aXN0aW5nc2hhcGVzIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImxheWVybmFtZSMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICJkZWZhdWx0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInNoYXBlcyMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICIqIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInNvbG9sYXllciMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJzb3VyY2VsYXllciMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJzb3VyY2VsYXllcnNoYXBlcyMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJzb3VyY2VsYXllcnRyYW5zZm9ybXMjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAuODcsCiAgICAgICAgICAgIC0xLjQ3CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJhZ2VudGxheWVyOjoyLjAiCiAgICB9LAogICAgImFnZW50Y2xpcDIiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiYWdlbnRfbWFpbl9sYXllciIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogIm1vdGlvbmNsaXAxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDEKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiYXBwbHlsb2NvbW90aW9uIjogdHJ1ZSwKICAgICAgICAgICAgImNsaXBzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJjaG9wIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImNvbnZlcnR0b2lucGxhY2UjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiY29udmVydHVuaXRzIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImRlbGF5bG9hZCMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJlbmFibGUjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiZmJ4b3ZlcnJpZGVzYW1wbGVyYXRlIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImZieHNhbXBsZXJhdGUjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiZmJ4dGFrZSMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJmaWxlIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImZyYW1lcmFuZ2UjXyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImtlZXBkZWZvcm1pbmdzaGFwZXhmb3JtcyMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJrZWVwcmVmIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImxvcHBhdGgjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAibWluaW1hbG5vZGVzIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIm5hbWUjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAib2JqcGF0dGVybiMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJvYmpzdWJuZXQjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAib2JqdHlwZSMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJwYWNrZWRpbnB1dHMjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAicHJpbXBhdHRlcm4jIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAicHJvamVjdGF4aXMjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAic291cmNlIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogInNvcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJ0cmF2ZXJzZW91dHB1dHMjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAidXNkZmlsZSMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJ1c2Rzb3VyY2UjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiY3VycmVudGNsaXAiOiAid2FsayIsCiAgICAgICAgICAgICJsb2NvbW90aW9ubm9kZSI6ICJDX1BlbHZpcyIsCiAgICAgICAgICAgICJzZXRjdXJyZW50Y2xpcCI6IHRydWUKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMS4xMiwKICAgICAgICAgICAgLTIuNzgKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImFnZW50Y2xpcDo6Mi4wIgogICAgfSwKICAgICJhZ2VudGZyb21yaWcxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogInRlc3RnZW9tZXRyeV9jYXB5YmFyYTEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAxLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJhZ2VudG5hbWUiOiAiY2FweWJhcmEiCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImtpbmVmeDo6YWdlbnRmcm9tcmlnIgogICAgfSwKICAgICJhZ2VudHRlcnJhaW5hZGFwdGF0aW9uMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJjcm93ZG1vdGlvbnBhdGhldmFsdWF0ZTEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJURVJSQUlOIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDEKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiZW5hYmxlc2ltdWxhdGlvbiI6IGZhbHNlLAogICAgICAgICAgICAiZ3VpZGVjb2xvciI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAwLjksCiAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJpbnRlcnAiOiAibGluZWFyIiwKICAgICAgICAgICAgICAgICAgICAicG9zIjogMSwKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDAuOSwKICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgMAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAzLjcsCiAgICAgICAgICAgIC0xNy4yCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJhZ2VudHRlcnJhaW5hZGFwdGF0aW9uIgogICAgfSwKICAgICJhc3NpZ25fYWdlbnRfdG9fcG9pbnRzIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogIm1vdW50YWluMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgInNuaXBwZXQiOiAiLy8gYXNzaWduIHRoZSBhZ2VudCB0aGF0IHlvdSB3YW50IHRvIGFwcGVhciBvbiBlYWNoIHBvaW50IHBvc2l0aW9uXG5mbG9hdCByID0gcmFuZChAcHRudW0pO1xuXG5pZiAociBcdTAwM2MgMC41KSB7XG4gICAgc0BhZ2VudG5hbWUgPSBcImNhcHliYXJhXCI7XG59IGVsc2Uge1xuICAgIHNAYWdlbnRuYW1lID0gXCJjYXB5YmFyYVJlZFwiO1xufVxuXG4iCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDkuODYsCiAgICAgICAgICAgIC02LjE2CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJhdHRyaWJ3cmFuZ2xlIgogICAgfSwKICAgICJhc3NpZ25fZGVuc2l0eV90b19wb2ludHMiOiB7CiAgICAgICAgImZsYWdzIjogewogICAgICAgICAgICAidGVtcGxhdGUiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJhc3NpZ25fYWdlbnRfdG9fcG9pbnRzIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAic25pcHBldCI6ICJpZihhYnModkBQLnopIFx1MDAzYyAxMC4wKXtcbiAgICBmQGRlbnNpdHkgPSAxLjA7XG59XG4iCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDkuODYsCiAgICAgICAgICAgIC03LjIxCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJhdHRyaWJ3cmFuZ2xlIgogICAgfSwKICAgICJjb2xvcjEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiaGF0X3ByZXZpZXciLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJjb2xvciI6IFsKICAgICAgICAgICAgICAgIDAuNSwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwCiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMy44MywKICAgICAgICAgICAgLTYuNjMKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImNvbG9yIgogICAgfSwKICAgICJjcm93ZF9jb2xsaWRlciI6IHsKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJkaXZyYXRlIjogWwogICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgIDIsCiAgICAgICAgICAgICAgICAyCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzY2FsZSI6IDEwLAogICAgICAgICAgICAidCI6IFsKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMjEuOQogICAgICAgICAgICBdLAogICAgICAgICAgICAidHlwZSI6ICJwb2x5bWVzaCIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgNy44NSwKICAgICAgICAgICAgLTEzLjI3CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJib3giCiAgICB9LAogICAgImNyb3dkYXNzaWdubGF5ZXJzMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJjcm93ZHNvdXJjZTEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJudW1sYXllcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImVuYWJsZSMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJlbmFibGVwZXJjZW50YWdlIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImZvbGRlcl9sYXllcnMjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiZm9sZGVyX3NlbGVjdCMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJncm91cCMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICJAbmFtZT0qIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIm51bWxheWVycGF0dGVybnMjIjogewogICAgICAgICAgICAgICAgICAgICAgICAibXVsdGlwYXJtcyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGF5ZXJwYXR0ZXJuI18jIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAiaGF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxheWVyd2VpZ2h0I18jIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAxLjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJwZXJjZW50YWdlIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMzAsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJwZXJjZW50YWdlc2VlZCMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJzZWVkIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInNlbGVjdGJ5IyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInNlbGVjdGxheWVycGF0dGVybiMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMy41NywKICAgICAgICAgICAgLTEyLjM5CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJjcm93ZGFzc2lnbmxheWVycyIKICAgIH0sCiAgICAiY3Jvd2Rtb3Rpb25wYXRoMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJjcm93ZGFzc2lnbmxheWVyczEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJmcmFtZXJhbmdlIjogWwogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgIDIyNywKICAgICAgICAgICAgICAgIDEKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm51bWFzc2lnbm1lbnRzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJjbGlwbmFtZXNlZWQjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiY2xpcG9mZnNldHNlZWQjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiY2xpcHNwZWVkIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMi42NTEsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJjbGlwc3BlZWRhdHRyaWIjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiY2xpcHNwZWVkbW9kZSMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICJ2YXJ5aW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImNsaXBzcGVlZHNlZWQjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiY2xpcHNwZWVkdmFyaWFuY2UjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAzMCwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImNsaXB0aW1ldW5pdHMjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiZ3JvdXAjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAiQG5hbWU9Y2FweWJhcmEqIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImdyb3VwdHlwZSMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJpbml0aWFsY2xpcHRpbWUjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAibnVtY2xpcHBhdHRlcm5zIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIm11bHRpcGFybXMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsaXBwYXR0ZXJuI18jIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAid2FsayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGlwd2VpZ2h0I18jIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAicmFuZG9tY2xpcG9mZnNldCMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJyYW5kb21pemVjbGlwdGltZSMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJzZXRpbml0aWFsY2xpcHRpbWUjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDMuNTcsCiAgICAgICAgICAgIC0xMy40MQogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiY3Jvd2Rtb3Rpb25wYXRoIgogICAgfSwKICAgICJjcm93ZG1vdGlvbnBhdGhhdm9pZDEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiY3Jvd2Rtb3Rpb25wYXRoMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImNyb3dkbW90aW9ucGF0aDEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAxLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJjcm93ZF9jb2xsaWRlciIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAyCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgIm1heHR1cm5yYXRlIjogMjcsCiAgICAgICAgICAgICJ0dXJuZGFtcGluZyI6IDIuNAogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAzLjU3LAogICAgICAgICAgICAtMTQuNzkKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImNyb3dkbW90aW9ucGF0aGF2b2lkIgogICAgfSwKICAgICJjcm93ZG1vdGlvbnBhdGhldmFsdWF0ZTEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiY3Jvd2Rtb3Rpb25wYXRoYXZvaWQxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiY3Jvd2Rtb3Rpb25wYXRoYXZvaWQxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMSwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDEKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAzLjU3LAogICAgICAgICAgICAtMTYuMDUKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImNyb3dkbW90aW9ucGF0aGV2YWx1YXRlIgogICAgfSwKICAgICJjcm93ZHNvdXJjZTEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAibWVyZ2UxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiVEVSUkFJTiIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAxCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImRlZmF1bHRzdGF0ZXNlZWQiOiAwLAogICAgICAgICAgICAiZm9yY2V0b3RhbCI6IHRydWUsCiAgICAgICAgICAgICJudW1hZ2VudHBhdHRlcm5zIjogMCwKICAgICAgICAgICAgIm51bWxheWVycGF0dGVybnMiOiAwLAogICAgICAgICAgICAibnVtc3RhdGVwYXR0ZXJucyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAic3RhdGVwYXR0ZXJuXyMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICJXYWxrIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInN0YXRld2VpZ2h0XyMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInJhbmRvbWl6ZWFnZW50IjogdHJ1ZSwKICAgICAgICAgICAgInJhbmRvbWl6ZWFnZW50c2VlZCI6IDIuOTksCiAgICAgICAgICAgICJyYW5kb21pemVjbGlwdGltZSI6IHRydWUsCiAgICAgICAgICAgICJyYW5kb21pemVkZWZhdWx0c3RhdGUiOiB0cnVlLAogICAgICAgICAgICAic2NhdHRlcmFnZW50IjogMTM1LAogICAgICAgICAgICAic2l6ZSI6IFsKICAgICAgICAgICAgICAgIDYwLAogICAgICAgICAgICAgICAgMTAKICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAzLjU3LAogICAgICAgICAgICAtMTEuMzkKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImNyb3dkc291cmNlOjozLjAiCiAgICB9LAogICAgImdyaWQxIjogewogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgInNpemUiOiBbCiAgICAgICAgICAgICAgICAxNiwKICAgICAgICAgICAgICAgIDI0CiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgOS44NiwKICAgICAgICAgICAgLTIuNjEKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImdyaWQiCiAgICB9LAogICAgImhhdF9wcmV2aWV3IjogewogICAgICAgICJmbGFncyI6IHsKICAgICAgICAgICAgImJ5cGFzcyI6IHRydWUKICAgICAgICB9LAogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImFnZW50X2hhdF9sYXllciIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImN1cnJlbnRsYXllciI6ICJoYXQgZGVmYXVsdCIsCiAgICAgICAgICAgICJlbmFibGVjdXJyZW50bGF5ZXIiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDEuMTIsCiAgICAgICAgICAgIC01LjQ5CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJhZ2VudGVkaXQiCiAgICB9LAogICAgIm1lcmdlMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJBR0VOVDEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJBR0VOVDIiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMQogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDIuMDMsCiAgICAgICAgICAgIC05Ljg5CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJtZXJnZSIKICAgIH0sCiAgICAibWVyZ2VwYWNrZWQxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogInBsYXRvbmljMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgIm5hbWVzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogImhhdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJ0cmVhdGFzZm9sZGVyIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInVzZWlucHV0IyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICA0LjgsCiAgICAgICAgICAgIC0xLjI1CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJtZXJnZXBhY2tlZCIKICAgIH0sCiAgICAibW90aW9uY2xpcDEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAidGVzdGdlb21ldHJ5X2NhcHliYXJhMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDIsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImZyYW1lcmFuZ2UiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iOiAiJEZTVEFSVCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAyMQogICAgICAgICAgICBdLAogICAgICAgICAgICAibGVmdGVuZGJlaGF2aW9yIjogImxvb3AiLAogICAgICAgICAgICAicmlnaHRlbmRiZWhhdmlvciI6ICJsb29wIiwKICAgICAgICAgICAgInVzZWZyYW1lcmFuZ2UiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDIuMjEsCiAgICAgICAgICAgIC0wLjEzCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJraW5lZng6Om1vdGlvbmNsaXAiCiAgICB9LAogICAgIm1vdW50YWluMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJzdWJkaXZpZGUxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiYW1wbGl0dWRlIjogMy4wMywKICAgICAgICAgICAgImF0dHJpYnMiOiAiUCIsCiAgICAgICAgICAgICJkaXNwbGFjZSI6IHRydWUsCiAgICAgICAgICAgICJlbGVtZW50c2l6ZSI6IDE2LjksCiAgICAgICAgICAgICJmcmFjdGFsIjogImhtZlQiLAogICAgICAgICAgICAibm9pc2VyYW5nZSI6ICJ6Y2VudGVyZWQiLAogICAgICAgICAgICAib2N0IjogOCwKICAgICAgICAgICAgInJvdWdoIjogMC40CiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDkuODYsCiAgICAgICAgICAgIC01LjI2CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJhdHRyaWJub2lzZTo6Mi4wIgogICAgfSwKICAgICJuYW1lMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJjb2xvcjEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJhdHRyaWJuYW1lIjogImFnZW50bmFtZSIsCiAgICAgICAgICAgICJjbGFzcyI6ICJwb2ludCIsCiAgICAgICAgICAgICJudW1uYW1lcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiZ3JvdXAjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAibmFtZSMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICJjYXB5YmFyYVJlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMy44MywKICAgICAgICAgICAgLTcuNzEKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogIm5hbWUiCiAgICB9LAogICAgInBsYXRvbmljMSI6IHsKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJyIjogWwogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDMyLAogICAgICAgICAgICAgICAgMAogICAgICAgICAgICBdLAogICAgICAgICAgICAicmFkaXVzIjogMC4yLAogICAgICAgICAgICAidCI6IFsKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLjEyLAogICAgICAgICAgICAgICAgMAogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDQuOCwKICAgICAgICAgICAgMC4xCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJwbGF0b25pYyIKICAgIH0sCiAgICAic3ViZGl2aWRlMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJ0cmFuc2Zvcm0iLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJpdGVyYXRpb25zIjogNAogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICA5Ljg2LAogICAgICAgICAgICAtNC4yOAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAic3ViZGl2aWRlIgogICAgfSwKICAgICJ0ZXN0Z2VvbWV0cnlfY2FweWJhcmExIjogewogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMS4xMiwKICAgICAgICAgICAgMS44NwogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAidGVzdGdlb21ldHJ5X2NhcHliYXJhIgogICAgfSwKICAgICJ0cmFuc2Zvcm0iOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiZ3JpZDEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJzIjogWwogICAgICAgICAgICAgICAgMC4yMSwKICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAxCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzY2FsZSI6IDEwLAogICAgICAgICAgICAidCI6IFsKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMzQuMjAwNTYzOTA3NjIzMjkKICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICA5Ljg2LAogICAgICAgICAgICAtMy4zNwogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAieGZvcm0iCiAgICB9Cn0=