-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
5.3.0: Array items perform much worse #3517
Comments
@MatinF I tried to re-create this in CodeSandbox and didn't notice issues with array performance https://codesandbox.io/s/rjsf-3517-repro-679s2u Can you create your own example or modify the above so we can get to the bottom of this (or clarify further how to see the issue if it is present in that example)? |
I've been trying to replicate your dependency setup in my own application, but struggling to achieve this due to some legacy dependencies. I recognize that there is not a performance issue in your sandbox, so I am not sure why there is on my side. The app I'm testing this with is below: You can install it by running I'm guessing the issue is related to some of the outdated dependencies I have, such as React As you can see if you decide to install the app, the performance is snappy with the default version of rjsf in the repository - but if you update to |
@MatinF Wow that a lot of code you've written. I don't really have time to analyze and inspect it all to find the issue for you. I'm wondering if you are experiencing an interaction in your own code with react rerendering? Have you been able to debug into the RJSF code to see if it is there? Also, I just fixed an issue in 5.5.1 that prevented infinite recursions when using a schema with recursive refs. Can you check to see if that helped. |
@heath-freenome @nickgros Only by updating |
I tested this with my own repository, |
From what you shared the problem started in |
@heath-freenome 5.0.0-beta.1 in my tests. You can check by only changing version in codesandbox |
@Cauen First off, I haven't had a chance to dig deep into your example yet. Basically you are saying that v5 has performance issues that v4 doesn't have. A lot changed between 4 and 5. Are you willing to slowly reduce the size/complexity of the schema in example until the performance issue seems to go away and then put back the bit that causes it? Or, better yet, are you able to debug the current codebase enough to find out where the issue is happening? I basically only get a few hours on the weekend to tackle stuff and this seems like a large thing to tackle. Thanks |
@heath-freenome Fully understand that this is a rather cumbersome thing to test. I did specifically go through each revision on my end and can confirm for certain that it starts after |
@MatinF Are you using
|
Hi again, Yes, we use both of those, see below:
I'm not sure how I would go about testing the impact of the OpenAPI discriminator you mention? As mentioned before, we have never had any performance issues at all until the specific update |
@MatinF So the release you have pointed to fixed a bug with If you were to check out the speed of your code before and after adding them, I would hope you will see a speed up of the UI |
Ok just to check: If I am to test the effect of this, would I be able to do so by simply disabling the liveOmit / omitExtraData and seeing if that suffices to fix the performance issues? If that helps, how would I enable the use of the Open API descriptor? I'm not familiar with this, so I am unsure if this is a built in feature of rjsf, or a separate project? |
Yes, turning off both of those flags should gain you performance. You need only add the open API descriptor to your schema and RJSF will detect and use it to speed up the selection of the oneOf based upon the single field. I can get on a discord call with you sometime to walk you through it if that helps. |
Hi again, Just as a bit of an update on this topic: We have been further investigating potential ways to resolve the issue with array items for our Rule Schema. However, in the more recent versions of the playground, it appears that the overall performance with our Rule Schema has completely tanked. As such, I think something more fundamental is going on in terms of how our type of Rule Schema is handled in the more recent releases. You can verify this via the playground link below. As you should be able to verify, simply entering a value in the first field (or any field) comes with a massive "lag" of multiple seconds. This is not at all the case in the version we're currently running our own app with (i.e. the versions up until and excluding I'm not sure it's the same thing causing this recently observed playground lag and the more array-related issue pointed out in this issue. However, I'm guessing there may be some related underlying factor - e.g. because our Schema may be considered "large" (87 kb) or heavily nested. Any inputs on this would be of great interest as we would like to be able to update to the latest versions, but the performance blocks this - now also evident from the playground itself https://rjsf-team.github.io/react-jsonschema-form/#eyJmb3JtRGF0YSI6eyJnZW5lcmFsIjp7ImRldmljZSI6eyJtZXRhIjoic3NzIn0sInNlY3VyaXR5Ijp7fSwiZGVidWciOnsic3lzbG9nIjowfX0sImxvZyI6eyJmaWxlIjp7InNwbGl0X3NpemUiOjUwLCJzcGxpdF90aW1lX3BlcmlvZCI6MCwic3BsaXRfdGltZV9vZmZzZXQiOjAsImN5Y2xpYyI6MX0sImNvbXByZXNzaW9uIjp7ImxldmVsIjowfSwiZW5jcnlwdGlvbiI6eyJzdGF0ZSI6MH0sImVycm9yX2ZyYW1lcyI6eyJzdGF0ZSI6MH19LCJydGMiOnsic3luYyI6MiwidGltZXpvbmUiOjAsImFkanVzdG1lbnQiOjAsInRvbGVyYW5jZSI6MzAsIm50cF9zZXJ2ZXIiOiIqLnBvb2wubnRwLm9yZyJ9LCJzZWNvbmRhcnlwb3J0Ijp7InBvd2VyX3NjaGVkdWxlIjpbXX0sImNhbl9pbnRlcm5hbCI6eyJnZW5lcmFsIjp7InJ4X3N0YXRlIjoxLCJ0eF9zdGF0ZSI6MX0sImZpbHRlciI6eyJpZCI6W3sic3RhdGUiOjEsInR5cGUiOjAsImlkX2Zvcm1hdCI6MCwibWV0aG9kIjowLCJmMSI6IjAiLCJmMiI6IjdGRiJ9XX0sImNvbnRyb2wiOnsiY29udHJvbF9yeF9zdGF0ZSI6MCwiY29udHJvbF90eF9zdGF0ZSI6MCwic3RhcnQiOnsibWVzc2FnZSI6eyJjaG4iOjAsImlkX2Zvcm1hdCI6MCwiaWQiOiIwIiwiaWRfbWFzayI6IjdGRiJ9LCJzaWduYWwiOnsidHlwZSI6MCwiYnl0ZW9yZGVyIjoxLCJiaXRwb3MiOjAsImxlbmd0aCI6MCwiZmFjdG9yIjowLCJvZmZzZXQiOjB9LCJ0cmlnZ2VyX2hpZ2giOjAsInRyaWdnZXJfbG93IjowfSwic3RvcCI6eyJtZXNzYWdlIjp7ImNobiI6MCwiaWRfZm9ybWF0IjowLCJpZCI6IjAiLCJpZF9tYXNrIjoiN0ZGIn0sInNpZ25hbCI6eyJ0eXBlIjowLCJieXRlb3JkZXIiOjEsImJpdHBvcyI6MCwibGVuZ3RoIjowLCJmYWN0b3IiOjAsIm9mZnNldCI6MH0sInRyaWdnZXJfaGlnaCI6MCwidHJpZ2dlcl9sb3ciOjB9fX0sImNhbl8xIjp7ImdlbmVyYWwiOnsicnhfc3RhdGUiOjEsInR4X3N0YXRlIjoxfSwicGh5Ijp7Im1vZGUiOjEsInJldHJhbnNtaXNzaW9uIjoxLCJmZF9zcGVjIjowLCJiaXRfcmF0ZV9jZmdfbW9kZSI6MH0sImZpbHRlciI6eyJyZW1vdGVfZnJhbWVzIjowLCJpZCI6W3sic3RhdGUiOjEsInR5cGUiOjAsImlkX2Zvcm1hdCI6MCwibWV0aG9kIjowLCJmMSI6IjAiLCJmMiI6IjdGRiJ9XX0sInRyYW5zbWl0IjpbXSwiaGVhcnRiZWF0Ijp7InN0YXRlIjowLCJpZF9mb3JtYXQiOjEsImlkIjoiMDA0MzUzNTMifSwiY29udHJvbCI6eyJjb250cm9sX3J4X3N0YXRlIjowLCJjb250cm9sX3R4X3N0YXRlIjowLCJzdGFydCI6eyJtZXNzYWdlIjp7ImNobiI6MCwiaWRfZm9ybWF0IjowLCJpZCI6IjAiLCJpZF9tYXNrIjoiN0ZGIn0sInNpZ25hbCI6eyJ0eXBlIjowLCJieXRlb3JkZXIiOjEsImJpdHBvcyI6MCwibGVuZ3RoIjowLCJmYWN0b3IiOjAsIm9mZnNldCI6MH0sInRyaWdnZXJfaGlnaCI6MCwidHJpZ2dlcl9sb3ciOjB9LCJzdG9wIjp7Im1lc3NhZ2UiOnsiY2huIjowLCJpZF9mb3JtYXQiOjAsImlkIjoiMCIsImlkX21hc2siOiI3RkYifSwic2lnbmFsIjp7InR5cGUiOjAsImJ5dGVvcmRlciI6MSwiYml0cG9zIjowLCJsZW5ndGgiOjAsImZhY3RvciI6MCwib2Zmc2V0IjowfSwidHJpZ2dlcl9oaWdoIjowLCJ0cmlnZ2VyX2xvdyI6MH19fSwiY2FuXzIiOnsiZ2VuZXJhbCI6eyJyeF9zdGF0ZSI6MSwidHhfc3RhdGUiOjF9LCJwaHkiOnsibW9kZSI6MSwicmV0cmFuc21pc3Npb24iOjEsImZkX3NwZWMiOjAsImJpdF9yYXRlX2NmZ19tb2RlIjowfSwiZmlsdGVyIjp7InJlbW90ZV9mcmFtZXMiOjAsImlkIjpbeyJzdGF0ZSI6MSwidHlwZSI6MCwiaWRfZm9ybWF0IjowLCJtZXRob2QiOjAsImYxIjoiMCIsImYyIjoiN0ZGIn1dfSwidHJhbnNtaXQiOltdLCJoZWFydGJlYXQiOnsic3RhdGUiOjAsImlkX2Zvcm1hdCI6MSwiaWQiOiIwMDQzNTM1MyJ9LCJjb250cm9sIjp7ImNvbnRyb2xfcnhfc3RhdGUiOjAsImNvbnRyb2xfdHhfc3RhdGUiOjAsInN0YXJ0Ijp7Im1lc3NhZ2UiOnsiY2huIjowLCJpZF9mb3JtYXQiOjAsImlkIjoiMCIsImlkX21hc2siOiI3RkYifSwic2lnbmFsIjp7InR5cGUiOjAsImJ5dGVvcmRlciI6MSwiYml0cG9zIjowLCJsZW5ndGgiOjAsImZhY3RvciI6MCwib2Zmc2V0IjowfSwidHJpZ2dlcl9oaWdoIjowLCJ0cmlnZ2VyX2xvdyI6MH0sInN0b3AiOnsibWVzc2FnZSI6eyJjaG4iOjAsImlkX2Zvcm1hdCI6MCwiaWQiOiIwIiwiaWRfbWFzayI6IjdGRiJ9LCJzaWduYWwiOnsidHlwZSI6MCwiYnl0ZW9yZGVyIjoxLCJiaXRwb3MiOjAsImxlbmd0aCI6MCwiZmFjdG9yIjowLCJvZmZzZXQiOjB9LCJ0cmlnZ2VyX2hpZ2giOjAsInRyaWdnZXJfbG93IjowfX19LCJsaW5fMSI6eyJwaHkiOnsibW9kZSI6MCwiYml0X3JhdGUiOjE5MjAwfSwiZnJhbWVzIjpbXSwidHJhbnNtaXQiOltdfSwibGluXzIiOnsicGh5Ijp7Im1vZGUiOjAsImJpdF9yYXRlIjoxOTIwMH0sImZyYW1lcyI6W10sInRyYW5zbWl0IjpbXX0sImNvbm5lY3QiOnsid2lmaSI6eyJtb2RlIjowLCJrZXlmb3JtYXQiOjAsImFjY2Vzc3BvaW50IjpbXX0sInMzIjp7InN5bmMiOnsib3RhIjo2MDAsImhlYXJ0YmVhdCI6MzAwLCJsb2dmaWxlcyI6MX0sInNlcnZlciI6eyJyZXF1ZXN0X3N0eWxlIjowLCJrZXlmb3JtYXQiOjAsInNpZ25lZF9wYXlsb2FkIjowfX19LCJ0ZXN0X29iamVjdCI6eyJteV9zdHJpbmdfZmllbGQiOiIifX0sInNjaGVtYSI6eyJ0eXBlIjoib2JqZWN0IiwiZGVmaW5pdGlvbnMiOnsiY2FuX21lc3NhZ2UiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiY2huIjp7InRpdGxlIjoiQ2hhbm5lbCIsImRlc2NyaXB0aW9uIjoiQ0FOLWJ1cyBjaGFubmVsIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjowLCJvbmVPZiI6W3sidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkNBTiBpbnRlcm5hbCIsImVudW0iOlswXX0seyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiQ0FOIDEiLCJlbnVtIjpbMV19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkNBTiAyIiwiZW51bSI6WzJdfV19LCJpZF9mb3JtYXQiOnsidGl0bGUiOiJJRCBmb3JtYXQiLCJkZXNjcmlwdGlvbiI6IklEIGZvcm1hdCBvZiBtZXNzYWdlLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MCwib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJTdGFuZGFyZCAoMTEtYml0KSIsImVudW0iOlswXX0seyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRXh0ZW5kZWQgKDI5LWJpdCkiLCJlbnVtIjpbMV19XX0sImlkIjp7InRpdGxlIjoiSUQgKGhleCkiLCJkZXNjcmlwdGlvbiI6IklEIG9mIG1lc3NhZ2UgaW4gaGV4LiBFeGFtcGxlOiAxRkYuIiwidHlwZSI6InN0cmluZyIsImRlZmF1bHQiOiIwIn0sImlkX21hc2siOnsidGl0bGUiOiJJRCBtYXNrIChoZXgpIiwiZGVzY3JpcHRpb24iOiJJRCBtYXNrIGluIGhleC4gRXhhbXBsZTogN0ZGLiIsInR5cGUiOiJzdHJpbmciLCJkZWZhdWx0IjoiN0ZGIn19LCJkZXBlbmRlbmNpZXMiOnsiaWRfZm9ybWF0Ijp7Im9uZU9mIjpbeyJwcm9wZXJ0aWVzIjp7ImlkX2Zvcm1hdCI6eyJlbnVtIjpbMF19LCJpZCI6eyJwYXR0ZXJuIjoiXihbMC03XVthLWZBLUYwLTldezJ9fFthLWZBLUYwLTldezEsMn0pJCIsIm1heExlbmd0aCI6M30sImlkX21hc2siOnsicGF0dGVybiI6Il4oWzAtN11bYS1mQS1GMC05XXsyfXxbYS1mQS1GMC05XXsxLDJ9KSQiLCJtYXhMZW5ndGgiOjN9fX0seyJwcm9wZXJ0aWVzIjp7ImlkX2Zvcm1hdCI6eyJlbnVtIjpbMV19LCJpZCI6eyJwYXR0ZXJuIjoiXihbMC0xXVthLWZBLUYwLTldezd9fFthLWZBLUYwLTldezEsN30pJCIsIm1heExlbmd0aCI6OH0sImlkX21hc2siOnsicGF0dGVybiI6Il4oWzAtMV1bYS1mQS1GMC05XXs3fXxbYS1mQS1GMC05XXsxLDd9KSQiLCJtYXhMZW5ndGgiOjh9fX1dfX0sImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjpmYWxzZSwicmVxdWlyZWQiOlsiY2huIiwiaWRfZm9ybWF0IiwiaWQiLCJpZF9tYXNrIl19LCJjYW5fc2lnbmFsIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InR5cGUiOnsidGl0bGUiOiJTaWduYWwgdHlwZSIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MCwib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJVbnNpZ25lZCIsImVudW0iOlswXX1dfSwiYnl0ZW9yZGVyIjp7InRpdGxlIjoiU2lnbmFsIGJ5dGVvcmRlciIsImRlc2NyaXB0aW9uIjoiQ2FuIGJlIE1vdG9yb2xhIChiaWcgZW5kaWFuKSBvciBJbnRlbCAobGl0dGxlIGVuZGlhbikiLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjEsIm9uZU9mIjpbeyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiTW90b3JvbGEiLCJlbnVtIjpbMF19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkludGVsIiwiZW51bSI6WzFdfV19LCJiaXRwb3MiOnsidGl0bGUiOiJTaWduYWwgYml0IHBvc2l0aW9uIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjowLCJtaW5pbXVtIjowLCJtYXhpbXVtIjo1MTJ9LCJsZW5ndGgiOnsidGl0bGUiOiJTaWduYWwgYml0IGxlbmd0aCIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MCwibWluaW11bSI6MCwibWF4aW11bSI6NjR9LCJmYWN0b3IiOnsidGl0bGUiOiJTaWduYWwgc2NhbGluZyIsInR5cGUiOiJudW1iZXIiLCJkZWZhdWx0IjowfSwib2Zmc2V0Ijp7InRpdGxlIjoiU2lnbmFsIG9mZnNldCIsInR5cGUiOiJudW1iZXIiLCJkZWZhdWx0IjowfX0sImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjpmYWxzZSwicmVxdWlyZWQiOlsidHlwZSIsImJ5dGVvcmRlciIsImJpdHBvcyIsImxlbmd0aCIsImZhY3RvciIsIm9mZnNldCJdfSwiY2FuX2NvbnRyb2xfc3RhcnRzdG9wIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7Im1lc3NhZ2UiOnsidGl0bGUiOiJNZXNzYWdlIiwiJHJlZiI6IiMvZGVmaW5pdGlvbnMvY2FuX21lc3NhZ2UifSwic2lnbmFsIjp7InRpdGxlIjoiU2lnbmFsIiwiJHJlZiI6IiMvZGVmaW5pdGlvbnMvY2FuX3NpZ25hbCJ9LCJ0cmlnZ2VyX2hpZ2giOnsidGl0bGUiOiJUcmlnZ2VyIGhpZ2ggKGRlYykiLCJ0eXBlIjoibnVtYmVyIiwiZGVmYXVsdCI6MH0sInRyaWdnZXJfbG93Ijp7InRpdGxlIjoiVHJpZ2dlciBsb3cgKGRlYykiLCJ0eXBlIjoibnVtYmVyIiwiZGVmYXVsdCI6MH19LCJhZGRpdGlvbmFsUHJvcGVydGllcyI6ZmFsc2UsInJlcXVpcmVkIjpbIm1lc3NhZ2UiLCJzaWduYWwiLCJ0cmlnZ2VyX2hpZ2giLCJ0cmlnZ2VyX2xvdyJdfSwiY2FuX2ZpbHRlcl9pZCI6eyJ0aXRsZSI6IklEIGZpbHRlcnMiLCJ0eXBlIjoiYXJyYXkiLCJtaW5JdGVtcyI6MSwiaXRlbXMiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJ0aXRsZSI6Ik5hbWUiLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsIGZpbHRlciBuYW1lLiIsInR5cGUiOiJzdHJpbmciLCJwYXR0ZXJuIjoiXlsgLX5dKiQiLCJtYXhMZW5ndGgiOjE2fSwic3RhdGUiOnsidGl0bGUiOiJTdGF0ZSIsImRlc2NyaXB0aW9uIjoiRGlzYWJsZWQgZmlsdGVycyBhcmUgaWdub3JlZC4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjEsIm9uZU9mIjpbeyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRGlzYWJsZSIsImVudW0iOlswXX0seyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRW5hYmxlIiwiZW51bSI6WzFdfV19LCJ0eXBlIjp7InRpdGxlIjoiVHlwZSIsImRlc2NyaXB0aW9uIjoiQWN0aW9uIG9uIG1hdGNoLCBhY2NlcHQgb3IgcmVqZWN0IG1lc3NhZ2UuIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjowLCJvbmVPZiI6W3sidGl0bGUiOiJBY2NlcHRhbmNlIiwiZW51bSI6WzBdfSx7InRpdGxlIjoiUmVqZWN0aW9uIiwiZW51bSI6WzFdfV19LCJpZF9mb3JtYXQiOnsidGl0bGUiOiJJRCBmb3JtYXQiLCJkZXNjcmlwdGlvbiI6IkZpbHRlciBJRCBmb3JtYXQuIEZpbHRlcnMgYXBwbHkgdG8gbWVzc2FnZXMgd2l0aCBtYXRjaGluZyBJRCBmb3JtYXQuIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjowLCJvbmVPZiI6W3sidGl0bGUiOiJTdGFuZGFyZCAoMTEtYml0KSIsImVudW0iOlswXX0seyJ0aXRsZSI6IkV4dGVuZGVkICgyOS1iaXQpIiwiZW51bSI6WzFdfV19LCJtZXRob2QiOnsidGl0bGUiOiJGaWx0ZXIgbWV0aG9kIiwiZGVzY3JpcHRpb24iOiJUaGUgZmlsdGVyIElEIG1hdGNoaW5nIG1lY2hhbmlzbS4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjAsIm9uZU9mIjpbeyJ0aXRsZSI6IlJhbmdlIiwiZW51bSI6WzBdLCJkZXNjcmlwdGlvbiI6IklEIHJhbmdlcyJ9LHsidGl0bGUiOiJNYXNrIiwiZW51bSI6WzFdLCJkZXNjcmlwdGlvbiI6IklEIG1hc2tpbmcifV19LCJmMSI6eyJ0aXRsZSI6IkZyb20gKHJhbmdlKSAvIElEIChtYXNrKSAoSEVYKSIsImRlc2NyaXB0aW9uIjoiSWYgZmlsdGVyIG1ldGhvZCBpcyBSYW5nZSwgdGhpcyBmaWVsZCBkZWZpbmVzIHRoZSBzdGFydCBvZiByYW5nZS4gSWYgZmlsdGVyIG1ldGhvZCBpcyBNYXNrLCB0aGlzIGZpZWxkIGRlZmluZXMgdGhlIGZpbHRlciBJRC4iLCJ0eXBlIjoic3RyaW5nIiwicGF0dGVybiI6Il5bYS1mQS1GMC05XSskIiwibWF4TGVuZ3RoIjo4LCJkZWZhdWx0IjoiMCJ9LCJmMiI6eyJ0aXRsZSI6IlRvIChyYW5nZSkgLyBtYXNrIChtYXNrKSAoSEVYKSIsImRlc2NyaXB0aW9uIjoiSWYgZmlsdGVyIG1ldGhvZCBpcyBSYW5nZSwgdGhpcyBmaWVsZCBkZWZpbmVzIHRoZSBlbmQgb2YgcmFuZ2UuIElmIGZpbHRlciBtZXRob2QgaXMgTWFzaywgdGhpcyBmaWVsZCBkZWZpbmVzIHRoZSBmaWx0ZXIgbWFzay4iLCJ0eXBlIjoic3RyaW5nIiwicGF0dGVybiI6Il5bYS1mQS1GMC05XSskIiwibWF4TGVuZ3RoIjo4LCJkZWZhdWx0IjoiN0ZGIn19LCJkZXBlbmRlbmNpZXMiOnsidHlwZSI6eyJvbmVPZiI6W3sicHJvcGVydGllcyI6eyJ0eXBlIjp7ImVudW0iOlswXX0sInByZXNjYWxlcl90eXBlIjp7InRpdGxlIjoiUHJlc2NhbGluZyB0eXBlIiwiZGVzY3JpcHRpb24iOiJTZWxlY3QgcHJlc2NhbGluZyB0eXBlLiBQcmVzY2FsZSBieSBtZXNzYWdlIGNvdW50LCB0aW1lIG9yIGRhdGEuIFNlbGVjdCBOb25lIHRvIGRpc2FibGUgcHJlc2NhbGluZy4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjAsIm9uZU9mIjpbeyJ0aXRsZSI6Ik5vbmUiLCJlbnVtIjpbMF19LHsidGl0bGUiOiJDb3VudCIsImVudW0iOlsxXX0seyJ0aXRsZSI6IlRpbWUiLCJlbnVtIjpbMl19LHsidGl0bGUiOiJEYXRhIiwiZW51bSI6WzNdfV19fSwiZGVwZW5kZW5jaWVzIjp7InByZXNjYWxlcl90eXBlIjp7Im9uZU9mIjpbeyJwcm9wZXJ0aWVzIjp7InByZXNjYWxlcl90eXBlIjp7ImVudW0iOlswXX19fSx7InByb3BlcnRpZXMiOnsicHJlc2NhbGVyX3R5cGUiOnsiZW51bSI6WzFdfSwicHJlc2NhbGVyX3ZhbHVlIjp7InRpdGxlIjoiQ291bnQiLCJ0eXBlIjoiaW50ZWdlciIsImRlc2NyaXB0aW9uIjoiQ291bnQgcHJlc2NhbGVyIHZhbHVlLiBFeGFtcGxlOiBTZXQgdG8gMiB0byBzYW1wbGUgYSBtZXNzYWdlIHdpdGggYSBzcGVjaWZpYyBJRCBldmVyeSBzZWNvbmQgdGltZS4iLCJkZWZhdWx0IjoxLCJtaW5pbXVtIjoxLCJtYXhpbXVtIjoyNTZ9fSwicmVxdWlyZWQiOlsicHJlc2NhbGVyX3ZhbHVlIl19LHsicHJvcGVydGllcyI6eyJwcmVzY2FsZXJfdHlwZSI6eyJlbnVtIjpbMl19LCJwcmVzY2FsZXJfdmFsdWUiOnsidGl0bGUiOiJUaW1lIiwiZGVzY3JpcHRpb24iOiJUaW1lIHByZXNjYWxlciB2YWx1ZSBpbiBtaWxsaXNlY29uZHMuIEV4YW1wbGU6IFNldCB0byAxMDAwIHRvIHNhbXBsZSBhIG1lc3NhZ2Ugd2l0aCBhIHNwZWNpZmljIElEIHdpdGggYSBtaW5pbXVtIHBlcmlvZCB0aW1lIG9mIDEgc2Vjb25kLiBOb3RlIHRoYXQgbWVzc2FnZXMgYXJlIG5vdCByZXNhbXBsZWQgdG8gYSBzcGVjaWZpYyBmaXhlZCBwZXJpb2QgdGltZS4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjEsIm1pbmltdW0iOjEsIm1heGltdW0iOjQxOTQzMDR9fSwicmVxdWlyZWQiOlsicHJlc2NhbGVyX3ZhbHVlIl19LHsicHJvcGVydGllcyI6eyJwcmVzY2FsZXJfdHlwZSI6eyJlbnVtIjpbM119LCJwcmVzY2FsZXJfdmFsdWUiOnsidGl0bGUiOiJNYXNrIiwiZGVzY3JpcHRpb24iOiJEYXRhIHByZXNjYWxlciBtYXNrIHZhbHVlIGluIGhleC4gRWFjaCBiaXQgY29ycmVzcG9uZHMgdG8gYSBkYXRhIGJ5dGUgKHVwIHRvIDY0IGJ5dGVzKS4gTGVhdmUgZW1wdHkgdG8gZGlzYWJsZSB0aGUgbWFzayAodHJpZ2dlcnMgb24gYW55IGRhdGEgY2hhbmdlKS4gRXhhbXBsZSAxOiBTZXQgdG8gRkYgKDBiMTExMTExMTEpIHRvIHNhbXBsZSBhIG1lc3NhZ2Ugd2l0aCBhIHNwZWNpZmljIElEIGlmIGFueSBvZiB0aGUgZmlyc3QgOCBkYXRhIGJ5dGVzIGNoYW5nZS4gRXhhbXBsZSAyOiBTZXQgdG8gMDMgKDBiMDAwMDAwMTEpIHRvIHNhbXBsZSBpZiBhbnkgb2YgdGhlIHR3byBmaXJzdCBkYXRhIGJ5dGVzIGNoYW5nZS4gRXhhbXBsZSAzOiBTZXQgdG8gOSAoMGIwMDAwMTAwMSkgdG8gc2FtcGxlIGlmIGFueSBvZiB0aGUgZmlyc3Qgb3IgZm91cnRoIGRhdGEgYnl0ZXMgY2hhbmdlLiIsInR5cGUiOiJzdHJpbmciLCJkZWZhdWx0IjoiRkYiLCJwYXR0ZXJuIjoiXlthLWZBLUYwLTldKiQiLCJtYXhMZW5ndGgiOjE2fX19XX19LCJyZXF1aXJlZCI6WyJwcmVzY2FsZXJfdHlwZSJdfSx7InByb3BlcnRpZXMiOnsidHlwZSI6eyJlbnVtIjpbMV19fX1dfX0sImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjpmYWxzZSwicGF0dGVyblByb3BlcnRpZXMiOnsicHJlc2NhbGVyX3R5cGUiOnt9LCJwcmVzY2FsZXJfdmFsdWUiOnt9fSwicmVxdWlyZWQiOlsic3RhdGUiLCJ0eXBlIiwiaWRfZm9ybWF0IiwibWV0aG9kIiwiZjEiLCJmMiJdfX0sImNhbl9nZW5lcmFsIjp7InRpdGxlIjoiR2VuZXJhbCIsImRlc2NyaXB0aW9uIjoiQ0FOIGJ1cyBnZW5lcmFsIGNvbmZpZ3VyYXRpb24iLCJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJyeF9zdGF0ZSI6eyJ0aXRsZSI6IlJlY2VwdGlvbiAocngpIGluaXRpYWwgc3RhdGUiLCJkZXNjcmlwdGlvbiI6IlRoZSBpbml0aWFsIHN0YXRlIG9mIENBTi1idXMgcmVjZXB0aW9uLiBDYW4gYmUgY2hhbmdlZCB1c2luZyB0aGUgY29udHJvbCBzaWduYWwuIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjoxLCJvbmVPZiI6W3sidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkRpc2FibGUiLCJlbnVtIjpbMF19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkVuYWJsZSIsImVudW0iOlsxXX1dfSwidHhfc3RhdGUiOnsidGl0bGUiOiJUcmFuc21pc3Npb24gKHR4KSBpbml0aWFsIHN0YXRlIiwiZGVzY3JpcHRpb24iOiJUaGUgaW5pdGlhbCBzdGF0ZSBvZiBDQU4tYnVzIHRyYW5zbWlzc2lvbnMuIENhbiBiZSBjaGFuZ2VkIHVzaW5nIHRoZSBjb250cm9sIHNpZ25hbC4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjEsIm9uZU9mIjpbeyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRGlzYWJsZSIsImVudW0iOlswXX0seyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRW5hYmxlIiwiZW51bSI6WzFdfV19fSwiYWRkaXRpb25hbFByb3BlcnRpZXMiOmZhbHNlLCJyZXF1aXJlZCI6WyJyeF9zdGF0ZSIsInR4X3N0YXRlIl19LCJjYW5fY29udHJvbCI6eyJ0aXRsZSI6IkNvbnRyb2wiLCJkZXNjcmlwdGlvbiI6IkNvbnRyb2wgc2lnbmFsIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiY29udHJvbF9yeF9zdGF0ZSI6eyJ0aXRsZSI6IkNvbnRyb2wgcmVjZXB0aW9uIChyeCkgc3RhdGUiLCJkZXNjcmlwdGlvbiI6IkNvbnRyb2wgQ0FOLWJ1cyByZWNlcHRpb24gc3RhdGUgKGluY2x1ZGluZyBsb2dnaW5nKSAiLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjAsIm9uZU9mIjpbeyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRGlzYWJsZSIsImVudW0iOlswXX0seyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRW5hYmxlIiwiZW51bSI6WzFdfV19LCJjb250cm9sX3R4X3N0YXRlIjp7InRpdGxlIjoiQ29udHJvbCB0cmFuc21pc3Npb24gKHR4KSBzdGF0ZSIsImRlc2NyaXB0aW9uIjoiQ29udHJvbCBDQU4tYnVzIHRyYW5zbWlzc2lvbiBzdGF0ZSAoaW5jbHVkaW5nIGxvZ2dpbmcpICIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MCwib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJEaXNhYmxlIiwiZW51bSI6WzBdfSx7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJFbmFibGUiLCJlbnVtIjpbMV19XX0sInN0YXJ0Ijp7InRpdGxlIjoiU3RhcnQiLCIkcmVmIjoiIy9kZWZpbml0aW9ucy9jYW5fY29udHJvbF9zdGFydHN0b3AifSwic3RvcCI6eyJ0aXRsZSI6IlN0b3AiLCIkcmVmIjoiIy9kZWZpbml0aW9ucy9jYW5fY29udHJvbF9zdGFydHN0b3AifX0sInJlcXVpcmVkIjpbImNvbnRyb2xfcnhfc3RhdGUiLCJjb250cm9sX3R4X3N0YXRlIiwic3RhcnQiLCJzdG9wIl19LCJjYW4iOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiZ2VuZXJhbCI6eyIkcmVmIjoiIy9kZWZpbml0aW9ucy9jYW5fZ2VuZXJhbCJ9LCJwaHkiOnsidGl0bGUiOiJQaHlzaWNhbCAoQ0FOIGJ1cyBsb3ctbGV2ZWwpIiwiZGVzY3JpcHRpb24iOiJDQU4gYnVzIGxvdy1sZXZlbCBjb25maWd1cmF0aW9uIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsibW9kZSI6eyJ0aXRsZSI6Ik1vZGUiLCJkZXNjcmlwdGlvbiI6IkRldmljZSBDQU4gYnVzIG1vZGUuIENvbmZpZ3VyZXMgaG93IHRoZSBkZXZpY2UgaW50ZXJhY3RzIHdpdGggdGhlIGJ1cy4gSW4gTm9ybWFsIG1vZGUsIHRoZSBkZXZpY2UgY2FuIHJlY2VpdmUsIGFja25vd2xlZGdlIGFuZCB0cmFuc21pdCBmcmFtZXMuIEluIFJlc3RyaWN0ZWQgbW9kZSwgdGhlIGRldmljZSBjYW4gcmVjZWl2ZSBhbmQgYWNrbm93bGVkZ2UsIGJ1dCBub3QgdHJhbnNtaXQgZnJhbWVzLiBJbiBCdXMgTW9uaXRvcmluZyBtb2RlLCB0aGUgZGV2aWNlIGNhbiByZWNlaXZlLCBidXQgbm90IGFja25vd2xlZGdlIG9yIHRyYW5zbWl0IGZyYW1lcy4gSXQgaXMgcmVjb21tZW5kZWQgdG8gYWx3YXlzIHVzZSB0aGUgbW9zdCByZXN0cmljdGl2ZSBtb2RlIHBvc3NpYmxlLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MSwib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJOb3JtYWwgKHJlY2VpdmUsIGFja25vd2xlZGdlIGFuZCB0cmFuc21pdCkiLCJlbnVtIjpbMF19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IlJlc3RyaWN0ZWQgKHJlY2VpdmUgYW5kIGFja25vd2xlZGdlKSIsImVudW0iOlsxXX0seyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiTW9uaXRvcmluZyAocmVjZWl2ZSBvbmx5KSIsImVudW0iOlsyXX1dfSwicmV0cmFuc21pc3Npb24iOnsidGl0bGUiOiJBdXRvbWF0aWMgcmV0cmFuc21pc3Npb24iLCJkZXNjcmlwdGlvbiI6IlJldHJhbnNtaXNzaW9uIG9mIGZyYW1lcyB0aGF0IGhhdmUgbG9zdCBhcmJpdHJhdGlvbiBvciB0aGF0IGhhdmUgYmVlbiBkaXN0dXJiZWQgYnkgZXJyb3JzIGR1cmluZyB0cmFuc21pc3Npb24uIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjoxLCJvbmVPZiI6W3sidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkRpc2FibGUiLCJlbnVtIjpbMF19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkVuYWJsZSIsImVudW0iOlsxXX1dfSwiZmRfc3BlYyI6eyJ0aXRsZSI6IkNBTiBGRCBzcGVjaWZpY2F0aW9uIiwiZGVzY3JpcHRpb24iOiJDb25maWd1cmVzIHRoZSBDQU4gRkQgc3BlY2lmaWNhdGlvbiB1c2VkIGJ5IHRoZSBkZXZpY2UuIFNoYWxsIG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uIHVzZWQgYnkgdGhlIENBTiBidXMgbmV0d29yay4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjAsIm9uZU9mIjpbeyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiIElTTyBDQU4gRkQgKDExODk4LTEpIiwiZW51bSI6WzBdfSx7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJub24tSVNPIENBTiBGRCAoQm9zY2ggVjEuMC4pIiwiZW51bSI6WzFdfV19LCJiaXRfcmF0ZV9jZmdfbW9kZSI6eyJ0aXRsZSI6IkJpdC1yYXRlIGNvbmZpZ3VyYXRpb24gbW9kZSIsImRlc2NyaXB0aW9uIjoiQ29uZmlndXJlcyBob3cgdGhlIENBTiBidXMgYml0LXJhdGUgaXMgc2V0LiBNb2RlcyBBdXRvLWRldGVjdCBhbmQgQml0LXJhdGUgc3VwcG9ydCBhbGwgc3RhbmRhcmQgYml0LXJhdGVzLiBOb24tc3RhbmRhcmQgYml0LXJhdGUgY29uZmlndXJhdGlvbiBjYW4gYmUgc2V0IHVzaW5nIEJpdC10aW1pbmcuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHNldCB0aGUgYml0LXJhdGUgbWFudWFsbHkgaWYgaXQgaXMga25vd24uIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjowLCJvbmVPZiI6W3sidGl0bGUiOiJBdXRvLWRldGVjdCIsImVudW0iOlswXX0seyJ0aXRsZSI6IkJpdC1yYXRlIChzaW1wbGUpIiwiZW51bSI6WzFdfSx7InRpdGxlIjoiQml0LXRpbWluZyAoYWR2YW5jZWQpIiwiZW51bSI6WzJdfV19fSwiZGVwZW5kZW5jaWVzIjp7ImJpdF9yYXRlX2NmZ19tb2RlIjp7Im9uZU9mIjpbeyJwcm9wZXJ0aWVzIjp7ImJpdF9yYXRlX2NmZ19tb2RlIjp7ImVudW0iOlswXX19fSx7InByb3BlcnRpZXMiOnsiYml0X3JhdGVfY2ZnX21vZGUiOnsiZW51bSI6WzFdfSwiYml0X3JhdGVfc3RkIjp7InRpdGxlIjoiQml0LXJhdGUgc3RhbmRhcmQiLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjI1MDAwMCwib25lT2YiOlt7InRpdGxlIjoiNUsiLCJlbnVtIjpbNTAwMF19LHsidGl0bGUiOiIxMEsiLCJlbnVtIjpbMTAwMDBdfSx7InRpdGxlIjoiMjBLIiwiZW51bSI6WzIwMDAwXX0seyJ0aXRsZSI6IjMzLjMzM0siLCJlbnVtIjpbMzMzMzNdfSx7InRpdGxlIjoiNDcuNjE5SyIsImVudW0iOls0NzYxOV19LHsidGl0bGUiOiI1MEsiLCJlbnVtIjpbNTAwMDBdfSx7InRpdGxlIjoiODMuMzMzSyIsImVudW0iOls4MzMzM119LHsidGl0bGUiOiI5NS4yMzhLIiwiZW51bSI6Wzk1MjM4XX0seyJ0aXRsZSI6IjEwMEsiLCJlbnVtIjpbMTAwMDAwXX0seyJ0aXRsZSI6IjEyNUsiLCJlbnVtIjpbMTI1MDAwXX0seyJ0aXRsZSI6IjI1MEsiLCJlbnVtIjpbMjUwMDAwXX0seyJ0aXRsZSI6IjUwMEsiLCJlbnVtIjpbNTAwMDAwXX0seyJ0aXRsZSI6IjgwMEsiLCJlbnVtIjpbODAwMDAwXX0seyJ0aXRsZSI6IjFNIiwiZW51bSI6WzEwMDAwMDBdfV19LCJiaXRfcmF0ZV9mZCI6eyJ0aXRsZSI6IkJpdC1yYXRlIEZEIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjoxMDAwMDAwLCJvbmVPZiI6W3sidGl0bGUiOiIxTSIsImVudW0iOlsxMDAwMDAwXX0seyJ0aXRsZSI6IjJNIiwiZW51bSI6WzIwMDAwMDBdfSx7InRpdGxlIjoiNE0iLCJlbnVtIjpbNDAwMDAwMF19XX19LCJyZXF1aXJlZCI6WyJiaXRfcmF0ZV9zdGQiLCJiaXRfcmF0ZV9mZCJdfSx7InByb3BlcnRpZXMiOnsiYml0X3JhdGVfY2ZnX21vZGUiOnsiZW51bSI6WzJdfSwiYml0X3JhdGVfc3RkIjp7InRpdGxlIjoiQml0LXRpbWluZyBzdGFuZGFyZCIsInR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImJycCI6eyJ0aXRsZSI6IkJSUCAoQml0IFJhdGUgUHJlc2NhbGVyKSIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MiwibWluaW11bSI6MX0sInNlZzEiOnsidGl0bGUiOiJTRUcxIChUaW1lIFNlZ21lbnQgMSApIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0Ijo2MywibWluaW11bSI6MX0sInNlZzIiOnsidGl0bGUiOiJTRUcyIChUaW1lIFNlZ21lbnQgMikiLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjE2LCJtaW5pbXVtIjoyfSwic2p3Ijp7InRpdGxlIjoiU0pXIChTeW5jaHJvbml6YXRpb24gSnVtcCBXaWR0aCkiLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjQsIm1pbmltdW0iOjAsIm1heGltdW0iOjR9fSwiYWRkaXRpb25hbFByb3BlcnRpZXMiOmZhbHNlLCJyZXF1aXJlZCI6WyJicnAiLCJzZWcxIiwic2VnMiIsInNqdyJdfSwiYml0X3JhdGVfZmQiOnsidGl0bGUiOiJCaXQtdGltaW5nIEZEIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiYnJwIjp7InRpdGxlIjoiQlJQIChCaXQgUmF0ZSBQcmVzY2FsZXIpIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjoxLCJtaW5pbXVtIjoxfSwic2VnMSI6eyJ0aXRsZSI6IlNFRzEgKFRpbWUgU2VnbWVudCAxKSIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MzEsIm1pbmltdW0iOjF9LCJzZWcyIjp7InRpdGxlIjoiU0VHMiAoVGltZSBTZWdtZW50IDIpIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0Ijo4LCJtaW5pbXVtIjoyfSwic2p3Ijp7InRpdGxlIjoiU0pXIChTeW5jaHJvbml6YXRpb24gSnVtcCBXaWR0aCkiLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjQsIm1pbmltdW0iOjAsIm1heGltdW0iOjR9fSwiYWRkaXRpb25hbFByb3BlcnRpZXMiOmZhbHNlLCJyZXF1aXJlZCI6WyJicnAiLCJzZWcxIiwic2VnMiIsInNqdyJdfX0sInJlcXVpcmVkIjpbImJpdF9yYXRlX3N0ZCIsImJpdF9yYXRlX2ZkIl19XX19LCJhZGRpdGlvbmFsUHJvcGVydGllcyI6ZmFsc2UsInBhdHRlcm5Qcm9wZXJ0aWVzIjp7ImJpdF9yYXRlX3N0ZCI6e30sImJpdF9yYXRlX2ZkIjp7fX0sInJlcXVpcmVkIjpbIm1vZGUiLCJyZXRyYW5zbWlzc2lvbiIsImZkX3NwZWMiLCJiaXRfcmF0ZV9jZmdfbW9kZSJdfSwiZmlsdGVyIjp7InRpdGxlIjoiUmVjZWl2ZSBmaWx0ZXJzIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsicmVtb3RlX2ZyYW1lcyI6eyJ0aXRsZSI6IkZpbHRlciByZW1vdGUgcmVxdWVzdCBmcmFtZXMiLCJkZXNjcmlwdGlvbiI6IkNvbnRyb2xzIGlmIHJlbW90ZSByZXF1ZXN0IGZyYW1lcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBtZXNzYWdlIGZpbHRlcnMuIElmIGBSZWplY3RgIGlzIHNlbGVjdGVkLCByZW1vdGUgcmVxdWVzdCBmcmFtZXMgYXJlIGRpc2NhcmRlZCBiZWZvcmUgdGhleSByZWFjaCB0aGUgbWVzc2FnZSBmaWx0ZXJzLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MCwib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJSZWplY3QiLCJlbnVtIjpbMF19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkFjY2VwdCIsImVudW0iOlsxXX1dfSwiaWQiOnsiZGVzY3JpcHRpb24iOiJGaWx0ZXJzIGFyZSBjaGVja2VkIHNlcXVlbnRpYWxseSwgZXhlY3V0aW9uIHN0b3BzIHdpdGggdGhlIGZpcnN0IG1hdGNoaW5nIGZpbHRlciBlbGVtZW50LiBNYXggMTI4IDExLWJpdCBmaWx0ZXJzIGFuZCA2NCAyOS1iaXQgZmlsdGVycy4iLCJtYXhJdGVtcyI6MTkyLCIkcmVmIjoiIy9kZWZpbml0aW9ucy9jYW5fZmlsdGVyX2lkIn19LCJyZXF1aXJlZCI6WyJyZW1vdGVfZnJhbWVzIiwiaWQiXX0sInRyYW5zbWl0Ijp7InRpdGxlIjoiVHJhbnNtaXQgbWVzc2FnZXMiLCJkZXNjcmlwdGlvbiI6Ikxpc3Qgb2YgQ0FOIGJ1cyBtZXNzYWdlcyB0cmFuc21pdHRlZCBieSB0aGUgZGV2aWNlLiBSZXF1aXJlcyBhIENBTi1idXMgcGh5c2ljYWwgbW9kZSBzdXBwb3J0aW5nIHRyYW5zbWlzc2lvbnMuIiwidHlwZSI6ImFycmF5IiwibWF4SXRlbXMiOjY0LCJpdGVtcyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJuYW1lIjp7InRpdGxlIjoiTmFtZSIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwgdHJhbnNtaXQgbWVzc2FnZSBuYW1lLiIsInR5cGUiOiJzdHJpbmciLCJwYXR0ZXJuIjoiXlsgLX5dKiQiLCJtYXhMZW5ndGgiOjE2fSwic3RhdGUiOnsidGl0bGUiOiJTdGF0ZSIsImRlc2NyaXB0aW9uIjoiRGlzYWJsZWQgdHJhbnNtaXQgbWVzc2FnZXMgYXJlIGlnbm9yZWQuIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjoxLCJvbmVPZiI6W3sidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkRpc2FibGUiLCJlbnVtIjpbMF19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkVuYWJsZSIsImVudW0iOlsxXX1dfSwiaWRfZm9ybWF0Ijp7InRpdGxlIjoiSUQgRm9ybWF0IiwiZGVzY3JpcHRpb24iOiJJRCBmb3JtYXQgb2YgdGhlIHRyYW5zbWl0IG1lc3NhZ2UuIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjowLCJvbmVPZiI6W3sidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IlN0YW5kYXJkICgxMS1iaXQpIiwiZW51bSI6WzBdfSx7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJFeHRlbmRlZCAoMjktYml0KSIsImVudW0iOlsxXX1dfSwiZnJhbWVfZm9ybWF0Ijp7InRpdGxlIjoiRnJhbWUgZm9ybWF0IiwiZGVzY3JpcHRpb24iOiJGcmFtZSBmb3JtYXQgb2YgdGhlIHRyYW5zbWl0IG1lc3NhZ2UuIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjowLCJvbmVPZiI6W3sidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IlN0YW5kYXJkIiwiZW51bSI6WzBdfSx7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJTdGFuZGFyZCBSVFIiLCJlbnVtIjpbMl19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkZEIiwiZW51bSI6WzFdfV19LCJicnMiOnsidGl0bGUiOiJCaXQtUmF0ZSBTd2l0Y2giLCJkZXNjcmlwdGlvbiI6IkRldGVybWluZXMgaWYgYW4gRkQgbWVzc2FnZSBpcyB0cmFuc21pdHRlZCB1c2luZyBhIHN3aXRjaGVkIGJpdC1yYXRlLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MH0sImxvZyI6eyJ0aXRsZSI6IkluY2x1ZGUgaW4gbG9nIiwiZGVzY3JpcHRpb24iOiJEZXRlcm1pbmVzIGlmIHRoZSB0cmFuc21pdHRlZCBtZXNzYWdlIGlzIGluY2x1ZGVkIGluIHRoZSBsb2cgZmlsZS4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjAsIm9uZU9mIjpbeyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRGlzYWJsZSIsImVudW0iOlswXX0seyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRW5hYmxlIiwiZW51bSI6WzFdfV19LCJwZXJpb2QiOnsidGl0bGUiOiJQZXJpb2QgKDEwIG1zIHN0ZXBzKSIsImRlc2NyaXB0aW9uIjoiVGltZSBwZXJpb2Qgb2YgdGhlIG1lc3NhZ2UgdHJhbnNtaXNzaW9uLiAwOiBzaW5nbGUgc2hvdCwgPjA6IHBlcmlvZGljLiBVbml0IGlzIG1zLiIsInR5cGUiOiJpbnRlZ2VyIiwibWluaW11bSI6MCwibWF4aW11bSI6NDI5NDk2NzI5MCwibXVsdGlwbGVPZiI6MTB9LCJkZWxheSI6eyJ0aXRsZSI6IkRlbGF5ICgxMCBtcyBzdGVwcykiLCJkZXNjcmlwdGlvbiI6Ik9mZnNldCBtZXNzYWdlIHdpdGhpbiB0aGUgcGVyaW9kIG9yIGRlbGF5IGEgc2luZ2xlIHNob3QgbWVzc2FnZS4gSWYgbXVsdGlwbGUgbWVzc2FnZXMgYXJlIHRyYW5zbWl0dGVkIGJ5IHRoZSBkZXZpY2UsIGl0IGlzIHJlY29tbWVuZGVkIHRvIG9mZnNldCBlYWNoIHNlcGFyYXRlbHkgdG8gcmVkdWNlIHBlYWsgbG9hZCBvbiBidXMuIElmIHBlcmlvZCA+IDAsIGRlbGF5IDwgcGVyaW9kLiBJZiBzaW5nbGUtc2hvdCwgZGVsYXkgY2FuIGJlIHVwIHRvIG1heCB2YWx1ZS4gVW5pdCBpcyBtcy4iLCJ0eXBlIjoiaW50ZWdlciIsIm1pbmltdW0iOjAsIm1heGltdW0iOjQyOTQ5NjcyOTAsIm11bHRpcGxlT2YiOjEwfSwiaWQiOnsidGl0bGUiOiJNZXNzYWdlIElEIChoZXgpIiwiZGVzY3JpcHRpb24iOiJJRCBvZiBtZXNzYWdlIHRvIHRyYW5zbWl0IGluIGhleC4gRXhhbXBsZTogMUZGLiIsInR5cGUiOiJzdHJpbmcifSwiZGF0YSI6eyJ0aXRsZSI6Ik1lc3NhZ2VzIERhdGEgKGhleCkiLCJkZXNjcmlwdGlvbiI6IkRhdGEgYnl0ZXMgb2YgbWVzc2FnZSB0byB0cmFuc21pdC4gUlRSIGZyYW1lcyBvbmx5IHVzZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGRvIGRldGVybWluZSB0aGUgRExDLiBFeGFtcGxlOiAwMTAyMDMwNCBvciAwMTAyMDMwNDA1MDYwNzA4LiAiLCJ0eXBlIjoic3RyaW5nIiwicGF0dGVybiI6Il4oW2EtZkEtRjAtOV17Mn0pezAsNjR9JCIsIm1heExlbmd0aCI6MTI4fX0sImRlcGVuZGVuY2llcyI6eyJpZF9mb3JtYXQiOnsib25lT2YiOlt7InByb3BlcnRpZXMiOnsiaWRfZm9ybWF0Ijp7ImVudW0iOlswXX0sImlkIjp7InBhdHRlcm4iOiJeKFswLTddW2EtZkEtRjAtOV17Mn18W2EtZkEtRjAtOV17MSwyfSkkIiwibWF4TGVuZ3RoIjozfX19LHsicHJvcGVydGllcyI6eyJpZF9mb3JtYXQiOnsiZW51bSI6WzFdfSwiaWQiOnsicGF0dGVybiI6Il4oWzAtMV1bYS1mQS1GMC05XXs3fXxbYS1mQS1GMC05XXsxLDd9KSQiLCJtYXhMZW5ndGgiOjh9fX1dfSwiZnJhbWVfZm9ybWF0Ijp7Im9uZU9mIjpbeyJwcm9wZXJ0aWVzIjp7ImZyYW1lX2Zvcm1hdCI6eyJlbnVtIjpbMF19LCJicnMiOnsib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJEaXNhYmxlIiwiZW51bSI6WzBdfV19LCJkYXRhIjp7InBhdHRlcm4iOiJeKFthLWZBLUYwLTldezJ9KXswLDh9JCIsIm1heExlbmd0aCI6MTZ9fX0seyJwcm9wZXJ0aWVzIjp7ImZyYW1lX2Zvcm1hdCI6eyJlbnVtIjpbMl19LCJicnMiOnsib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJEaXNhYmxlIiwiZW51bSI6WzBdfV19LCJkYXRhIjp7InBhdHRlcm4iOiJeKFthLWZBLUYwLTldezJ9KXswLDh9JCIsIm1heExlbmd0aCI6MTZ9fX0seyJwcm9wZXJ0aWVzIjp7ImZyYW1lX2Zvcm1hdCI6eyJlbnVtIjpbMV19LCJicnMiOnsib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJEaXNhYmxlIiwiZW51bSI6WzBdfSx7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJFbmFibGUiLCJlbnVtIjpbMV19XX0sImRhdGEiOnsicGF0dGVybiI6Il4oW2EtZkEtRjAtOV17Mn0pezAsNjR9JCIsIm1heExlbmd0aCI6MTI4fX19XX19LCJhZGRpdGlvbmFsUHJvcGVydGllcyI6ZmFsc2UsInJlcXVpcmVkIjpbInN0YXRlIiwiaWRfZm9ybWF0IiwiZnJhbWVfZm9ybWF0IiwiYnJzIiwibG9nIiwicGVyaW9kIiwiZGVsYXkiLCJpZCIsImRhdGEiXX19LCJoZWFydGJlYXQiOnsidGl0bGUiOiJIZWFydGJlYXQiLCJkZXNjcmlwdGlvbiI6IlBlcmlvZGljIGhlYXJ0YmVhdCAoMSBzZWNvbmQgcGVyaW9kIHRpbWUpLiBSZXF1aXJlcyBhIENBTi1idXMgcGh5c2ljYWwgbW9kZSBzdXBwb3J0aW5nIHRyYW5zbWlzc2lvbnMuIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsic3RhdGUiOnsidGl0bGUiOiJTdGF0ZSIsImRlc2NyaXB0aW9uIjoiRW5hYmxlIHRvIHBlcmlvZGljYWxseSB0cmFuc21pdCBoZWFydGJlYXQgc2lnbmFsLiAiLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjAsIm9uZU9mIjpbeyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRGlzYWJsZSIsImVudW0iOlswXX0seyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRW5hYmxlIiwiZW51bSI6WzFdfV19LCJpZF9mb3JtYXQiOnsidGl0bGUiOiJJRCBGb3JtYXQiLCJkZXNjcmlwdGlvbiI6IklEIGZvcm1hdCBvZiBoZWFydGJlYXQgbWVzc2FnZS4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjEsIm9uZU9mIjpbeyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiU3RhbmRhcmQgKDExLWJpdCkiLCJlbnVtIjpbMF19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkV4dGVuZGVkICgyOS1iaXQpIiwiZW51bSI6WzFdfV19LCJpZCI6eyJ0aXRsZSI6IklEIChoZXgpIiwiZGVzY3JpcHRpb24iOiJJRCBvZiBoZWFydGJlYXQgbWVzc2FnZSBpbiBoZXguIEV4YW1wbGU6IDFGRi4iLCJ0eXBlIjoic3RyaW5nIiwiZGVmYXVsdCI6IjAwNDM1MzUzIn19LCJkZXBlbmRlbmNpZXMiOnsiaWRfZm9ybWF0Ijp7Im9uZU9mIjpbeyJwcm9wZXJ0aWVzIjp7ImlkX2Zvcm1hdCI6eyJlbnVtIjpbMF19LCJpZCI6eyJwYXR0ZXJuIjoiXihbMC03XVthLWZBLUYwLTldezJ9fFthLWZBLUYwLTldezEsMn0pJCIsIm1heExlbmd0aCI6M319fSx7InByb3BlcnRpZXMiOnsiaWRfZm9ybWF0Ijp7ImVudW0iOlsxXX0sImlkIjp7InBhdHRlcm4iOiJeKFswLTFdW2EtZkEtRjAtOV17N318W2EtZkEtRjAtOV17MSw3fSkkIiwibWF4TGVuZ3RoIjo4fX19XX19LCJyZXF1aXJlZCI6WyJzdGF0ZSIsImlkX2Zvcm1hdCIsImlkIl19LCJjb250cm9sIjp7IiRyZWYiOiIjL2RlZmluaXRpb25zL2Nhbl9jb250cm9sIn19LCJhZGRpdGlvbmFsUHJvcGVydGllcyI6ZmFsc2UsInJlcXVpcmVkIjpbImdlbmVyYWwiLCJwaHkiLCJmaWx0ZXIiXX0sImxpbiI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJwaHkiOnsidGl0bGUiOiJQaHlzaWNhbCAoTElOIGJ1cyBsb3ctbGV2ZWwpIiwiZGVzY3JpcHRpb24iOiJMSU4gYnVzIGxvdy1sZXZlbCBjb25maWd1cmF0aW9uIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsibW9kZSI6eyJ0aXRsZSI6Ik1vZGUiLCJkZXNjcmlwdGlvbiI6IkRldmljZSBMSU4gYnVzIG1vZGUuIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjowLCJvbmVPZiI6W3sidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IlN1YnNjcmliZXIiLCJlbnVtIjpbMF19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IlB1Ymxpc2hlciIsImVudW0iOlsxXX1dfSwiYml0X3JhdGUiOnsidGl0bGUiOiJCaXQtcmF0ZSIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MTkyMDAsIm9uZU9mIjpbeyJ0aXRsZSI6IjI0MDAiLCJlbnVtIjpbMjQwMF19LHsidGl0bGUiOiI5NjAwIiwiZW51bSI6Wzk2MDBdfSx7InRpdGxlIjoiMTA0MDAiLCJlbnVtIjpbMTA0MDBdfSx7InRpdGxlIjoiMTkyMDAiLCJlbnVtIjpbMTkyMDBdfV19fSwiYWRkaXRpb25hbFByb3BlcnRpZXMiOmZhbHNlLCJyZXF1aXJlZCI6WyJtb2RlIiwiYml0X3JhdGUiXX0sImZyYW1lcyI6eyJ0aXRsZSI6IkxJTiBmcmFtZXMiLCJkZXNjcmlwdGlvbiI6IkN1c3RvbSBkZXNjcmlwdGlvbiBvZiB0aGUgZnJhbWVzIG9uIHRoZSBuZXR3b3JrLCBpZiBub3QgdXNpbmcgYXV0b21hdGljIGxlbmd0aCBhbmQvb3IgY2hlY2tzdW0uIiwidHlwZSI6ImFycmF5IiwibWF4SXRlbXMiOjY0LCJpdGVtcyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJuYW1lIjp7InRpdGxlIjoiTmFtZSIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwgZnJhbWUgbmFtZS4iLCJ0eXBlIjoic3RyaW5nIiwicGF0dGVybiI6Il5bIC1+XSokIiwibWF4TGVuZ3RoIjoxNn0sImlkIjp7InRpdGxlIjoiRnJhbWUgSUQgKGhleCkiLCJkZXNjcmlwdGlvbiI6IklEIG9mIGZyYW1lIGluIGhleC4gRXhhbXBsZTogMEYuIiwidHlwZSI6InN0cmluZyIsInBhdHRlcm4iOiJeKFswLTddW2EtZkEtRjAtOV18W2EtZkEtRjAtOV0pJCIsIm1heExlbmd0aCI6Mn0sImxlbmd0aCI6eyJ0aXRsZSI6IkZyYW1lIExlbmd0aCAoZGVjaW1hbCkiLCJkZXNjcmlwdGlvbiI6Ikxlbmd0aCBvZiB0aGUgZnJhbWUgaW4gZGVjaW1hbC4iLCJ0eXBlIjoiaW50ZWdlciIsIm1pbmltdW0iOjEsIm1heGltdW0iOjh9LCJjaGVja3N1bV90eXBlIjp7InRpdGxlIjoiQ2hlY2tzdW0gVHlwZSIsImRlc2NyaXB0aW9uIjoiVHlwZSBvZiB0aGUgY2hlY2tzdW0gdXNlZCBvbiB0aGUgTElOIGZyYW1lLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MCwib25lT2YiOlt7InRpdGxlIjoiRW5oYW5jZWQiLCJlbnVtIjpbMF19LHsidGl0bGUiOiJDbGFzc2ljIiwiZW51bSI6WzFdfV19fSwiYWRkaXRpb25hbFByb3BlcnRpZXMiOmZhbHNlLCJyZXF1aXJlZCI6WyJpZCIsImxlbmd0aCIsImNoZWNrc3VtX3R5cGUiXX19LCJ0cmFuc21pdCI6eyJ0aXRsZSI6IkxJTiB0cmFuc21pdCBsaXN0IiwiZGVzY3JpcHRpb24iOiJMaXN0IG9mIGZyYW1lcyB0byB0cmFuc21pdCB3aGVuIGluIG1hc3RlciBtb2RlLiIsInR5cGUiOiJhcnJheSIsIm1heEl0ZW1zIjo2NCwidW5pcXVlSXRlbXMiOnRydWUsIml0ZW1zIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsidGl0bGUiOiJOYW1lIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbCB0cmFuc21pdCBydWxlIG5hbWUuIiwidHlwZSI6InN0cmluZyIsInBhdHRlcm4iOiJeWyAtfl0qJCIsIm1heExlbmd0aCI6MTZ9LCJzdGF0ZSI6eyJ0aXRsZSI6IlN0YXRlIiwiZGVzY3JpcHRpb24iOiJEaXNhYmxlZCB0cmFuc21pdCBydWxlcyBhcmUgaWdub3JlZC4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjEsIm9uZU9mIjpbeyJ0aXRsZSI6IkRpc2FibGUiLCJlbnVtIjpbMF19LHsidGl0bGUiOiJFbmFibGUiLCJlbnVtIjpbMV19XX0sImlkIjp7InRpdGxlIjoiRnJhbWUgSUQgKGhleCkiLCJ0eXBlIjoic3RyaW5nIiwicGF0dGVybiI6Il4oWzAtN11bYS1mQS1GMC05XXxbYS1mQS1GMC05XSkkIiwibWF4TGVuZ3RoIjoyfSwiZGF0YSI6eyJ0aXRsZSI6IkRhdGEgKGhleCkiLCJ0eXBlIjoic3RyaW5nIiwicGF0dGVybiI6Il4oW2EtZkEtRjAtOV17Mn0pKiQiLCJtYXhMZW5ndGgiOjE2fX0sImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjpmYWxzZSwicGF0dGVyblByb3BlcnRpZXMiOnsicGVyaW9kIjp7fSwiZGVsYXkiOnt9fSwicmVxdWlyZWQiOlsic3RhdGUiLCJpZCJdfX19LCJkZXBlbmRlbmNpZXMiOnsicGh5Ijp7Im9uZU9mIjpbeyJwcm9wZXJ0aWVzIjp7InBoeSI6eyJwcm9wZXJ0aWVzIjp7Im1vZGUiOnsiZW51bSI6WzBdfX19LCJ0cmFuc21pdCI6eyJpdGVtcyI6eyJwcm9wZXJ0aWVzIjp7ImlkIjp7ImRlc2NyaXB0aW9uIjoiVW5pcXVlIElEIG9mIGZyYW1lIGluIGhleCAoYW4gSUQgbWF5IG9ubHkgb2NjdXIgb25jZSBpbiB0aGUgbGlzdCkuIEV4YW1wbGU6IDBGLiJ9LCJkYXRhIjp7ImRlc2NyaXB0aW9uIjoiRGF0YSB0byB0cmFuc21pdCBvbiByZXF1ZXN0IiwibWluTGVuZ3RoIjoyfX0sInJlcXVpcmVkIjpbImRhdGEiXX19fX0seyJwcm9wZXJ0aWVzIjp7InBoeSI6eyJwcm9wZXJ0aWVzIjp7Im1vZGUiOnsiZW51bSI6WzFdfX19LCJ0cmFuc21pdCI6eyJpdGVtcyI6eyJwcm9wZXJ0aWVzIjp7ImlkIjp7ImRlc2NyaXB0aW9uIjoiSUQgb2YgZnJhbWUgaW4gaGV4LiBFeGFtcGxlOiAwRi4ifSwiZGF0YSI6eyJkZXNjcmlwdGlvbiI6IklmIG1vcmUgdGhhbiB6ZXJvIGRhdGEgYnl0ZXMsIHRoZW4gdGhlIHRyYW5zbWl0IGlzIGEgUFVCTElTSCBmcmFtZS4gSWYgemVybyBkYXRhIGJ5dGVzLCB0aGVuIHRoZSB0cmFuc21pdCBpcyBhIFNVQlNDUklCRSBmcmFtZSBleHBlY3RpbmcgYSBzdWJzY3JpYmVyIG5vZGUgdG8gcHJvdmlkZSBkYXRhLiAiLCJtaW5MZW5ndGgiOjB9LCJwZXJpb2QiOnsidGl0bGUiOiJQZXJpb2QgKDEwIG1zIHN0ZXBzKSIsImRlc2NyaXB0aW9uIjoiVGltZSBwZXJpb2Qgb2YgdGhlIG1lc3NhZ2UgdHJhbnNtaXNzaW9uLiAwOiBzaW5nbGUgc2hvdCwgPjA6IHBlcmlvZGljLiBVbml0IGlzIG1zLiIsInR5cGUiOiJpbnRlZ2VyIiwibWluaW11bSI6MCwibWF4aW11bSI6NDI5NDk2NzI5MCwibXVsdGlwbGVPZiI6MTB9LCJkZWxheSI6eyJ0aXRsZSI6IkRlbGF5ICgxMCBtcyBzdGVwcykiLCJkZXNjcmlwdGlvbiI6Ik9mZnNldCBtZXNzYWdlIHdpdGhpbiB0aGUgcGVyaW9kIG9yIGRlbGF5IGEgc2luZ2xlIHNob3QgbWVzc2FnZS4gSWYgbXVsdGlwbGUgbWVzc2FnZXMgYXJlIHRyYW5zbWl0dGVkIGJ5IHRoZSBkZXZpY2UsIGl0IGlzIHJlY29tbWVuZGVkIHRvIG9mZnNldCBlYWNoIHNlcGFyYXRlbHkgdG8gcmVkdWNlIHBlYWsgbG9hZCBvbiBidXMuIElmIHBlcmlvZCA+IDAsIGRlbGF5IDwgcGVyaW9kLiBJZiBzaW5nbGUtc2hvdCwgZGVsYXkgY2FuIGJlIHVwIHRvIG1heCB2YWx1ZS4gVW5pdCBpcyBtcy4iLCJ0eXBlIjoiaW50ZWdlciIsIm1pbmltdW0iOjAsIm1heGltdW0iOjQyOTQ5NjcyOTAsIm11bHRpcGxlT2YiOjEwfX0sInJlcXVpcmVkIjpbInBlcmlvZCIsImRlbGF5Il19fX19XX19LCJhZGRpdGlvbmFsUHJvcGVydGllcyI6ZmFsc2UsInJlcXVpcmVkIjpbInBoeSJdfSwicnRjX3RvbGVyYW5jZSI6eyJ0aXRsZSI6IlRpbWUgc3luY2hyb25pemF0aW9uIHRvbGVyYW5jZSIsImRlc2NyaXB0aW9uIjoiSWYgdGhlIHRpbWUgZGlmZmVyZW5jZSBleGNlZWRzIHRoZSB0b2xlcmFuY2UsIHRoZSBpbnRlcm5hbCB0aW1lIGlzIGFicnVwdGx5IHVwZGF0ZWQuIFRoZSB1bml0IGlzIHNlY29uZHMuIiwidHlwZSI6ImludGVnZXIiLCJtaW5pbXVtIjoxLCJtYXhpbXVtIjozNjAwLCJkZWZhdWx0IjozMH19LCJwcm9wZXJ0aWVzIjp7ImdlbmVyYWwiOnsidGl0bGUiOiJHZW5lcmFsIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiZGV2aWNlIjp7InRpdGxlIjoiRGV2aWNlIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsibWV0YSI6eyJ0aXRsZSI6Ik1ldGEgZGF0YSIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwgbWV0YSBkYXRhIHN0cmluZy4gRGlzcGxheWVkIGluIGRldmljZSBmaWxlIGFuZCBsb2cgZmlsZSBoZWFkZXJzLiBFeGFtcGxlOiBTaXRlMTsgVHJ1Y2s0OyBDb25maWdSZXYxMiIsInR5cGUiOiJzdHJpbmciLCJtaW5MZW5ndGgiOjAsIm1heExlbmd0aCI6MzAsInBhdHRlcm4iOiJeW2EtekEtWjAtOTsgXSokIn19LCJhZGRpdGlvbmFsUHJvcGVydGllcyI6ZmFsc2V9LCJzZWN1cml0eSI6eyJ0aXRsZSI6IlNlY3VyaXR5IiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsia3B1YiI6eyJ0aXRsZSI6IlNlcnZlciBwdWJsaWMga2V5IiwiZGVzY3JpcHRpb24iOiJTZXJ2ZXIgLyB1c2VyIEVDQyBwdWJsaWMga2V5IGluIGJhc2U2NCBmb3JtYXQuIFNoYWxsIG1hdGNoIHRoZSBlbmNyeXB0aW9uIHVzZWQgZm9yIGFsbCBwcm90ZWN0ZWQgZmllbGRzLiIsInR5cGUiOiJzdHJpbmciLCJtaW5MZW5ndGgiOjAsIm1heExlbmd0aCI6MTAwLCJwYXR0ZXJuIjoiXlthLXpBLVowLTkrLz1dKiQifX0sImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjpmYWxzZX0sImRlYnVnIjp7InRpdGxlIjoiRGVidWciLCJkZXNjcmlwdGlvbiI6IkRlYnVnIGZ1bmN0aW9uYWxpdHkgZm9yIHVzZSBkdXJpbmcgaW5zdGFsbGF0aW9uIGFuZCB0cm91Ymxlc2hvb3RpbmcuIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsic3lzbG9nIjp7InRpdGxlIjoiU3lzdGVtIGxvZyIsImRlc2NyaXB0aW9uIjoiU3lzdGVtIGV2ZW50cyBsb2dnZWQgdG8gdGhlIFNELWNhcmQuIFRoZSBsb2cgbGV2ZWxzIGFyZSBsaXN0ZWQgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyBhbW91bnQgb2YgaW5mb3JtYXRpb24gbG9nZ2VkLiBTaG91bGQgb25seSBiZSBlbmFibGVkIGlmIG5lZWRlZCBkdXJpbmcgaW5zdGFsbGF0aW9uIG9yIHRyb3VibGVzaG9vdGluZy4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjAsIm9uZU9mIjpbeyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRGlzYWJsZSAoMCkiLCJlbnVtIjpbMF19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkVycm9yICgxKSIsImVudW0iOlsxXX0seyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiV2FybmluZyAoMikiLCJlbnVtIjpbMl19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkluZm8gKDMpIiwiZW51bSI6WzNdfV19fSwiYWRkaXRpb25hbFByb3BlcnRpZXMiOmZhbHNlfX0sImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjpmYWxzZSwicmVxdWlyZWQiOlsiZGV2aWNlIiwic2VjdXJpdHkiLCJkZWJ1ZyJdfSwibG9nIjp7InRpdGxlIjoiTG9nZ2luZyIsInR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImZpbGUiOnsidGl0bGUiOiJGaWxlIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsic3BsaXRfc2l6ZSI6eyJ0aXRsZSI6IkZpbGUgc3BsaXQgc2l6ZSAoMSB0byA1MTIgTUIpIiwiZGVzY3JpcHRpb24iOiJMb2cgZmlsZSBzcGxpdCBzaXplIGluIE1CLiBXaGVuIHRoZSBmaWxlIHNwbGl0IHNpemUgaXMgcmVhY2hlZCBhIG5ldyBmaWxlIGlzIGNyZWF0ZWQgYW5kIHRoZSBsb2dnaW5nIGNvbnRpbnVlcy4gQ2xvc2VkIGxvZyBmaWxlcyBjYW4gYmUgcHVzaGVkIHRvIGEgc2VydmVyIGlmIG5ldHdvcmsgaXMgYXZhaWxhYmxlLiBTbWFsbCBzcGxpdCBzaXplcyBtYXkgcmVkdWNlIHBlcmZvcm1hbmNlLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6NTAsIm1pbmltdW0iOjEsIm1heGltdW0iOjUxMn0sInNwbGl0X3RpbWVfcGVyaW9kIjp7InRpdGxlIjoiRmlsZSBzcGxpdCB0aW1lIHBlcmlvZCAoMCB0byA4NjQwMCBzZWNvbmRzLCAwID0gZGlzYWJsZSkiLCJkZXNjcmlwdGlvbiI6IkxvZyBmaWxlIHNwbGl0IHRpbWUgcGVyaW9kIGluIHNlY29uZHMgcmVsYXRpdmUgdG8gbWlkbmlnaHQgKDAwOjAwOjAwKS4gV2hlbiBhIHNwbGl0IHRpbWUgaXMgcmVhY2hlZCBhIG5ldyBmaWxlIGlzIGNyZWF0ZWQgYW5kIHRoZSBsb2dnaW5nIGNvbnRpbnVlcy4gQ2xvc2VkIGxvZyBmaWxlcyBjYW4gYmUgcHVzaGVkIHRvIGEgc2VydmVyIGlmIG5ldHdvcmsgaXMgYXZhaWxhYmxlLiBTbWFsbCBzcGxpdCB0aW1lIHBlcmlvZHMgbWF5IHJlZHVjZSBwZXJmb3JtYW5jZS4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjAsIm1pbmltdW0iOjAsIm1heGltdW0iOjg2NDAwLCJtdWx0aXBsZU9mIjoxMH0sInNwbGl0X3RpbWVfb2Zmc2V0Ijp7InRpdGxlIjoiRmlsZSBzcGxpdCB0aW1lIG9mZnNldCAoMCB0byA4NjQwMCBzZWNvbmRzKSIsImRlc2NyaXB0aW9uIjoiTG9nIGZpbGUgc3BsaXQgdGltZSBvZmZzZXQgaW4gc2Vjb25kcy4gVGhpcyB2YWx1ZSBvZmZzZXRzIHRoZSBzcGxpdF90aW1lX3BlcmlvZCByZWxhdGl2ZSB0byBtaWRuaWdodCAoMDA6MDA6MDApLiBUaGUgc2V0IHZhbHVlIHNoYWxsIGJlIGxlc3MgdGhhbiB0aGUgc3BsaXRfdGltZV9wZXJpb2QgdmFsdWUuIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjowLCJtaW5pbXVtIjowLCJtYXhpbXVtIjo4NjQwMCwibXVsdGlwbGVPZiI6MTB9LCJjeWNsaWMiOnsidGl0bGUiOiJDeWNsaWMgbG9nZ2luZyIsImRlc2NyaXB0aW9uIjoiV2l0aCBjeWNsaW5nIGxvZ2dpbmcgbW9kZSBlbmFibGVkIHRoZSBvbGRlc3QgbG9nIGZpbGUgaXMgZGVsZXRlZCB3aGVuIHRoZSBtZW1vcnkgY2FyZCBiZWNvbWVzIGZ1bGwsIGFsbG93aW5nIHRoZSBsb2dnaW5nIHRvIGNvbnRpbnVlLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MSwib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJEaXNhYmxlIiwiZW51bSI6WzBdfSx7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJFbmFibGUiLCJlbnVtIjpbMV19XX19LCJhZGRpdGlvbmFsUHJvcGVydGllcyI6ZmFsc2UsInJlcXVpcmVkIjpbInNwbGl0X3NpemUiLCJzcGxpdF90aW1lX3BlcmlvZCIsInNwbGl0X3RpbWVfb2Zmc2V0IiwiY3ljbGljIl19LCJjb21wcmVzc2lvbiI6eyJ0aXRsZSI6IkNvbXByZXNzaW9uIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsibGV2ZWwiOnsidGl0bGUiOiJMZXZlbCIsImRlc2NyaXB0aW9uIjoiV2luZG93IHNpemUgdXNlZCBkdXJpbmcgb3B0aW9uYWwgY29tcHJlc3Npb24uIExhcmdlciB3aW5kb3cgc2l6ZXMgeWllbGQgcG90ZW50aWFsbHkgYmV0dGVyIGNvbXByZXNzaW9uIHJhdGVzLCBidXQgbWF5IHJlZHVjZSBsb2dnaW5nIHBlcmZvcm1hbmNlLiBDb21wcmVzc2VkIGxvZyBmaWxlcyBuZWVkIHRvIGJlIGRlY29tcHJlc3NlZCBwcmlvciB0byBwcm9jZXNzaW5nLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MCwib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJEaXNhYmxlIiwiZW51bSI6WzBdfSx7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiIyNTYgYnl0ZXMgd2luZG93IiwiZW51bSI6WzI1Nl19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IjUxMiBieXRlcyB3aW5kb3ciLCJlbnVtIjpbNTEyXX0seyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiMTAyNCBieXRlcyB3aW5kb3ciLCJlbnVtIjpbMTAyNF19XX19fSwiZW5jcnlwdGlvbiI6eyJ0aXRsZSI6IkVuY3J5cHRpb24iLCJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJzdGF0ZSI6eyJ0aXRsZSI6IlN0YXRlIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbCBsb2cgZmlsZSBlbmNyeXB0aW9uLiBFbmNyeXB0ZWQgbG9nIGZpbGVzIG5lZWQgdG8gYmUgZGVjcnlwdGVkIHByaW9yIHRvIHByb2Nlc3NpbmcuIERlY3J5cHRpb24gcmVxdWlyZXMgeW91ciBlbmNyeXB0aW9uIHBhc3N3b3JkIGluIHBsYWluIGZvcm0gLSBpZiB0aGlzIGlzIGxvc3QsIHRoZSBlbmNyeXB0ZWQgZGF0YSBjYW5ub3QgYmUgcmVjb3ZlcmVkLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MCwib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJEaXNhYmxlIiwiZW51bSI6WzBdfSx7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJFbmFibGUiLCJlbnVtIjpbMV19XX19LCJkZXBlbmRlbmNpZXMiOnsic3RhdGUiOnsib25lT2YiOlt7InByb3BlcnRpZXMiOnsic3RhdGUiOnsiZW51bSI6WzBdfX19LHsicHJvcGVydGllcyI6eyJzdGF0ZSI6eyJlbnVtIjpbMV19LCJrZXlmb3JtYXQiOnsidGl0bGUiOiJLZXkgZm9ybWF0IiwiZGVzY3JpcHRpb24iOiJUaGUgZm9ybWF0IG9mIHRoZSBlbmNyeXB0aW9uIHBhc3N3b3JkIHVzZWQgZm9yIGVuY3J5cHRpbmcgbG9nZ2VkIGRhdGEgb24gdGhlIGRldmljZS4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjAsIm9uZU9mIjpbeyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiUGxhaW4iLCJlbnVtIjpbMF19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkVuY3J5cHRlZCIsImVudW0iOlsxXX1dfSwicHdkIjp7InRpdGxlIjoiRW5jcnlwdGlvbiBwYXNzd29yZCIsInR5cGUiOiJzdHJpbmciLCJkZWZhdWx0IjoiIn19LCJkZXBlbmRlbmNpZXMiOnsia2V5Zm9ybWF0Ijp7Im9uZU9mIjpbeyJwcm9wZXJ0aWVzIjp7ImtleWZvcm1hdCI6eyJlbnVtIjpbMF19LCJwd2QiOnsiZGVzY3JpcHRpb24iOiJFbmNyeXB0aW9uIHBhc3N3b3JkIGluIHBsYWluIGZvcm0gKG1pbiAxLCBtYXggNjQpLiBFeGFtcGxlOiAyZTlhc2RLSmF6Q2F0c3NzZFMzMjNAQUJDaDIyLiBJTVBPUlRBTlQ6IEVuc3VyZSB0aGF0IHlvdSBzZWN1cmVseSBzdG9yZSB0aGUgcGxhaW4gZm9ybSBlbmNyeXB0aW9uIHBhc3N3b3JkIGZvciBkZWNyeXB0aW9uIHB1cnBvc2VzLiIsInBhdHRlcm4iOiJeWyAtfl0qJCIsIm1pbkxlbmd0aCI6MSwibWF4TGVuZ3RoIjo2NH19fSx7InByb3BlcnRpZXMiOnsia2V5Zm9ybWF0Ijp7ImVudW0iOlsxXX0sInB3ZCI6eyJkZXNjcmlwdGlvbiI6IkVuY3J5cHRpb24gcGFzc3dvcmQgaW4gZW5jcnlwdGVkIGZvcm0gKG1pbiAyNCwgbWF4IDEwOCkuIEV4YW1wbGU6IEIxRGxNck5oMjJ0cS9rTmVySy9UK2VTeUNXU0pxaXF5VW9vdlE3QzZncVJhSW5nNkYrRT0uIElNUE9SVEFOVDogRW5zdXJlIHRoYXQgeW91IGVuY3J5cHQgdGhlIGVuY3J5cHRpb24gcGFzc3dvcmQgYW5kIHRoYXQgeW91IGluY2x1ZGUgdGhlIHNlcnZlciBwdWJsaWMga2V5LiBGdXJ0aGVyLCBlbnN1cmUgdGhhdCB5b3Ugc2VjdXJlbHkgc3RvcmUgdGhlIHBsYWluIGZvcm0gZW5jcnlwdGlvbiBwYXNzd29yZCBmb3IgZGVjcnlwdGlvbiBwdXJwb3Nlcy4iLCJwYXR0ZXJuIjoiXlthLXpBLVowLTkrLz1dKiQiLCJtaW5MZW5ndGgiOjI0LCJtYXhMZW5ndGgiOjEwOH19fV19fSwicmVxdWlyZWQiOlsia2V5Zm9ybWF0IiwicHdkIl19XX19fSwiZXJyb3JfZnJhbWVzIjp7InRpdGxlIjoiRXJyb3IgRnJhbWVzIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsic3RhdGUiOnsidGl0bGUiOiJTdGF0ZSIsImRlc2NyaXB0aW9uIjoiU3BlY2lmeSB3aGV0aGVyIHRvIHJlY29yZCBlcnJvciBmcmFtZXMuIEVuYWJsaW5nIHRoaXMgY2FuIG5lZ2F0aXZlbHkgaW1wYWN0IHBlcmZvcm1hbmNlLCBhcyBhIHBvdGVudGlhbGx5IGxhcmdlIG51bWJlciBvZiBhZGRpdGlvbmFsIGZyYW1lcyBtYXkgYmUgcmVjb3JkZWQuIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjowLCJvbmVPZiI6W3sidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkRpc2FibGUiLCJlbnVtIjpbMF19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IkVuYWJsZSIsImVudW0iOlsxXX1dfX0sInJlcXVpcmVkIjpbInN0YXRlIl19fSwiYWRkaXRpb25hbFByb3BlcnRpZXMiOmZhbHNlLCJwYXR0ZXJuUHJvcGVydGllcyI6eyJrZXlmb3JtYXQiOnt9LCJwd2QiOnt9fSwicmVxdWlyZWQiOlsiZmlsZSIsImNvbXByZXNzaW9uIiwiZW5jcnlwdGlvbiIsImVycm9yX2ZyYW1lcyJdfSwicnRjIjp7InRpdGxlIjoiUmVhbC1UaW1lIENsb2NrIChSVEMpIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsic3luYyI6eyJ0aXRsZSI6IlRpbWUgc3luY2hyb25pemF0aW9uIG1ldGhvZCIsImRlc2NyaXB0aW9uIjoiSW50ZXJuYWwgcmVhbC10aW1lLWNsb2NrIHN5bmNocm9uaXphdGlvbiBtZXRob2QuIFRoZSByZWFsLXRpbWUtY2xvY2sgaXMgbWFpbnRhaW5lZCB3aGVuIHRoZSBkZXZpY2UgaXMgb2ZmLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6Miwib25lT2YiOlt7InRpdGxlIjoiUmV0YWluIGN1cnJlbnQgdGltZSIsImRlc2NyaXB0aW9uIjoiVGhlIGN1cnJlbnQgaW50ZXJuYWwgdGltZSBpcyBub3QgY2hhbmdlZC4iLCJ0eXBlIjoiaW50ZWdlciIsImVudW0iOlswXX0seyJ0aXRsZSI6Ik1hbnVhbCB1cGRhdGUiLCJkZXNjcmlwdGlvbiI6IlRoZSBpbnRlcm5hbCB0aW1lIGlzIHVwZGF0ZWQgd2l0aCB0aGUgbWFudWFsbHkgc2V0IFVUQyB0aW1lIHdoZW4gdGhlIGRldmljZSBwb3dlcnMgb24uIFRoZSBtYW51YWwgdGltZSBpcyBzZXQgdXNpbmcgdGhlIG1hbnVhbF9kYXRlX3RpbWUgZmllbGQiLCJ0eXBlIjoiaW50ZWdlciIsImVudW0iOlsxXX0seyJ0aXRsZSI6IkNBTi1idXMiLCJkZXNjcmlwdGlvbiI6IlRoZSBpbnRlcm5hbCB0aW1lIHN5bmNocm9uaXplZCB0byB0aGUgdGltZSBwcm92aWRlZCBieSB0aGUgcGF5bG9hZCBvZiBhIENBTi1idXMgbWVzc2FnZSIsInR5cGUiOiJpbnRlZ2VyIiwiZW51bSI6WzNdfSx7InRpdGxlIjoiTmV0d29yayIsImRlc2NyaXB0aW9uIjoiVGhlIGludGVybmFsIHRpbWUgaXMgc3luY2hyb25pemVkIHdpdGggdGhlIHRpbWUgcHJvdmlkZWQgYnkgdGhlIG5ldHdvcmsgd2hlbiBhdmFpbGFibGUuIiwidHlwZSI6ImludGVnZXIiLCJlbnVtIjpbMl19XX0sInRpbWV6b25lIjp7InRpdGxlIjoiVGltZSB6b25lIChVVEMtMTIgdG8gVVRDKzE0KSIsImRlc2NyaXB0aW9uIjoiQWRqdXN0bWVudCBpbiBmdWxsIGhvdXJzIHRvIHRoZSBVVEMgdGltZS4gSW5jbHVkZXMgZGF5bGlnaHQgc2F2aW5ncyB0aW1lIGlmIGFwcGxpY2FibGUuIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjowLCJtaW5pbXVtIjotMTIsIm1heGltdW0iOjE0fSwiYWRqdXN0bWVudCI6eyJ0aXRsZSI6IkFkanVzdG1lbnQgKC0xMjk2MDAgdG8gMTI5NjAwIHNlY29uZHMpIiwiZGVzY3JpcHRpb24iOiJBZGp1c3RtZW50IGluIHNlY29uZHMgdG8gdGhlIFVUQyB0aW1lLiBDYW4gYmUgdXNlZCBmb3IgZmluZSB0dW5pbmcgdGhlIGludGVybmFsIHRpbWUuICIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MCwibWluaW11bSI6LTEyOTYwMCwibWF4aW11bSI6MTI5NjAwfX0sImRlcGVuZGVuY2llcyI6eyJzeW5jIjp7Im9uZU9mIjpbeyJwcm9wZXJ0aWVzIjp7InN5bmMiOnsiZW51bSI6WzBdfX19LHsicHJvcGVydGllcyI6eyJzeW5jIjp7ImVudW0iOlsxXX0sIm1hbnVhbF9kYXRlX3RpbWUiOnsidGl0bGUiOiJUaW1lIChVVEMpIiwiZGVzY3JpcHRpb24iOiJNYW51YWxseSBzZXQgVVRDIGRhdGUgYW5kIHRpbWUgdmFsdWUuIiwidHlwZSI6InN0cmluZyIsImZvcm1hdCI6ImRhdGUtdGltZSJ9fSwicmVxdWlyZWQiOlsibWFudWFsX2RhdGVfdGltZSJdfSx7InByb3BlcnRpZXMiOnsic3luYyI6eyJlbnVtIjpbM119LCJ0b2xlcmFuY2UiOnsiJHJlZiI6IiMvZGVmaW5pdGlvbnMvcnRjX3RvbGVyYW5jZSJ9LCJtZXNzYWdlIjp7InRpdGxlIjoiTWVzc2FnZSIsIiRyZWYiOiIjL2RlZmluaXRpb25zL2Nhbl9tZXNzYWdlIn0sInZhbGlkX3NpZ25hbCI6eyJ0aXRsZSI6IlRpbWUgdmFsaWQgc2lnbmFsIiwiJHJlZiI6IiMvZGVmaW5pdGlvbnMvY2FuX3NpZ25hbCJ9LCJ0aW1lX3NpZ25hbCI6eyJ0aXRsZSI6IlRpbWUgdmFsdWUgc2lnbmFsIiwiJHJlZiI6IiMvZGVmaW5pdGlvbnMvY2FuX3NpZ25hbCJ9fSwicmVxdWlyZWQiOlsibWVzc2FnZSIsInZhbGlkX3NpZ25hbCIsInRpbWVfc2lnbmFsIl19LHsicHJvcGVydGllcyI6eyJzeW5jIjp7ImVudW0iOlsyXX0sInRvbGVyYW5jZSI6eyIkcmVmIjoiIy9kZWZpbml0aW9ucy9ydGNfdG9sZXJhbmNlIn0sIm50cF9zZXJ2ZXIiOnsidGl0bGUiOiJUaW1lIHNlcnZlciIsImRlc2NyaXB0aW9uIjoiTlRQIHNlcnZlciBuYW1lIHVzZWQgZm9yIHRpbWUgc3luY2hyb25pemF0aW9uLiBJZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIGFuIGFzdGVyaXNrICgqKSB0aGVuIHRoZSBzZXJ2ZXIgbmFtZSBpcyB0cmVhdGVkIGFzIGEgc2VydmVyIHBvb2wuIEV4YW1wbGVzOiAgKi5wb29sLm50cC5vcmcsICoudXMucG9vbC5udHAub3JnLCB0aW1lLm5pc3QuZ292IiwidHlwZSI6InN0cmluZyIsImRlZmF1bHQiOiIqLnBvb2wubnRwLm9yZyIsIm1heExlbmd0aCI6MzIsInBhdHRlcm4iOiJeXFwqP1thLXowLTlcXC4tXSokIn19LCJyZXF1aXJlZCI6WyJudHBfc2VydmVyIiwidG9sZXJhbmNlIl19XX19LCJhZGRpdGlvbmFsUHJvcGVydGllcyI6ZmFsc2UsInBhdHRlcm5Qcm9wZXJ0aWVzIjp7Im1hbnVhbF9kYXRlX3RpbWUiOnt9LCJtZXNzYWdlIjp7fSwidmFsaWRfc2lnbmFsIjp7fSwidGltZV9zaWduYWwiOnt9LCJudHBfc2VydmVyIjp7fSwidG9sZXJhbmNlIjp7fX0sInJlcXVpcmVkIjpbInN5bmMiLCJ0aW1lem9uZSIsImFkanVzdG1lbnQiXX0sInNlY29uZGFyeXBvcnQiOnsidGl0bGUiOiJTZWNvbmRhcnkgUG9ydCIsImRlc2NyaXB0aW9uIjoiQ29udHJvbCBvZiBwb3dlci1vdXQgKDVWKSBvbiBDaGFubmVsIDIgKENIMikgY29ubmVjdG9yLiIsInR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InBvd2VyX3NjaGVkdWxlIjp7InRpdGxlIjoiUG93ZXIgc2NoZWR1bGUiLCJkZXNjcmlwdGlvbiI6IlRoZSBkYWlseSBwb3dlciBzY2hlZHVsZSBpcyBkZWZpbmVkIGJ5IGEgbnVtYmVyIG9mIHBvd2VyLW9uIGZyb20vdG8gaW50ZXJ2YWxzLiBEZWZpbmUgbm8gcG93ZXItb24gaW50ZXJ2YWxzIHRvIGtlZXAgYWx3YXlzIG9mZi4gRGVmaW5lIG9uZSBpbnRlcnZhbCB3aXRoIGZyb20vdG8gYm90aCBzZXQgdG8gMDA6MDAgdG8ga2VlcCBhbHdheXMgb24uIFRpbWUgZm9ybWF0IGlzIEhIOk1NICgxIG1pbnV0ZSByZXNvbHV0aW9uKSIsInR5cGUiOiJhcnJheSIsImRlZmF1bHQiOltdLCJtYXhJdGVtcyI6NSwiaXRlbXMiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiZnJvbSI6eyJ0aXRsZSI6IkZyb20iLCJkZXNjcmlwdGlvbiI6IlBvd2VyLW9uIEZST00gdGltZSBpbiBmb3JtYXQgSEg6TU0uIFNoYWxsIGJlIGJlZm9yZSBwb3dlci1vbiBUTyB0aW1lLiBFLmcuIGF0IG1pZG5pZ2h0IDAwOjAwIiwidHlwZSI6InN0cmluZyIsImRlZmF1bHQiOiIwMDowMCIsInBhdHRlcm4iOiJeKFswLTFdWzAtOV18MlswLTRdKTooWzAtNV1bMC05XSkkIn0sInRvIjp7InRpdGxlIjoiVG8iLCJkZXNjcmlwdGlvbiI6IlBvd2VyLW9uIFRPIHRpbWUgaW4gZm9ybWF0IEhIOk1NLiBTaGFsbCBiZSBhZnRlciBwb3dlci1vbiBGUk9NIHRpbWUuIEUuZy4gYXQgbWlkZGF5IDEyOjAwLiIsInR5cGUiOiJzdHJpbmciLCJkZWZhdWx0IjoiMDA6MDAiLCJwYXR0ZXJuIjoiXihbMC0xXVswLTldfDJbMC00XSk6KFswLTVdWzAtOV0pJCJ9fSwiYWRkaXRpb25hbFByb3BlcnRpZXMiOmZhbHNlLCJyZXF1aXJlZCI6WyJmcm9tIiwidG8iXX19fSwiYWRkaXRpb25hbFByb3BlcnRpZXMiOmZhbHNlLCJyZXF1aXJlZCI6WyJwb3dlcl9zY2hlZHVsZSJdfSwiY2FuX2ludGVybmFsIjp7InRpdGxlIjoiQ0FOIENoYW5uZWwgaW50ZXJuYWwiLCJkZXNjcmlwdGlvbiI6IkNBTiBDaGFubmVsIGludGVybmFsIGlzIGEgdmlydHVhbCBjaGFubmVsIHVzZWQgZm9yIHNpZ25hbHMgZ2VuZXJhdGVkIGJ5IHRoZSBkZXZpY2UgaXRzZWxmLiIsInR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImdlbmVyYWwiOnsidGl0bGUiOiJHZW5lcmFsIiwiJHJlZiI6IiMvZGVmaW5pdGlvbnMvY2FuX2dlbmVyYWwifSwiZmlsdGVyIjp7InRpdGxlIjoiUmVjZWl2ZSBmaWx0ZXJzIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsiZGVzY3JpcHRpb24iOiJGaWx0ZXJzIGFyZSBjaGVja2VkIHNlcXVlbnRpYWxseSwgZXhlY3V0aW9uIHN0b3BzIHdpdGggdGhlIGZpcnN0IG1hdGNoaW5nIGZpbHRlciBlbGVtZW50LiBNYXggMjAgZmlsdGVycyBpbiB0b3RhbC4iLCJtYXhJdGVtcyI6MjAsIiRyZWYiOiIjL2RlZmluaXRpb25zL2Nhbl9maWx0ZXJfaWQifX0sInJlcXVpcmVkIjpbImlkIl19LCJjb250cm9sIjp7IiRyZWYiOiIjL2RlZmluaXRpb25zL2Nhbl9jb250cm9sIn19LCJhZGRpdGlvbmFsUHJvcGVydGllcyI6ZmFsc2UsInJlcXVpcmVkIjpbImZpbHRlciJdfSwiY2FuXzEiOnsidGl0bGUiOiJDQU4gQ2hhbm5lbCAxIChwaHlzaWNhbCkiLCJkZXNjcmlwdGlvbiI6IkNBTiBDaGFubmVsIDEgaXMgYW4gZXh0ZXJuYWwgcGh5c2ljYWwgY2hhbm5lbC4iLCIkcmVmIjoiIy9kZWZpbml0aW9ucy9jYW4ifSwiY2FuXzIiOnsidGl0bGUiOiJDQU4gQ2hhbm5lbCAyIChwaHlzaWNhbCkiLCJkZXNjcmlwdGlvbiI6IkNBTiBDaGFubmVsIDIgaXMgYW4gZXh0ZXJuYWwgcGh5c2ljYWwgY2hhbm5lbC4iLCIkcmVmIjoiIy9kZWZpbml0aW9ucy9jYW4ifSwibGluXzEiOnsidGl0bGUiOiJMSU4gQ2hhbm5lbCAxIiwiJHJlZiI6IiMvZGVmaW5pdGlvbnMvbGluIn0sImxpbl8yIjp7InRpdGxlIjoiTElOIENoYW5uZWwgMiIsIiRyZWYiOiIjL2RlZmluaXRpb25zL2xpbiJ9LCJjb25uZWN0Ijp7InRpdGxlIjoiQ29ubmVjdGl2aXR5IiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsid2lmaSI6eyJ0aXRsZSI6IldpRmkiLCJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJtb2RlIjp7InRpdGxlIjoiTW9kZSIsImRlc2NyaXB0aW9uIjoiSW4gc3RhdGlvbiBtb2RlLCB0aGUgZGV2aWNlIGNhbiB1c2UgZWl0aGVyIGFjdGl2ZSBvciBwYXNzaXZlIHNjYW5uaW5nIHRvIGZpbmQgQVBzLiBVc2luZyBhY3RpdmUgc2NhbiwgdGhlIHJhZGlvIHRyYW5zbWl0cyBhIHByb2JlIHJlcXVlc3QgYW5kIGxpc3RlbnMgZm9yIHJlc3BvbnNlcy4gVXNpbmcgcGFzc2l2ZSBzY2FuLCB0aGUgcmFkaW8gbGlzdGVucyBvbiBlYWNoIGNoYW5uZWwgZm9yIGJlYWNvbnMgc2VudCBwZXJpb2RpY2FsbHkgYnkgQVBzLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MCwib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJTdGF0aW9uIG1vZGUgKGFjdGl2ZSBzY2FubmluZykiLCJlbnVtIjpbMF19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IlN0YXRpb24gbW9kZSAocGFzc2l2ZSBzY2FubmluZykiLCJlbnVtIjpbMV19XX0sImtleWZvcm1hdCI6eyJ0aXRsZSI6IktleSBmb3JtYXQiLCJkZXNjcmlwdGlvbiI6IlRoZSBmb3JtYXQgb2YgdGhlIGtleSB1c2VkIGZvciBhbGwgZW50cmllcyBpbiB0aGUgYWNjZXNzIHBvaW50IGxpc3QuIENhbiBiZSB1c2VkIHRvIGhpZGUgdGhlIFdpRmkgcGFzc3dvcmRzIHN0b3JlZCBvbiB0aGUgZGV2aWNlLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MCwib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJQbGFpbiIsImVudW0iOlswXX0seyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRW5jcnlwdGVkIiwiZW51bSI6WzFdfV19LCJhY2Nlc3Nwb2ludCI6eyJ0aXRsZSI6IkFjY2VzcyBwb2ludHMiLCJkZXNjcmlwdGlvbiI6Ikxpc3Qgb2YgYWNjZXNzIHBvaW50cy4gQ29ubmVjdHMgdG8gdGhlIGZpcnN0IGF2YWlsYWJsZSBBUCBpbiBsaXN0LiIsInR5cGUiOiJhcnJheSIsIm1heEl0ZW1zIjo0LCJpdGVtcyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJzc2lkIjp7InRpdGxlIjoiU1NJRCIsImRlc2NyaXB0aW9uIjoiQWNjZXNzIHBvaW50IFNTSUQgKG5hbWUgb2YgYWNjZXNzIHBvaW50KSIsInR5cGUiOiJzdHJpbmciLCJwYXR0ZXJuIjoiXig/IVxccykuKyg/PCFcXHMpJCIsIm1pbkxlbmd0aCI6MCwibWF4TGVuZ3RoIjozMn0sInB3ZCI6eyJ0aXRsZSI6IlBhc3N3b3JkIiwidHlwZSI6InN0cmluZyIsInBhdHRlcm4iOiJeKD8hXFxzKS4rKD88IVxccykkIiwiZGVmYXVsdCI6IiIsIm1heExlbmd0aCI6NjR9LCJtaW5yc3NpIjp7InRpdGxlIjoiTWluaW11bSBSU1NJIChyZWNlaXZlZCBzaWduYWwgc3RyZW5ndGggaW5kaWNhdG9yKSwgMC0xMDAlIiwiZGVzY3JpcHRpb24iOiJTZXRzIGEgbWluaW11bSByZXF1aXJlZCBhY2Nlc3MgcG9pbnQgc2lnbmFsIHN0cmVuZ3RoLiBUaGUgZGV2aWNlIHdpbGwgbm90IGNvbm5lY3QgdG8gdGhlIGFjY2VzcyBwb2ludCBpZiB0aGUgbWVhc3VyZWQgc2lnbmFsIHN0cmVuZ3RoIGlzIGJlbG93IHRoZSB2YWx1ZSBvZiB0aGlzIGZpZWxkLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MCwibWluaW11bSI6MCwibWF4aW11bSI6MTAwfX0sImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjpmYWxzZSwicmVxdWlyZWQiOlsic3NpZCIsInB3ZCIsIm1pbnJzc2kiXX19fSwiZGVwZW5kZW5jaWVzIjp7ImtleWZvcm1hdCI6eyJvbmVPZiI6W3sicHJvcGVydGllcyI6eyJrZXlmb3JtYXQiOnsiZW51bSI6WzBdfSwiYWNjZXNzcG9pbnQiOnsiaXRlbXMiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsicHdkIjp7InRpdGxlIjoiUGFzc3dvcmQiLCJkZXNjcmlwdGlvbiI6IkFjY2VzcyBwb2ludCBwYXNzd29yZCBpbiBwbGFpbiBmb3JtIChtYXggNjQpLiBMZWF2ZSBlbXB0eSB0byBjb25uZWN0IHRvIGFuIG9wZW4gQVAuIEV4YW1wbGU6IDMxYUFhYkM4MUA5OS4iLCJwYXR0ZXJuIjoiXlsgLX5dKiQiLCJtaW5MZW5ndGgiOjB9fX19fX0seyJwcm9wZXJ0aWVzIjp7ImtleWZvcm1hdCI6eyJlbnVtIjpbMV19LCJhY2Nlc3Nwb2ludCI6eyJpdGVtcyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJwd2QiOnsidGl0bGUiOiJFbmNyeXB0ZWQgcGFzc3dvcmQiLCJkZXNjcmlwdGlvbiI6IkFjY2VzcyBwb2ludCBwYXNzd29yZCBpbiBlbmNyeXB0ZWQgZm9ybSAobWluIDI0LCBtYXggNjQpLiBFeGFtcGxlOiBybDgvRUF5M3FUQ2hDc01JSWVaUFI2cnZHRWFuUkpDbkwyeGJ6cW89LiBJTVBPUlRBTlQ6IEVuc3VyZSB0aGF0IHlvdSBlbmNyeXB0IGFsbCBhY2Nlc3MgcG9pbnQgcGFzc3dvcmRzIGFuZCB0aGF0IHlvdSBpbmNsdWRlIHRoZSBzZXJ2ZXIgcHVibGljIGtleSIsInBhdHRlcm4iOiJeW2EtekEtWjAtOSsvPV0qJCIsIm1pbkxlbmd0aCI6MjR9fX19fX1dfX0sImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjpmYWxzZSwicmVxdWlyZWQiOlsibW9kZSIsImtleWZvcm1hdCJdfSwiczMiOnsidGl0bGUiOiJTMyBzZXJ2ZXIgc2V0dGluZ3MiLCJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJzeW5jIjp7InRpdGxlIjoiU3luY2hyb25pemF0aW9uIiwiZGVzY3JpcHRpb24iOiJUaGlzIHNlY3Rpb24gY29uZmlndXJlcyBob3cgYW5kIHdoZW4gdGhlIGRldmljZSBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgUzMgc2VydmVyLiIsInR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7Im90YSI6eyJ0aXRsZSI6IkZpcm13YXJlLCBjb25maWcgYW5kIGNlcnRpZmljYXRlIiwiZGVzY3JpcHRpb24iOiJDb25maWd1cmVzIGhvdyBvZnRlbiB0aGUgZGV2aWNlIGxvb2tzIGZvciBmaXJtd2FyZS0sIGNvbmZpZy0gYW5kIGNlcnRpZmljYXRlLW92ZXItdGhlLWFpciB1cGRhdGVzLiBTbWFsbCB2YWx1ZXMgbWF5IHJlZHVjZSBwZXJmb3JtYW5jZS4gVGltZSBwZXJpb2QgbWF5IHNvbWV0aW1lcyBiZWNvbWUgbG9uZ2VyIGlmIGRldmljZSBpcyBidXN5LiBTZXQgdG8gMCB0byBkaXNhYmxlLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6NjAwLCJtaW5pbXVtIjowLCJtYXhpbXVtIjo4NjQwMCwibXVsdGlwbGVPZiI6NX0sImhlYXJ0YmVhdCI6eyJ0aXRsZSI6IkhlYXJ0YmVhdCIsImRlc2NyaXB0aW9uIjoiQ29uZmlndXJlcyBob3cgb2Z0ZW4gdGhlIGRldmljZSB0cmFuc21pdHMgdGhlIGhlYXJ0YmVhdCBzaWduYWwuIFNtYWxsIHZhbHVlcyBtYXkgcmVkdWNlIHBlcmZvcm1hbmNlLiBUaW1lIHBlcmlvZCBtYXkgc29tZXRpbWVzIGJlY29tZSBsb25nZXIgaWYgZGV2aWNlIGlzIGJ1c3kuIFNldCB0byAwIHRvIGRpc2FibGUuIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjozMDAsIm1pbmltdW0iOjAsIm1heGltdW0iOjg2NDAwLCJtdWx0aXBsZU9mIjo1fSwibG9nZmlsZXMiOnsidGl0bGUiOiJMb2cgZmlsZXMiLCJkZXNjcmlwdGlvbiI6IkNvbmZpZ3VyZXMgaWYgdGhlIGRldmljZSBwdXNoZXMgY2xvc2VkIGxvZyBmaWxlcyB0byB0aGUgc2VydmVyLiBUaGUgbG9nIGZpbGVzIGFyZSBkZWxldGVkIGZyb20gdGhlIGRldmljZSB3aGVuIHN1Y2Nlc3NmdWxseSB1cGxvYWRlZC4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjEsIm9uZU9mIjpbeyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRGlzYWJsZSIsImVudW0iOlswXX0seyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRW5hYmxlIiwiZW51bSI6WzFdfV19fSwiYWRkaXRpb25hbFByb3BlcnRpZXMiOmZhbHNlLCJyZXF1aXJlZCI6WyJvdGEiLCJoZWFydGJlYXQiLCJsb2dmaWxlcyJdfSwic2VydmVyIjp7InRpdGxlIjoiU2VydmVyIiwiZGVzY3JpcHRpb24iOiJUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIHNlcnZlciBjb25uZWN0aW9uIHBhcmFtZXRlcnMuIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiZW5kcG9pbnQiOnsidGl0bGUiOiJFbmRwb2ludCIsImRlc2NyaXB0aW9uIjoiUzMgc2VydmVyIGVuZHBvaW50LiBQcmVmaXggd2l0aCBodHRwOi8vIHRvIGNvbm5lY3QgdXNpbmcgc3RhbmRhcmQgaHR0cC4gUHJlZml4IHdpdGggaHR0cHM6Ly8gdG8gY29ubmVjdCB1c2luZyBTU0wvVExTIC0gcmVxdWlyZXMgc3VwcG9ydCBieSB0aGUgc2VydmVyIGFuZCB0aGF0IHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgaXMgbG9hZGVkIG9udG8gdGhlIGRldmljZS4gRXhhbXBsZXM6IGh0dHA6Ly8xOTIuMTY4LjAuMSwgaHR0cHM6Ly9zMy5teWRvbWFpbi5jb20sIGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbSwgaHR0cDovL3MzLXVzLWVhc3QtMi5hbWF6b25hd3MuY29tLiIsInR5cGUiOiJzdHJpbmciLCJwYXR0ZXJuIjoiXmh0dHBzKjovL1thLXpBLVowLTlfL1xcLi1dKyQiLCJtYXhMZW5ndGgiOjEyOH0sInBvcnQiOnsidGl0bGUiOiJQb3J0IiwiZGVzY3JpcHRpb24iOiJTMyBzZXJ2ZXIgcG9ydC4gRXhhbXBsZXM6IDgwIChodHRwKSwgNDQzIChodHRwcyksIDkwMDAgKGN1c3RvbSkuIiwidHlwZSI6ImludGVnZXIiLCJtaW5pbXVtIjowLCJtYXhpbXVtIjo2NTUzNX0sImJ1Y2tldCI6eyJ0aXRsZSI6IkJ1Y2tldCBuYW1lIiwiZGVzY3JpcHRpb24iOiJTMyBzZXJ2ZXIgYnVja2V0IG5hbWUuIEV4YW1wbGVzOiBsb2didWNrZXQsIGZsZWV0YnVja2V0LCB0ZXN0YnVja2V0LiIsInR5cGUiOiJzdHJpbmciLCJwYXR0ZXJuIjoiXlthLXowLTldezF9W2EtejAtOVxcLlxcLV17MCw2Mn1bYS16MC05XXsxfSQiLCJtYXhMZW5ndGgiOjY0fSwicmVnaW9uIjp7InRpdGxlIjoiUmVnaW9uIiwiZGVzY3JpcHRpb24iOiJTMyBzZXJ2ZXIgcmVnaW9uLiBFeGFtcGxlOiB1cy1lYXN0LTEuIiwidHlwZSI6InN0cmluZyIsInBhdHRlcm4iOiJeW2EtejAtOS1dKiQiLCJtaW5MZW5ndGgiOjAsIm1heExlbmd0aCI6MzJ9LCJyZXF1ZXN0X3N0eWxlIjp7InRpdGxlIjoiUmVxdWVzdCBzdHlsZSIsImRlc2NyaXB0aW9uIjoiVmlydHVhbC1ob3N0ZWQtc3R5bGUgb3IgcGF0aC1zdHlsZSBTMyByZXF1ZXN0cy4gVmlydHVhbCBob3N0ZWQtc3R5bGUgZm9ybWF0OiBcImh0dHA6Ly9bQlVDS0VULU5BTUVdLltET01BSU5dL1tPQkpFQ1QtTkFNRV1cIi4gUGF0aC1zdHlsZSBmb3JtYXQ6IFwiaHR0cDovL1tET01BSU5dL1tCVUNLRVQtTkFNRV0vW09CSkVDVC1OQU1FXVwiIiwidHlwZSI6ImludGVnZXIiLCJkZWZhdWx0IjowLCJvbmVPZiI6W3sidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IlBhdGgtc3R5bGUiLCJlbnVtIjpbMF19LHsidHlwZSI6ImludGVnZXIiLCJ0aXRsZSI6IlZpcnR1YWwgaG9zdGVkLXN0eWxlIiwiZW51bSI6WzFdfV19LCJhY2Nlc3NrZXkiOnsidGl0bGUiOiJBY2Nlc3NLZXkiLCJkZXNjcmlwdGlvbiI6IlMzIHNlcnZlciBhY2Nlc3Mga2V5IElELiBFeGFtcGxlOiBQUkRES044UjZQQUFPR1RFSTUzRSIsInR5cGUiOiJzdHJpbmciLCJwYXR0ZXJuIjoiXlthLXpBLVowLTlfLV0rJCIsIm1pbkxlbmd0aCI6MywibWF4TGVuZ3RoIjoxMjh9LCJrZXlmb3JtYXQiOnsidGl0bGUiOiJTZWNyZXRLZXkgZm9ybWF0IiwiZGVzY3JpcHRpb24iOiJUaGUgZm9ybWF0IG9mIHRoZSBzZWNyZXQga2V5LiBDYW4gYmUgdXNlZCB0byBoaWRlIHRoZSBzZWNyZXQga2V5IHN0b3JlZCBvbiB0aGUgZGV2aWNlLiIsInR5cGUiOiJpbnRlZ2VyIiwiZGVmYXVsdCI6MCwib25lT2YiOlt7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJQbGFpbiIsImVudW0iOlswXX0seyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiRW5jcnlwdGVkIiwiZW51bSI6WzFdfV19LCJzZWNyZXRrZXkiOnsidGl0bGUiOiJTZWNyZXRLZXkiLCJ0eXBlIjoic3RyaW5nIn0sInNpZ25lZF9wYXlsb2FkIjp7InRpdGxlIjoiU2lnbmVkIHBheWxvYWQiLCJkZXNjcmlwdGlvbiI6IkluY2x1ZGUgcGF5bG9hZCBjaGVja3N1bSBpbiBzaWduYXR1cmUuIFJlZHVjZXMgZGV2aWNlIHVwbG9hZCBwZXJmb3JtYW5jZS4iLCJ0eXBlIjoiaW50ZWdlciIsImRlZmF1bHQiOjAsIm9uZU9mIjpbeyJ0eXBlIjoiaW50ZWdlciIsInRpdGxlIjoiT2ZmIiwiZW51bSI6WzBdfSx7InR5cGUiOiJpbnRlZ2VyIiwidGl0bGUiOiJPbiIsImVudW0iOlsxXX1dfX0sImRlcGVuZGVuY2llcyI6eyJlbmRwb2ludCI6WyJwb3J0IiwiYnVja2V0IiwicmVnaW9uIiwicmVxdWVzdF9zdHlsZSIsImFjY2Vzc2tleSIsImtleWZvcm1hdCIsInNlY3JldGtleSIsInNpZ25lZF9wYXlsb2FkIl0sImtleWZvcm1hdCI6eyJvbmVPZiI6W3sicHJvcGVydGllcyI6eyJrZXlmb3JtYXQiOnsiZW51bSI6WzBdfSwic2VjcmV0a2V5Ijp7ImRlc2NyaXB0aW9uIjoiUzMgc2VydmVyIHNlY3JldCBrZXkgaW4gcGxhaW4gZm9ybSAobWF4IDEyOCkuIEV4YW1wbGU6IElBa3dFOXZ2RWg5a2U0UkgiLCJwYXR0ZXJuIjoiXlsgLX5dKiQiLCJtaW5MZW5ndGgiOjEsIm1heExlbmd0aCI6MTI4fX19LHsicHJvcGVydGllcyI6eyJrZXlmb3JtYXQiOnsiZW51bSI6WzFdfSwic2VjcmV0a2V5Ijp7ImRlc2NyaXB0aW9uIjoiUzMgc2VydmVyIHNlY3JldCBrZXkgaW4gZW5jcnlwdGVkIGZvcm0gKG1pbiAyNCwgbWF4IDE1MCkuIEV4YW1wbGU6IEFLR2FxR0pXeEVoVGZKWDZvZVIvT0lkdTVTd205SFFZLiBJTVBPUlRBTlQ6IEVuc3VyZSB0aGF0IHlvdSBjb3JyZWN0bHkgZW5jcnlwdCB0aGUgc2VjcmV0S2V5IGFuZCB0aGF0IHlvdSBpbmNsdWRlIHRoZSBzZXJ2ZXIgcHVibGljIGtleSIsInBhdHRlcm4iOiJeW2EtekEtWjAtOSsvPV0qJCIsIm1pbkxlbmd0aCI6MjQsIm1heExlbmd0aCI6MTUwfX19XX19LCJhZGRpdGlvbmFsUHJvcGVydGllcyI6ZmFsc2V9fSwiYWRkaXRpb25hbFByb3BlcnRpZXMiOmZhbHNlfX0sImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjpmYWxzZSwicmVxdWlyZWQiOlsid2lmaSJdfX0sImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjpmYWxzZSwicmVxdWlyZWQiOlsiZ2VuZXJhbCIsImxvZyIsInJ0YyIsInNlY29uZGFyeXBvcnQiLCJjYW5faW50ZXJuYWwiLCJjYW5fMSIsImNhbl8yIiwibGluXzEiLCJsaW5fMiJdfSwidWlTY2hlbWEiOnt9LCJ0aGVtZSI6ImRlZmF1bHQiLCJsaXZlU2V0dGluZ3MiOnsic2hvd0Vycm9yTGlzdCI6InRvcCIsInZhbGlkYXRlIjpmYWxzZSwiZGlzYWJsZWQiOmZhbHNlLCJub0h0bWw1VmFsaWRhdGUiOnRydWUsInJlYWRvbmx5IjpmYWxzZSwib21pdEV4dHJhRGF0YSI6dHJ1ZSwibGl2ZU9taXQiOnRydWUsImV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IiOnsiYXJyYXlNaW5JdGVtcyI6InBvcHVsYXRlIiwiZW1wdHlPYmplY3RGaWVsZHMiOiJwb3B1bGF0ZUFsbERlZmF1bHRzIn19fQ== |
@MatinF Did you solve it? |
No in contrast, the latest rjsf playground exhibits performance issues for all fields when we load our Schema. This is not the case in the older versions as discussed in this thread and in the latest rjsf version it seems the issue of performance is no longer limited to array entries. You should be able to replicate this performance issue by using the playground link I added in my previous post. |
@MatinF Ok, I wonder if the next release will fix the performance issues |
@MatinF I'm using your playground link and when I turn off omit extra data and live omit the response time goes from a second or 2 delay to about 1/4 of a second. Maybe it make sense to add some performance tuning optional parameters to the |
Thanks for providing inputs - fully understand that there is limited time for this. For now, we're using the older version which works OK for us right now, so this is more a focus for longer-term as we'd of course want to be able to keep up with new features/improvements eventually. I tried testing with the live omit and omit extra data turned off and it does improve it a bit - but if you e.g. write some text in the top, it still seems very laggy on my end compared to the older versions. I'm not sure what is causing that, however. |
Prerequisites
What theme are you using?
core
Version
5.0.0-beta.18 vs. 5.0.0-beta.19
Current Behavior
We wanted to test out the latest update to rjsf (upgrading from 5.0.0 beta11 to 5.3.0) in order to benefit from the new ability to 'copy' array items, which was added as a feature in the latest release.
Unfortunately, the performance of the updated version is much worse when it comes to adding/removing array items - to an extent where it now takes ~1-2 seconds to add a new entry, up from <0.1 seconds in the previous release. After isolating the release introducing this, it seems to start after
5.0.0-beta.18
.I am unable to replicate this in the live playground, though I am unsure why.
Expected Behavior
I would expect the performance to be similar to previous versions.
Steps To Reproduce
Use a standard rjsf setup with
5.0.0-beta.18
vs.5.0.0-beta.19
Use below custom array template:
To replicate this, test with the below formdata (config) and schema/uischema. The slow performance can be seen by going to CAN CH1 and adding entries in the Transmit list section.
json-schema.zip
The text was updated successfully, but these errors were encountered: