<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>228302</bug_id>
          
          <creation_ts>2021-07-26 14:44:41 -0700</creation_ts>
          <short_desc>macOS key-driven smooth scrolling does not stop when focus changes</short_desc>
          <delta_ts>2022-02-04 11:58:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Estra">dana.estra</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>bdakin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1779580</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-07-26 14:44:41 -0700</bug_when>
    <thetext>macOS key-driven smooth scrolling does not stop when focus changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779581</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-26 14:47:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/81131501&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782297</commentid>
    <comment_count>2</comment_count>
      <attachid>435011</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-08-05 11:34:27 -0700</bug_when>
    <thetext>Created attachment 435011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782332</commentid>
    <comment_count>3</comment_count>
      <attachid>435011</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-05 14:07:38 -0700</bug_when>
    <thetext>Comment on attachment 435011
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=435011&amp;action=review

&gt; Source/WebCore/ChangeLog:8
&gt; +        No tests yet.

This seems like a grand time to rectify this, this one should be eminently testable (long page, send keydown, change focus, make sure the scroll stops... eventually (it won&apos;t be immediately, this will be a tricky part))

&gt; Source/WebCore/page/Page.cpp:2356
&gt; +        reportUnfocusedToScrollableAreas();

Something is weird about the name, but I can&apos;t quite place it. I think it&apos;s because we usually say didX or xChanged (didLoseFocus?). I&apos;m not sure the &quot;to scrollable areas&quot; part belongs in the Page method name; you could imagine using it for other things on focus loss.

(though I do see some precedent for this style too, in e.g. `notifyPageThatContentAreaWillPaint`).

Maybe someone else has opinions :)

&gt; Source/WebCore/platform/ScrollController.cpp:234
&gt; +        m_client.keyboardScrollingAnimator()-&gt;handleKeyUpEvent();

Probably would be ideal if this called a function something like `stopScrollingWithAnimation`, and make `handleKeyUpEvent`&apos;s implementation also call that. Not great to call something named `keyUp` not in response to a `keyUp` event, that&apos;s just confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782334</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-05 14:08:08 -0700</bug_when>
    <thetext>You seem to also have broken ... all of the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784281</commentid>
    <comment_count>5</comment_count>
      <attachid>435527</attachid>
    <who name="Dana Estra">dana.estra</who>
    <bug_when>2021-08-13 17:05:38 -0700</bug_when>
    <thetext>Created attachment 435527
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784900</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-08-17 12:43:01 -0700</bug_when>
    <thetext>Steps to reproduce:

1. Have 2 browser windows open. The focused window should be on a page that scrolls, such as https://trac.webkit.org/changeset/280492/webkit , the second window can be on any page.

2. Start scrolling the focused window by holding down the up or down arrow.

3. Still holding the key down, with scrolling still happening, switch to the other window.

Expected: scrolling stops.
Actual: scrolling keeps happening in the background window until the edge of the document is reached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785045</commentid>
    <comment_count>7</comment_count>
      <attachid>435745</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-08-17 21:45:44 -0700</bug_when>
    <thetext>Created attachment 435745
Manual testing works, LayoutTest still broken

I still haven&apos;t dug into the testing code Dana wrote, and the test is still failing locally for me. Posting to get any feedback on the WebCore changes (and just to keep track of the WebCore changes in case I don&apos;t get to fixing the test very soon, in case someone else picks this up).

Manually testing, I see the following behaviors, which all match shipping:

- If you are keyboard scrolling the main frame and switch focus to a different browser window while still holding the arrow key, scrolling in the now inactive window animates to a stop right away, while still holding the key.

- If you are keyboard scrolling the main frame and switch focus to a different app while still holding the arrow key, scrolling in the now inactive window stops when you release the key (but continues until then).

- If you are keyboard scrolling a subframe and switch focus to another subframe or the mainframe, scrolling in the now blurred frame animates to a stop, and the focused frames starts scrolling while the key is still held down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785197</commentid>
    <comment_count>8</comment_count>
      <attachid>435790</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-08-18 13:00:46 -0700</bug_when>
    <thetext>Created attachment 435790
LayoutTest still broken, trying to fix broken builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785248</commentid>
    <comment_count>9</comment_count>
      <attachid>435806</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-08-18 15:33:10 -0700</bug_when>
    <thetext>Created attachment 435806
New LayoutTest still fails, other tests hopefully don&apos;t crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797096</commentid>
    <comment_count>10</comment_count>
      <attachid>439219</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-09-24 17:26:25 -0700</bug_when>
    <thetext>Created attachment 439219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797682</commentid>
    <comment_count>11</comment_count>
      <attachid>439405</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-09-27 15:49:38 -0700</bug_when>
    <thetext>Created attachment 439405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797788</commentid>
    <comment_count>12</comment_count>
      <attachid>439405</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-09-28 01:30:42 -0700</bug_when>
    <thetext>Comment on attachment 439405
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=439405&amp;action=review

&gt; Source/WebCore/page/Page.cpp:2381
&gt; +            scrollableArea-&gt;updateScrollAnimationIfNecessary();

Can anything downstream of `updateScrollAnimationIfNecessary` run script and invalidate your iterator? (I pray the answer is no, but you never know)

&gt; Source/WebCore/page/Page.h:890
&gt; +    void updateScrollAnimationIfNecessary();

I /expect/ smfr to object to the vague name, maybe this should be named about the specific animation?

&gt; Source/WebCore/platform/ScrollingEffectsController.cpp:93
&gt; +void ScrollingEffectsController::updateScrollAnimationIfNecessary()
&gt; +{
&gt; +    if (m_isAnimatingKeyboardScrolling)
&gt; +        m_client.keyboardScrollingAnimator()-&gt;handleKeyUpEvent();
&gt; +}

&quot;update scroll animation if necessary&quot; /always/ sends a key up if you&apos;re scrolling? That sounds even less like &quot;update if necessary&quot; than I realized. Is it really like &quot;hey please stop any outstanding keyboard scrolling animations for this Page/Frame/ScrollableArea&quot;?

&gt; Tools/DumpRenderTree/mac/EventSendingController.mm:1440
&gt; +    if ([character isEqualToString:@&quot;leftArrow&quot;]) {

I assume all of this code is copied from somewhere? Is it possible to at least share the keycode/character mapping stuff?

&gt; Tools/WebKitTestRunner/mac/EventSenderProxy.mm:857
&gt; +    NSString *eventCharacter = character;

Ditto my question from the WK1 version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798069</commentid>
    <comment_count>13</comment_count>
      <attachid>439531</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-09-28 15:20:51 -0700</bug_when>
    <thetext>Created attachment 439531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798085</commentid>
    <comment_count>14</comment_count>
      <attachid>439531</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-09-28 15:52:57 -0700</bug_when>
    <thetext>Comment on attachment 439531
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=439531&amp;action=review

&gt; Source/WebCore/page/FocusController.cpp:363
&gt; +        if (FrameView* oldFrameView = oldFrame-&gt;view()) {

Consider `if (auto* oldFrameView = oldFrame ? oldFrame-&gt;view() : nullptr)` instead of the nested if.

&gt; Source/WebCore/page/Page.cpp:2369
&gt; +    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {

Nit: &quot;auto* frame&quot;.

&gt; Source/WebCore/page/Page.cpp:2370
&gt; +        FrameView* frameView = frame-&gt;view();

Nit: &quot;auto* frameView&quot;.

&gt; LayoutTests/fast/scrolling/unfocusing-page-while-keyboard-scrolling.html:5
&gt; +    &lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;

This can be `&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;`.

And then the `js-test-post.js` below can be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798106</commentid>
    <comment_count>15</comment_count>
      <attachid>439531</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-28 16:48:21 -0700</bug_when>
    <thetext>Comment on attachment 439531
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=439531&amp;action=review

&gt; Source/WebCore/platform/ScrollingEffectsController.h:146
&gt; +    void updateScrollAnimationIfNecessary();

If &quot;update&quot; is always &quot;stop&quot; then we should call it &quot;stop&quot; everywhere. I don&apos;t think it will automatically start under any circumstances.

&gt; Tools/DumpRenderTree/mac/EventSendingController.mm:1230
&gt; +    NSString *eventCharacter = character;
&gt; +    unsigned short keyCode = 0;
&gt; +    if ([character isEqualToString:@&quot;leftArrow&quot;]) {
&gt; +        const unichar ch = NSLeftArrowFunctionKey;
&gt; +        eventCharacter = [NSString stringWithCharacters:&amp;ch length:1];
&gt; +        keyCode = 0x7B;
&gt; +    } else if ([character isEqualToString:@&quot;rightArrow&quot;]) {
&gt; +        const unichar ch = NSRightArrowFunctionKey;
&gt; +        eventCharacter = [NSString stringWithCharacters:&amp;ch length:1];

This is the 3rd copy of this code in the tree. I think we really need to share it (see TestRunnerShared).

&gt; Tools/DumpRenderTree/mac/EventSendingController.mm:1447
&gt; +    NSString *eventCharacter = character;
&gt; +    unsigned short keyCode = 0;
&gt; +    if ([character isEqualToString:@&quot;leftArrow&quot;]) {
&gt; +        const unichar ch = NSLeftArrowFunctionKey;
&gt; +        eventCharacter = [NSString stringWithCharacters:&amp;ch length:1];
&gt; +        keyCode = 0x7B;
&gt; +    } else if ([character isEqualToString:@&quot;rightArrow&quot;]) {
&gt; +        const unichar ch = NSRightArrowFunctionKey;
&gt; +        eventCharacter = [NSString stringWithCharacters:&amp;ch length:1];
&gt; +        keyCode = 0x7C;

Same.

&gt; Tools/WebKitTestRunner/mac/EventSenderProxy.mm:864
&gt; +    unsigned short keyCode = 0;
&gt; +    if ([character isEqualToString:@&quot;leftArrow&quot;]) {
&gt; +        const unichar ch = NSLeftArrowFunctionKey;
&gt; +        eventCharacter = [NSString stringWithCharacters:&amp;ch length:1];
&gt; +        keyCode = 0x7B;
&gt; +    } else if ([character isEqualToString:@&quot;rightArrow&quot;]) {
&gt; +        const unichar ch = NSRightArrowFunctionKey;

4th copy now?

&gt; LayoutTests/resources/ui-helper.js:355
&gt; +            eventSender.rawKeyDown(key, modifiers);
&gt; +            return Promise.resolve();
&gt; +        }
&gt; +
&gt; +        return new Promise((resolve) =&gt; {
&gt; +            testRunner.runUIScript(`uiController.rawKeyDown(&quot;${key}&quot;, ${JSON.stringify(modifiers)});`, resolve);

Can we just make uiController.rawKeyDown() work on macOS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799163</commentid>
    <comment_count>16</comment_count>
      <attachid>439819</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-09-30 21:32:31 -0700</bug_when>
    <thetext>Created attachment 439819
Patch

This patch addresses many comments above. This attempts to share more code in WebKitTestRunner, but it doesn&apos;t yet share any code with or within DumpRenderTree. Before I try to address that, I wanted to throw this on the bots to see that it doesn&apos;t introduce failures (seems okay with just fast/ on my machine), and to get feedback on whether using a little class to share code is too ridiculous. Should it just be a static function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799618</commentid>
    <comment_count>17</comment_count>
      <attachid>439930</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-01 16:29:16 -0700</bug_when>
    <thetext>Created attachment 439930
Patch

This patch shares all the duplicated testing code with TestRunnerShared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800099</commentid>
    <comment_count>18</comment_count>
      <attachid>440071</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-04 10:08:09 -0700</bug_when>
    <thetext>Created attachment 440071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800822</commentid>
    <comment_count>19</comment_count>
      <attachid>440286</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-05 15:55:19 -0700</bug_when>
    <thetext>Created attachment 440286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800826</commentid>
    <comment_count>20</comment_count>
      <attachid>440287</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-05 16:03:36 -0700</bug_when>
    <thetext>Created attachment 440287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802897</commentid>
    <comment_count>21</comment_count>
      <attachid>440864</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-11 17:24:13 -0700</bug_when>
    <thetext>Created attachment 440864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802950</commentid>
    <comment_count>22</comment_count>
      <attachid>440879</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-11 20:28:36 -0700</bug_when>
    <thetext>Created attachment 440879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803893</commentid>
    <comment_count>23</comment_count>
      <attachid>440879</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-10-13 11:41:11 -0700</bug_when>
    <thetext>Comment on attachment 440879
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=440879&amp;action=review

&gt; Source/WebCore/page/FocusController.cpp:363
&gt; +        oldFrameView-&gt;stopScrollAnimations();

I think this is specifically about keyboard animations? It won&apos;t stop the rubber-band or a scroll-to, right? Maybe the name should be more specific?

&gt; Tools/ChangeLog:6
&gt; +

extraneous newline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803897</commentid>
    <comment_count>24</comment_count>
      <attachid>440879</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-13 11:47:13 -0700</bug_when>
    <thetext>Comment on attachment 440879
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=440879&amp;action=review

&gt; Source/WebCore/page/Page.cpp:2384
&gt; +        for (auto&amp; scrollableArea : *scrollableAreas)
&gt; +            scrollableArea-&gt;stopScrollAnimations();

This will stop smooth scroll animations and possibly rubberband animations too, which I guess is OK (they are short).

You&apos;ll also need to call stopAsyncAnimatedScroll() to prepare for the keyboard scroller running on the scrolling thread (the code is not well factored; ScrollableArea should have a common function for stopping sync and async scrolls).

&gt; Source/WebCore/platform/ScrollingEffectsController.cpp:97
&gt; +void ScrollingEffectsController::stopScrollAnimations()
&gt; +{
&gt; +    if (m_isAnimatingKeyboardScrolling)
&gt; +        m_client.keyboardScrollingAnimator()-&gt;handleKeyUpEvent();
&gt; +}

I think it&apos;s wrong for ScrollingEffectsController::stopScrollAnimations() to only stop keyboard animations. This class now has smooth scroll and will have rubberband animations.

Also, ScrollingEffectsController::stopAnimatedScroll() and ScrollingEffectsController::stopKeyboardScrolling() already exist.

Either change the whole call chain from Page down to be about keyboard scrolling, or keep the names and call the existing stopAnimatedScroll().

&gt; Tools/DumpRenderTree/mac/EventSendingController.mm:1088
&gt; +    RetainPtr&lt;ModifierKeys&gt; modifierKeys = [ModifierKeys modifierKeysWithKey:character modifiers:buildModifierFlags(modifiers) keyLocation:location];
&gt; +
&gt; +    [[[mainFrame frameView] documentView] layout];
&gt; +
&gt; +#if !PLATFORM(IOS_FAMILY)
&gt; +    auto event = retainPtr([NSEvent keyEventWithType:NSEventTypeKeyUp
&gt; +        location:NSMakePoint(5, 5)
&gt; +        modifierFlags:modifierKeys-&gt;modifierFlags
&gt; +        timestamp:[self currentEventTime]
&gt; +        windowNumber:[[[mainFrame webView] window] windowNumber]
&gt; +        context:[NSGraphicsContext currentContext]
&gt; +        characters:modifierKeys-&gt;eventCharacter.get()
&gt; +        charactersIgnoringModifiers:modifierKeys-&gt;charactersIgnoringModifiers.get()
&gt; +        isARepeat:NO
&gt; +        keyCode:modifierKeys-&gt;keyCode]);
&gt; +#else
&gt; +    auto event = adoptNS([[WebEvent alloc] initWithKeyEventType:WebEventKeyUp timeStamp:[self currentEventTime] characters:modifierKeys-&gt;eventCharacter.get() charactersIgnoringModifiers:modifierKeys-&gt;charactersIgnoringModifiers.get() modifiers:(WebEventFlags)modifierKeys-&gt;modifierFlags isRepeating:NO withFlags:0 withInputManagerHint:nil keyCode:[character characterAtIndex:0] isTabKey:([character characterAtIndex:0] == &apos;\t&apos;)]);
&gt; +#endif

Lots of sharable code here.

&gt; Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:49
&gt; +    undefined rawKeyDown(DOMString key, object modifierArray, long location);

I&apos;d like to see a comment explaining what &quot;raw&quot; means.

&gt; Tools/WebKitTestRunner/mac/EventSenderProxy.mm:695
&gt; +    RetainPtr&lt;ModifierKeys&gt; modifierKeys = [ModifierKeys modifierKeysWithKey:toWTFString(key) modifiers:buildModifierFlags(modifiers) keyLocation:keyLocation];
&gt; +
&gt; +    NSEvent *event = [NSEvent keyEventWithType:NSEventTypeKeyUp
&gt; +        location:NSMakePoint(5, 5)
&gt; +        modifierFlags:modifierKeys-&gt;modifierFlags
&gt; +        timestamp:absoluteTimeForEventTime(currentEventTime())
&gt; +        windowNumber:[m_testController-&gt;mainWebView()-&gt;platformWindow() windowNumber]
&gt; +        context:[NSGraphicsContext currentContext]
&gt; +        characters:modifierKeys-&gt;eventCharacter.get()
&gt; +        charactersIgnoringModifiers:modifierKeys-&gt;charactersIgnoringModifiers.get()
&gt; +        isARepeat:NO
&gt; +        keyCode:modifierKeys-&gt;keyCode];

Ditto for code sharing.

&gt; LayoutTests/fast/scrolling/unfocusing-page-while-keyboard-scrolling.html:1
&gt; +&lt;!DOCTYPE html&gt; &lt;!-- webkit-test-runner [ useFlexibleViewport=true EventHandlerDrivenSmoothKeyboardScrollingEnabled=true ] --&gt;

Has useFlexibleViewport but you&apos;re only enabling the test on macOS? useFlexibleViewport only applies to iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803954</commentid>
    <comment_count>25</comment_count>
      <attachid>440879</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-10-13 13:58:39 -0700</bug_when>
    <thetext>Comment on attachment 440879
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=440879&amp;action=review

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:49
&gt;&gt; +    undefined rawKeyDown(DOMString key, object modifierArray, long location);
&gt; 
&gt; I&apos;d like to see a comment explaining what &quot;raw&quot; means.

Or maybe a FIXME that says &quot;keydown should really be called &apos;keyDownAndUp&apos;, rawKeyDown just sends a keyDown&quot; :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805201</commentid>
    <comment_count>26</comment_count>
      <attachid>441472</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-15 21:28:50 -0700</bug_when>
    <thetext>Created attachment 441472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805276</commentid>
    <comment_count>27</comment_count>
      <attachid>441472</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-16 10:32:35 -0700</bug_when>
    <thetext>Comment on attachment 441472
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=441472&amp;action=review

&gt; Source/WebCore/page/Page.cpp:2383
&gt; +        const HashSet&lt;ScrollableArea*&gt;* scrollableAreas = frameView-&gt;scrollableAreas();

auto?

&gt; Tools/DumpRenderTree/mac/EventSendingController.mm:1033
&gt; +

Extra line.

&gt; LayoutTests/ChangeLog:8
&gt; +        useFlexibleViewport and EventHandlerDrivenSmoothKeyboardScrollingEnabled keys are WK2 only 

The useFlexibleViewport thing isn&apos;t relevant any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806385</commentid>
    <comment_count>28</comment_count>
      <attachid>441810</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-19 15:52:16 -0700</bug_when>
    <thetext>Created attachment 441810
Patch

Should address Simon&apos;s comments. I&apos;m v confused by the layout test failure on iOS in the last patch, and I could not find the layout test results to correspond to it on the bots even. If anyone can point me in the right direction, it would be appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806391</commentid>
    <comment_count>29</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-19 16:07:30 -0700</bug_when>
    <thetext>That iOS crash is not caused by this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806864</commentid>
    <comment_count>30</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-20 14:50:26 -0700</bug_when>
    <thetext>Committed r284575 (243315@main): &lt;https://commits.webkit.org/243315@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441810.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837542</commentid>
    <comment_count>31</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-02-04 11:58:21 -0800</bug_when>
    <thetext>This change should be present in STP 139, iOS 15.4 Beta, and macOS 12.3 Beta.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435011</attachid>
            <date>2021-08-05 11:34:27 -0700</date>
            <delta_ts>2021-08-13 17:05:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228302-20210805143426.patch</filename>
            <type>text/plain</type>
            <size>8061</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRjNTQxOGI1MDVmMTk5
OWU1YmM1NGMyMTBjMDNkN2RkM2JjNzU3OS4uMjM2NTc4NTRjZjAxZTJmNzQ2ZTY5Yjk0ZjcyNjg2
MzE2ZjY0YTU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA4LTA1ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIG1hY09TIGtleS1kcml2
ZW4gc21vb3RoIHNjcm9sbGluZyB3aGVuIHBhZ2UgaXMgdW5mb2N1c2VkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyB0ZXN0cyB5ZXQuCisKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0QWN0aXZpdHlT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZXBvcnRVbmZvY3VzZWRUb1Njcm9sbGFi
bGVBcmVhcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc0ZvY3VzZWQpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpyZXBvcnRVbmZvY3VzZWRUb1Njcm9sbENv
bnRyb2xsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxDb250cm9sbGVyOjpoYW5kbGVQYWdlSXNVbmZvY3VzZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6cmVwb3J0VW5mb2N1c2VkVG9T
Y3JvbGxBbmltYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwog
MjAyMS0wOC0wNCAgRGFuYSBFc3RyYSAgPGRlc3RyYUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjI4MDQ5Mik6IENsaWNraW5nIGJhY2tzcGFjZSBvbiBzaWduIGluIGZpZWxkcyBy
ZXN1bHRzIGluIGRlbGV0aW5nIHR3byBjaGFyYWN0ZXJzIGluc3RlYWQgb2Ygb25lLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKaW5kZXggZjc3ODA3N2EyOTA1MzljMWExNmIxNzIxYmIwODJiYTc5OTUwZWUxZi4u
MzAxOWMyMzEzZTViZjQ0YTE0MTQ2YmRlZTkzODBmMWU5Y2UzYzlhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCkBAIC0yMzMwLDYgKzIzMzAsNyBAQCB2b2lkIFBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0
aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUpCiAgICAgYXV0byBvbGRB
Y3Rpdml0eVN0YXRlID0gbV9hY3Rpdml0eVN0YXRlOwogCiAgICAgYm9vbCB3YXNWaXNpYmxlQW5k
QWN0aXZlID0gaXNWaXNpYmxlQW5kQWN0aXZlKCk7CisgICAgYm9vbCB3YXNGb2N1c2VkID0gaXNG
b2N1c2VkKCk7CiAgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlTdGF0ZTsKIAogICAgIG1f
Zm9jdXNDb250cm9sbGVyLT5zZXRBY3Rpdml0eVN0YXRlKGFjdGl2aXR5U3RhdGUpOwpAQCAtMjM1
MSw2ICsyMzUyLDkgQEAgdm9pZCBQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rp
dml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlKQogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIg
OiBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2Uob2xkQWN0aXZpdHlTdGF0ZSwgbV9hY3Rpdml0eVN0YXRlKTsKIAor
ICAgIGlmICh3YXNGb2N1c2VkICYmICFpc0ZvY3VzZWQoKSkKKyAgICAgICAgcmVwb3J0VW5mb2N1
c2VkVG9TY3JvbGxhYmxlQXJlYXMoKTsKKwogICAgIGlmICh3YXNWaXNpYmxlQW5kQWN0aXZlICE9
IGlzVmlzaWJsZUFuZEFjdGl2ZSgpKQogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3NhcnkoKTsKIApAQCAtMjM1OCw2ICsyMzYy
LDI5IEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0
ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSkKICAgICAgICAgbV9wZXJmb3JtYW5jZU1vbml0b3ItPmFj
dGl2aXR5U3RhdGVDaGFuZ2VkKG9sZEFjdGl2aXR5U3RhdGUsIGFjdGl2aXR5U3RhdGUpOwogfQog
Cit2b2lkIFBhZ2U6OnJlcG9ydFVuZm9jdXNlZFRvU2Nyb2xsYWJsZUFyZWFzKCkKK3sKKyAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZy
YW1lLT52aWV3KCk7CisgICAgICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgZnJhbWVWaWV3LT5yZXBvcnRVbmZvY3VzZWRUb1Njcm9sbEFuaW1hdG9y
KCk7CisKKyAgICAgICAgY29uc3QgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+KiBzY3JvbGxhYmxl
QXJlYXMgPSBmcmFtZVZpZXctPnNjcm9sbGFibGVBcmVhcygpOworICAgICAgICBpZiAoIXNjcm9s
bGFibGVBcmVhcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZvciAoYXV0byYg
c2Nyb2xsYWJsZUFyZWEgOiAqc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICAgICAgc2Nyb2xsYWJs
ZUFyZWEtPnJlcG9ydFVuZm9jdXNlZFRvU2Nyb2xsQW5pbWF0b3IoKTsKKyAgICB9Cit9CisKK2Jv
b2wgUGFnZTo6aXNGb2N1c2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hY3Rpdml0eVN0YXRl
LmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7Cit9CisKIGJvb2wgUGFnZTo6aXNW
aXNpYmxlQW5kQWN0aXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNv
bnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgJiYgbV9hY3Rpdml0eVN0YXRlLmNvbnRh
aW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggN2Rh
YjA5YTIxZGNiMzAwZjVlOWVhZTczY2Y0YzUwOTZmOWQ5MmRkZi4uY2RjZGVmZjY0NDY3MGE4ZDli
Y2ZjYjk5YTAzMGVkZmFiZWJiYWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTkxNyw2ICs5MTcsOSBA
QCBwcml2YXRlOgogCiAgICAgV2hlZWxFdmVudFRlc3RNb25pdG9yJiBlbnN1cmVXaGVlbEV2ZW50
VGVzdE1vbml0b3IoKTsKIAorICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Q7CisgICAgdm9pZCBy
ZXBvcnRVbmZvY3VzZWRUb1Njcm9sbGFibGVBcmVhcygpOworCiAjaWYgRU5BQkxFKElNQUdFX0FO
QUxZU0lTKQogICAgIHZvaWQgcmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCk7CiAgICAgdm9p
ZCB1cGRhdGVFbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25SZXN1bHRzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggOWFjNDE5ZjMwMTEwY2U1Y2Ix
MGYzYWI0MmViM2IwZTMxZjIyY2JjYy4uNjJkOTlkOGE3NzI2OTRiNTY5ZTI3ZjcxOTRmMjg4MTUw
Mzc1ZDk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApA
QCAtMjU1LDYgKzI1NSwxMSBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAor
dm9pZCBTY3JvbGxBbmltYXRvcjo6cmVwb3J0VW5mb2N1c2VkVG9TY3JvbGxDb250cm9sbGVyKCkK
K3sKKyAgICBtX3Njcm9sbENvbnRyb2xsZXIuaGFuZGxlUGFnZUlzVW5mb2N1c2VkKCk7Cit9CisK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlVG91
Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggYTRmMzlkNTYxYzYzOTUxZjUzMTI5ZWZjZWY1NDI1
MGUxNTlhMmJhZi4uYmE3MzAwZDhkMjA5ZGNkN2M0ZDRjYjRlOWMxMTVhODEyMWYxNzgwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC04Myw2ICs4Myw4IEBA
IHB1YmxpYzoKIAogICAgIEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgKmtleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2tleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3IuZ2V0KCk7IH0KIAorICAgIHZvaWQgcmVwb3J0VW5mb2N1c2VkVG9TY3JvbGxDb250
cm9sbGVyKCk7CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCmluZGV4IDYzZGY3YzQ4
YzZlNjkwM2RjNGMwNmRjMjA3Zjc1Y2Y0NGRmYzhmNWEuLmE0ZjhkODM1NDIwMTk4YTY2NDc4YTZm
OTVmM2I0ZDFmNWEyMTg3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENv
bnRyb2xsZXIuY3BwCkBAIC0yMjgsNiArMjI4LDEyIEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6
dXBkYXRlS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNUaW1lIGN1cnJl
CiAgICAgbV9jbGllbnQua2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcigpLT51cGRhdGVLZXlib2Fy
ZFNjcm9sbFBvc2l0aW9uKGN1cnJlbnRUaW1lKTsKIH0KIAordm9pZCBTY3JvbGxDb250cm9sbGVy
OjpoYW5kbGVQYWdlSXNVbmZvY3VzZWQoKQoreworICAgIGlmIChtX2lzQW5pbWF0aW5nS2V5Ym9h
cmRTY3JvbGxpbmcpCisgICAgICAgIG1fY2xpZW50LmtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Io
KS0+aGFuZGxlS2V5VXBFdmVudCgpOworfQorCiAvLyBDdXJyZW50bHksIG9ubHkgTWFjIHN1cHBv
cnRzIG1vbWVudHVtIHNyb2xsaW5nLWJhc2VkIHNjcm9sbHNuYXBwaW5nIGFuZCBydWJiZXIgYmFu
ZGluZwogLy8gc28gYWxsIG9mIHRoZXNlIG1ldGhvZHMgYXJlIGEgbm9vcCBvbiBub24tTWFjIHBs
YXRmb3Jtcy4KICNpZiAhUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQ29udHJvbGxlci5oCmluZGV4IGRkOWMwOTIwZTRhZjFmOWJhMzI0MjFhOWQ3ZmRhYzE4M2E1
MWUzNzAuLmFhNWU4Y2RiMTI3ZDRiMzE5YjcxMzU5NjdiYjBjOGI0YmViYTAxZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKQEAgLTczLDcgKzczLDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydEFuaW1hdGlvbkNhbGxiYWNrKFNjcm9sbENv
bnRyb2xsZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltYXRpb25DYWxsYmFjayhT
Y3JvbGxDb250cm9sbGVyJikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUtleWJvYXJk
U2Nyb2xsUG9zaXRpb24oTW9ub3RvbmljVGltZSkgeyB9CiAgICAgdmlydHVhbCBLZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yICprZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yKCkgY29uc3QgeyByZXR1
cm4gbnVsbHB0cjsgfQogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpAQCAtMTI4LDYgKzEy
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5LZXlib2FyZFNjcm9sbGluZygpOwogICAg
IHZvaWQgc3RvcEtleWJvYXJkU2Nyb2xsaW5nKCk7CisgICAgdm9pZCBoYW5kbGVQYWdlSXNVbmZv
Y3VzZWQoKTsKICAgICAKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHBlcmlvZGljYWxseSBieSB0
aGUgY2xpZW50LiBTdGFydGVkIGJ5IHN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2soKSwgc3RvcHBlZCBi
eSBzdG9wQW5pbWF0aW9uQ2FsbGJhY2soKS4KICAgICB2b2lkIGFuaW1hdGlvbkNhbGxiYWNrKE1v
bm90b25pY1RpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CmluZGV4IDk2N2UxMzI2YWJlNWIzMDBhNzI3NmI0NGViOTg0YjE3OWFiNDM1NWIuLjJiNzBhNzU0
YjUzNjA3YzdiNTc5NTFlMzBlYjJmZjAzZWQ2NTQ0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTIxNSw2ICsyMTUsMTEgQEAgYm9vbCBTY3JvbGxh
YmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWUKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwogfQogCit2b2lkIFNjcm9sbGFi
bGVBcmVhOjpyZXBvcnRVbmZvY3VzZWRUb1Njcm9sbEFuaW1hdG9yKCkKK3sKKyAgICBtX3Njcm9s
bEFuaW1hdG9yLT5yZXBvcnRVbmZvY3VzZWRUb1Njcm9sbENvbnRyb2xsZXIoKTsKK30KKwogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCiBib29sIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVUb3VjaEV2
ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IGZkMzk2MzMzODBiOTQ3YTIwNTBhN2I4
NjgwYzU3OTkwZjZkNzVjYjYuLmI3ZmZkYTExNzZjZTA5ZTJjNzk1NjI2YmY3Mzg4OTZmMDZjYmQy
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTAwLDYg
KzEwMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc25hcEFmdGVyTGF5b3V0KCk7CiAgICAgdm9p
ZCBkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyhTY3JvbGxiYXJPcmllbnRhdGlvbik7CiAKKyAgICB2
b2lkIHJlcG9ydFVuZm9jdXNlZFRvU2Nyb2xsQW5pbWF0b3IoKTsKKwogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZv
cm1Ub3VjaEV2ZW50Jik7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435527</attachid>
            <date>2021-08-13 17:05:38 -0700</date>
            <delta_ts>2021-08-17 21:45:44 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-228302-20210813200537.patch</filename>
            <type>text/plain</type>
            <size>70654</size>
            <attacher name="Dana Estra">dana.estra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwODU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJmOWQ0MTE1MzQxZmQ1
ZjI3MDQwNTE3NGQxMTg5MTQ1YjY2Mjc5ZS4uMTVkYTdkOTJjNmJkODdjOGY3M2YyOWJhYTU4OWU1
ZjI4ZDRjNWIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA4LTA1ICBEYW5h
IEVzdHJhICA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIG1hY09TIGtleS1kcml2
ZW4gc21vb3RoIHNjcm9sbGluZyB3aGVuIHBhZ2UgaXMgdW5mb2N1c2VkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyB0ZXN0cyB5ZXQuCisKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0QWN0aXZpdHlT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZXBvcnRVbmZvY3VzZWRUb1Njcm9sbGFi
bGVBcmVhcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc0ZvY3VzZWQpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpyZXBvcnRVbmZvY3VzZWRUb1Njcm9sbENv
bnRyb2xsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxDb250cm9sbGVyOjpoYW5kbGVQYWdlSXNVbmZvY3VzZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6cmVwb3J0VW5mb2N1c2VkVG9T
Y3JvbGxBbmltYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwor
MjAyMS0wOC0xMCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggbmVz
dGVkIHJlc291cmNlIGxvYWQgdHJhY2Vwb2ludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXgg
Q2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVGhlIG1haW4gcmVzb3VyY2UgYW5kIHN1YnJlc291cmNl
IGxvYWQgdHJhY2Vwb2ludHMgYXJlbid0IGludGVycHJldGVkIGNvcnJlY3RseSBpZiB0aGVyZSBh
cmUKKyAgICAgICAgbXVsdGlwbGUgcmVzb3VyY2UgbG9hZHMgaW4gZmxpZ2h0IGF0IHRoZSBzYW1l
IHRpbWUuIFRvIGZpeCB0aGlzLCB3ZSBwYXNzIHRoZSBwb2ludGVyIHRvIHRoZQorICAgICAgICBG
cmFtZUxvYWRlciBvciBTdWJyZXNvdXJjZUxvYWRlciB0byBrdHJhY2Ugc28gdGhhdCB0aGUgdHJh
Y2luZyB0b29sIGNhbiB1c2UgdGhhdCBwb2ludGVyIHRvCisgICAgICAgIHByb3Blcmx5IG5lc3Qg
b3ZlcmxhcHBpbmcgcmVzb3VyY2UgbG9hZGluZyB0cmFjZSBpbnRlcnZhbHMuCisKKyAgICAgICAg
T25lIGFkZGl0aW9uYWwgY2hhbmdlIEkgbWFkZSBpcyB0byBtb3ZlIHRoZSBTdWJyZXNvdXJjZUxv
YWRXaWxsU3RhcnQgdHJhY2Vwb2ludCB0byBhZnRlciB0aGUKKyAgICAgICAgY2FsbCB0byB3aWxs
U2VuZFJlcXVlc3RJbnRlcm5hbC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBiZWNhdXNlIEkgd2Fu
dGVkIHRvIGxvZyB0aGUgcmVzb3VyY2UKKyAgICAgICAgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBz
dWJyZXNvdXJjZSByZXF1ZXN0LCBidXQgd2Ugb25seSBnZW5lcmF0ZSB0aGF0IElEIGFmdGVyIHRo
ZSBjYWxsIHRvCisgICAgICAgIHdpbGxTZW5kUmVxdWVzdEludGVybmFsLgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpw
cm92aXNpb25hbExvYWRTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpj
aGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjp3aWxs
U2VuZFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkQ2Fu
Y2VsKToKKwogMjAyMS0wOC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIERvY3VtZW50LmJhc2VVUkkgaXMgaW5hY2N1cmF0ZSBmb3IgaWZyYW1lIHNyY2RvYyBk
b2N1bWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDgzOTgzYzZh
MzA1M2JmN2M0ZWUzNzM3YmNiY2QxODkxMDE5MTg2ODIuLjNhYTk3MGUyNTNiMDczZTU0MDgwZjYw
OTNiYjRmZDQyZTJiYWJkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApA
QCAtMTA2Myw3ICsxMDYzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCgpCiAgICAgbV9jbGllbnQtPnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKTsKIAogICAgIGlm
IChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgdHJhY2VQb2ludChNYWluUmVzb3Vy
Y2VMb2FkRGlkU3RhcnRQcm92aXNpb25hbCk7CisgICAgICAgIHRyYWNlUG9pbnQoTWFpblJlc291
cmNlTG9hZERpZFN0YXJ0UHJvdmlzaW9uYWwsIFBBR0VfSUQpOwogCiAgICAgICAgIGlmIChhdXRv
KiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCiAgICAgICAgICAgICBwYWdlLT5kaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpOwpAQCAtMjU3MCw3ICsyNTcwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hl
Y2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFt
ZS5wYWdlKCk7CiAgICAgICAgIGlmIChwYWdlKSB7CiAgICAgICAgICAgICBpZiAobV9mcmFtZS5p
c01haW5GcmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgdHJhY2VQb2ludChNYWluUmVzb3VyY2VM
b2FkRGlkRW5kKTsKKyAgICAgICAgICAgICAgICB0cmFjZVBvaW50KE1haW5SZXNvdXJjZUxvYWRE
aWRFbmQsIFBBR0VfSUQpOwogICAgICAgICAgICAgICAgIHBhZ2UtPmRpZEZpbmlzaExvYWQoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggYTI2MWVhZWY0ZjI0ZDE2ZjE5NDU0ZGE1YTBiZjk1M2U3ZmJi
MjJmOS4uNTg2Njg0NGE5M2I5MmE0NGZkNzU3Mzk3NWUzOTM0YmQ5NTA4MmZiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTYsNyArMTk2LDYg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3Vy
Y2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICB9CiAKICAgICBpZiAobmV3UmVxdWVzdC5y
ZXF1ZXN0ZXIoKSAhPSBSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXF1ZXN0ZXI6Ok1haW4pIHsKLSAg
ICAgICAgdHJhY2VQb2ludChTdWJyZXNvdXJjZUxvYWRXaWxsU3RhcnQpOwogICAgICAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKG1fZnJhbWUu
Z2V0KCksIG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgICAgICAgICAoaXNTY3Jp
cHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucygpLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9i
c2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKICAgICB9CkBAIC0y
MTEsNiArMjEwLDggQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50
ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICAgICAgfQogCiAgICAg
ICAgIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChXVEZNb3ZlKG5ld1Jl
cXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIHJlZGlyZWN0UmVzcG9uc2VdIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIHRyYWNlUG9pbnQoU3VicmVzb3VyY2VMb2FkV2lsbFN0YXJ0LCBp
ZGVudGlmaWVyKCksIFBBR0VfSUQsIEZSQU1FX0lEKTsKKwogICAgICAgICAgICAgaWYgKHJlYWNo
ZWRUZXJtaW5hbFN0YXRlKCkpIHsKICAgICAgICAgICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9S
RUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlYWNoZWQgdGVybWluYWwgc3Rh
dGU7IGNhbGxpbmcgY29tcGxldGlvbiBoYW5kbGVyIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwpAQCAtNzQwLDcgKzc0MSw3IEBA
IHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1lCiAgICAgfQogCiAgICAgaWYgKG1fcmVzb3VyY2UtPnR5
cGUoKSAhPSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKQotICAgICAgICB0cmFj
ZVBvaW50KFN1YnJlc291cmNlTG9hZERpZEVuZCk7CisgICAgICAgIHRyYWNlUG9pbnQoU3VicmVz
b3VyY2VMb2FkRGlkRW5kLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV9zdGF0ZSA9IEZpbmlzaGlu
ZzsKICAgICBtX3Jlc291cmNlLT5maW5pc2hMb2FkaW5nKHJlc291cmNlRGF0YSgpLCBuZXR3b3Jr
TG9hZE1ldHJpY3MpOwpAQCAtNzg2LDcgKzc4Nyw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgbV9zdGF0ZSA9IEZpbmlz
aGluZzsKIAogICAgIGlmIChtX3Jlc291cmNlLT50eXBlKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OlR5
cGU6Ok1haW5SZXNvdXJjZSkKLSAgICAgICAgdHJhY2VQb2ludChTdWJyZXNvdXJjZUxvYWREaWRF
bmQpOworICAgICAgICB0cmFjZVBvaW50KFN1YnJlc291cmNlTG9hZERpZEVuZCwgaWRlbnRpZmll
cigpKTsKIAogICAgIGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKQogICAg
ICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmV2YWxpZGF0aW9uRmFpbGVkKCptX3Jlc291
cmNlKTsKQEAgLTgzOSw3ICs4NDAsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRDYW5j
ZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpCiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCiAgICAg
aWYgKG1fcmVzb3VyY2UtPnR5cGUoKSAhPSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291
cmNlKQotICAgICAgICB0cmFjZVBvaW50KFN1YnJlc291cmNlTG9hZERpZEVuZCk7CisgICAgICAg
IHRyYWNlUG9pbnQoU3VicmVzb3VyY2VMb2FkRGlkRW5kLCBpZGVudGlmaWVyKCkpOwogCiAgICAg
bV9yZXNvdXJjZS0+Y2FuY2VsTG9hZCgpOwogICAgIG5vdGlmeURvbmUoTG9hZENvbXBsZXRpb25U
eXBlOjpDYW5jZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYTNiOWZiZDM4OWI4ZmM4MmRjYmJh
ZWFjYjMxOGQ5NWM2ZTRiMzY1Zi4uNDc1YWVjZTdjYTcxZjk0Y2MxZDNhYzFhOGJmOWE4NWVlMWE5
NWNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMzMxLDYgKzIzMzEsNyBAQCB2b2lkIFBhZ2U6
OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5
U3RhdGUpCiAgICAgYXV0byBvbGRBY3Rpdml0eVN0YXRlID0gbV9hY3Rpdml0eVN0YXRlOwogCiAg
ICAgYm9vbCB3YXNWaXNpYmxlQW5kQWN0aXZlID0gaXNWaXNpYmxlQW5kQWN0aXZlKCk7CisgICAg
Ym9vbCB3YXNGb2N1c2VkID0gaXNGb2N1c2VkKCk7CiAgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0
aXZpdHlTdGF0ZTsKIAogICAgIG1fZm9jdXNDb250cm9sbGVyLT5zZXRBY3Rpdml0eVN0YXRlKGFj
dGl2aXR5U3RhdGUpOwpAQCAtMjM1Miw2ICsyMzUzLDkgQEAgdm9pZCBQYWdlOjpzZXRBY3Rpdml0
eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlKQogICAg
IGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcnMpCiAg
ICAgICAgIG9ic2VydmVyLmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uob2xkQWN0aXZpdHlTdGF0ZSwg
bV9hY3Rpdml0eVN0YXRlKTsKIAorICAgIGlmICh3YXNGb2N1c2VkICYmICFpc0ZvY3VzZWQoKSkK
KyAgICAgICAgcmVwb3J0VW5mb2N1c2VkVG9TY3JvbGxhYmxlQXJlYXMoKTsKKwogICAgIGlmICh3
YXNWaXNpYmxlQW5kQWN0aXZlICE9IGlzVmlzaWJsZUFuZEFjdGl2ZSgpKQogICAgICAgICBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3Nhcnko
KTsKIApAQCAtMjM1OSw2ICsyMzYzLDI5IEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShP
cHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSkKICAgICAgICAgbV9w
ZXJmb3JtYW5jZU1vbml0b3ItPmFjdGl2aXR5U3RhdGVDaGFuZ2VkKG9sZEFjdGl2aXR5U3RhdGUs
IGFjdGl2aXR5U3RhdGUpOwogfQogCit2b2lkIFBhZ2U6OnJlcG9ydFVuZm9jdXNlZFRvU2Nyb2xs
YWJsZUFyZWFzKCkKK3sKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgICAgIGlmICghZnJhbWVWaWV3
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZnJhbWVWaWV3LT5yZXBvcnRVbmZv
Y3VzZWRUb1Njcm9sbEFuaW1hdG9yKCk7CisKKyAgICAgICAgY29uc3QgSGFzaFNldDxTY3JvbGxh
YmxlQXJlYSo+KiBzY3JvbGxhYmxlQXJlYXMgPSBmcmFtZVZpZXctPnNjcm9sbGFibGVBcmVhcygp
OworICAgICAgICBpZiAoIXNjcm9sbGFibGVBcmVhcykKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGZvciAoYXV0byYgc2Nyb2xsYWJsZUFyZWEgOiAqc2Nyb2xsYWJsZUFyZWFzKQor
ICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnJlcG9ydFVuZm9jdXNlZFRvU2Nyb2xsQW5pbWF0
b3IoKTsKKyAgICB9Cit9CisKK2Jvb2wgUGFnZTo6aXNGb2N1c2VkKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7
Cit9CisKIGJvb2wgUGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgJiYg
bV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKaW5kZXggNDg3YzliMmI1ZWY0OTQ2YzljYmU5ODlmM2U3NzYxZjA4ZTYxZDgw
ZS4uMjEzN2FiY2YxNjdkMDFmZjY0MmRkYTFmMTQxMGY0MDQ0MjE3NDkwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKQEAgLTkxNyw2ICs5MTcsOSBAQCBwcml2YXRlOgogCiAgICAgV2hlZWxFdmVudFRlc3RNb25p
dG9yJiBlbnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0b3IoKTsKIAorICAgIGJvb2wgaXNGb2N1c2Vk
KCkgY29uc3Q7CisgICAgdm9pZCByZXBvcnRVbmZvY3VzZWRUb1Njcm9sbGFibGVBcmVhcygpOwor
CiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogICAgIHZvaWQgcmVzZXRUZXh0UmVjb2duaXRp
b25SZXN1bHRzKCk7CiAgICAgdm9pZCB1cGRhdGVFbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25S
ZXN1bHRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5k
ZXggOWFjNDE5ZjMwMTEwY2U1Y2IxMGYzYWI0MmViM2IwZTMxZjIyY2JjYy4uNjJkOTlkOGE3NzI2
OTRiNTY5ZTI3ZjcxOTRmMjg4MTUwMzc1ZDk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtMjU1LDYgKzI1NSwxMSBAQCBib29sIFNjcm9sbEFuaW1h
dG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKICAgICBy
ZXR1cm4gaGFuZGxlZDsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvcjo6cmVwb3J0VW5mb2N1c2Vk
VG9TY3JvbGxDb250cm9sbGVyKCkKK3sKKyAgICBtX3Njcm9sbENvbnRyb2xsZXIuaGFuZGxlUGFn
ZUlzVW5mb2N1c2VkKCk7Cit9CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogYm9vbCBTY3Jv
bGxBbmltYXRvcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggYTRmMzlkNTYx
YzYzOTUxZjUzMTI5ZWZjZWY1NDI1MGUxNTlhMmJhZi4uYmE3MzAwZDhkMjA5ZGNkN2M0ZDRjYjRl
OWMxMTVhODEyMWYxNzgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5oCkBAIC04Myw2ICs4Myw4IEBAIHB1YmxpYzoKIAogICAgIEtleWJvYXJkU2Nyb2xsaW5nQW5p
bWF0b3IgKmtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuZ2V0KCk7IH0KIAorICAgIHZvaWQgcmVwb3J0
VW5mb2N1c2VkVG9TY3JvbGxDb250cm9sbGVyKCk7CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hF
dmVudCYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xs
ZXIuY3BwCmluZGV4IDYzZGY3YzQ4YzZlNjkwM2RjNGMwNmRjMjA3Zjc1Y2Y0NGRmYzhmNWEuLmZl
MTg4YjA1MWFhYmQxNzA4Mzc1YjQyNTVmZWY4MDE5ZjQ3NTgzNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCkBAIC0yMjgsNiArMjI4LDEyIEBAIHZv
aWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRpbmdTdGF0
ZShNb25vdG9uaWNUaW1lIGN1cnJlCiAgICAgbV9jbGllbnQua2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvcigpLT51cGRhdGVLZXlib2FyZFNjcm9sbFBvc2l0aW9uKGN1cnJlbnRUaW1lKTsKIH0KIAor
dm9pZCBTY3JvbGxDb250cm9sbGVyOjpoYW5kbGVQYWdlSXNVbmZvY3VzZWQoKQoreworICAgIGlm
IChtX2lzQW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmcpIC8vaGFzIGlzc3VlIHcgbV9pc0FuaW1h
dGluZ0tleWJvYXJkU2Nyb2xsaW5nCisgICAgICAgIG1fY2xpZW50LmtleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3IoKS0+aGFuZGxlS2V5VXBFdmVudCgpOworfQorCiAvLyBDdXJyZW50bHksIG9ubHkg
TWFjIHN1cHBvcnRzIG1vbWVudHVtIHNyb2xsaW5nLWJhc2VkIHNjcm9sbHNuYXBwaW5nIGFuZCBy
dWJiZXIgYmFuZGluZwogLy8gc28gYWxsIG9mIHRoZXNlIG1ldGhvZHMgYXJlIGEgbm9vcCBvbiBu
b24tTWFjIHBsYXRmb3Jtcy4KICNpZiAhUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oCmluZGV4IGRkOWMwOTIwZTRhZjFmOWJhMzI0MjFhOWQ3
ZmRhYzE4M2E1MWUzNzAuLmFhNWU4Y2RiMTI3ZDRiMzE5YjcxMzU5NjdiYjBjOGI0YmViYTAxZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKQEAgLTczLDcg
KzczLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydEFuaW1hdGlvbkNhbGxiYWNr
KFNjcm9sbENvbnRyb2xsZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltYXRpb25D
YWxsYmFjayhTY3JvbGxDb250cm9sbGVyJikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUtleWJvYXJkU2Nyb2xsUG9zaXRpb24oTW9ub3RvbmljVGltZSkgeyB9CiAgICAgdmlydHVhbCBL
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yICprZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yKCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpAQCAt
MTI4LDYgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5LZXlib2FyZFNjcm9sbGlu
ZygpOwogICAgIHZvaWQgc3RvcEtleWJvYXJkU2Nyb2xsaW5nKCk7CisgICAgdm9pZCBoYW5kbGVQ
YWdlSXNVbmZvY3VzZWQoKTsKICAgICAKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHBlcmlvZGlj
YWxseSBieSB0aGUgY2xpZW50LiBTdGFydGVkIGJ5IHN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2soKSwg
c3RvcHBlZCBieSBzdG9wQW5pbWF0aW9uQ2FsbGJhY2soKS4KICAgICB2b2lkIGFuaW1hdGlvbkNh
bGxiYWNrKE1vbm90b25pY1RpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwCmluZGV4IDk2N2UxMzI2YWJlNWIzMDBhNzI3NmI0NGViOTg0YjE3OWFiNDM1NWIu
LjJiNzBhNzU0YjUzNjA3YzdiNTc5NTFlMzBlYjJmZjAzZWQ2NTQ0OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTIxNSw2ICsyMTUsMTEgQEAgYm9v
bCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWUKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50OwogfQogCit2b2lk
IFNjcm9sbGFibGVBcmVhOjpyZXBvcnRVbmZvY3VzZWRUb1Njcm9sbEFuaW1hdG9yKCkKK3sKKyAg
ICBtX3Njcm9sbEFuaW1hdG9yLT5yZXBvcnRVbmZvY3VzZWRUb1Njcm9sbENvbnRyb2xsZXIoKTsK
K30KKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBib29sIFNjcm9sbGFibGVBcmVhOjpoYW5k
bGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IGZkMzk2MzMzODBiOTQ3
YTIwNTBhN2I4NjgwYzU3OTkwZjZkNzVjYjYuLmI3ZmZkYTExNzZjZTA5ZTJjNzk1NjI2YmY3Mzg4
OTZmMDZjYmQyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApA
QCAtMTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc25hcEFmdGVyTGF5b3V0KCk7
CiAgICAgdm9pZCBkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyhTY3JvbGxiYXJPcmllbnRhdGlvbik7
CiAKKyAgICB2b2lkIHJlcG9ydFVuZm9jdXNlZFRvU2Nyb2xsQW5pbWF0b3IoKTsKKwogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29u
c3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJWaWV3TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdNYWMubW0KaW5kZXggMzVlNWI1YjljMzY4YzJlM2FhMzdj
NDQyYjkxZDUyYTExYzMyY2U2MS4uMTlmNzUwZDJlNzU0ODkzNjI3OTFiZTJiNTlhMGI2ODA2NDkw
NmM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZp
ZXdNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdN
YWMubW0KQEAgLTU0OCw2ICs1NDgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19CRUdJTgogCiAtICh2b2lkKWtleVVwOihOU0V2ZW50ICopdGhlRXZlbnQKIHsKKyAgICBXVEZS
ZXBvcnRCYWNrdHJhY2UoKTsKICAgICBfaW1wbC0+a2V5VXAodGhlRXZlbnQpOwogfQogCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzRiMjZhMzY5
MWNjZDc3OGM2YmI3YWJjZmEzZDdhYjNhYmMwZmQwYi4uMzRkMjQxZDJhNWYyZWMwNzM2NWI1M2Y1
NjM4Mzc3NmJiYWNmNmZlZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA4LTEwICBCZW4gTmhhbSAgPG5oYW1A
YXBwbGUuY29tPgorCisgICAgICAgIEZpeCBuZXN0ZWQgcmVzb3VyY2UgbG9hZCB0cmFjZXBvaW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MjQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBVc2Ug
cGFnZSBhbmQgcmVzb3VyY2UgaWRzIHRvIHByb3Blcmx5IGhhbmRsZSBuZXN0ZWQgbWFpbiByZXNv
dXJjZSBhbmQgc3VicmVzb3VyY2UgbG9hZAorICAgICAgICB0cmFjZXBvaW50IGludGVydmFscy4K
KworICAgICAgICAqIFRyYWNpbmcvU3lzdGVtVHJhY2VQb2ludHMucGxpc3Q6CisKIDIwMjEtMDgt
MTAgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3Jp
cHRzL2dlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaDogbGluZSAxOTogWzogYmluYXJ5IG9wZXJh
dG9yIGV4cGVjdGVkIHdoaWxlIGJ1aWxkaW5nIFNvdXJjZS9XZWJLaXQKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggYjg3OTQy
YjNjNmM5MjVmNDM1NWY1ZTUzNzNhNWY2ZGVlZjBmZjA2MS4uMzFiZDViYzE0YmYyMzUyYmJlODI2
MTc2NjEzMTMzOTQ2MGU1ZjYwZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KQEAgLTIwMiw2ICsyMDIsOCBAQCBzdGF0aWMgTlNE
cmFnZ2luZ1Nlc3Npb24gKmRydF9XZWJIVE1MVmlld19iZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJ
dGVtc0V2ZW50U291cgogICAgICAgICBAImZvY3VzIiwKICAgICAgICAgQCJpbnB1dCIsCiAgICAg
ICAgIEAia2V5ZG93biIsCisgICAgICAgIEAicmF3a2V5ZG93biIsCisgICAgICAgIEAicmF3a2V5
dXAiLAogICAgICAgICBAImtleXByZXNzIiwKICAgICAgICAgQCJrZXl1cCIsCiAgICAgICAgIEAi
bG9hZCIsCkBAIC0yNDUsNiArMjQ3LDggQEAgc3RhdGljIE5TRHJhZ2dpbmdTZXNzaW9uICpkcnRf
V2ViSFRNTFZpZXdfYmVnaW5EcmFnZ2luZ1Nlc3Npb25XaXRoSXRlbXNFdmVudFNvdXIKICAgICAg
ICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoZW5hYmxlRE9NVUlFdmVudExvZ2dpbmc6
KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihmaXJlS2V5Ym9hcmRFdmVu
dHNUb0VsZW1lbnQ6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihrZXlE
b3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikKKyAgICAgICAgICAgIHx8IGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3IocmF3S2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopCisg
ICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tleVVwOndpdGhNb2RpZmll
cnM6d2l0aExvY2F0aW9uOikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
bGVhcEZvcndhcmQ6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcihtb3Vz
ZURvd246d2l0aE1vZGlmaWVyczopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVj
dG9yKG1vdXNlTW92ZVRvWDpZOikKQEAgLTMwNiw2ICszMTAsMTAgQEAgc3RhdGljIE5TRHJhZ2dp
bmdTZXNzaW9uICpkcnRfV2ViSFRNTFZpZXdfYmVnaW5EcmFnZ2luZ1Nlc3Npb25XaXRoSXRlbXNF
dmVudFNvdXIKICAgICAgICAgcmV0dXJuIEAiZmlyZUtleWJvYXJkRXZlbnRzVG9FbGVtZW50IjsK
ICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihrZXlEb3duOndpdGhNb2RpZmllcnM6d2l0
aExvY2F0aW9uOikpCiAgICAgICAgIHJldHVybiBAImtleURvd24iOworICAgIGlmIChhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKHJhd0tleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkK
KyAgICAgICAgcmV0dXJuIEAicmF3S2V5RG93biI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IocmF3S2V5VXA6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkKKyAgICAgICAgcmV0
dXJuIEAicmF3S2V5VXAiOwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNjaGVkdWxl
QXN5bmNocm9ub3VzS2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQogICAgICAg
ICByZXR1cm4gQCJzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24iOwogICAgIGlmIChhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKGxlYXBGb3J3YXJkOikpCkBAIC0xMjA5LDYgKzEyMTcsNDM4IEBAIHN0
YXRpYyBOU1VJbnRlZ2VyIHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKCkKICAgICBb
c2VsZiBrZXlEb3duOmNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOm1vZGlmaWVycyB3aXRoTG9jYXRp
b246bG9jYXRpb25dOwogfQogCistICh2b2lkKXJhd0tleURvd246KE5TU3RyaW5nICopY2hhcmFj
dGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRp
b246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sKKyAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0
ZXIgPSBjaGFyYWN0ZXI7CisgICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7CisgICAgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIGtleUNvZGUgPSAweDdCOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJyaWdodEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
UmlnaHRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0g
MHg3QzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJv
dyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0U7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAg
ICAgICBrZXlDb2RlID0gMHg3RDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicGFnZVVwIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZVVw
RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc0OworICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7Cisg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc5OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TSG9tZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3
MzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7CisgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgIGtleUNvZGUgPSAweDc3OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
TlNJbnNlcnRGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
NzI7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJd
KSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OworICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NTsKKyAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IDB4MUI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM1OworICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3du
IHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgorICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCisgICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM4OworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKKyAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IDB4RkZFNzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
M0E7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29u
dHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7CisgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgIGtleUNvZGUgPSAweDNFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IDB4RkZFMjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0M7CisgICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4M0Q7CisgICAgfQorCisgICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3RyaW5n
IHdpdGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAoaS5l
LiAiRjEiLC4uLiwiRjI0IikuCisgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0
aW9uLWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgorICAgIGZvciAodW5zaWduZWQgaSA9IDE7
IGkgPD0gMjQ7IGkrKykgeworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKKyAgICAgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOworICAgICAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgICAgIGNhc2UgMTog
a2V5Q29kZSA9IDB4N0E7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjoga2V5Q29kZSA9
IDB4Nzg7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgNToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
Nzoga2V5Q29kZSA9IDB4NjI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgODoga2V5Q29k
ZSA9IDB4NjQ7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4NjU7
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAweDZEOyBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIDExOiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgMTM6IGtleUNvZGUgPSAweDY5OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE0
OiBrZXlDb2RlID0gMHg2QjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxNToga2V5Q29k
ZSA9IDB4NzE7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAweDZB
OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE3OiBrZXlDb2RlID0gMHg0MDsgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgMTk6IGtleUNvZGUgPSAweDUwOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDIwOiBrZXlDb2RlID0gMHg1QTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1vc3Qga2V5
cy4KKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQorICAgICAgICBr
ZXlDb2RlID0gMHgzMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
IiAiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzE7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJcciJdKQorICAgICAgICBrZXlDb2RlID0gMHgyNDsKKyAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCisgICAgICAgIGtleUNvZGUg
PSAweDRDOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4Il0p
CisgICAgICAgIGtleUNvZGUgPSAweDMzOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiYSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMDsKKyAgICBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEI7
CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCisgICAgICAg
IGtleUNvZGUgPSAweDAyOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiZSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwRTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAIlx4MWIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MUI7CisKKyAg
ICBLZXlNYXBwaW5nRW50cnkgdGFibGVbXSA9IHsKKyAgICAgICAgezB4MkYsIDB4NDEsICcuJywg
bmlsfSwKKyAgICAgICAgezAsICAgIDB4NDMsICcqJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4
NDUsICcrJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25L
ZXksIEAiY2xlYXIifSwKKyAgICAgICAgezB4MkMsIDB4NEIsICcvJywgbmlsfSwKKyAgICAgICAg
ezAsICAgIDB4NEMsIDMsIEAiZW50ZXIiIH0sCisgICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5p
bH0sCisgICAgICAgIHsweDE4LCAweDUxLCAnPScsIG5pbH0sCisgICAgICAgIHsweDFELCAweDUy
LCAnMCcsIG5pbH0sCisgICAgICAgIHsweDEyLCAweDUzLCAnMScsIG5pbH0sCisgICAgICAgIHsw
eDEzLCAweDU0LCAnMicsIG5pbH0sCisgICAgICAgIHsweDE0LCAweDU1LCAnMycsIG5pbH0sCisg
ICAgICAgIHsweDE1LCAweDU2LCAnNCcsIG5pbH0sCisgICAgICAgIHsweDE3LCAweDU3LCAnNScs
IG5pbH0sCisgICAgICAgIHsweDE2LCAweDU4LCAnNicsIG5pbH0sCisgICAgICAgIHsweDFBLCAw
eDU5LCAnNycsIG5pbH0sCisgICAgICAgIHsweDFDLCAweDVCLCAnOCcsIG5pbH0sCisgICAgICAg
IHsweDE5LCAweDVDLCAnOScsIG5pbH0sCisgICAgfTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgV1RGX0FSUkFZX0xFTkdUSCh0YWJsZSk7ICsraSkgeworICAgICAgICBOU1N0cmluZyog
Y3VycmVudENoYXJhY3RlclN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
dGFibGVbaV0uY2hhcmFjdGVyIGxlbmd0aDoxXTsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOmN1cnJlbnRDaGFyYWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOnRhYmxlW2ldLmNoYXJhY3Rlck5hbWVdKSB7CisgICAgICAgICAgICBpZiAobG9j
YXRpb24gPT0gRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQpCisgICAgICAgICAgICAgICAga2V5Q29k
ZSA9IHRhYmxlW2ldLm1hY051bXBhZEtleUNvZGU7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7CisgICAgICAgICAgICBldmVu
dENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmc7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKworICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnMgPSBldmVudENoYXJhY3RlcjsKKworICAgIGludCBtb2RpZmllckZsYWdzID0gMDsKKwor
ICAgIGlmIChbY2hhcmFjdGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0
SW5kZXg6MF0gPj0gJ0EnICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA8PSAnWicp
IHsKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBO
U0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQ7CisjZWxzZQorICAgICAgICBtb2RpZmllckZsYWdzIHw9
IFdlYkV2ZW50RmxhZ01hc2tMZWZ0U2hpZnRLZXk7CisjZW5kaWYKKyAgICAgICAgY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOworICAgIH0K
KworICAgIG1vZGlmaWVyRmxhZ3MgfD0gYnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycyk7CisK
KyAgICBpZiAobG9jYXRpb24gPT0gRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQpCisgICAgICAgIG1v
ZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisKKyAgICBbW1tt
YWluRnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CisKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2
ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duCisgICAgICAgICAgICAgICAgICAgICAgICBs
b2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZp
ZXJGbGFnczptb2RpZmllckZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6
W3NlbGYgY3VycmVudEV2ZW50VGltZV0KKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051
bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4
dF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpO
TworICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7CisjZWxzZQorICAg
IGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRU
eXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hh
cmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllckZs
YWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBr
ZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJhY3Rl
ciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CisjZW5kaWYKKworI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50LmdldCgpXTsK
KyNlbmRpZgorICAgIFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBmaXJzdFJlc3BvbmRl
cl0ga2V5RG93bjpldmVudC5nZXQoKV07CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
W05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKKyNlbmRpZgorfQorCistICh2b2lkKXJhd0tl
eURvd25XcmFwcGVyOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3Jp
cHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9u
Cit7CisgICAgW3NlbGYgcmF3S2V5RG93bjpjaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczptb2RpZmll
cnMgd2l0aExvY2F0aW9uOmxvY2F0aW9uXTsKK30KKworLSAodm9pZClyYXdLZXlVcDooTlNTdHJp
bmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJz
IHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAgIE5TU3RyaW5nICpl
dmVudENoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAgICB1bnNpZ25lZCBzaG9ydCBrZXlDb2RlID0g
MDsKKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgewor
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKKyAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDdDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJ1cEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1
bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3RTsKKyAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdEOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNQYWdlVXBGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4NzQ7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VE
b3duIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlvbktl
eTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzk7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDczOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJlbmQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzc7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7CisgICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBr
ZXlDb2RlID0gMHg3MjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiZGVsZXRlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rp
b25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc1OworICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgeworICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gMHgxQjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4MzU7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInByaW50
U2NyZWVuIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5j
dGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUg
aXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCisgICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0ZXJBIl0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKKyAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNzaWFuIGxh
eW91dC4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENv
bnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUzOworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IDB4RkZFMTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Mzg7CisgICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3OworICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBr
ZXlDb2RlID0gMHgzQTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAicmlnaHRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNDsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0U7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgeworICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gMHhGRkUyOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0g
MHgzQzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRB
bHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OworICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBrZXlDb2RlID0gMHgzRDsKKyAgICB9CisKKyAgICAvLyBDb21wYXJlIHRoZSBp
bnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhlIERP
TSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KKyAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5n
IGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCisgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgeworICAg
ICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7Cisg
ICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICAg
ICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAy
OiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2Rl
ID0gMHg2MzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3Njsg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA5OiBrZXlD
b2RlID0gMHg2NTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4
NkQ7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxNjoga2V5
Q29kZSA9IDB4NkE7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAw
eDQwOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBm
b3IgbW9zdCBrZXlzLgorICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0p
CisgICAgICAgIGtleUNvZGUgPSAweDMwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiICJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMTsKKyAgICBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCisgICAgICAgIGtleUNvZGUgPSAweDI0
OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKKyAgICAg
ICAga2V5Q29kZSA9IDB4NEM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJceDgiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzM7CisgICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAwOworICAg
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQorICAgICAgICBrZXlD
b2RlID0gMHgwQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImQi
XSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJlIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBFOworICAgIGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQorICAgICAgICBrZXlDb2RlID0g
MHgxQjsKKworICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0geworICAgICAgICB7MHgyRiwg
MHg0MSwgJy4nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAorICAgICAg
ICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxp
bmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAorICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9
LAorICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAgICAgezB4MUIsIDB4
NEUsICctJywgbmlsfSwKKyAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKKyAgICAgICAg
ezB4MUQsIDB4NTIsICcwJywgbmlsfSwKKyAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwK
KyAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKKyAgICAgICAgezB4MTQsIDB4NTUsICcz
JywgbmlsfSwKKyAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKKyAgICAgICAgezB4MTcs
IDB4NTcsICc1JywgbmlsfSwKKyAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKKyAgICAg
ICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKKyAgICAgICAgezB4MUMsIDB4NUIsICc4Jywgbmls
fSwKKyAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKKyAgICB9OworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7CisgICAgICAg
IE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgICAgICBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKKyAgICAgICAg
ICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkKKyAgICAgICAgICAg
ICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKKyAgICAg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOworCisgICAgaW50IG1vZGlmaWVyRmxh
Z3MgPSAwOworCisgICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIg
Y2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4
OjBdIDw9ICdaJykgeworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBtb2RpZmll
ckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKKyNlbHNlCisgICAgICAgIG1vZGlm
aWVyRmxhZ3MgfD0gV2ViRXZlbnRGbGFnTWFza0xlZnRTaGlmdEtleTsKKyNlbmRpZgorICAgICAg
ICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmlu
Z107CisgICAgfQorCisgICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxhZ3MobW9k
aWZpZXJzKTsKKworICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkK
KyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsK
KworICAgIFtbW21haW5GcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKKwor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05T
RXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCisgICAgICAgICAgICAgICAg
ICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICB0
aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KKyAgICAgICAgICAgICAgICAgICAgICAg
IHdpbmRvd051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJd
CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJy
ZW50Q29udGV4dF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFy
YWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
czpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlz
QVJlcGVhdDpOTworICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7Cisj
ZWxzZQorICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRo
S2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRp
bWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
OmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9k
aWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGlu
dDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtj
aGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworI2VuZGlmCisKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudC5n
ZXQoKV07CisjZW5kaWYKKyAgICBbW1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RS
ZXNwb25kZXJdIGtleVVwOmV2ZW50LmdldCgpXTsKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOworI2VuZGlmCit9CisKKy0gKHZvaWQp
cmF3S2V5VXBXcmFwcGVyOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJT
Y3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0
aW9uCit7CisgICAgW3NlbGYgcmF3S2V5VXA6Y2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6bW9kaWZp
ZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07Cit9CisKIC0gKHZvaWQpc2NoZWR1bGVBc3luY2hy
b25vdXNLZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3Jp
cHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9u
CiB7CiAgICAgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gW05TSW52b2NhdGlvbiBpbnZvY2F0
aW9uV2l0aE1ldGhvZFNpZ25hdHVyZTpbRXZlbnRTZW5kaW5nQ29udHJvbGxlciBpbnN0YW5jZU1l
dGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yOkBzZWxlY3RvcihrZXlEb3duV3JhcHBlcjp3aXRoTW9k
aWZpZXJzOndpdGhMb2NhdGlvbjopXV07CmRpZmYgLS1naXQgYS9Ub29scy9UcmFjaW5nL1N5c3Rl
bVRyYWNlUG9pbnRzLnBsaXN0IGIvVG9vbHMvVHJhY2luZy9TeXN0ZW1UcmFjZVBvaW50cy5wbGlz
dAppbmRleCAwN2M0MzdlM2QyMTA2M2Q0ZjNmYmRmOWE1YWZhYzY1NDkzMzEwMmQ5Li44MzhhYjEz
MDM5ZmFhOGQwNDBmMTM5ZTljYjdkMjg0YzEzMGMwZjMzIDEwMDY0NAotLS0gYS9Ub29scy9UcmFj
aW5nL1N5c3RlbVRyYWNlUG9pbnRzLnBsaXN0CisrKyBiL1Rvb2xzL1RyYWNpbmcvU3lzdGVtVHJh
Y2VQb2ludHMucGxpc3QKQEAgLTY2LDYgKzY2LDIxIEBACiAgICAgICAgICAgICAgICAgIDxzdHJp
bmc+NTAwMTwvc3RyaW5nPgogICAgICAgICAgICAgICAgICA8a2V5PkNvZGVFbmQ8L2tleT4KICAg
ICAgICAgICAgICAgICAgPHN0cmluZz41MDAyPC9zdHJpbmc+CisgICAgICAgICAgICAgICAgIDxr
ZXk+QXJnTmFtZXNCZWdpbjwva2V5PgorICAgICAgICAgICAgICAgICA8ZGljdD4KKyAgICAgICAg
ICAgICAgICAgICAgIDxrZXk+QXJnMTwva2V5PgorICAgICAgICAgICAgICAgICAgICAgPHN0cmlu
Zz5QYWdlIElEPC9zdHJpbmc+CisgICAgICAgICAgICAgICAgIDwvZGljdD4KKyAgICAgICAgICAg
ICAgICAgPGtleT5BcmdWYWx1ZVR5cGVzQmVnaW48L2tleT4KKyAgICAgICAgICAgICAgICAgPGRp
Y3Q+CisgICAgICAgICAgICAgICAgICAgICA8a2V5PkFyZzE8L2tleT4KKyAgICAgICAgICAgICAg
ICAgICAgIDxzdHJpbmc+VUludDY0PC9zdHJpbmc+CisgICAgICAgICAgICAgICAgIDwvZGljdD4K
KyAgICAgICAgICAgICAgICAgPGtleT5FdmVudHNNYXRjaGVkQnk8L2tleT4KKyAgICAgICAgICAg
ICAgICAgPGFycmF5PgorICAgICAgICAgICAgICAgICAgICAgPHN0cmluZz5UaHJlYWQ8L3N0cmlu
Zz4KKyAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmc+QXJnMTwvc3RyaW5nPgorICAgICAgICAg
ICAgICAgICA8L2FycmF5PgogICAgICAgICAgICAgIDwvZGljdD4KICAgICAgICAgICAgICA8ZGlj
dD4KICAgICAgICAgICAgICAgICAgPGtleT5OYW1lPC9rZXk+CkBAIC03OCw2ICs5MywyOSBAQAog
ICAgICAgICAgICAgICAgICA8c3RyaW5nPjUwMDM8L3N0cmluZz4KICAgICAgICAgICAgICAgICAg
PGtleT5Db2RlRW5kPC9rZXk+CiAgICAgICAgICAgICAgICAgIDxzdHJpbmc+NTAwNDwvc3RyaW5n
PgorICAgICAgICAgICAgICAgICA8a2V5PkFyZ05hbWVzQmVnaW48L2tleT4KKyAgICAgICAgICAg
ICAgICAgPGRpY3Q+CisgICAgICAgICAgICAgICAgICAgICA8a2V5PkFyZzE8L2tleT4KKyAgICAg
ICAgICAgICAgICAgICAgIDxzdHJpbmc+UmVzb3VyY2UgSUQ8L3N0cmluZz4KKyAgICAgICAgICAg
ICAgICAgICAgIDxrZXk+QXJnMjwva2V5PgorICAgICAgICAgICAgICAgICAgICAgPHN0cmluZz5Q
YWdlIElEPC9zdHJpbmc+CisgICAgICAgICAgICAgICAgICAgICA8a2V5PkFyZzM8L2tleT4KKyAg
ICAgICAgICAgICAgICAgICAgIDxzdHJpbmc+RnJhbWUgSUQ8L3N0cmluZz4KKyAgICAgICAgICAg
ICAgICAgPC9kaWN0PgorICAgICAgICAgICAgICAgICA8a2V5PkFyZ1ZhbHVlVHlwZXNCZWdpbjwv
a2V5PgorICAgICAgICAgICAgICAgICA8ZGljdD4KKyAgICAgICAgICAgICAgICAgICAgIDxrZXk+
QXJnMTwva2V5PgorICAgICAgICAgICAgICAgICAgICAgPHN0cmluZz5VSW50NjQ8L3N0cmluZz4K
KyAgICAgICAgICAgICAgICAgICAgIDxrZXk+QXJnMjwva2V5PgorICAgICAgICAgICAgICAgICAg
ICAgPHN0cmluZz5VSW50NjQ8L3N0cmluZz4KKyAgICAgICAgICAgICAgICAgICAgIDxrZXk+QXJn
Mzwva2V5PgorICAgICAgICAgICAgICAgICAgICAgPHN0cmluZz5VSW50NjQ8L3N0cmluZz4KKyAg
ICAgICAgICAgICAgICAgPC9kaWN0PgorICAgICAgICAgICAgICAgICA8a2V5PkV2ZW50c01hdGNo
ZWRCeTwva2V5PgorICAgICAgICAgICAgICAgICA8YXJyYXk+CisgICAgICAgICAgICAgICAgICAg
ICA8c3RyaW5nPlRocmVhZDwvc3RyaW5nPgorICAgICAgICAgICAgICAgICAgICAgPHN0cmluZz5B
cmcxPC9zdHJpbmc+CisgICAgICAgICAgICAgICAgIDwvYXJyYXk+CiAgICAgICAgICAgICAgPC9k
aWN0PgogICAgICAgICAgICAgIDxkaWN0PgogICAgICAgICAgICAgICAgICA8a2V5Pk5hbWU8L2tl
eT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKaW5kZXggMThmYTg5
MmU0MjdjMDAwY2QzNTdmZTExZDg0NWVjMjA5Y2YyMTFkMy4uM2E5OTdkOThiNTBhMjJmZGQ3NGNk
OGFjNTdjMDc1Yzc0OWM5MWQzYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9F
dmVudFNlbmRlclByb3h5LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgKQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogICAgIHZvaWQgbGVhcEZvcndhcmQo
aW50IG1pbGxpc2Vjb25kcyk7CiAKICAgICB2b2lkIGtleURvd24oV0tTdHJpbmdSZWYga2V5LCBX
S0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlEb3du
KFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycywgdW5zaWduZWQgbG9jYXRpb24pOwor
ICAgIHZvaWQgcmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNp
Z25lZCBsb2NhdGlvbik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB1bnNpZ25lZCBtb3Vz
ZUJ1dHRvbnNDdXJyZW50bHlEb3duKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZUJ1dHRvbnNDdXJy
ZW50bHlEb3duOyB9CkBAIC0xMDEsNiArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0
ZUNsaWNrQ291bnRGb3JCdXR0b24oaW50IGJ1dHRvbik7CiAKICAgICB2b2lkIHNlbmRNb3VzZURv
d25Ub1N0YXJ0UHJlc3N1cmVFdmVudHMoKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVu
dW0gY2xhc3MgUHJlc3N1cmVDaGFuZ2VEaXJlY3Rpb24geyBJbmNyZWFzaW5nLCBEZWNyZWFzaW5n
IH07CiAgICAgUmV0YWluUHRyPE5TRXZlbnQ+IGJlZ2luUHJlc3N1cmVFdmVudChpbnQgc3RhZ2Up
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwKaW5kZXgg
YzkwMjNlMTI3ZmM1ZTM0Yzg1OTc1ZGU3NDIyMjY2OGYwZTBkOTU5My4uODg1YmFhNjk2YjdkZWIz
NWQ3YjExNmIxM2JiMGE2Y2M5M2NkNmU2YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIuaWRsCkBAIC00NSw2ICs0NSw4IEBAIGludGVyZmFjZSBFdmVudFNl
bmRpbmdDb250cm9sbGVyIHsKICAgICB1bmRlZmluZWQgbGVhcEZvcndhcmQobG9uZyBtaWxsaXNl
Y29uZHMpOwogCiAgICAgdW5kZWZpbmVkIGtleURvd24oRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1v
ZGlmaWVyQXJyYXksIGxvbmcgbG9jYXRpb24pOworICAgIHVuZGVmaW5lZCByYXdLZXlEb3duKERP
TVN0cmluZyBrZXksIG9iamVjdCBtb2RpZmllckFycmF5LCBsb25nIGxvY2F0aW9uKTsKKyAgICB1
bmRlZmluZWQgcmF3S2V5VXAoRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1vZGlmaWVyQXJyYXksIGxv
bmcgbG9jYXRpb24pOwogICAgIHVuZGVmaW5lZCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24o
RE9NU3RyaW5nIGtleSk7CiAKICAgICAvLyBab29tIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIuY3BwCmluZGV4IDJhZTk2NzhkNzc3YzI4OTc5NTY4MzEwZTRlYTRkYjQzMTRl
OTM0ZDIuLmNiNjEyYWRjYzE2OWY2NWZkYzk1YmNkNzE0NDI3Y2FiMGQxYTZkMDMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9F
dmVudFNlbmRpbmdDb250cm9sbGVyLmNwcApAQCAtMzAxLDExICszMDEsNDEgQEAgc3RhdGljIFdL
UmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNyZWF0ZUtleURvd25NZXNzYWdlQm9k
eShKU1N0cmluZ1JlZgogICAgIHJldHVybiBib2R5OwogfQogCitzdGF0aWMgV0tSZXRhaW5QdHI8
V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRlUmF3S2V5RG93bk1lc3NhZ2VCb2R5KEpTU3Ry
aW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGludCBsb2NhdGlvbikKK3sK
KyAgICBhdXRvIGJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7Cisg
ICAgc2V0VmFsdWUoYm9keSwgIlN1Yk1lc3NhZ2UiLCAiUmF3S2V5RG93biIpOworICAgIHNldFZh
bHVlKGJvZHksICJLZXkiLCBrZXkpOworICAgIHNldFZhbHVlKGJvZHksICJNb2RpZmllcnMiLCBh
ZG9wdFdLKFdLVUludDY0Q3JlYXRlKG1vZGlmaWVycykpKTsKKyAgICBzZXRWYWx1ZShib2R5LCAi
TG9jYXRpb24iLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKGxvY2F0aW9uKSkpOworICAgIHJldHVy
biBib2R5OworfQorCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4g
Y3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keShKU1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmll
cnMgbW9kaWZpZXJzLCBpbnQgbG9jYXRpb24pCit7CisgICAgYXV0byBib2R5ID0gYWRvcHRXSyhX
S011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworICAgIHNldFZhbHVlKGJvZHksICJTdWJNZXNz
YWdlIiwgIlJhd0tleVVwIik7CisgICAgc2V0VmFsdWUoYm9keSwgIktleSIsIGtleSk7CisgICAg
c2V0VmFsdWUoYm9keSwgIk1vZGlmaWVycyIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobW9kaWZp
ZXJzKSkpOworICAgIHNldFZhbHVlKGJvZHksICJMb2NhdGlvbiIsIGFkb3B0V0soV0tVSW50NjRD
cmVhdGUobG9jYXRpb24pKSk7CisgICAgcmV0dXJuIGJvZHk7Cit9CisKIHZvaWQgRXZlbnRTZW5k
aW5nQ29udHJvbGxlcjo6a2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZp
ZXJBcnJheSwgaW50IGxvY2F0aW9uKQogewogICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdl
KCJFdmVudFNlbmRlciIsIGNyZWF0ZUtleURvd25NZXNzYWdlQm9keShrZXksIHBhcnNlTW9kaWZp
ZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRpb24pKTsKIH0KIAordm9pZCBFdmVudFNlbmRp
bmdDb250cm9sbGVyOjpyYXdLZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2Rp
ZmllckFycmF5LCBpbnQgbG9jYXRpb24pCit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3Nh
Z2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3S2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgcGFyc2VN
b2RpZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOworfQorCit2b2lkIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleVVwKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBt
b2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pCit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1l
c3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keShrZXksIHBhcnNl
TW9kaWZpZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRpb24pKTsKK30KKwogdm9pZCBFdmVu
dFNlbmRpbmdDb250cm9sbGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oSlNTdHJpbmdS
ZWYga2V5KQogewogICAgIHBvc3RQYWdlTWVzc2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVLZXlE
b3duTWVzc2FnZUJvZHkoa2V5LCAwLCAwKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCmlu
ZGV4IDllYWVmNmFhYjcxYTk2MWMwNGQ1MDE3YmZmMTExMzFhMWI1NzRmOGUuLjNjMDY1ZGQyZTk4
ZjEzZDkxNjRmMzMxZGZhZDhlMmEyYTQ3ZWExZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5oCkBAIC02Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spOwogCiAgICAgdm9pZCBrZXlE
b3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRp
b24pOworICAgIHZvaWQgcmF3S2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9k
aWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKTsKKyAgICB2b2lkIHJhd0tleVVwKEpTU3RyaW5nUmVm
IGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pOwogICAgIHZvaWQg
c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKEpTU3RyaW5nUmVmIGtleSk7CiAKICAgICB2b2lk
IHRleHRab29tSW4oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
aW5kZXggNDA3MTcxZmFjYmE2YWFkNmNmMGI0YjRhNjQxNzQ4ODRjMzNmNTE4OS4uYjg0YzY1N2Fj
OWYwYTU2MWYyMDc3YjczZmMwYWU4Zjk5NGYyYmZhMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTE1NjQsNiArMTU2NCwxNiBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjpkaWRSZWNlaXZlS2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0
aW9uYXJ5UmVmCiAgICAgbV9ldmVudFNlbmRlclByb3h5LT5rZXlEb3duKHN0cmluZ1ZhbHVlKGRp
Y3Rpb25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1
aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7CiB9CiAKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0Rp
Y3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2ZW50
U2VuZGVyUHJveHktPnJhd0tleURvd24oc3RyaW5nVmFsdWUoZGljdGlvbmFyeSwgIktleSIpLCB1
aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25h
cnksICJMb2NhdGlvbiIpKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJh
d0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFy
eSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tleVVw
KHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwg
Ik1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7Cit9CisK
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVMaXZlRG9jdW1lbnRzTGlzdChXS0FycmF5
UmVmIGxpdmVEb2N1bWVudExpc3QpCiB7CiAgICAgYXV0byBudW1Eb2N1bWVudHMgPSBXS0FycmF5
R2V0U2l6ZShsaXZlRG9jdW1lbnRMaXN0KTsKQEAgLTE2MjEsNiArMTYzMSwxNiBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmlu
Z1JlZiBtZXNzYWdlTmFtZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJSYXdL
ZXlEb3duIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJN
ZXNzYWdlTmFtZSwgIlJhd0tleVVwIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlV
cE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoZGljdGlvbmFyeSwgZmFsc2UpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3VzZVNjcm9sbEJ5IikpIHsKICAgICAgICAgICAg
IG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VTY3JvbGxCeShkb3VibGVWYWx1ZShkaWN0aW9uYXJ5
LCAiWCIpLCBkb3VibGVWYWx1ZShkaWN0aW9uYXJ5LCAiWSIpKTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTE2NjIsNiArMTY4MiwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZl
U3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmCiAgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAorICAg
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJh
d0tleURvd24iKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKGRpY3Rpb25hcnksIHRydWUpOworICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJSYXdLZXlVcCIpKSB7Cisg
ICAgICAgICAgICBkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKGRp
Y3Rpb25hcnksIHRydWUpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51
bGxwdHIpOworICAgICAgICB9CisKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3VzZURvd24iKSkgewogICAgICAgICAgICAgbV9ldmVu
dFNlbmRlclByb3h5LT5tb3VzZURvd24odWludDY0VmFsdWUoZGljdGlvbmFyeSwgIkJ1dHRvbiIp
LCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiksIHN0cmluZ1ZhbHVlKGRpY3Rp
b25hcnksICJQb2ludGVyVHlwZSIpKTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRl
eCA5Njc3ZWE0ZjVkZTE3YjY0MTIzY2ZlNWVmNDA2NWE0MjI5Njg3ZjY3Li5jYjdkOTNhYmJjNDk5
MmEwMmFiM2U3ZGRiMmEzMzIwYWZiNTVlYzQwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oCkBAIC00MzcsNiArNDM3LDggQEAgcHJpdmF0ZToKICAgICBXS1JldGFpblB0
cjxXS1R5cGVSZWY+IGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSgpOwog
CiAgICAgdm9pZCBkaWRSZWNlaXZlS2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tE
aWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tE
aWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLRGlj
dGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnksIGJvb2wgc3luY2hyb25vdXMpOwogCiAg
ICAgLy8gV0tDb250ZXh0Q2xpZW50CiAgICAgc3RhdGljIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRD
cmFzaChXS0NvbnRleHRSZWYsIGNvbnN0IHZvaWQqKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCmluZGV4IDI5NmM5MDJmMzc1YjExODlmNDVlZTU2
YmIzZmZkNGQ4MjZkZDI2ZjYuLmY5ZTRjZWNmNjcyYmVhY2EwODAyYTYzYzk2MzMwM2RhMzc5Nzlh
NjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJv
eHkubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5t
bQpAQCAtODUwLDYgKzg1MCw0MTYgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdL
U3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2kKICAgICBbTlNB
cHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOwogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJh
d0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5z
aWduZWQga2V5TG9jYXRpb24pCit7CisgICAgTlNTdHJpbmcqIGNoYXJhY3RlciA9IHRvV1RGU3Ry
aW5nKGtleSk7CisKKyAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7Cisg
ICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7CisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
TGVmdEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAw
eDdCOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFy
cm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUmlnaHRBcnJvd0Z1bmN0aW9u
S2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3QzsKKyAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAga2V5Q29kZSA9IDB4N0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImRvd25BcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0Rv
d25BcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3
RDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZVVwIl0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZVVwRnVuY3Rpb25LZXk7CisgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc0OworICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDc5OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJob21lIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSG9tZUZ1bmN0aW9uS2V5
OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3MzsKKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDc3OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJp
bnNlcnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNJbnNlcnRGdW5jdGlvbktl
eTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzI7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHg3NTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAicHJpbnRTY3JlZW4iXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQcmlu
dFNjcmVlbkZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgw
OyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFsIGtleSBjb2RlIGZvciBQcmludFNjcmVlbi4K
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiY3lyaWxsaWNTbWFs
bExldHRlckEiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgwNDMwOworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzOyAvLyBTaGFyZXMga2V5IHdpdGggIkYiIG9u
IFJ1c3NpYW4gbGF5b3V0LgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJsZWZ0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTM7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNCOworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0U2hpZnQiXSkgeworICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gMHhGRkUxOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0g
MHgzODsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFs
dCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTc7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDNBOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gMHhGRkU0OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRTsKKyAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRTaGlmdCJdKSB7Cisg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDNDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJyaWdodEFsdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTg7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNEOworICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gMHgxQjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MzU7Cisg
ICAgfQorCisgICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3RyaW5nIHdpdGggdGhlIGZ1bmN0aW9u
LWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAoaS5lLiAiRjEiLC4uLiwiRjI0Iiku
CisgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0aW9uLWtleSBuYW1lLCBzZXQg
aXRzIGtleSBjb2RlLgorICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gMjQ7IGkrKykgewor
ICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKKyAgICAgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgICAg
IHN3aXRjaCAoaSkgeworICAgICAgICAgICAgICAgIGNhc2UgMToga2V5Q29kZSA9IDB4N0E7IGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjoga2V5Q29kZSA9IDB4Nzg7IGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
NToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNjoga2V5Q29k
ZSA9IDB4NjE7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNzoga2V5Q29kZSA9IDB4NjI7
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgODoga2V5Q29kZSA9IDB4NjQ7IGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4NjU7IGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAweDZEOyBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIDExOiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxMjog
a2V5Q29kZSA9IDB4NkY7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTM6IGtleUNvZGUg
PSAweDY5OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE0OiBrZXlDb2RlID0gMHg2Qjsg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxNToga2V5Q29kZSA9IDB4NzE7IGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAweDZBOyBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDE3OiBrZXlDb2RlID0gMHg0MDsgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTk6
IGtleUNvZGUgPSAweDUwOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDIwOiBrZXlDb2Rl
ID0gMHg1QTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAv
LyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1vc3Qga2V5cy4KKyAgICBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMDsKKyAg
ICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiAiXSkKKyAgICAgICAga2V5
Q29kZSA9IDB4MzE7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJc
ciJdKQorICAgICAgICBrZXlDb2RlID0gMHgyNDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAIlxuIl0pCisgICAgICAgIGtleUNvZGUgPSAweDRDOworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4Il0pCisgICAgICAgIGtleUNvZGUg
PSAweDMzOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYSJdKQor
ICAgICAgICBrZXlDb2RlID0gMHgwMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEI7CisgICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAyOwor
ICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZSJdKQorICAgICAgICBr
ZXlDb2RlID0gMHgwRTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
Ilx4MWIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MUI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCI6Il0pCisgICAgICAgIGtleUNvZGUgPSAweDI5OworICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiOyJdKQorICAgICAgICBrZXlDb2Rl
ID0gMHgyOTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiwiXSkK
KyAgICAgICAga2V5Q29kZSA9IDB4MkI7CisKKyAgICBLZXlNYXBwaW5nRW50cnkgdGFibGVbXSA9
IHsKKyAgICAgICAgezB4MkYsIDB4NDEsICcuJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NDMs
ICcqJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NDUsICcrJywgbmlsfSwKKyAgICAgICAgezAs
ICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXksIEAiY2xlYXIifSwKKyAgICAgICAgezB4
MkMsIDB4NEIsICcvJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NEMsIDMsIEAiZW50ZXIiIH0s
CisgICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5pbH0sCisgICAgICAgIHsweDE4LCAweDUxLCAn
PScsIG5pbH0sCisgICAgICAgIHsweDFELCAweDUyLCAnMCcsIG5pbH0sCisgICAgICAgIHsweDEy
LCAweDUzLCAnMScsIG5pbH0sCisgICAgICAgIHsweDEzLCAweDU0LCAnMicsIG5pbH0sCisgICAg
ICAgIHsweDE0LCAweDU1LCAnMycsIG5pbH0sCisgICAgICAgIHsweDE1LCAweDU2LCAnNCcsIG5p
bH0sCisgICAgICAgIHsweDE3LCAweDU3LCAnNScsIG5pbH0sCisgICAgICAgIHsweDE2LCAweDU4
LCAnNicsIG5pbH0sCisgICAgICAgIHsweDFBLCAweDU5LCAnNycsIG5pbH0sCisgICAgICAgIHsw
eDFDLCAweDVCLCAnOCcsIG5pbH0sCisgICAgICAgIHsweDE5LCAweDVDLCAnOScsIG5pbH0sCisg
ICAgfTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSCh0YWJs
ZSk7ICsraSkgeworICAgICAgICBOU1N0cmluZyogY3VycmVudENoYXJhY3RlclN0cmluZyA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomdGFibGVbaV0uY2hhcmFjdGVyIGxlbmd0aDox
XTsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOmN1cnJlbnRDaGFyYWN0
ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOnRhYmxlW2ldLmNoYXJhY3Rl
ck5hbWVdKSB7CisgICAgICAgICAgICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlf
TE9DQVRJT05fTlVNUEFEKi8pCisgICAgICAgICAgICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1h
Y051bXBhZEtleUNvZGU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAga2V5Q29k
ZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7CisgICAgICAgICAgICBldmVudENoYXJhY3RlciA9IGN1
cnJlbnRDaGFyYWN0ZXJTdHJpbmc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBldmVudENo
YXJhY3RlcjsKKworICAgIGludCBtb2RpZmllckZsYWdzID0gMDsKKworICAgIGlmIChbY2hhcmFj
dGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPj0gJ0En
ICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA8PSAnWicpIHsKKyAgICAgICAgbW9k
aWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQ7CisgICAgICAgIGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICB9
CisKKyAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpOwor
CisgICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypET01fS0VZX0xPQ0FUSU9OX05VTVBBRCov
KQorICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFk
OworCisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZl
bnRUeXBlS2V5RG93bgorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9p
bnQoNSwgNSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJG
bGFncworICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2
ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCisgICAgICAgICAgICAgICAgICAgICAgICB3aW5k
b3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93
KCkgd2luZG93TnVtYmVyXQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFw
aGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
YWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgICAg
ICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUNv
ZGU6a2V5Q29kZV07CisKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CisgICAg
W1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0
UmVzcG9uZGVyXSBrZXlEb3duOmV2ZW50XTsKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpu
aWxdOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtl
eSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQorewor
ICAgICAgICBOU1N0cmluZyogY2hhcmFjdGVyID0gdG9XVEZTdHJpbmcoa2V5KTsKKworICAgIE5T
U3RyaW5nICpldmVudENoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAgICB1bnNpZ25lZCBzaG9ydCBr
ZXlDb2RlID0gMDsKKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJy
b3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktl
eTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0I7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgeworICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDdDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
VXBBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3
RTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdEOworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4NzQ7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAInBhZ2VEb3duIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25G
dW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzk7CisgICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIGtleUNvZGUgPSAweDczOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJlbmQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5j
dGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzc7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHg3MjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVs
ZXRlRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc1Owor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJd
KSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtu
b3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgorICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAga2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZG
RTE7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM4OworICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4M0E7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0
Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IDB4RkZFMjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0M7Cisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4M0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImVzY2FwZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOworICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzNTsKKyAgICB9CisKKyAgICAvLyBDb21w
YXJlIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQg
YnkgdGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KKyAgICAvLyBJZiB0aGUgaW5w
dXQgc3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7CisgICAgICAgIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGld
XSkgeworICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChp
IC0gMSk7CisgICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICAgICAgc3dpdGNoIChpKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAz
OiBrZXlDb2RlID0gMHg2MzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2Rl
ID0gMHg3NjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5
Q29kZSA9IDB4NkQ7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAw
eDY3OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtl
eUNvZGUgPSAweDQwOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0g
MHg0RjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBObyBrZXlDb2Rl
IGlzIHNldCBmb3IgbW9zdCBrZXlzLgorICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAIlx0Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiICJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMTsKKyAgICBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCisgICAgICAgIGtleUNv
ZGUgPSAweDI0OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4i
XSkKKyAgICAgICAga2V5Q29kZSA9IDB4NEM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJceDgiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzM7CisgICAgZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCisgICAgICAgIGtleUNvZGUgPSAw
eDAwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQorICAg
ICAgICBrZXlDb2RlID0gMHgwQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDI7CisgICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBFOworICAg
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQorICAgICAgICBr
ZXlDb2RlID0gMHgxQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
IjoiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCI7Il0pCisgICAgICAgIGtleUNvZGUgPSAweDI5OworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiLCJdKQorICAgICAgICBrZXlDb2RlID0g
MHgyQjsKKworICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0geworICAgICAgICB7MHgyRiwg
MHg0MSwgJy4nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAorICAgICAg
ICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxp
bmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAorICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9
LAorICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAgICAgezB4MUIsIDB4
NEUsICctJywgbmlsfSwKKyAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKKyAgICAgICAg
ezB4MUQsIDB4NTIsICcwJywgbmlsfSwKKyAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwK
KyAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKKyAgICAgICAgezB4MTQsIDB4NTUsICcz
JywgbmlsfSwKKyAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKKyAgICAgICAgezB4MTcs
IDB4NTcsICc1JywgbmlsfSwKKyAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKKyAgICAg
ICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKKyAgICAgICAgezB4MUMsIDB4NUIsICc4Jywgbmls
fSwKKyAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKKyAgICB9OworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7CisgICAgICAg
IE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgICAgICBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKKyAgICAgICAg
ICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykK
KyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5
Q29kZTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmlu
ZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgTlNTdHJpbmcg
KmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOworCisgICAgaW50
IG1vZGlmaWVyRmxhZ3MgPSAwOworCisgICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYm
IFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFy
YWN0ZXJBdEluZGV4OjBdIDw9ICdaJykgeworICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZl
bnRNb2RpZmllckZsYWdTaGlmdDsKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
ID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOworICAgIH0KKworICAgIG1vZGlmaWVyRmxh
Z3MgfD0gYnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycyk7CisKKyAgICBpZiAoa2V5TG9jYXRp
b24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisgICAgICAgIG1vZGlmaWVy
RmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisKKyAgICBOU0V2ZW50ICpl
dmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcAorICAgICAg
ICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncworICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRU
aW1lKCkpCisgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRy
b2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQorICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENv
bnRleHRdCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVy
CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBl
YXQ6Tk8KKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV07CisKKyAgICBb
TlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CisgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVu
dF07CisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKK30KKwogdm9pZCBFdmVudFNl
bmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSkKIHsKICAgICBhdXRvIGNnU2Ny
b2xsRXZlbnQgPSBhZG9wdENGKENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50MigwLCBrQ0dT
Y3JvbGxFdmVudFVuaXRMaW5lLCAyLCB5LCB4LCAwKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy9wYWdlLXNob3VsZC1ub3Qtc2Nyb2xsLW9uLXVuZm9jdXNlZC10ZXh0
LWZpZWxkLWxheW91dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcGFnZS1zaG91
bGQtbm90LXNjcm9sbC1vbi11bmZvY3VzZWQtdGV4dC1maWVsZC1sYXlvdXQuaHRtbAppbmRleCAy
NTk4NThlM2E5ODM1YWRlYWMzNTIzZDBlZDhjMjhhMDQxYzA2ODNlLi5lMWM2Yzg0NWI2YzRlOGU4
ZGJmNWEwMGVmZGRhNWRlN2M0MGY3YzViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9wYWdlLXNob3VsZC1ub3Qtc2Nyb2xsLW9uLXVuZm9jdXNlZC10ZXh0LWZpZWxkLWxh
eW91dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3BhZ2Utc2hvdWxkLW5v
dC1zY3JvbGwtb24tdW5mb2N1c2VkLXRleHQtZmllbGQtbGF5b3V0Lmh0bWwKQEAgLTQyLDQgKzQy
LDQgQEAgbGV0IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dCIpOwogd2luZG93
LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGV4dC5maXJzdENoaWxkLCAwLCB0ZXh0
LmZpcnN0Q2hpbGQsIDApOwogPC9zY3JpcHQ+CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUt
a2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjdiYWU1ZWY2Y2Ni
ZTI3MGM0MzBkZjg2YmFkNjQ5ODg4MWFmNWIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGlu
Zy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0JlZm9yZSBwcmVzc2luZyB0aGUgc3BhY2ViYXIsIHdp
bmRvdy5zY3JvbGxZID0gMAorQWZ0ZXIgcHJlc3NpbmcgdGhlIHNwYWNlYmFyLCB3aW5kb3cuc2Ny
b2xsWSA9IDI5MQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZv
Y3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzAwYjRjM2EzM2FiZmQ4YThkMzA3MjBiODdjY2MyNDk5NzUyYzQ0Nwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmct
cGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbApAQCAtMCwwICsxLDcyIEBACis8IURP
Q1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0
PXRydWUgRXZlbnRIYW5kbGVyRHJpdmVuU21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkPXRy
dWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBj
b250ZW50PSJpbml0aWFsLXNjYWxlPTEuNSwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAgPHNjcmlw
dD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcHJpbnRTY3JvbGwob2JqKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1Zygic2Nyb2xsIGV2ZW50IG9uIGRvYzEiKTsKKworICAgICAg
ICAgICAgbGV0IGRvYzAgPSBkb2N1bWVudDsKKyAgICAgICAgICAgIGxldCBpZnJhbWUxID0gZG9j
MC5nZXRFbGVtZW50QnlJZCgnZnJhbWUtMScpOworICAgICAgICAgICAgbGV0IGRvYzEgPSBpZnJh
bWUxLmNvbnRlbnREb2N1bWVudDsKKworICAgICAgICAgICAgdmFyIGRlbHRhID0gZG9jMS5kZWZh
dWx0Vmlldy5zY3JvbGxZIC0gb2JqLm9mZnNldDsKKyAgICAgICAgICAgIGRlYnVnKCJ3aW5kb3cu
c2Nyb2xsWSA9ICIgKyBkb2MxLmRlZmF1bHRWaWV3LnNjcm9sbFkpOworICAgICAgICAgICAgZGVi
dWcoIm9iai5vZmZzZXQgPSAiICsgb2JqLm9mZnNldCk7CisgICAgICAgICAgICBkZWJ1ZygiZGVs
dGEgPSAiICsgZGVsdGEpOworCisgICAgICAgICAgICBvYmoub2Zmc2V0ID0gZG9jMS5kZWZhdWx0
Vmlldy5zY3JvbGxZOworICAgICAgICB9CisKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVz
dCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXRl
c3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBsZXQgZG9jMCA9IGRvY3VtZW50OworICAgICAgICAgICAgbGV0IGlmcmFtZTEgPSBkb2Mw
LmdldEVsZW1lbnRCeUlkKCdmcmFtZS0xJyk7CisgICAgICAgICAgICBsZXQgZG9jMSA9IGlmcmFt
ZTEuY29udGVudERvY3VtZW50OworICAgICAgICAgICAgbGV0IGlmcmFtZTIgPSBkb2MwLmdldEVs
ZW1lbnRCeUlkKCdmcmFtZS0yJyk7CisKKyAgICAgICAgICAgIGxldCBvYmogPSB7CisgICAgICAg
ICAgICAgICAgb2Zmc2V0OiAwCisgICAgICAgICAgICB9OworICAgICAgICAgICAgZG9jMS5hZGRF
dmVudExpc3RlbmVyKCJzY3JvbGwiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcHJp
bnRTY3JvbGwob2JqKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpZnJhbWUxLmZv
Y3VzKCk7CisgICAgICAgICAgICBkZWJ1ZygianVzdCBmb2N1c2VkIGZyYW1lIDEsIGFib3V0IHRv
IHByZXNzIGRvd24gYXJyb3ciKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLnJhd0tleURv
d24oImRvd25BcnJvdyIpOworICAgICAgICAgICAgaWZyYW1lMi5mb2N1cygpOworICAgICAgICAg
ICAgZGVidWcoImp1c3QgdW5mb2N1c2VkIGZyYW1lMSIpOworICAgICAgICB9CisgICAgPC9zY3Jp
cHQ+CisgICAgPHN0eWxlPgorICAgICNwbGFjZWhvbGRlciB7CisgICAgICAgIHdpZHRoOiAxMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiA1MDAwcHg7CisgICAgfQorICAgIGlmcmFtZSB7CisgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9CisgICAgPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46IDA7IiBvbmxvYWQ9InJ1blRlc3QoKSI+
CisgICAgPGlmcmFtZSBpZD0iZnJhbWUtMSIgc3JjZG9jPSI8ZGl2IHN0eWxlPSd3aWR0aDogMTAw
cHg7IGhlaWdodDogMjAwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyc+PC9kaXY+Ij48L2lm
cmFtZT4KKyAgICA8aWZyYW1lIGlkPSJmcmFtZS0yIiBzcmNkb2M9IjxkaXYgc3R5bGU9J3dpZHRo
OiAxMDBweDsgaGVpZ2h0OiAyMDAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvZGl2PiI+
PC9pZnJhbWU+CisgICAgPGRpdiBpZD0icGxhY2Vob2xkZXIiPgorICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KK+KAiworPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIu
anMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCmluZGV4IDFlYmUxYzc4Yjhj
MTdmYTZkNTA5ZjdjMWZhNTM1MGQzMDIwNDhjNTQuLmE5NTEzYmY4Njk0Nzc4OGVjMjkxYjY0YTQ4
OTJhNjVjNTc2ZDZjNDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxw
ZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwpAQCAtMzQ0LDYg
KzM0NCwzMCBAQCB3aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICBzdGF0aWMgcmF3S2V5RG93bihrZXksIG1vZGlmaWVycz1bXSkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7
CisgICAgICAgICAgICBldmVudFNlbmRlci5yYXdLZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKKyAg
ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdChgdWlDb250cm9sbGVyLnJhd0tleURvd24oIiR7a2V5fSIsICR7SlNPTi5z
dHJpbmdpZnkobW9kaWZpZXJzKX0pO2AsIHJlc29sdmUpOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBzdGF0aWMgcmF3S2V5VXAoa2V5LCBtb2RpZmllcnM9W10pCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkgeworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIucmF3S2V5VXAoa2V5LCBtb2RpZmllcnMpOworICAgICAgICAgICAgcmV0
dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0
KGB1aUNvbnRyb2xsZXIucmF3S2V5VXAoIiR7a2V5fSIsICR7SlNPTi5zdHJpbmdpZnkobW9kaWZp
ZXJzKX0pO2AsIHJlc29sdmUpOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBzdGF0aWMga2V5
RG93bihrZXksIG1vZGlmaWVycz1bXSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5pc1dlYktp
dDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435745</attachid>
            <date>2021-08-17 21:45:44 -0700</date>
            <delta_ts>2021-08-18 13:00:46 -0700</delta_ts>
            <desc>Manual testing works, LayoutTest still broken</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>63898</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MTE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA4LTE3ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkgb24g
dGhlIG9sZCBGcmFtZVZpZXcgYWZ0ZXIgY2hhbmdpbmcgRnJhbWUgZm9jdXMuCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorCisgICAgICAgIENhbGwgdXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKSB3aGVuIHRoZSB3aW5kb3cgdmlzaWJpbGl0eSAvIGFjdGl2ZSBzdGF0
ZSBjaGFuZ2VzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVNj
cm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAg
ICAgICBQbHVtYmluZyB0byBnZXQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSB0
byB0aGUgU2Nyb2xsQ29udHJvbGxlciwgd2hlcmUgd2UgY2FuIHRlbGwgCisgICAgICAgIHRoZSBr
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRvIGhhbmRsZSBrZXlVcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0wOC0xNyAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBEZS1kdXBsaWNhdGUgdGhlIENv
Y29hLXNwZWNpZmljIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBjb25zdHJ1Y3RvcgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgxMTExKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTksOSArMzU5LDEyIEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRnJh
bWUoRnIKICAgICBtX2ZvY3VzZWRGcmFtZSA9IG5ld0ZyYW1lOwogCiAgICAgLy8gTm93IHRoYXQg
dGhlIGZyYW1lIGlzIHVwZGF0ZWQsIGZpcmUgZXZlbnRzIGFuZCB1cGRhdGUgdGhlIHNlbGVjdGlv
biBmb2N1c2VkIHN0YXRlcyBvZiBib3RoIGZyYW1lcy4KLSAgICBpZiAob2xkRnJhbWUgJiYgb2xk
RnJhbWUtPnZpZXcoKSkgewotICAgICAgICBvbGRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0Rm9jdXNl
ZChmYWxzZSk7Ci0gICAgICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgaWYgKG9sZEZyYW1lKSB7Cisg
ICAgICAgIGlmIChGcmFtZVZpZXcqIG9sZEZyYW1lVmlldyA9IG9sZEZyYW1lLT52aWV3KCkpIHsK
KyAgICAgICAgICAgIG9sZEZyYW1lVmlldy0+dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3Nh
cnkoKTsKKyAgICAgICAgICAgIG9sZEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRGb2N1c2VkKGZhbHNl
KTsKKyAgICAgICAgICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBp
ZiAobmV3RnJhbWUgJiYgbmV3RnJhbWUtPnZpZXcoKSAmJiBpc0ZvY3VzZWQoKSkgewpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyODExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUyLDEzICsyMzUyLDMzIEBAIHZvaWQgUGFn
ZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWMKICAgICBmb3IgKGF1dG8mIG9ic2VydmVy
IDogbV9hY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci5hY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKG9sZEFjdGl2aXR5U3RhdGUsIG1fYWN0aXZpdHlTdGF0ZSk7CiAK
LSAgICBpZiAod2FzVmlzaWJsZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkKKyAg
ICBpZiAod2FzVmlzaWJsZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkgewogICAg
ICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZO
ZWNlc3NhcnkoKTsKKyAgICAgICAgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsK
KyAgICB9CiAKICAgICBpZiAobV9wZXJmb3JtYW5jZU1vbml0b3IpCiAgICAgICAgIG1fcGVyZm9y
bWFuY2VNb25pdG9yLT5hY3Rpdml0eVN0YXRlQ2hhbmdlZChvbGRBY3Rpdml0eVN0YXRlLCBhY3Rp
dml0eVN0YXRlKTsKIH0KIAordm9pZCBQYWdlOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vz
c2FyeSgpCit7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOworICAgICAgICBpZiAoIWZyYW1lVmlldykKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZyYW1lVmlldy0+dXBkYXRlU2Nyb2xsQW5p
bWF0aW9uSWZOZWNlc3NhcnkoKTsKKworICAgICAgICBjb25zdCBIYXNoU2V0PFNjcm9sbGFibGVB
cmVhKj4qIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFyZWFzKCk7Cisg
ICAgICAgIGlmICghc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgZm9yIChhdXRvJiBzY3JvbGxhYmxlQXJlYSA6ICpzY3JvbGxhYmxlQXJlYXMpCisgICAg
ICAgICAgICBzY3JvbGxhYmxlQXJlYS0+dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3Nhcnko
KTsKKyAgICB9Cit9CisKIGJvb2wgUGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSkgJiYgbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODExMTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODg1LDYgKzg4NSw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRJc1Zpc2libGVJbnRlcm5hbChib29sKTsKICAgICB2b2lkIHNl
dElzVmlzdWFsbHlJZGxlSW50ZXJuYWwoYm9vbCk7CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEFu
aW1hdGlvbklmTmVjZXNzYXJ5KCk7CisKICAgICBlbnVtIFNob3VsZEhpZ2hsaWdodE1hdGNoZXMg
eyBEb05vdEhpZ2hsaWdodE1hdGNoZXMsIEhpZ2hsaWdodE1hdGNoZXMgfTsKICAgICBlbnVtIFNo
b3VsZE1hcmtNYXRjaGVzIHsgRG9Ob3RNYXJrTWF0Y2hlcywgTWFya01hdGNoZXMgfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAkocmV2aXNpb24g
MjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDExIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6Omhh
bmRsZVdoZWVsRXZlbnQoY28KICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAordm9pZCBTY3JvbGxB
bmltYXRvcjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKQoreworICAgIG1fc2Ny
b2xsQ29udHJvbGxlci51cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSgpOworfQorCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVRvdWNo
RXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAkocmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiAr
ODMsOCBAQCBwdWJsaWM6CiAKICAgICBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yICprZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9rZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yLmdldCgpOyB9CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEFuaW1hdGlv
bklmTmVjZXNzYXJ5KCk7CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsyMjgsMTIgQEAgdm9pZCBTY3JvbGxD
b250cm9sbGVyOjp1cGRhdGVLZXlib2FyZFNjcgogICAgIG1fY2xpZW50LmtleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IoKS0+dXBkYXRlS2V5Ym9hcmRTY3JvbGxQb3NpdGlvbihjdXJyZW50VGltZSk7
CiB9CiAKK3ZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNl
c3NhcnkoKQoreworICAgIGlmIChtX2lzQW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmcpCisgICAg
ICAgIG1fY2xpZW50LmtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoKS0+aGFuZGxlS2V5VXBFdmVu
dCgpOworfQorCiAvLyBDdXJyZW50bHksIG9ubHkgTWFjIHN1cHBvcnRzIG1vbWVudHVtIHNyb2xs
aW5nLWJhc2VkIHNjcm9sbHNuYXBwaW5nIGFuZCBydWJiZXIgYmFuZGluZwogLy8gc28gYWxsIG9m
IHRoZXNlIG1ldGhvZHMgYXJlIGEgbm9vcCBvbiBub24tTWFjIHBsYXRmb3Jtcy4KICNpZiAhUExB
VEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xs
ZXIuaAkocmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBiZWdpbktleWJvYXJkU2Nyb2xsaW5nKCk7CiAgICAgdm9pZCBzdG9wS2V5Ym9h
cmRTY3JvbGxpbmcoKTsKKworICAgIHZvaWQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3Nh
cnkoKTsKICAgICAKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHBlcmlvZGljYWxseSBieSB0aGUg
Y2xpZW50LiBTdGFydGVkIGJ5IHN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2soKSwgc3RvcHBlZCBieSBz
dG9wQW5pbWF0aW9uQ2FsbGJhY2soKS4KICAgICB2b2lkIGFuaW1hdGlvbkNhbGxiYWNrKE1vbm90
b25pY1RpbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcAkocmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDExIEBAIGJvb2wgU2Ny
b2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3IKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50
OwogfQogCit2b2lkIFNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vz
c2FyeSgpCit7CisgICAgbV9zY3JvbGxBbmltYXRvci0+dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZO
ZWNlc3NhcnkoKTsKK30KKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBib29sIFNjcm9sbGFi
bGVBcmVhOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgdG91Y2hF
dmVudCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAko
cmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc25hcEFmdGVyTGF5b3V0KCk7CiAgICAgdm9pZCBkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyhT
Y3JvbGxiYXJPcmllbnRhdGlvbik7CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklm
TmVjZXNzYXJ5KCk7CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOwogI2VuZGlmCklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyODExODApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwzNiBAQAorMjAyMS0wOC0xNyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0b3Agd2hl
biBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgor
ICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGluaXRpYWxpemVdKToKKyAgICAgICAg
KCtbRXZlbnRTZW5kaW5nQ29udHJvbGxlciBpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0
Ol0pOgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIHdlYlNjcmlwdE5hbWVGb3JT
ZWxlY3RvcjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciByYXdLZXlEb3du
OndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdD
b250cm9sbGVyIHJhd0tleURvd25XcmFwcGVyOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0p
OgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tleVVwOndpdGhNb2RpZmll
cnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJh
d0tleVVwV3JhcHBlcjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRs
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OmNyZWF0ZVJhd0tleURvd25NZXNzYWdlQm9k
eSk6CisgICAgICAgIChXVFI6OmNyZWF0ZVJhd0tleVVwTWVzc2FnZUJvZHkpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlVcE1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW06CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRl
clByb3h5OjpyYXdLZXlVcCk6CisKIDIwMjEtMDgtMTcgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRh
cmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRjb3JlcHldIFJldHVybiBTb3VyY2VGaWxl
TG9hZGVyIGluIGZpbmRfbW9kdWxlCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjgxMTExKQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIwMiw2ICsyMDIsOCBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgQCJm
b2N1cyIsCiAgICAgICAgIEAiaW5wdXQiLAogICAgICAgICBAImtleWRvd24iLAorICAgICAgICBA
InJhd2tleWRvd24iLAorICAgICAgICBAInJhd2tleXVwIiwKICAgICAgICAgQCJrZXlwcmVzcyIs
CiAgICAgICAgIEAia2V5dXAiLAogICAgICAgICBAImxvYWQiLApAQCAtMjQ1LDYgKzI0Nyw4IEBA
ICsgKEJPT0wpaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDoKICAgICAgICAgICAgIHx8
IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoZW5hYmxlRE9NVUlFdmVudExvZ2dpbmc6KQogICAgICAg
ICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihmaXJlS2V5Ym9hcmRFdmVudHNUb0VsZW1l
bnQ6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihrZXlEb3duOndpdGhN
b2RpZmllcnM6d2l0aExvY2F0aW9uOikKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IocmF3S2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopCisgICAgICAgICAg
ICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tleVVwOndpdGhNb2RpZmllcnM6d2l0aExv
Y2F0aW9uOikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IobGVhcEZvcndh
cmQ6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcihtb3VzZURvd246d2l0
aE1vZGlmaWVyczopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKG1vdXNl
TW92ZVRvWDpZOikKQEAgLTMwNiw2ICszMTAsMTAgQEAgKyAoTlNTdHJpbmcgKil3ZWJTY3JpcHRO
YW1lRm9yU2VsZWN0b3I6KAogICAgICAgICByZXR1cm4gQCJmaXJlS2V5Ym9hcmRFdmVudHNUb0Vs
ZW1lbnQiOwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGtleURvd246d2l0aE1vZGlm
aWVyczp3aXRoTG9jYXRpb246KSkKICAgICAgICAgcmV0dXJuIEAia2V5RG93biI7CisgICAgaWYg
KGFTZWxlY3RvciA9PSBAc2VsZWN0b3IocmF3S2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2Nh
dGlvbjopKQorICAgICAgICByZXR1cm4gQCJyYXdLZXlEb3duIjsKKyAgICBpZiAoYVNlbGVjdG9y
ID09IEBzZWxlY3RvcihyYXdLZXlVcDp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQorICAg
ICAgICByZXR1cm4gQCJyYXdLZXlVcCI7CiAgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikp
CiAgICAgICAgIHJldHVybiBAInNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93biI7CiAgICAgaWYg
KGFTZWxlY3RvciA9PSBAc2VsZWN0b3IobGVhcEZvcndhcmQ6KSkKQEAgLTEyMDksNiArMTIxNyw0
MzggQEAgLSAodm9pZClrZXlEb3duV3JhcHBlcjooTlNTdHJpbmcgKiljaGFyYQogICAgIFtzZWxm
IGtleURvd246Y2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjps
b2NhdGlvbl07CiB9CiAKKy0gKHZvaWQpcmF3S2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIg
d2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoo
dW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAgIE5TU3RyaW5nICpldmVudENoYXJhY3RlciA9
IGNoYXJhY3RlcjsKKyAgICB1bnNpZ25lZCBzaG9ydCBrZXlDb2RlID0gMDsKKyAgICBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4N0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAInJpZ2h0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNSaWdo
dEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdD
OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93Il0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9uS2V5OworICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3RTsKKyAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDdEOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJwYWdlVXAiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlVXBGdW5j
dGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzQ7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VEb3duIl0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlvbktleTsKKyAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzk7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImhvbWUiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNI
b21lRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDczOwor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4Nzc7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImluc2VydCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0lu
c2VydEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3MjsK
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc1OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gMHgxQjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MzU7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInByaW50U2NyZWVuIl0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTsKKyAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUgaXMgbm8ga25vd24gdmly
dHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0ZXJBIl0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNzaWFuIGxheW91dC4KKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUzOworICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBr
ZXlDb2RlID0gMHgzQjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAibGVmdFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMTsKKyAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Mzg7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gMHhGRkU3OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQTsK
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRDb250cm9s
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNDsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4M0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
MHhGRkUyOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQzsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQiXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHgzRDsKKyAgICB9CisKKyAgICAvLyBDb21wYXJlIHRoZSBpbnB1dCBzdHJpbmcgd2l0
aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhlIERPTSBzcGVjIChpLmUuICJG
MSIsLi4uLCJGMjQiKS4KKyAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgZnVuY3Rpb24t
a2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
PSAyNDsgaSsrKSB7CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgeworICAgICAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7CisgICAgICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBrZXlD
b2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3
ODsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2RlID0gMHg2MzsgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA3OiBr
ZXlDb2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA4OiBrZXlDb2RlID0g
MHg2NDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTQ6IGtl
eUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE1OiBrZXlDb2RlID0g
MHg3MTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlzLgor
ICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCisgICAgICAgIGtleUNv
ZGUgPSAweDMwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiICJd
KQorICAgICAgICBrZXlDb2RlID0gMHgzMTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAIlxyIl0pCisgICAgICAgIGtleUNvZGUgPSAweDI0OworICAgIGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKKyAgICAgICAga2V5Q29kZSA9IDB4
NEM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkKKyAg
ICAgICAga2V5Q29kZSA9IDB4MzM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJhIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAwOworICAgIGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQorICAgICAgICBrZXlDb2RlID0gMHgwQjsKKyAg
ICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkKKyAgICAgICAga2V5
Q29kZSA9IDB4MDI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJl
Il0pCisgICAgICAgIGtleUNvZGUgPSAweDBFOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiXHgxYiJdKQorICAgICAgICBrZXlDb2RlID0gMHgxQjsKKworICAgIEtl
eU1hcHBpbmdFbnRyeSB0YWJsZVtdID0geworICAgICAgICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9
LAorICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0NSwg
JysnLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktleSwg
QCJjbGVhciJ9LAorICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9LAorICAgICAgICB7MCwg
ICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAgICAgezB4MUIsIDB4NEUsICctJywgbmlsfSwK
KyAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKKyAgICAgICAgezB4MUQsIDB4NTIsICcw
JywgbmlsfSwKKyAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwKKyAgICAgICAgezB4MTMs
IDB4NTQsICcyJywgbmlsfSwKKyAgICAgICAgezB4MTQsIDB4NTUsICczJywgbmlsfSwKKyAgICAg
ICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKKyAgICAgICAgezB4MTcsIDB4NTcsICc1Jywgbmls
fSwKKyAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKKyAgICAgICAgezB4MUEsIDB4NTks
ICc3JywgbmlsfSwKKyAgICAgICAgezB4MUMsIDB4NUIsICc4JywgbmlsfSwKKyAgICAgICAgezB4
MTksIDB4NUMsICc5JywgbmlsfSwKKyAgICB9OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7CisgICAgICAgIE5TU3RyaW5nKiBjdXJy
ZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJs
ZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKKyAgICAgICAgICAgIGlmIChsb2NhdGlv
biA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0g
dGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKKyAgICAgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorCisgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cyA9IGV2ZW50Q2hhcmFjdGVyOworCisgICAgaW50IG1vZGlmaWVyRmxhZ3MgPSAwOworCisgICAg
aWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRl
eDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykgewor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZl
bnRNb2RpZmllckZsYWdTaGlmdDsKKyNlbHNlCisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gV2Vi
RXZlbnRGbGFnTWFza0xlZnRTaGlmdEtleTsKKyNlbmRpZgorICAgICAgICBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107CisgICAgfQorCisg
ICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKTsKKworICAg
IGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkKKyAgICAgICAgbW9kaWZp
ZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKKworICAgIFtbW21haW5G
cmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKKworI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRX
aXRoVHlwZTpOU0V2ZW50VHlwZUtleURvd24KKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0
aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZs
YWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpbc2Vs
ZiBjdXJyZW50RXZlbnRUaW1lXQorICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVy
OltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQor
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgorICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycworICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCisg
ICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdKTsKKyNlbHNlCisgICAgYXV0
byBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6
V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0
ZXJzOmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnMgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdzKW1vZGlmaWVyRmxhZ3Mg
aXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNv
ZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNo
YXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnQuZ2V0KCldOworI2Vu
ZGlmCisgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBr
ZXlEb3duOmV2ZW50LmdldCgpXTsKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNB
cHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOworI2VuZGlmCit9CisKKy0gKHZvaWQpcmF3S2V5RG93
bldyYXBwZXI6KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9i
amVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sK
KyAgICBbc2VsZiByYXdLZXlEb3duOmNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOm1vZGlmaWVycyB3
aXRoTG9jYXRpb246bG9jYXRpb25dOworfQorCistICh2b2lkKXJhd0tleVVwOihOU1N0cmluZyAq
KWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0
aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCit7CisgICAgTlNTdHJpbmcgKmV2ZW50
Q2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAgIHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOwor
ICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHg3QjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5
Q29kZSA9IDB4N0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InVwQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rp
b25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdFOworICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAInBhZ2VVcCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U1BhZ2VVcEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3
NDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24i
XSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5Owor
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3OTsKKyAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaG9tZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU0hvbWVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29k
ZSA9IDB4NzM7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVu
ZCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OworICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NzsKKyAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaW5zZXJ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TSW5zZXJ0RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDcyOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJk
ZWxldGUiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktl
eTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzU7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSAweDFCOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgz
NTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3Jl
ZW4iXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9u
S2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBu
byBrbm93biB2aXJ0dWFsIGtleSBjb2RlIGZvciBQcmludFNjcmVlbi4KKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgewor
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgwNDMwOworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHgzOyAvLyBTaGFyZXMga2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0
LgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJv
bCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTM7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDNCOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJsZWZ0U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
MHhGRkUxOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzODsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTc7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDNBOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJy
aWdodENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU0OworICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRTsKKyAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSAweEZGRTI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDND
OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJd
KSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTg7CisgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIGtleUNvZGUgPSAweDNEOworICAgIH0KKworICAgIC8vIENvbXBhcmUgdGhlIGlucHV0
IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNw
ZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIpLgorICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMg
YSBmdW5jdGlvbi1rZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDw9IDI0OyBpKyspIHsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7CisgICAgICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKKyAgICAg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgICAgICBj
YXNlIDE6IGtleUNvZGUgPSAweDdBOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IGtl
eUNvZGUgPSAweDc4OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAw
eDYzOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIDY6IGtleUNvZGUgPSAweDYxOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDc6IGtleUNvZGUgPSAweDYyOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDg6
IGtleUNvZGUgPSAweDY0OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUg
PSAweDY1OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDEzOiBrZXlDb2RlID0gMHg2OTsgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSAxNDoga2V5Q29kZSA9IDB4NkI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTU6
IGtleUNvZGUgPSAweDcxOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2Rl
ID0gMHg2QTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSAyMDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBt
b3N0IGtleXMuCisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKKyAg
ICAgICAga2V5Q29kZSA9IDB4MzA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCIgIl0pCisgICAgICAgIGtleUNvZGUgPSAweDMxOworICAgIGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MjQ7Cisg
ICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQorICAgICAgICBr
ZXlDb2RlID0gMHg0QzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
Ilx4OCJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImEiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDA7CisgICAgZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCisgICAgICAgIGtleUNvZGUg
PSAweDBCOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQor
ICAgICAgICBrZXlDb2RlID0gMHgwMjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImUiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEU7CisgICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDFiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDFC
OworCisgICAgS2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7CisgICAgICAgIHsweDJGLCAweDQx
LCAnLicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0sCisgICAgICAgIHsw
LCAgICAweDQ1LCAnKycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1
bmN0aW9uS2V5LCBAImNsZWFyIn0sCisgICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCisg
ICAgICAgIHswLCAgICAweDRDLCAzLCBAImVudGVyIiB9LAorICAgICAgICB7MHgxQiwgMHg0RSwg
Jy0nLCBuaWx9LAorICAgICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAorICAgICAgICB7MHgx
RCwgMHg1MiwgJzAnLCBuaWx9LAorICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAorICAg
ICAgICB7MHgxMywgMHg1NCwgJzInLCBuaWx9LAorICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBu
aWx9LAorICAgICAgICB7MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAorICAgICAgICB7MHgxNywgMHg1
NywgJzUnLCBuaWx9LAorICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAorICAgICAgICB7
MHgxQSwgMHg1OSwgJzcnLCBuaWx9LAorICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAor
ICAgICAgICB7MHgxOSwgMHg1QywgJzknLCBuaWx9LAorICAgIH07CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsKKyAgICAgICAgTlNT
dHJpbmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JnRhYmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07CisgICAgICAgIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgeworICAgICAgICAgICAg
aWYgKGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQorICAgICAgICAgICAgICAg
IGtleUNvZGUgPSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlDb2RlOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOworICAgICAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzID0gZXZlbnRDaGFyYWN0ZXI7CisKKyAgICBpbnQgbW9kaWZpZXJGbGFncyA9
IDA7CisKKyAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFy
YWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0g
PD0gJ1onKSB7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIG1vZGlmaWVyRmxh
Z3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworI2Vsc2UKKyAgICAgICAgbW9kaWZpZXJG
bGFncyB8PSBXZWJFdmVudEZsYWdNYXNrTGVmdFNoaWZ0S2V5OworI2VuZGlmCisgICAgICAgIGNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsK
KyAgICB9CisKKyAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmll
cnMpOworCisgICAgaWYgKGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQorICAg
ICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworCisg
ICAgW1tbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOworCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVu
dCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAgICAgICAgICAgICAgICAgICAgICBt
b2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQorICAgICAgICAgICAgICAgICAgICAgICAgd2lu
ZG93TnVtYmVyOltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRD
b250ZXh0XQorICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3Rl
cgorICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVw
ZWF0Ok5PCisgICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdKTsKKyNlbHNl
CisgICAgYXV0byBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlF
dmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0g
Y2hhcmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmll
ckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5p
bCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJh
Y3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CisjZW5kaWYKKworI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50LmdldCgp
XTsKKyNlbmRpZgorICAgIFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBmaXJzdFJlc3Bv
bmRlcl0ga2V5VXA6ZXZlbnQuZ2V0KCldOworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CisjZW5kaWYKK30KKworLSAodm9pZClyYXdL
ZXlVcFdyYXBwZXI6KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlw
dE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24K
K3sKKyAgICBbc2VsZiByYXdLZXlVcDpjaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczptb2RpZmllcnMg
d2l0aExvY2F0aW9uOmxvY2F0aW9uXTsKK30KKwogLSAodm9pZClzY2hlZHVsZUFzeW5jaHJvbm91
c0tleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9i
amVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KIHsK
ICAgICBOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSBbTlNJbnZvY2F0aW9uIGludm9jYXRpb25X
aXRoTWV0aG9kU2lnbmF0dXJlOltFdmVudFNlbmRpbmdDb250cm9sbGVyIGluc3RhbmNlTWV0aG9k
U2lnbmF0dXJlRm9yU2VsZWN0b3I6QHNlbGVjdG9yKGtleURvd25XcmFwcGVyOndpdGhNb2RpZmll
cnM6d2l0aExvY2F0aW9uOildXTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRT
ZW5kZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRT
ZW5kZXJQcm94eS5oCShyZXZpc2lvbiAyODExMTEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0V2ZW50U2VuZGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsZWFwRm9yd2FyZChpbnQgbWlsbGlzZWNvbmRzKTsKIAogICAgIHZvaWQg
a2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0
aW9uKTsKKyAgICB2b2lkIHJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZp
ZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlVcChXS1N0cmluZ1JlZiBr
ZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHVuc2lnbmVkIG1vdXNlQnV0dG9uc0N1cnJlbnRseURvd24oKSBjb25zdCB7
IHJldHVybiBtX21vdXNlQnV0dG9uc0N1cnJlbnRseURvd247IH0KQEAgLTEwMSw2ICsxMDMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbihpbnQgYnV0dG9u
KTsKIAogICAgIHZvaWQgc2VuZE1vdXNlRG93blRvU3RhcnRQcmVzc3VyZUV2ZW50cygpOworCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBjbGFzcyBQcmVzc3VyZUNoYW5nZURpcmVjdGlv
biB7IEluY3JlYXNpbmcsIERlY3JlYXNpbmcgfTsKICAgICBSZXRhaW5QdHI8TlNFdmVudD4gYmVn
aW5QcmVzc3VyZUV2ZW50KGludCBzdGFnZSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgxMTExKQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NjQsNiArMTU2
NCwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlS2V5RG93bk1lCiAgICAgbV9l
dmVudFNlbmRlclByb3h5LT5rZXlEb3duKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwg
dWludDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9u
YXJ5LCAiTG9jYXRpb24iKSk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVS
YXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlv
bmFyeSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tl
eURvd24oc3RyaW5nVmFsdWUoZGljdGlvbmFyeSwgIktleSIpLCB1aW50NjRWYWx1ZShkaWN0aW9u
YXJ5LCAiTW9kaWZpZXJzIiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJMb2NhdGlvbiIpKTsK
K30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91
cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tleVVwKHN0cmluZ1ZhbHVlKGRpY3Rp
b25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50
NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRpZFJlY2VpdmVMaXZlRG9jdW1lbnRzTGlzdChXS0FycmF5UmVmIGxpdmVEb2N1bWVudExp
c3QpCiB7CiAgICAgYXV0byBudW1Eb2N1bWVudHMgPSBXS0FycmF5R2V0U2l6ZShsaXZlRG9jdW1l
bnRMaXN0KTsKQEAgLTE2MjEsNiArMTYzMSwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlTWVzc2FnZUZyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tl
eURvd24iKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKGRpY3Rpb25hcnksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1l
c3NhZ2VOYW1lLCAiUmF3S2V5VXAiKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVw
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCBmYWxzZSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlU2Nyb2xsQnkiKSkgewogICAgICAgICAgICAg
bV9ldmVudFNlbmRlclByb3h5LT5tb3VzZVNjcm9sbEJ5KGRvdWJsZVZhbHVlKGRpY3Rpb25hcnks
ICJYIiksIGRvdWJsZVZhbHVlKGRpY3Rpb25hcnksICJZIikpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTY2Miw2ICsxNjgyLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVT
eW5jaHJvbm8KICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsK
ICAgICAgICAgfQogCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1
Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5RG93biIpKSB7CisgICAgICAgICAgICBkaWRSZWNlaXZlUmF3
S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoZGljdGlvbmFyeSwgdHJ1ZSk7CisgICAg
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwg
IlJhd0tleVVwIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoZGljdGlvbmFyeSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93biIpKSB7CiAg
ICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNlRG93bih1aW50NjRWYWx1ZShkaWN0
aW9uYXJ5LCAiQnV0dG9uIiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJNb2RpZmllcnMiKSwg
c3RyaW5nVmFsdWUoZGljdGlvbmFyeSwgIlBvaW50ZXJUeXBlIikpOwogICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjgxMTExKQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzcsNiArNDM3LDgg
QEAgcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IGdldEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YSgpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlS2V5RG93bk1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlv
bmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5RG93bk1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlv
bmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5VXBNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25h
cnksIGJvb2wgc3luY2hyb25vdXMpOwogCiAgICAgLy8gV0tDb250ZXh0Q2xpZW50CiAgICAgc3Rh
dGljIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRDcmFzaChXS0NvbnRleHRSZWYsIGNvbnN0IHZvaWQq
KTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgxMTEx
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDExICszMDEsNDEgQEAgc3RhdGlj
IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZQogICAgIHJldHVybiBib2R5OwogfQog
CitzdGF0aWMgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRlUmF3S2V5
RG93bk1lc3NhZ2VCb2R5KEpTU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmll
cnMsIGludCBsb2NhdGlvbikKK3sKKyAgICBhdXRvIGJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURp
Y3Rpb25hcnlDcmVhdGUoKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIlN1Yk1lc3NhZ2UiLCAiUmF3
S2V5RG93biIpOworICAgIHNldFZhbHVlKGJvZHksICJLZXkiLCBrZXkpOworICAgIHNldFZhbHVl
KGJvZHksICJNb2RpZmllcnMiLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKG1vZGlmaWVycykpKTsK
KyAgICBzZXRWYWx1ZShib2R5LCAiTG9jYXRpb24iLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKGxv
Y2F0aW9uKSkpOworICAgIHJldHVybiBib2R5OworfQorCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tN
dXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keShKU1N0cmluZ1Jl
ZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBpbnQgbG9jYXRpb24pCit7CisgICAg
YXV0byBib2R5ID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworICAgIHNl
dFZhbHVlKGJvZHksICJTdWJNZXNzYWdlIiwgIlJhd0tleVVwIik7CisgICAgc2V0VmFsdWUoYm9k
eSwgIktleSIsIGtleSk7CisgICAgc2V0VmFsdWUoYm9keSwgIk1vZGlmaWVycyIsIGFkb3B0V0so
V0tVSW50NjRDcmVhdGUobW9kaWZpZXJzKSkpOworICAgIHNldFZhbHVlKGJvZHksICJMb2NhdGlv
biIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobG9jYXRpb24pKSk7CisgICAgcmV0dXJuIGJvZHk7
Cit9CisKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6a2V5RG93bihKU1N0cmluZ1JlZiBr
ZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKQogewogICAgIHBvc3RT
eW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGNyZWF0ZUtleURvd25NZXNzYWdl
Qm9keShrZXksIHBhcnNlTW9kaWZpZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRpb24pKTsK
IH0KIAordm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlEb3duKEpTU3RyaW5nUmVm
IGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pCit7CisgICAgcG9z
dFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3S2V5RG93bk1l
c3NhZ2VCb2R5KGtleSwgcGFyc2VNb2RpZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlv
bikpOworfQorCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleVVwKEpTU3RyaW5n
UmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pCit7CisgICAg
cG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3S2V5VXBN
ZXNzYWdlQm9keShrZXksIHBhcnNlTW9kaWZpZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRp
b24pKTsKK30KKwogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzY2hlZHVsZUFzeW5jaHJv
bm91c0tleURvd24oSlNTdHJpbmdSZWYga2V5KQogewogICAgIHBvc3RQYWdlTWVzc2FnZSgiRXZl
bnRTZW5kZXIiLCBjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCAwLCAwKSk7CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMjgxMTExKQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogICAgIHZvaWQgY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjayk7CiAKICAgICB2
b2lkIGtleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGlu
dCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1
ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pOworICAgIHZvaWQgcmF3S2V5VXAoSlNT
dHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbik7CiAg
ICAgdm9pZCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oSlNTdHJpbmdSZWYga2V5KTsKIAog
ICAgIHZvaWQgdGV4dFpvb21JbigpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiAyODExMTEpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBAIGludGVyZmFjZSBFdmVudFNlbmRp
bmdDb250cm9sbGVyIHsKICAgICB1bmRlZmluZWQgbGVhcEZvcndhcmQobG9uZyBtaWxsaXNlY29u
ZHMpOwogCiAgICAgdW5kZWZpbmVkIGtleURvd24oRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1vZGlm
aWVyQXJyYXksIGxvbmcgbG9jYXRpb24pOworICAgIHVuZGVmaW5lZCByYXdLZXlEb3duKERPTVN0
cmluZyBrZXksIG9iamVjdCBtb2RpZmllckFycmF5LCBsb25nIGxvY2F0aW9uKTsKKyAgICB1bmRl
ZmluZWQgcmF3S2V5VXAoRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1vZGlmaWVyQXJyYXksIGxvbmcg
bG9jYXRpb24pOwogICAgIHVuZGVmaW5lZCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oRE9N
U3RyaW5nIGtleSk7CiAKICAgICAvLyBab29tIGZ1bmN0aW9ucy4KSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQkocmV2aXNpb24gMjgxMTEx
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQkod29y
a2luZyBjb3B5KQpAQCAtODUwLDYgKzg1MCw0MTYgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojpr
ZXlEb3duKFdLU3RyaW5nUgogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CiB9CiAK
K3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZl
bnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKKyAgICBOU1N0
cmluZyogY2hhcmFjdGVyID0gdG9XVEZTdHJpbmcoa2V5KTsKKworICAgIE5TU3RyaW5nICpldmVu
dENoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAgICB1bnNpZ25lZCBzaG9ydCBrZXlDb2RlID0gMDsK
KyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDdDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJ1cEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0
aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3RTsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgIGtleUNvZGUgPSAweDdEOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
TlNQYWdlVXBGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
NzQ7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VEb3du
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlvbktleTsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzk7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDczOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJl
bmQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsKKyAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzc7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHg3MjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ZGVsZXRlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25L
ZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc1OworICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7CisgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwg
a2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7CisgICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSAweDA0MzA7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM7
IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKKyAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29k
ZSA9IDB4M0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxl
ZnRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM4OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IDB4RkZFNzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0E7CisgICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7CisgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAg
ICAgIGtleUNvZGUgPSAweDNFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZF
MjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0M7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4RkZFODsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4M0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVzY2Fw
ZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHgzNTsKKyAgICB9CisKKyAgICAvLyBDb21wYXJlIHRoZSBpbnB1
dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhlIERPTSBz
cGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KKyAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlz
IGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgeworICAgICAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7CisgICAg
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOworICAgICAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOiBr
ZXlDb2RlID0gMHg3ODsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2RlID0g
MHg2MzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA4
OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2Rl
ID0gMHg2NTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE1
OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29k
ZSA9IDB4NkE7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQw
OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3Ig
bW9zdCBrZXlzLgorICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCisg
ICAgICAgIGtleUNvZGUgPSAweDMwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiICJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMTsKKyAgICBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCisgICAgICAgIGtleUNvZGUgPSAweDI0Owor
ICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKKyAgICAgICAg
a2V5Q29kZSA9IDB4NEM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJceDgiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAwOworICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQorICAgICAgICBrZXlDb2Rl
ID0gMHgwQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkK
KyAgICAgICAga2V5Q29kZSA9IDB4MDI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJlIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBFOworICAgIGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQorICAgICAgICBrZXlDb2RlID0gMHgx
QjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjoiXSkKKyAgICAg
ICAga2V5Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCI7Il0pCisgICAgICAgIGtleUNvZGUgPSAweDI5OworICAgIGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiLCJdKQorICAgICAgICBrZXlDb2RlID0gMHgyQjsKKworICAg
IEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0geworICAgICAgICB7MHgyRiwgMHg0MSwgJy4nLCBu
aWx9LAorICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0
NSwgJysnLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktl
eSwgQCJjbGVhciJ9LAorICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9LAorICAgICAgICB7
MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAgICAgezB4MUIsIDB4NEUsICctJywgbmls
fSwKKyAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKKyAgICAgICAgezB4MUQsIDB4NTIs
ICcwJywgbmlsfSwKKyAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwKKyAgICAgICAgezB4
MTMsIDB4NTQsICcyJywgbmlsfSwKKyAgICAgICAgezB4MTQsIDB4NTUsICczJywgbmlsfSwKKyAg
ICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKKyAgICAgICAgezB4MTcsIDB4NTcsICc1Jywg
bmlsfSwKKyAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKKyAgICAgICAgezB4MUEsIDB4
NTksICc3JywgbmlsfSwKKyAgICAgICAgezB4MUMsIDB4NUIsICc4JywgbmlsfSwKKyAgICAgICAg
ezB4MTksIDB4NUMsICc5JywgbmlsfSwKKyAgICB9OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7CisgICAgICAgIE5TU3RyaW5nKiBj
dXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0
YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKKyAgICAgICAgICAgIGlmIChrZXlM
b2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKKyAgICAgICAgICAg
ICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKKyAgICAg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOworCisgICAgaW50IG1vZGlmaWVyRmxh
Z3MgPSAwOworCisgICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIg
Y2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4
OjBdIDw9ICdaJykgeworICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZs
YWdTaGlmdDsKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW2NoYXJhY3Rl
ciBsb3dlcmNhc2VTdHJpbmddOworICAgIH0KKworICAgIG1vZGlmaWVyRmxhZ3MgfD0gYnVpbGRN
b2RpZmllckZsYWdzKG1vZGlmaWVycyk7CisKKyAgICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAv
KkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNF
dmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisKKyAgICBOU0V2ZW50ICpldmVudCA9IFtOU0V2
ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duCisgICAgICAgICAgICAgICAg
ICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICB0
aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFp
bldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTworICAg
ICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKKworICAgIFtOU0FwcCBfc2V0
Q3VycmVudEV2ZW50OmV2ZW50XTsKKyAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3
KCktPnBsYXRmb3JtV2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnRdOworICAg
IFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywg
dW5zaWduZWQga2V5TG9jYXRpb24pCit7CisgICAgICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXIgPSB0
b1dURlN0cmluZyhrZXkpOworCisgICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyID0gY2hhcmFj
dGVyOworICAgIHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOworICAgIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHg3QjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
cmlnaHRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0QXJyb3dG
dW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0M7CisgICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgIGtleUNvZGUgPSAweDdFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29k
ZSA9IDB4N0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBh
Z2VVcCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9uS2V5
OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NDsKKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgeworICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAg
ICAgICBrZXlDb2RlID0gMHg3OTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiaG9tZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hvbWVGdW5j
dGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzM7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHg3NzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiaW5zZXJ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5zZXJ0RnVu
Y3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDcyOworICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4NzU7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAInByaW50U2NyZWVuIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29k
ZSA9IDB4MDsgLy8gVGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRT
Y3JlZW4uCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmls
bGljU21hbGxMZXR0ZXJBIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRo
ICJGIiBvbiBSdXNzaWFuIGxheW91dC4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
MHhGRkUzOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQjsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5
Q29kZSA9IDB4Mzg7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImxlZnRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3OworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4RkZFNDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0U7
CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQi
XSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHgzQzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAicmlnaHRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhG
RkU4OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRDsKKyAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4MUI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAw
eDM1OworICAgIH0KKworICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRoZSBm
dW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwuLi4s
IkYyNCIpLgorICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkgbmFt
ZSwgc2V0IGl0cyBrZXkgY29kZS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDI0OyBp
KyspIHsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7CisgICAgICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAg
ICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IGtleUNvZGUgPSAw
eDdBOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4OyBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDY6
IGtleUNvZGUgPSAweDYxOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDc6IGtleUNvZGUg
PSAweDYyOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0OyBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAweDY1OyBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDEzOiBr
ZXlDb2RlID0gMHg2OTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29kZSA9
IDB4NkI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAweDcxOyBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2RlID0gMHg2QTsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyMDog
a2V5Q29kZSA9IDB4NUE7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCisgICAgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4
MzA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0pCisgICAg
ICAgIGtleUNvZGUgPSAweDMxOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiXHIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MjQ7CisgICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQorICAgICAgICBrZXlDb2RlID0gMHg0QzsKKyAg
ICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQorICAgICAgICBr
ZXlDb2RlID0gMHgzMzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImEiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBCOworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQorICAgICAgICBrZXlDb2RlID0g
MHgwMjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkKKyAg
ICAgICAga2V5Q29kZSA9IDB4MEU7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJceDFiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDFCOworICAgIGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiOiJdKQorICAgICAgICBrZXlDb2RlID0gMHgyOTsK
KyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjsiXSkKKyAgICAgICAg
a2V5Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCIsIl0pCisgICAgICAgIGtleUNvZGUgPSAweDJCOworCisgICAgS2V5TWFwcGluZ0VudHJ5IHRh
YmxlW10gPSB7CisgICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5pbH0sCisgICAgICAgIHswLCAg
ICAweDQzLCAnKicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ1LCAnKycsIG5pbH0sCisgICAg
ICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIn0sCisgICAg
ICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDRDLCAzLCBAImVu
dGVyIiB9LAorICAgICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAorICAgICAgICB7MHgxOCwg
MHg1MSwgJz0nLCBuaWx9LAorICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBuaWx9LAorICAgICAg
ICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAorICAgICAgICB7MHgxMywgMHg1NCwgJzInLCBuaWx9
LAorICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAorICAgICAgICB7MHgxNSwgMHg1Niwg
JzQnLCBuaWx9LAorICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAorICAgICAgICB7MHgx
NiwgMHg1OCwgJzYnLCBuaWx9LAorICAgICAgICB7MHgxQSwgMHg1OSwgJzcnLCBuaWx9LAorICAg
ICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAorICAgICAgICB7MHgxOSwgMHg1QywgJzknLCBu
aWx9LAorICAgIH07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5H
VEgodGFibGUpOyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJp
bmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNoYXJhY3RlciBs
ZW5ndGg6MV07CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpjdXJyZW50
Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0YWJsZVtpXS5j
aGFyYWN0ZXJOYW1lXSkgeworICAgICAgICAgICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypE
T01fS0VZX0xPQ0FUSU9OX05VTVBBRCovKQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJs
ZVtpXS5tYWNOdW1wYWRLZXlDb2RlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0g
ZXZlbnRDaGFyYWN0ZXI7CisKKyAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7CisKKyAgICBpZiAo
W2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBd
ID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7CisgICAg
ICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworICAgICAgICBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107
CisgICAgfQorCisgICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZp
ZXJzKTsKKworICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9O
VU1QQUQqLykKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVt
ZXJpY1BhZDsKKworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlw
ZTpOU0V2ZW50VHlwZUtleVVwCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01h
a2VQb2ludCg1LCA1KQorICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2Rp
ZmllckZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1l
Rm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1X
aW5kb3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltO
U0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICAgICAgICAgICAgICAgICAg
a2V5Q29kZTprZXlDb2RlXTsKKworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsK
KyAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkg
Zmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50XTsKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVu
dDpuaWxdOworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkoaW50IHgs
IGludCB5KQogewogICAgIGF1dG8gY2dTY3JvbGxFdmVudCA9IGFkb3B0Q0YoQ0dFdmVudENyZWF0
ZVNjcm9sbFdoZWVsRXZlbnQyKDAsIGtDR1Njcm9sbEV2ZW50VW5pdExpbmUsIDIsIHksIHgsIDAp
KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MTE4MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA4LTE3ICBCZXRoIERha2luICA8
YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBtYWNPUyBrZXktZHJpdmVuIHNtb290aCBzY3Jv
bGxpbmcgZG9lcyBub3Qgc3RvcCB3aGVuIGZvY3VzIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODMwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2lu
Zy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3Jv
bGxpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAg
ICAgICAgKHdpbmRvdy5VSUhlbHBlci5yYXdLZXlEb3duKToKKyAgICAgICAgKHdpbmRvdy5VSUhl
bHBlci5yYXdLZXlVcCk6CisKIDIwMjEtMDgtMTcgIEFyY2FkeSBHb2xkbWludHMtT3Jsb3YgIDxh
Z29sZG1pbnRzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIHRlc3QgaHR0cC90ZXN0cy9z
ZWN1cml0eS93ZWJhdWRpby1yZW5kZXItcmVtb3RlLWF1ZGlvLWFsbG93ZWQtY3Jvc3NvcmlnaW4t
cmVkaXJlY3QuaHRtbCBpcyBhIGZsYWt5IHRpbWVvdXQgc2luY2UgcjI3ODAwNApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNj
cm9sbGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3RlZC50
eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2lu
Zy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw2IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKK0JlZm9yZSBwcmVzc2luZyB0aGUgc3BhY2ViYXIsIHdpbmRvdy5zY3JvbGxZ
ID0gMAorQWZ0ZXIgcHJlc3NpbmcgdGhlIHNwYWNlYmFyLCB3aW5kb3cuc2Nyb2xsWSA9IDI5MQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUt
a2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFn
ZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDcyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4
aWJsZVZpZXdwb3J0PXRydWUgRXZlbnRIYW5kbGVyRHJpdmVuU21vb3RoS2V5Ym9hcmRTY3JvbGxp
bmdFbmFibGVkPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxtZXRhIG5hbWU9
InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuNSwgdXNlci1zY2FsYWJsZT1ubyI+
CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcHJpbnRTY3JvbGwo
b2JqKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygic2Nyb2xsIGV2ZW50IG9uIGRvYzEi
KTsKKworICAgICAgICAgICAgbGV0IGRvYzAgPSBkb2N1bWVudDsKKyAgICAgICAgICAgIGxldCBp
ZnJhbWUxID0gZG9jMC5nZXRFbGVtZW50QnlJZCgnZnJhbWUtMScpOworICAgICAgICAgICAgbGV0
IGRvYzEgPSBpZnJhbWUxLmNvbnRlbnREb2N1bWVudDsKKworICAgICAgICAgICAgdmFyIGRlbHRh
ID0gZG9jMS5kZWZhdWx0Vmlldy5zY3JvbGxZIC0gb2JqLm9mZnNldDsKKyAgICAgICAgICAgIGRl
YnVnKCJ3aW5kb3cuc2Nyb2xsWSA9ICIgKyBkb2MxLmRlZmF1bHRWaWV3LnNjcm9sbFkpOworICAg
ICAgICAgICAgZGVidWcoIm9iai5vZmZzZXQgPSAiICsgb2JqLm9mZnNldCk7CisgICAgICAgICAg
ICBkZWJ1ZygiZGVsdGEgPSAiICsgZGVsdGEpOworCisgICAgICAgICAgICBvYmoub2Zmc2V0ID0g
ZG9jMS5kZWZhdWx0Vmlldy5zY3JvbGxZOworICAgICAgICB9CisKKyAgICAgICAgYXN5bmMgZnVu
Y3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RS
dW5uZXIgfHwgIXRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBsZXQgZG9jMCA9IGRvY3VtZW50OworICAgICAgICAgICAgbGV0IGlm
cmFtZTEgPSBkb2MwLmdldEVsZW1lbnRCeUlkKCdmcmFtZS0xJyk7CisgICAgICAgICAgICBsZXQg
ZG9jMSA9IGlmcmFtZTEuY29udGVudERvY3VtZW50OworICAgICAgICAgICAgbGV0IGlmcmFtZTIg
PSBkb2MwLmdldEVsZW1lbnRCeUlkKCdmcmFtZS0yJyk7CisKKyAgICAgICAgICAgIGxldCBvYmog
PSB7CisgICAgICAgICAgICAgICAgb2Zmc2V0OiAwCisgICAgICAgICAgICB9OworICAgICAgICAg
ICAgZG9jMS5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgcHJpbnRTY3JvbGwob2JqKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBpZnJhbWUxLmZvY3VzKCk7CisgICAgICAgICAgICBkZWJ1ZygianVzdCBmb2N1c2VkIGZyYW1l
IDEsIGFib3V0IHRvIHByZXNzIGRvd24gYXJyb3ciKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVs
cGVyLnJhd0tleURvd24oImRvd25BcnJvdyIpOworICAgICAgICAgICAgaWZyYW1lMi5mb2N1cygp
OworICAgICAgICAgICAgZGVidWcoImp1c3QgdW5mb2N1c2VkIGZyYW1lMSIpOworICAgICAgICB9
CisgICAgPC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAgICNwbGFjZWhvbGRlciB7CisgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiA1MDAwcHg7CisgICAgfQorICAgIGlmcmFt
ZSB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9
CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46IDA7IiBvbmxvYWQ9
InJ1blRlc3QoKSI+CisgICAgPGlmcmFtZSBpZD0iZnJhbWUtMSIgc3JjZG9jPSI8ZGl2IHN0eWxl
PSd3aWR0aDogMTAwcHg7IGhlaWdodDogMjAwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyc+
PC9kaXY+Ij48L2lmcmFtZT4KKyAgICA8aWZyYW1lIGlkPSJmcmFtZS0yIiBzcmNkb2M9IjxkaXYg
c3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAyMDAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJl
ZDsnPjwvZGl2PiI+PC9pZnJhbWU+CisgICAgPGRpdiBpZD0icGxhY2Vob2xkZXIiPgorICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KK+KAiworPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3Jlc291cmNlcy91aS1o
ZWxwZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5q
cwkocmV2aXNpb24gMjgxMTExKQorKysgTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5q
cwkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDYgKzM0NCwzMCBAQCB3aW5kb3cuVUlIZWxwZXIgPSBj
bGFzcyBVSUhlbHBlciB7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBzdGF0aWMgcmF3S2V5RG93
bihrZXksIG1vZGlmaWVycz1bXSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIo
KSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7CisgICAgICAgICAgICBldmVudFNlbmRlci5yYXdL
ZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29s
dmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkg
PT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgdWlDb250cm9sbGVyLnJh
d0tleURvd24oIiR7a2V5fSIsICR7SlNPTi5zdHJpbmdpZnkobW9kaWZpZXJzKX0pO2AsIHJlc29s
dmUpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzdGF0aWMgcmF3S2V5VXAoa2V5LCBtb2Rp
ZmllcnM9W10pCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMu
aXNJT1NGYW1pbHkoKSkgeworICAgICAgICAgICAgZXZlbnRTZW5kZXIucmF3S2V5VXAoa2V5LCBt
b2RpZmllcnMpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIucmF3S2V5VXAoIiR7a2V5
fSIsICR7SlNPTi5zdHJpbmdpZnkobW9kaWZpZXJzKX0pO2AsIHJlc29sdmUpOworICAgICAgICB9
KTsKKyAgICB9CisKICAgICBzdGF0aWMga2V5RG93bihrZXksIG1vZGlmaWVycz1bXSkKICAgICB7
CiAgICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7
Cg==
</data>
<flag name="commit-queue"
          id="458636"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435790</attachid>
            <date>2021-08-18 13:00:46 -0700</date>
            <delta_ts>2021-08-18 15:33:10 -0700</delta_ts>
            <desc>LayoutTest still broken, trying to fix broken builds</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>66716</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MTE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA4LTE3ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkgb24g
dGhlIG9sZCBGcmFtZVZpZXcgYWZ0ZXIgY2hhbmdpbmcgRnJhbWUgZm9jdXMuCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorCisgICAgICAgIENhbGwgdXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKSB3aGVuIHRoZSB3aW5kb3cgdmlzaWJpbGl0eSAvIGFjdGl2ZSBzdGF0
ZSBjaGFuZ2VzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVNj
cm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAg
ICAgICBQbHVtYmluZyB0byBnZXQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSB0
byB0aGUgU2Nyb2xsQ29udHJvbGxlciwgd2hlcmUgd2UgY2FuIHRlbGwgCisgICAgICAgIHRoZSBr
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRvIGhhbmRsZSBrZXlVcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0wOC0xNyAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBEZS1kdXBsaWNhdGUgdGhlIENv
Y29hLXNwZWNpZmljIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBjb25zdHJ1Y3RvcgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgxMTExKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTksOSArMzU5LDEyIEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRnJh
bWUoRnIKICAgICBtX2ZvY3VzZWRGcmFtZSA9IG5ld0ZyYW1lOwogCiAgICAgLy8gTm93IHRoYXQg
dGhlIGZyYW1lIGlzIHVwZGF0ZWQsIGZpcmUgZXZlbnRzIGFuZCB1cGRhdGUgdGhlIHNlbGVjdGlv
biBmb2N1c2VkIHN0YXRlcyBvZiBib3RoIGZyYW1lcy4KLSAgICBpZiAob2xkRnJhbWUgJiYgb2xk
RnJhbWUtPnZpZXcoKSkgewotICAgICAgICBvbGRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0Rm9jdXNl
ZChmYWxzZSk7Ci0gICAgICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgaWYgKG9sZEZyYW1lKSB7Cisg
ICAgICAgIGlmIChGcmFtZVZpZXcqIG9sZEZyYW1lVmlldyA9IG9sZEZyYW1lLT52aWV3KCkpIHsK
KyAgICAgICAgICAgIG9sZEZyYW1lVmlldy0+dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3Nh
cnkoKTsKKyAgICAgICAgICAgIG9sZEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRGb2N1c2VkKGZhbHNl
KTsKKyAgICAgICAgICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBp
ZiAobmV3RnJhbWUgJiYgbmV3RnJhbWUtPnZpZXcoKSAmJiBpc0ZvY3VzZWQoKSkgewpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyODExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUyLDEzICsyMzUyLDMzIEBAIHZvaWQgUGFn
ZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWMKICAgICBmb3IgKGF1dG8mIG9ic2VydmVy
IDogbV9hY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci5hY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKG9sZEFjdGl2aXR5U3RhdGUsIG1fYWN0aXZpdHlTdGF0ZSk7CiAK
LSAgICBpZiAod2FzVmlzaWJsZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkKKyAg
ICBpZiAod2FzVmlzaWJsZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkgewogICAg
ICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZO
ZWNlc3NhcnkoKTsKKyAgICAgICAgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsK
KyAgICB9CiAKICAgICBpZiAobV9wZXJmb3JtYW5jZU1vbml0b3IpCiAgICAgICAgIG1fcGVyZm9y
bWFuY2VNb25pdG9yLT5hY3Rpdml0eVN0YXRlQ2hhbmdlZChvbGRBY3Rpdml0eVN0YXRlLCBhY3Rp
dml0eVN0YXRlKTsKIH0KIAordm9pZCBQYWdlOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vz
c2FyeSgpCit7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOworICAgICAgICBpZiAoIWZyYW1lVmlldykKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZyYW1lVmlldy0+dXBkYXRlU2Nyb2xsQW5p
bWF0aW9uSWZOZWNlc3NhcnkoKTsKKworICAgICAgICBjb25zdCBIYXNoU2V0PFNjcm9sbGFibGVB
cmVhKj4qIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFyZWFzKCk7Cisg
ICAgICAgIGlmICghc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgZm9yIChhdXRvJiBzY3JvbGxhYmxlQXJlYSA6ICpzY3JvbGxhYmxlQXJlYXMpCisgICAg
ICAgICAgICBzY3JvbGxhYmxlQXJlYS0+dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3Nhcnko
KTsKKyAgICB9Cit9CisKIGJvb2wgUGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSkgJiYgbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODExMTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODg1LDYgKzg4NSw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRJc1Zpc2libGVJbnRlcm5hbChib29sKTsKICAgICB2b2lkIHNl
dElzVmlzdWFsbHlJZGxlSW50ZXJuYWwoYm9vbCk7CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEFu
aW1hdGlvbklmTmVjZXNzYXJ5KCk7CisKICAgICBlbnVtIFNob3VsZEhpZ2hsaWdodE1hdGNoZXMg
eyBEb05vdEhpZ2hsaWdodE1hdGNoZXMsIEhpZ2hsaWdodE1hdGNoZXMgfTsKICAgICBlbnVtIFNo
b3VsZE1hcmtNYXRjaGVzIHsgRG9Ob3RNYXJrTWF0Y2hlcywgTWFya01hdGNoZXMgfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAkocmV2aXNpb24g
MjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDExIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6Omhh
bmRsZVdoZWVsRXZlbnQoY28KICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAordm9pZCBTY3JvbGxB
bmltYXRvcjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKQoreworICAgIG1fc2Ny
b2xsQ29udHJvbGxlci51cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSgpOworfQorCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVRvdWNo
RXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAkocmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiAr
ODMsOCBAQCBwdWJsaWM6CiAKICAgICBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yICprZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9rZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yLmdldCgpOyB9CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEFuaW1hdGlv
bklmTmVjZXNzYXJ5KCk7CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsyMjgsMTIgQEAgdm9pZCBTY3JvbGxD
b250cm9sbGVyOjp1cGRhdGVLZXlib2FyZFNjcgogICAgIG1fY2xpZW50LmtleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IoKS0+dXBkYXRlS2V5Ym9hcmRTY3JvbGxQb3NpdGlvbihjdXJyZW50VGltZSk7
CiB9CiAKK3ZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNl
c3NhcnkoKQoreworICAgIGlmIChtX2lzQW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmcpCisgICAg
ICAgIG1fY2xpZW50LmtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoKS0+aGFuZGxlS2V5VXBFdmVu
dCgpOworfQorCiAvLyBDdXJyZW50bHksIG9ubHkgTWFjIHN1cHBvcnRzIG1vbWVudHVtIHNyb2xs
aW5nLWJhc2VkIHNjcm9sbHNuYXBwaW5nIGFuZCBydWJiZXIgYmFuZGluZwogLy8gc28gYWxsIG9m
IHRoZXNlIG1ldGhvZHMgYXJlIGEgbm9vcCBvbiBub24tTWFjIHBsYXRmb3Jtcy4KICNpZiAhUExB
VEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xs
ZXIuaAkocmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBiZWdpbktleWJvYXJkU2Nyb2xsaW5nKCk7CiAgICAgdm9pZCBzdG9wS2V5Ym9h
cmRTY3JvbGxpbmcoKTsKKworICAgIHZvaWQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3Nh
cnkoKTsKICAgICAKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHBlcmlvZGljYWxseSBieSB0aGUg
Y2xpZW50LiBTdGFydGVkIGJ5IHN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2soKSwgc3RvcHBlZCBieSBz
dG9wQW5pbWF0aW9uQ2FsbGJhY2soKS4KICAgICB2b2lkIGFuaW1hdGlvbkNhbGxiYWNrKE1vbm90
b25pY1RpbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcAkocmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDExIEBAIGJvb2wgU2Ny
b2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3IKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50
OwogfQogCit2b2lkIFNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vz
c2FyeSgpCit7CisgICAgbV9zY3JvbGxBbmltYXRvci0+dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZO
ZWNlc3NhcnkoKTsKK30KKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBib29sIFNjcm9sbGFi
bGVBcmVhOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgdG91Y2hF
dmVudCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAko
cmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc25hcEFmdGVyTGF5b3V0KCk7CiAgICAgdm9pZCBkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyhT
Y3JvbGxiYXJPcmllbnRhdGlvbik7CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklm
TmVjZXNzYXJ5KCk7CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOwogI2VuZGlmCklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyODEyMDgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw0OCBAQAorMjAyMS0wOC0xOCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0b3Agd2hl
biBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgor
ICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGluaXRpYWxpemVdKToKKyAgICAgICAg
KCtbRXZlbnRTZW5kaW5nQ29udHJvbGxlciBpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0
Ol0pOgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIHdlYlNjcmlwdE5hbWVGb3JT
ZWxlY3RvcjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciByYXdLZXlEb3du
OndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdD
b250cm9sbGVyIHJhd0tleURvd25XcmFwcGVyOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0p
OgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tleVVwOndpdGhNb2RpZmll
cnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJh
d0tleVVwV3JhcHBlcjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRs
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OmNyZWF0ZVJhd0tleURvd25NZXNzYWdlQm9k
eSk6CisgICAgICAgIChXVFI6OmNyZWF0ZVJhd0tleVVwTWVzc2FnZUJvZHkpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1Mu
bW06CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24pOgorICAgICAg
ICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpkaWRSZWNlaXZlUmF3S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGVyUHJveHk6OnJhd0tleURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
OjpyYXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQ
cm94eS5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcDoKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVy
UHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNl
bmRlclByb3h5V1BFLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5
RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKwogMjAy
MS0wOC0xOCAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGxheW91dCB0ZXN0IGZvciBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBoYW5k
bGVyIGZvciBhdHRyaWJ1dGUgQVhMaW5lRm9yVGV4dE1hcmtlciBvbiBNYWNPUy4KSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1t
CShyZXZpc2lvbiAyODExMTEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYgKzIwMiw4IEBAICsgKHZv
aWQpaW5pdGlhbGl6ZQogICAgICAgICBAImZvY3VzIiwKICAgICAgICAgQCJpbnB1dCIsCiAgICAg
ICAgIEAia2V5ZG93biIsCisgICAgICAgIEAicmF3a2V5ZG93biIsCisgICAgICAgIEAicmF3a2V5
dXAiLAogICAgICAgICBAImtleXByZXNzIiwKICAgICAgICAgQCJrZXl1cCIsCiAgICAgICAgIEAi
bG9hZCIsCkBAIC0yNDUsNiArMjQ3LDggQEAgKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRGcm9t
V2ViU2NyaXB0OgogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihlbmFibGVE
T01VSUV2ZW50TG9nZ2luZzopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9y
KGZpcmVLZXlib2FyZEV2ZW50c1RvRWxlbWVudDopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3Ig
PT0gQHNlbGVjdG9yKGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KQorICAgICAg
ICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihyYXdLZXlEb3duOndpdGhNb2RpZmllcnM6
d2l0aExvY2F0aW9uOikKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IocmF3
S2V5VXA6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KQogICAgICAgICAgICAgfHwgYVNlbGVj
dG9yID09IEBzZWxlY3RvcihsZWFwRm9yd2FyZDopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3Ig
PT0gQHNlbGVjdG9yKG1vdXNlRG93bjp3aXRoTW9kaWZpZXJzOikKICAgICAgICAgICAgIHx8IGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3IobW91c2VNb3ZlVG9YOlk6KQpAQCAtMzA2LDYgKzMxMCwxMCBA
QCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjooCiAgICAgICAgIHJldHVy
biBAImZpcmVLZXlib2FyZEV2ZW50c1RvRWxlbWVudCI7CiAgICAgaWYgKGFTZWxlY3RvciA9PSBA
c2VsZWN0b3Ioa2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQogICAgICAgICBy
ZXR1cm4gQCJrZXlEb3duIjsKKyAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihyYXdLZXlE
b3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikpCisgICAgICAgIHJldHVybiBAInJhd0tl
eURvd24iOworICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tleVVwOndpdGhNb2Rp
ZmllcnM6d2l0aExvY2F0aW9uOikpCisgICAgICAgIHJldHVybiBAInJhd0tleVVwIjsKICAgICBp
ZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd246d2l0
aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkKICAgICAgICAgcmV0dXJuIEAic2NoZWR1bGVBc3lu
Y2hyb25vdXNLZXlEb3duIjsKICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihsZWFwRm9y
d2FyZDopKQpAQCAtMTIwOSw2ICsxMjE3LDQzOCBAQCAtICh2b2lkKWtleURvd25XcmFwcGVyOihO
U1N0cmluZyAqKWNoYXJhCiAgICAgW3NlbGYga2V5RG93bjpjaGFyYWN0ZXIgd2l0aE1vZGlmaWVy
czptb2RpZmllcnMgd2l0aExvY2F0aW9uOmxvY2F0aW9uXTsKIH0KIAorLSAodm9pZClyYXdLZXlE
b3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3Qg
Kiltb2RpZmllcnMgd2l0aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCit7CisgICAg
TlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAgIHVuc2lnbmVkIHNob3J0
IGtleUNvZGUgPSAwOworICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRB
cnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9u
S2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3QjsKKyAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBcnJvdyJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
TlNVcEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAw
eDdFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJy
b3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktl
eTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0Q7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VVcCJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHg3NDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAicGFnZURvd24iXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93
bkZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3OTsKKyAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaG9tZSJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hvbWVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4NzM7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImVuZCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1
bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NzsKKyAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaW5zZXJ0Il0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5zZXJ0RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDcyOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNE
ZWxldGVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzU7
CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHgzNTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAicHJpbnRTY3JlZW4iXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQcmlu
dFNjcmVlbkZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgw
OyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFsIGtleSBjb2RlIGZvciBQcmludFNjcmVlbi4K
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiY3lyaWxsaWNTbWFs
bExldHRlckEiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgwNDMwOworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzOyAvLyBTaGFyZXMga2V5IHdpdGggIkYiIG9u
IFJ1c3NpYW4gbGF5b3V0LgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJsZWZ0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTM7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNCOworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0U2hpZnQiXSkgeworICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gMHhGRkUxOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0g
MHgzODsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFs
dCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTc7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDNBOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gMHhGRkU0OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRTsKKyAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRTaGlmdCJdKSB7Cisg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDNDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJyaWdodEFsdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTg7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNEOworICAgIH0KKworICAgIC8vIENv
bXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5l
ZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIpLgorICAgIC8vIElmIHRoZSBp
bnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDI0OyBpKyspIHsKKyAgICAgICAgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1Iiwg
aV1dKSB7CisgICAgICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsg
KGkgLSAxKTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgICAgICBzd2l0Y2ggKGkpIHsKKyAg
ICAgICAgICAgIGNhc2UgMToga2V5Q29kZSA9IDB4N0E7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUg
PSAweDYzOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDY6IGtleUNvZGUgPSAweDYxOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNzoga2V5
Q29kZSA9IDB4NjI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAweDY1OyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAweDZEOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
MTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTI6IGtleUNvZGUg
PSAweDZGOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTM6IGtleUNvZGUgPSAweDY5OyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMTU6IGtleUNvZGUgPSAweDcxOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTY6
IGtleUNvZGUgPSAweDZBOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAw
eDQwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMTk6IGtleUNvZGUgPSAweDUwOyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlz
LgorICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCisgICAgICAgIGtl
eUNvZGUgPSAweDMwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ICJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAIlxyIl0pCisgICAgICAgIGtleUNvZGUgPSAweDI0OworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKKyAgICAgICAga2V5Q29kZSA9
IDB4NEM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkK
KyAgICAgICAga2V5Q29kZSA9IDB4MzM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJhIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAwOworICAgIGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQorICAgICAgICBrZXlDb2RlID0gMHgwQjsK
KyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkKKyAgICAgICAg
a2V5Q29kZSA9IDB4MDI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJlIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBFOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQorICAgICAgICBrZXlDb2RlID0gMHgxQjsKKworICAg
IEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0geworICAgICAgICB7MHgyRiwgMHg0MSwgJy4nLCBu
aWx9LAorICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0
NSwgJysnLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktl
eSwgQCJjbGVhciJ9LAorICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9LAorICAgICAgICB7
MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAgICAgezB4MUIsIDB4NEUsICctJywgbmls
fSwKKyAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKKyAgICAgICAgezB4MUQsIDB4NTIs
ICcwJywgbmlsfSwKKyAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwKKyAgICAgICAgezB4
MTMsIDB4NTQsICcyJywgbmlsfSwKKyAgICAgICAgezB4MTQsIDB4NTUsICczJywgbmlsfSwKKyAg
ICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKKyAgICAgICAgezB4MTcsIDB4NTcsICc1Jywg
bmlsfSwKKyAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKKyAgICAgICAgezB4MUEsIDB4
NTksICc3JywgbmlsfSwKKyAgICAgICAgezB4MUMsIDB4NUIsICc4JywgbmlsfSwKKyAgICAgICAg
ezB4MTksIDB4NUMsICc5JywgbmlsfSwKKyAgICB9OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7CisgICAgICAgIE5TU3RyaW5nKiBj
dXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0
YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKKyAgICAgICAgICAgIGlmIChsb2Nh
dGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkKKyAgICAgICAgICAgICAgICBrZXlDb2Rl
ID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKKyAgICAgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVycyA9IGV2ZW50Q2hhcmFjdGVyOworCisgICAgaW50IG1vZGlmaWVyRmxhZ3MgPSAwOworCisg
ICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJ
bmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykg
eworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5T
RXZlbnRNb2RpZmllckZsYWdTaGlmdDsKKyNlbHNlCisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0g
V2ViRXZlbnRGbGFnTWFza0xlZnRTaGlmdEtleTsKKyNlbmRpZgorICAgICAgICBjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107CisgICAgfQor
CisgICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKTsKKwor
ICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkKKyAgICAgICAgbW9k
aWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKKworICAgIFtbW21h
aW5GcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKKworI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZl
bnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleURvd24KKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9p
bnQoNSwgNSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCisgICAgICAgIHRp
bWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQorICAgICAgICB3aW5kb3dOdW1iZXI6W1tb
bWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gd2luZG93TnVtYmVyXQorICAgICAgICBjb250ZXh0
OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFjdGVyczpl
dmVudENoYXJhY3RlcgorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlD
b2RlOmtleUNvZGVdKTsKKyNlbHNlCisgICAgYXV0byBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVu
dCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpb
c2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgbW9kaWZpZXJz
OihXZWJFdmVudEZsYWdzKW1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAg
d2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdElu
ZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0Jyld
KTsKKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgW05TQXBwIF9zZXRD
dXJyZW50RXZlbnQ6ZXZlbnQuZ2V0KCldOworI2VuZGlmCisgICAgW1tbW21haW5GcmFtZSB3ZWJW
aWV3XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBrZXlEb3duOmV2ZW50LmdldCgpXTsKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOwor
I2VuZGlmCit9CisKKy0gKHZvaWQpcmF3S2V5RG93bldyYXBwZXI6KE5TU3RyaW5nICopY2hhcmFj
dGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRp
b246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sKKyAgICBbc2VsZiByYXdLZXlEb3duOmNoYXJh
Y3RlciB3aXRoTW9kaWZpZXJzOm1vZGlmaWVycyB3aXRoTG9jYXRpb246bG9jYXRpb25dOworfQor
CistICh2b2lkKXJhd0tleVVwOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihX
ZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxv
Y2F0aW9uCit7CisgICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAg
IHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOworICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImxlZnRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0xl
ZnRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3
QjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBcnJv
dyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktl
eTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0M7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkgeworICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAg
ICAgIGtleUNvZGUgPSAweDdFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJkb3duQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEb3du
QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0Q7
CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VVcCJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgeworICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHg3OTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
aG9tZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hvbWVGdW5jdGlvbktleTsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzM7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2Rl
ID0gMHg3NzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaW5z
ZXJ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5zZXJ0RnVuY3Rpb25LZXk7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDcyOworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4NzU7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImVzY2FwZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzNTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3JlZW4iXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFsIGtleSBjb2RlIGZv
ciBQcmludFNjcmVlbi4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
MHgwNDMwOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzOyAvLyBTaGFyZXMg
a2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0LgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSAweEZGRTM7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNCOwor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0U2hpZnQiXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUxOworICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAg
ICAgICBrZXlDb2RlID0gMHgzODsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAibGVmdEFsdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTc7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNBOworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkgeworICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gMHhGRkU0OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2Rl
ID0gMHgzRTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmln
aHRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTI7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSAweEZGRTg7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNEOworICAg
IH0KKworICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1r
ZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIpLgor
ICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkgbmFtZSwgc2V0IGl0
cyBrZXkgY29kZS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDI0OyBpKyspIHsKKyAg
ICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiRiV1IiwgaV1dKSB7CisgICAgICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNG
MUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgICAgICBz
d2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgMToga2V5Q29kZSA9IDB4N0E7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNDoga2V5Q29k
ZSA9IDB4NzY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDY6IGtleUNvZGUgPSAweDYxOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgNzoga2V5Q29kZSA9IDB4NjI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA4OiBr
ZXlDb2RlID0gMHg2NDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAweDY1
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAweDZEOyBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTM6IGtleUNv
ZGUgPSAweDY5OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAweDcxOyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAweDZBOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
MTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTg6IGtleUNvZGUg
PSAweDRGOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTk6IGtleUNvZGUgPSAweDUwOyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNl
dCBmb3IgbW9zdCBrZXlzLgorICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0
Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiICJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMTsKKyAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCisgICAgICAgIGtleUNvZGUgPSAw
eDI0OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKKyAg
ICAgICAga2V5Q29kZSA9IDB4NEM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJceDgiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzM7CisgICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAwOwor
ICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQorICAgICAgICBr
ZXlDb2RlID0gMHgwQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJlIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBFOworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQorICAgICAgICBrZXlDb2Rl
ID0gMHgxQjsKKworICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0geworICAgICAgICB7MHgy
RiwgMHg0MSwgJy4nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAorICAg
ICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVh
ckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAorICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBu
aWx9LAorICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAgICAgezB4MUIs
IDB4NEUsICctJywgbmlsfSwKKyAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKKyAgICAg
ICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKKyAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmls
fSwKKyAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKKyAgICAgICAgezB4MTQsIDB4NTUs
ICczJywgbmlsfSwKKyAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKKyAgICAgICAgezB4
MTcsIDB4NTcsICc1JywgbmlsfSwKKyAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKKyAg
ICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKKyAgICAgICAgezB4MUMsIDB4NUIsICc4Jywg
bmlsfSwKKyAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKKyAgICB9OworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7CisgICAg
ICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgICAgICBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKKyAgICAg
ICAgICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkKKyAgICAgICAg
ICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKKyAg
ICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgTlNTdHJpbmcgKmNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOworCisgICAgaW50IG1vZGlmaWVy
RmxhZ3MgPSAwOworCisgICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0
ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdElu
ZGV4OjBdIDw9ICdaJykgeworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBtb2Rp
ZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKKyNlbHNlCisgICAgICAgIG1v
ZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnRGbGFnTWFza0xlZnRTaGlmdEtleTsKKyNlbmRpZgorICAg
ICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0
cmluZ107CisgICAgfQorCisgICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxhZ3Mo
bW9kaWZpZXJzKTsKKworICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBB
RCkKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1Bh
ZDsKKworICAgIFtbW21haW5GcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsK
KworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIo
W05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCisgICAgICAgIGxvY2F0
aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFn
cworICAgICAgICB0aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KKyAgICAgICAgd2lu
ZG93TnVtYmVyOltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KKyAg
ICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAg
IGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8K
KyAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7CisjZWxzZQorICAgIGF1dG8gZXZlbnQgPSBhZG9w
dE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAg
dGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0
ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3
aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNo
YXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDow
XSA9PSAnXHQnKV0pOworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBb
TlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07CisjZW5kaWYKKyAgICBbW1tbbWFp
bkZyYW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50LmdldCgp
XTsKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVu
dDpuaWxdOworI2VuZGlmCit9CisKKy0gKHZvaWQpcmF3S2V5VXBXcmFwcGVyOihOU1N0cmluZyAq
KWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0
aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCit7CisgICAgW3NlbGYgcmF3S2V5VXA6
Y2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07
Cit9CisKIC0gKHZvaWQpc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duOihOU1N0cmluZyAqKWNo
YXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExv
Y2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCiB7CiAgICAgTlNJbnZvY2F0aW9uICppbnZv
Y2F0aW9uID0gW05TSW52b2NhdGlvbiBpbnZvY2F0aW9uV2l0aE1ldGhvZFNpZ25hdHVyZTpbRXZl
bnRTZW5kaW5nQ29udHJvbGxlciBpbnN0YW5jZU1ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yOkBz
ZWxlY3RvcihrZXlEb3duV3JhcHBlcjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopXV07Cklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAkocmV2aXNpb24g
MjgxMTExKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogICAgIHZvaWQgbGVhcEZvcndh
cmQoaW50IG1pbGxpc2Vjb25kcyk7CiAKICAgICB2b2lkIGtleURvd24oV0tTdHJpbmdSZWYga2V5
LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlE
b3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycywgdW5zaWduZWQgbG9jYXRpb24p
OworICAgIHZvaWQgcmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1
bnNpZ25lZCBsb2NhdGlvbik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB1bnNpZ25lZCBt
b3VzZUJ1dHRvbnNDdXJyZW50bHlEb3duKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZUJ1dHRvbnND
dXJyZW50bHlEb3duOyB9CkBAIC0xMDEsNiArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVw
ZGF0ZUNsaWNrQ291bnRGb3JCdXR0b24oaW50IGJ1dHRvbik7CiAKICAgICB2b2lkIHNlbmRNb3Vz
ZURvd25Ub1N0YXJ0UHJlc3N1cmVFdmVudHMoKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGVudW0gY2xhc3MgUHJlc3N1cmVDaGFuZ2VEaXJlY3Rpb24geyBJbmNyZWFzaW5nLCBEZWNyZWFz
aW5nIH07CiAgICAgUmV0YWluUHRyPE5TRXZlbnQ+IGJlZ2luUHJlc3N1cmVFdmVudChpbnQgc3Rh
Z2UpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDI4MTExMSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTY0LDYgKzE1NjQsMTYgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6ZGlkUmVjZWl2ZUtleURvd25NZQogICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+a2V5RG93
bihzdHJpbmdWYWx1ZShkaWN0aW9uYXJ5LCAiS2V5IiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnks
ICJNb2RpZmllcnMiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwgIkxvY2F0aW9uIikpOwogfQog
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlUmF3S2V5RG93bk1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIGJvb2wgc3luY2hyb25vdXMp
Cit7CisgICAgbV9ldmVudFNlbmRlclByb3h5LT5yYXdLZXlEb3duKHN0cmluZ1ZhbHVlKGRpY3Rp
b25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50
NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnksIGJvb2wgc3luY2hyb25vdXMpCit7CisgICAgbV9ldmVudFNlbmRl
clByb3h5LT5yYXdLZXlVcChzdHJpbmdWYWx1ZShkaWN0aW9uYXJ5LCAiS2V5IiksIHVpbnQ2NFZh
bHVlKGRpY3Rpb25hcnksICJNb2RpZmllcnMiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwgIkxv
Y2F0aW9uIikpOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTGl2ZURvY3Vt
ZW50c0xpc3QoV0tBcnJheVJlZiBsaXZlRG9jdW1lbnRMaXN0KQogewogICAgIGF1dG8gbnVtRG9j
dW1lbnRzID0gV0tBcnJheUdldFNpemUobGl2ZURvY3VtZW50TGlzdCk7CkBAIC0xNjIxLDYgKzE2
MzEsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcgogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJSYXdLZXlEb3duIikpIHsKKyAgICAgICAgICAg
IGRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5
LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tleVVwIikp
IHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoZGljdGlvbmFyeSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
ICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUs
ICJNb3VzZVNjcm9sbEJ5IikpIHsKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91
c2VTY3JvbGxCeShkb3VibGVWYWx1ZShkaWN0aW9uYXJ5LCAiWCIpLCBkb3VibGVWYWx1ZShkaWN0
aW9uYXJ5LCAiWSIpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2NjIsNiArMTY4MiwxNiBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vCiAgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAorICAgICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tleURv
d24iKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKGRpY3Rpb25hcnksIHRydWUpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJSYXdLZXlVcCIpKSB7CisgICAgICAg
ICAgICBkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKGRpY3Rpb25h
cnksIHRydWUpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIp
OworICAgICAgICB9CisKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
c3ViTWVzc2FnZU5hbWUsICJNb3VzZURvd24iKSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRl
clByb3h5LT5tb3VzZURvd24odWludDY0VmFsdWUoZGljdGlvbmFyeSwgIkJ1dHRvbiIpLCB1aW50
NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiksIHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnks
ICJQb2ludGVyVHlwZSIpKTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihu
dWxscHRyKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHJl
dmlzaW9uIDI4MTExMSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDM3LDYgKzQzNyw4IEBAIHByaXZhdGU6CiAgICAgV0tSZXRh
aW5QdHI8V0tUeXBlUmVmPiBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEo
KTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUtleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnksIGJvb2wgc3luY2hyb25vdXMp
OworICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnksIGJvb2wgc3luY2hyb25vdXMp
OworICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShX
S0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBib29sIHN5bmNocm9ub3VzKTsK
IAogICAgIC8vIFdLQ29udGV4dENsaWVudAogICAgIHN0YXRpYyB2b2lkIG5ldHdvcmtQcm9jZXNz
RGlkQ3Jhc2goV0tDb250ZXh0UmVmLCBjb25zdCB2b2lkKik7CkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI4MTExMSkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwMSwxMSArMzAxLDQxIEBAIHN0YXRpYyBXS1JldGFpblB0cjxXS011dGFibGVE
aWN0aW9uYXJ5UmUKICAgICByZXR1cm4gYm9keTsKIH0KIAorc3RhdGljIFdLUmV0YWluUHRyPFdL
TXV0YWJsZURpY3Rpb25hcnlSZWY+IGNyZWF0ZVJhd0tleURvd25NZXNzYWdlQm9keShKU1N0cmlu
Z1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBpbnQgbG9jYXRpb24pCit7Cisg
ICAgYXV0byBib2R5ID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworICAg
IHNldFZhbHVlKGJvZHksICJTdWJNZXNzYWdlIiwgIlJhd0tleURvd24iKTsKKyAgICBzZXRWYWx1
ZShib2R5LCAiS2V5Iiwga2V5KTsKKyAgICBzZXRWYWx1ZShib2R5LCAiTW9kaWZpZXJzIiwgYWRv
cHRXSyhXS1VJbnQ2NENyZWF0ZShtb2RpZmllcnMpKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIkxv
Y2F0aW9uIiwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShsb2NhdGlvbikpKTsKKyAgICByZXR1cm4g
Ym9keTsKK30KKworc3RhdGljIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNy
ZWF0ZVJhd0tleVVwTWVzc2FnZUJvZHkoSlNTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJz
IG1vZGlmaWVycywgaW50IGxvY2F0aW9uKQoreworICAgIGF1dG8gYm9keSA9IGFkb3B0V0soV0tN
dXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKyAgICBzZXRWYWx1ZShib2R5LCAiU3ViTWVzc2Fn
ZSIsICJSYXdLZXlVcCIpOworICAgIHNldFZhbHVlKGJvZHksICJLZXkiLCBrZXkpOworICAgIHNl
dFZhbHVlKGJvZHksICJNb2RpZmllcnMiLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKG1vZGlmaWVy
cykpKTsKKyAgICBzZXRWYWx1ZShib2R5LCAiTG9jYXRpb24iLCBhZG9wdFdLKFdLVUludDY0Q3Jl
YXRlKGxvY2F0aW9uKSkpOworICAgIHJldHVybiBib2R5OworfQorCiB2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OmtleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVy
QXJyYXksIGludCBsb2NhdGlvbikKIHsKICAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZSgi
RXZlbnRTZW5kZXIiLCBjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCBwYXJzZU1vZGlmaWVy
QXJyYXkobW9kaWZpZXJBcnJheSksIGxvY2F0aW9uKSk7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kaW5n
Q29udHJvbGxlcjo6cmF3S2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZp
ZXJBcnJheSwgaW50IGxvY2F0aW9uKQoreworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdl
KCJFdmVudFNlbmRlciIsIGNyZWF0ZVJhd0tleURvd25NZXNzYWdlQm9keShrZXksIHBhcnNlTW9k
aWZpZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRpb24pKTsKK30KKwordm9pZCBFdmVudFNl
bmRpbmdDb250cm9sbGVyOjpyYXdLZXlVcChKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9k
aWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKQoreworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNz
YWdlKCJFdmVudFNlbmRlciIsIGNyZWF0ZVJhd0tleVVwTWVzc2FnZUJvZHkoa2V5LCBwYXJzZU1v
ZGlmaWVyQXJyYXkobW9kaWZpZXJBcnJheSksIGxvY2F0aW9uKSk7Cit9CisKIHZvaWQgRXZlbnRT
ZW5kaW5nQ29udHJvbGxlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKEpTU3RyaW5nUmVm
IGtleSkKIHsKICAgICBwb3N0UGFnZU1lc3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlS2V5RG93
bk1lc3NhZ2VCb2R5KGtleSwgMCwgMCkpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmgJKHJldmlzaW9uIDI4MTExMSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2
Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhKU1Zh
bHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spOwogCiAgICAgdm9pZCBrZXlEb3duKEpTU3RyaW5nUmVm
IGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pOworICAgIHZvaWQg
cmF3S2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50
IGxvY2F0aW9uKTsKKyAgICB2b2lkIHJhd0tleVVwKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJl
ZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pOwogICAgIHZvaWQgc2NoZWR1bGVBc3luY2hy
b25vdXNLZXlEb3duKEpTU3RyaW5nUmVmIGtleSk7CiAKICAgICB2b2lkIHRleHRab29tSW4oKTsK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAko
cmV2aXNpb24gMjgxMTExKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNiArNDUsOCBAQCBpbnRlcmZhY2UgRXZlbnRTZW5kaW5nQ29udHJvbGxlciB7CiAgICAgdW5k
ZWZpbmVkIGxlYXBGb3J3YXJkKGxvbmcgbWlsbGlzZWNvbmRzKTsKIAogICAgIHVuZGVmaW5lZCBr
ZXlEb3duKERPTVN0cmluZyBrZXksIG9iamVjdCBtb2RpZmllckFycmF5LCBsb25nIGxvY2F0aW9u
KTsKKyAgICB1bmRlZmluZWQgcmF3S2V5RG93bihET01TdHJpbmcga2V5LCBvYmplY3QgbW9kaWZp
ZXJBcnJheSwgbG9uZyBsb2NhdGlvbik7CisgICAgdW5kZWZpbmVkIHJhd0tleVVwKERPTVN0cmlu
ZyBrZXksIG9iamVjdCBtb2RpZmllckFycmF5LCBsb25nIGxvY2F0aW9uKTsKICAgICB1bmRlZmlu
ZWQgc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKERPTVN0cmluZyBrZXkpOwogCiAgICAgLy8g
Wm9vbSBmdW5jdGlvbnMuCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0JKHJl
dmlzaW9uIDI4MTExMSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
aW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDE0
IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKIHsKIH0KIAordm9p
ZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1v
ZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCit2b2lkIEV2
ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVy
cyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCiB2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkoaW50IHgsIGludCB5KQogewogfQpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAJKHJl
dmlzaW9uIDI4MTExMSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVy
UHJveHlHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNiArMjQ0LDE0IEBAIHZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICB3ZWJraXRXZWJWaWV3QmFzZVN5
bnRoZXNpemVLZXlFdmVudCh0b1dlYktpdEdMaWJBUEkobV90ZXN0Q29udHJvbGxlci0+bWFpbldl
YlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkpLCBLZXlFdmVudFR5cGU6Okluc2VydCwgZ2RrS2V5U3lt
LCBtb2RpZmllcnMsIFNob3VsZFRyYW5zbGF0ZUtleWJvYXJkU3RhdGU6Ok5vKTsKIH0KIAordm9p
ZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1v
ZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCit2b2lkIEV2
ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVy
cyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCiB2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6Om1vdXNlRG93bih1bnNpZ25lZCBidXR0b24sIFdLRXZlbnRNb2RpZmllcnMgd2tN
b2RpZmllcnMsIFdLU3RyaW5nUmVmIHBvaW50ZXJUeXBlKQogewogICAgIHVuc2lnbmVkIGdka0J1
dHRvbiA9IGV2ZW50U2VuZGVyQnV0dG9uVG9HREtCdXR0b24oYnV0dG9uKTsKSW5kZXg6IFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQkocmV2aXNpb24g
MjgxMTExKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5t
bQkod29ya2luZyBjb3B5KQpAQCAtODUwLDYgKzg1MCw0MTYgQEAgdm9pZCBFdmVudFNlbmRlclBy
b3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07
CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBrZXks
IFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKKyAg
ICBOU1N0cmluZyogY2hhcmFjdGVyID0gdG9XVEZTdHJpbmcoa2V5KTsKKworICAgIE5TU3RyaW5n
ICpldmVudENoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAgICB1bnNpZ25lZCBzaG9ydCBrZXlDb2Rl
ID0gMDsKKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKKyAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0I7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAg
ICAgIGtleUNvZGUgPSAweDdDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJ1cEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJv
d0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3RTsKKyAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7CisgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdEOworICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgeworICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29k
ZSA9IDB4NzQ7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBh
Z2VEb3duIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlv
bktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzk7CisgICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgeworICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDczOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJlbmQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktl
eTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzc7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHg3MjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiZGVsZXRlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVu
Y3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc1OworICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7Cisg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7CisgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZp
cnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUg
PSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM4OworICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4RkZFNzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0E7
CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJv
bCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDNFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4RkZFMjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0M7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5
Q29kZSA9IDB4M0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImVzY2FwZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHgzNTsKKyAgICB9CisKKyAgICAvLyBDb21wYXJlIHRo
ZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhl
IERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KKyAgICAvLyBJZiB0aGUgaW5wdXQgc3Ry
aW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgewor
ICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7
CisgICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAg
ICBjYXNlIDE6IGtleUNvZGUgPSAweDdBOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoga2V5
Q29kZSA9IDB4Nzg7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2RlID0gMHg2Mzsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgNToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA2
OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDc6IGtleUNvZGUgPSAw
eDYyOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgODoga2V5Q29kZSA9IDB4NjQ7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDExOiBrZXlD
b2RlID0gMHg2NzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2Rjsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDEzOiBrZXlDb2RlID0gMHg2OTsgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIDE0OiBrZXlDb2RlID0gMHg2QjsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2Rl
ID0gMHg2QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE3OiBrZXlDb2RlID0gMHg0MDsgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDIw
OiBrZXlDb2RlID0gMHg1QTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1vc3Qga2V5cy4KKyAgICBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQorICAgICAgICBrZXlDb2RlID0g
MHgzMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiAiXSkKKyAg
ICAgICAga2V5Q29kZSA9IDB4MzE7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJcciJdKQorICAgICAgICBrZXlDb2RlID0gMHgyNDsKKyAgICBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCisgICAgICAgIGtleUNvZGUgPSAweDRDOwor
ICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4Il0pCisgICAgICAg
IGtleUNvZGUgPSAweDMzOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiYSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEI7CisgICAgZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCisgICAgICAgIGtleUNvZGUg
PSAweDAyOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZSJdKQor
ICAgICAgICBrZXlDb2RlID0gMHgwRTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAIlx4MWIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MUI7CisgICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI6Il0pCisgICAgICAgIGtleUNvZGUgPSAweDI5
OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiOyJdKQorICAgICAg
ICBrZXlDb2RlID0gMHgyOTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAIiwiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MkI7CisKKyAgICBLZXlNYXBwaW5nRW50cnkg
dGFibGVbXSA9IHsKKyAgICAgICAgezB4MkYsIDB4NDEsICcuJywgbmlsfSwKKyAgICAgICAgezAs
ICAgIDB4NDMsICcqJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NDUsICcrJywgbmlsfSwKKyAg
ICAgICAgezAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXksIEAiY2xlYXIifSwKKyAg
ICAgICAgezB4MkMsIDB4NEIsICcvJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NEMsIDMsIEAi
ZW50ZXIiIH0sCisgICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5pbH0sCisgICAgICAgIHsweDE4
LCAweDUxLCAnPScsIG5pbH0sCisgICAgICAgIHsweDFELCAweDUyLCAnMCcsIG5pbH0sCisgICAg
ICAgIHsweDEyLCAweDUzLCAnMScsIG5pbH0sCisgICAgICAgIHsweDEzLCAweDU0LCAnMicsIG5p
bH0sCisgICAgICAgIHsweDE0LCAweDU1LCAnMycsIG5pbH0sCisgICAgICAgIHsweDE1LCAweDU2
LCAnNCcsIG5pbH0sCisgICAgICAgIHsweDE3LCAweDU3LCAnNScsIG5pbH0sCisgICAgICAgIHsw
eDE2LCAweDU4LCAnNicsIG5pbH0sCisgICAgICAgIHsweDFBLCAweDU5LCAnNycsIG5pbH0sCisg
ICAgICAgIHsweDFDLCAweDVCLCAnOCcsIG5pbH0sCisgICAgICAgIHsweDE5LCAweDVDLCAnOScs
IG5pbH0sCisgICAgfTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xF
TkdUSCh0YWJsZSk7ICsraSkgeworICAgICAgICBOU1N0cmluZyogY3VycmVudENoYXJhY3RlclN0
cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomdGFibGVbaV0uY2hhcmFjdGVy
IGxlbmd0aDoxXTsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOmN1cnJl
bnRDaGFyYWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOnRhYmxlW2ld
LmNoYXJhY3Rlck5hbWVdKSB7CisgICAgICAgICAgICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAv
KkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisgICAgICAgICAgICAgICAga2V5Q29kZSA9IHRh
YmxlW2ldLm1hY051bXBhZEtleUNvZGU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7CisgICAgICAgICAgICBldmVudENoYXJh
Y3RlciA9IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmc7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMg
PSBldmVudENoYXJhY3RlcjsKKworICAgIGludCBtb2RpZmllckZsYWdzID0gMDsKKworICAgIGlm
IChbY2hhcmFjdGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6
MF0gPj0gJ0EnICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA8PSAnWicpIHsKKyAg
ICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQ7CisgICAgICAg
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5n
XTsKKyAgICB9CisKKyAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2Rp
ZmllcnMpOworCisgICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypET01fS0VZX0xPQ0FUSU9O
X05VTVBBRCovKQorICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdO
dW1lcmljUGFkOworCisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhU
eXBlOk5TRXZlbnRUeXBlS2V5RG93bgorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1
KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgdGltZXN0YW1w
OmFic29sdXRlVGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCisgICAgICAgIHdp
bmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5k
b3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1
cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCisgICAgICAg
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMK
KyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6a2V5Q29kZV07CisKKyAgICBb
TlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CisgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlEb3duOmV2
ZW50XTsKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOworfQorCit2b2lkIEV2ZW50
U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworICAgIE5TU3RyaW5nKiBjaGFyYWN0
ZXIgPSB0b1dURlN0cmluZyhrZXkpOworCisgICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyID0g
Y2hhcmFjdGVyOworICAgIHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOworICAgIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHg3QjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAicmlnaHRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0
QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0M7
CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7CisgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdFOworICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4N0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAInBhZ2VVcCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0
aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NDsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OworICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBrZXlDb2RlID0gMHg3OTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiaG9tZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hv
bWVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzM7Cisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHg3NzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiaW5zZXJ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5z
ZXJ0RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDcyOwor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgewor
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKKyAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzU7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAInByaW50U2NyZWVuIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3Ig
UHJpbnRTY3JlZW4uCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImN5cmlsbGljU21hbGxMZXR0ZXJBIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4
MDQzMDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtl
eSB3aXRoICJGIiBvbiBSdXNzaWFuIGxheW91dC4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gMHhGRkUzOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQjsKKyAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMTsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4Mzg7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImxlZnRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3Owor
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQTsKKyAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4RkZFNDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4M0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0
U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gMHhGRkU4OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRDsKKyAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDM1OworICAgIH0KKworICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRo
IHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYx
IiwuLi4sIkYyNCIpLgorICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1r
ZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9
IDI0OyBpKyspIHsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7CisgICAgICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKKyAgICAgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgMToga2V5Q29kZSA9
IDB4N0E7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA1OiBrZXlD
b2RlID0gMHg2MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDY6IGtleUNvZGUgPSAweDYxOyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgNzoga2V5Q29kZSA9IDB4NjI7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDk6
IGtleUNvZGUgPSAweDY1OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAw
eDZEOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgMTM6IGtleUNvZGUgPSAweDY5OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6IGtl
eUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAweDcx
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAweDZBOyBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTk6IGtleUNv
ZGUgPSAweDUwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBO
byBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlzLgorICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAIlx0Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMwOworICAgIGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiICJdKQorICAgICAgICBrZXlDb2RlID0gMHgz
MTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCisgICAg
ICAgIGtleUNvZGUgPSAweDI0OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiXG4iXSkKKyAgICAgICAga2V5Q29kZSA9IDB4NEM7CisgICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzM7Cisg
ICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCisgICAgICAgIGtl
eUNvZGUgPSAweDAwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
YiJdKQorICAgICAgICBrZXlDb2RlID0gMHgwQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDI7CisgICAgZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCisgICAgICAgIGtleUNvZGUgPSAw
eDBFOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQor
ICAgICAgICBrZXlDb2RlID0gMHgxQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAIjoiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI7Il0pCisgICAgICAgIGtleUNvZGUgPSAweDI5Owor
ICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiLCJdKQorICAgICAgICBr
ZXlDb2RlID0gMHgyQjsKKworICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0geworICAgICAg
ICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9
LAorICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0Nywg
TlNDbGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAorICAgICAgICB7MHgyQywgMHg0Qiwg
Jy8nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAgICAg
ezB4MUIsIDB4NEUsICctJywgbmlsfSwKKyAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwK
KyAgICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKKyAgICAgICAgezB4MTIsIDB4NTMsICcx
JywgbmlsfSwKKyAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKKyAgICAgICAgezB4MTQs
IDB4NTUsICczJywgbmlsfSwKKyAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKKyAgICAg
ICAgezB4MTcsIDB4NTcsICc1JywgbmlsfSwKKyAgICAgICAgezB4MTYsIDB4NTgsICc2Jywgbmls
fSwKKyAgICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKKyAgICAgICAgezB4MUMsIDB4NUIs
ICc4JywgbmlsfSwKKyAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKKyAgICB9OworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7
CisgICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgICAg
ICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10g
fHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsK
KyAgICAgICAgICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9O
VU1QQUQqLykKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5
Q29kZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVb
aV0ubWFjS2V5Q29kZTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJh
Y3RlclN0cmluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg
TlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOwor
CisgICAgaW50IG1vZGlmaWVyRmxhZ3MgPSAwOworCisgICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3Ro
XSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJh
Y3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykgeworICAgICAgICBtb2RpZmllckZsYWdz
IHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOworICAgIH0KKworICAgIG1v
ZGlmaWVyRmxhZ3MgfD0gYnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycyk7CisKKyAgICBpZiAo
a2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisgICAgICAg
IG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisKKyAgICBO
U0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlV
cAorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAgICAgICBtb2RpZmllckZs
YWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50
VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCisgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29u
dHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCisg
ICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAg
ICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgaXNBUmVwZWF0Ok5P
CisgICAgICAgIGtleUNvZGU6a2V5Q29kZV07CisKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVu
dDpldmVudF07CisgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9y
bVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudF07CisgICAgW05TQXBwIF9zZXRD
dXJyZW50RXZlbnQ6bmlsXTsKK30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9s
bEJ5KGludCB4LCBpbnQgeSkKIHsKICAgICBhdXRvIGNnU2Nyb2xsRXZlbnQgPSBhZG9wdENGKENH
RXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50MigwLCBrQ0dTY3JvbGxFdmVudFVuaXRMaW5lLCAy
LCB5LCB4LCAwKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRl
clByb3h5V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9F
dmVudFNlbmRlclByb3h5V2luLmNwcAkocmV2aXNpb24gMjgxMTExKQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxNCw2ICszMTQsMTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5n
UgogICAgICAgICBTZXRLZXlib2FyZFN0YXRlKGtleVN0YXRlKTsKIH0KIAordm9pZCBFdmVudFNl
bmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmll
cnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6YWRkVG91Y2hQb2ludChpbnQsIGludCkKIHsKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlX
UEUuY3BwCShyZXZpc2lvbiAyODExMTEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9F
dmVudFNlbmRlclByb3h5V1BFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMyNywxNCBA
QCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgZnJlZShlbnRy
aWVzKTsKIH0KIAordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVm
IGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQor
eworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwg
V0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQor
CiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQogewog
ICAgIHN0cnVjdCB3cGVfaW5wdXRfdG91Y2hfZXZlbnRfcmF3IHJhd0V2ZW50IHsgd3BlX2lucHV0
X3RvdWNoX2V2ZW50X3R5cGVfZG93biwgc2VjVG9Nc1RpbWVzdGFtcChtX3RpbWUpLCBzdGF0aWNf
Y2FzdDxpbnQ+KG1fdG91Y2hFdmVudHMuc2l6ZSgpKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oeCks
IHN0YXRpY19jYXN0PGludDMyX3Q+KHkpIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODExODApCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAor
MjAyMS0wOC0xNyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgbWFj
T1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0b3Agd2hlbiBmb2N1cyBj
aGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmct
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy91bmZvY3VzaW5n
LXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHJl
c291cmNlcy91aS1oZWxwZXIuanM6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIucmF3S2V5RG93
bik6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIucmF3S2V5VXApOgorCiAyMDIxLTA4LTE3ICBB
cmNhZHkgR29sZG1pbnRzLU9ybG92ICA8YWdvbGRtaW50c0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHTElCXSB0ZXN0IGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViYXVkaW8tcmVuZGVyLXJlbW90ZS1h
dWRpby1hbGxvd2VkLWNyb3Nzb3JpZ2luLXJlZGlyZWN0Lmh0bWwgaXMgYSBmbGFreSB0aW1lb3V0
IHNpbmNlIHIyNzgwMDQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNp
bmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXli
b2FyZC1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmct
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitCZWZvcmUgcHJlc3NpbmcgdGhl
IHNwYWNlYmFyLCB3aW5kb3cuc2Nyb2xsWSA9IDAKK0FmdGVyIHByZXNzaW5nIHRoZSBzcGFjZWJh
ciwgd2luZG93LnNjcm9sbFkgPSAyOTEKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1r
ZXlib2FyZC1zY3JvbGxpbmcuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIEV2ZW50SGFuZGxlckRy
aXZlblNtb290aEtleWJvYXJkU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxo
ZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2Fs
ZT0xLjUsIHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHByaW50U2Nyb2xsKG9iaikKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoInNjcm9sbCBldmVudCBvbiBkb2MxIik7CisKKyAgICAgICAgICAgIGxldCBkb2MwID0gZG9j
dW1lbnQ7CisgICAgICAgICAgICBsZXQgaWZyYW1lMSA9IGRvYzAuZ2V0RWxlbWVudEJ5SWQoJ2Zy
YW1lLTEnKTsKKyAgICAgICAgICAgIGxldCBkb2MxID0gaWZyYW1lMS5jb250ZW50RG9jdW1lbnQ7
CisKKyAgICAgICAgICAgIHZhciBkZWx0YSA9IGRvYzEuZGVmYXVsdFZpZXcuc2Nyb2xsWSAtIG9i
ai5vZmZzZXQ7CisgICAgICAgICAgICBkZWJ1Zygid2luZG93LnNjcm9sbFkgPSAiICsgZG9jMS5k
ZWZhdWx0Vmlldy5zY3JvbGxZKTsKKyAgICAgICAgICAgIGRlYnVnKCJvYmoub2Zmc2V0ID0gIiAr
IG9iai5vZmZzZXQpOworICAgICAgICAgICAgZGVidWcoImRlbHRhID0gIiArIGRlbHRhKTsKKwor
ICAgICAgICAgICAgb2JqLm9mZnNldCA9IGRvYzEuZGVmYXVsdFZpZXcuc2Nyb2xsWTsKKyAgICAg
ICAgfQorCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF0ZXN0UnVubmVyLnJ1blVJU2NyaXB0
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbGV0IGRvYzAgPSBkb2N1
bWVudDsKKyAgICAgICAgICAgIGxldCBpZnJhbWUxID0gZG9jMC5nZXRFbGVtZW50QnlJZCgnZnJh
bWUtMScpOworICAgICAgICAgICAgbGV0IGRvYzEgPSBpZnJhbWUxLmNvbnRlbnREb2N1bWVudDsK
KyAgICAgICAgICAgIGxldCBpZnJhbWUyID0gZG9jMC5nZXRFbGVtZW50QnlJZCgnZnJhbWUtMicp
OworCisgICAgICAgICAgICBsZXQgb2JqID0geworICAgICAgICAgICAgICAgIG9mZnNldDogMAor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGRvYzEuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xs
IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHByaW50U2Nyb2xsKG9iaik7CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgaWZyYW1lMS5mb2N1cygpOworICAgICAgICAgICAg
ZGVidWcoImp1c3QgZm9jdXNlZCBmcmFtZSAxLCBhYm91dCB0byBwcmVzcyBkb3duIGFycm93Iik7
CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5yYXdLZXlEb3duKCJkb3duQXJyb3ciKTsKKyAg
ICAgICAgICAgIGlmcmFtZTIuZm9jdXMoKTsKKyAgICAgICAgICAgIGRlYnVnKCJqdXN0IHVuZm9j
dXNlZCBmcmFtZTEiKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAg
ICAjcGxhY2Vob2xkZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
NTAwMHB4OworICAgIH0KKyAgICBpZnJhbWUgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBz
dHlsZT0ibWFyZ2luOiAwOyIgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxpZnJhbWUgaWQ9ImZy
YW1lLTEiIHNyY2RvYz0iPGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDIwMDBweDsg
YmFja2dyb3VuZC1jb2xvcjogYmx1ZTsnPjwvZGl2PiI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBp
ZD0iZnJhbWUtMiIgc3JjZG9jPSI8ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMjAw
MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48L2Rpdj4iPjwvaWZyYW1lPgorICAgIDxkaXYg
aWQ9InBsYWNlaG9sZGVyIj4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+CivigIsKKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBM
YXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMJKHJldmlzaW9uIDI4MTExMSkKKysrIExheW91dFRl
c3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTM0NCw2ICszNDQs
MzAgQEAgd2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogICAgICAgICB9CiAgICAg
fQogCisgICAgc3RhdGljIHJhd0tleURvd24oa2V5LCBtb2RpZmllcnM9W10pCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkgeworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIucmF3S2V5RG93bihrZXksIG1vZGlmaWVycyk7CisgICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVu
VUlTY3JpcHQoYHVpQ29udHJvbGxlci5yYXdLZXlEb3duKCIke2tleX0iLCAke0pTT04uc3RyaW5n
aWZ5KG1vZGlmaWVycyl9KTtgLCByZXNvbHZlKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
c3RhdGljIHJhd0tleVVwKGtleSwgbW9kaWZpZXJzPVtdKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkpIHsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLnJhd0tleVVwKGtleSwgbW9kaWZpZXJzKTsKKyAgICAgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZSgocmVzb2x2ZSkgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgdWlD
b250cm9sbGVyLnJhd0tleVVwKCIke2tleX0iLCAke0pTT04uc3RyaW5naWZ5KG1vZGlmaWVycyl9
KTtgLCByZXNvbHZlKTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgc3RhdGljIGtleURvd24o
a2V5LCBtb2RpZmllcnM9W10pCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkg
fHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkgewo=
</data>
<flag name="commit-queue"
          id="458704"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435806</attachid>
            <date>2021-08-18 15:33:10 -0700</date>
            <delta_ts>2021-09-24 17:26:25 -0700</delta_ts>
            <desc>New LayoutTest still fails, other tests hopefully don&apos;t crash</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>66715</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MTE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA4LTE3ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkgb24g
dGhlIG9sZCBGcmFtZVZpZXcgYWZ0ZXIgY2hhbmdpbmcgRnJhbWUgZm9jdXMuCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorCisgICAgICAgIENhbGwgdXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKSB3aGVuIHRoZSB3aW5kb3cgdmlzaWJpbGl0eSAvIGFjdGl2ZSBzdGF0
ZSBjaGFuZ2VzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVNj
cm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAg
ICAgICBQbHVtYmluZyB0byBnZXQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSB0
byB0aGUgU2Nyb2xsQ29udHJvbGxlciwgd2hlcmUgd2UgY2FuIHRlbGwgCisgICAgICAgIHRoZSBr
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRvIGhhbmRsZSBrZXlVcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0wOC0xNyAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBEZS1kdXBsaWNhdGUgdGhlIENv
Y29hLXNwZWNpZmljIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBjb25zdHJ1Y3RvcgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgxMTExKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTksOSArMzU5LDEyIEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRnJh
bWUoRnIKICAgICBtX2ZvY3VzZWRGcmFtZSA9IG5ld0ZyYW1lOwogCiAgICAgLy8gTm93IHRoYXQg
dGhlIGZyYW1lIGlzIHVwZGF0ZWQsIGZpcmUgZXZlbnRzIGFuZCB1cGRhdGUgdGhlIHNlbGVjdGlv
biBmb2N1c2VkIHN0YXRlcyBvZiBib3RoIGZyYW1lcy4KLSAgICBpZiAob2xkRnJhbWUgJiYgb2xk
RnJhbWUtPnZpZXcoKSkgewotICAgICAgICBvbGRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0Rm9jdXNl
ZChmYWxzZSk7Ci0gICAgICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgaWYgKG9sZEZyYW1lKSB7Cisg
ICAgICAgIGlmIChGcmFtZVZpZXcqIG9sZEZyYW1lVmlldyA9IG9sZEZyYW1lLT52aWV3KCkpIHsK
KyAgICAgICAgICAgIG9sZEZyYW1lVmlldy0+dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3Nh
cnkoKTsKKyAgICAgICAgICAgIG9sZEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRGb2N1c2VkKGZhbHNl
KTsKKyAgICAgICAgICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBp
ZiAobmV3RnJhbWUgJiYgbmV3RnJhbWUtPnZpZXcoKSAmJiBpc0ZvY3VzZWQoKSkgewpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyODExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUyLDEzICsyMzUyLDMzIEBAIHZvaWQgUGFn
ZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWMKICAgICBmb3IgKGF1dG8mIG9ic2VydmVy
IDogbV9hY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci5hY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKG9sZEFjdGl2aXR5U3RhdGUsIG1fYWN0aXZpdHlTdGF0ZSk7CiAK
LSAgICBpZiAod2FzVmlzaWJsZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkKKyAg
ICBpZiAod2FzVmlzaWJsZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkgewogICAg
ICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZO
ZWNlc3NhcnkoKTsKKyAgICAgICAgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsK
KyAgICB9CiAKICAgICBpZiAobV9wZXJmb3JtYW5jZU1vbml0b3IpCiAgICAgICAgIG1fcGVyZm9y
bWFuY2VNb25pdG9yLT5hY3Rpdml0eVN0YXRlQ2hhbmdlZChvbGRBY3Rpdml0eVN0YXRlLCBhY3Rp
dml0eVN0YXRlKTsKIH0KIAordm9pZCBQYWdlOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vz
c2FyeSgpCit7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOworICAgICAgICBpZiAoIWZyYW1lVmlldykKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZyYW1lVmlldy0+dXBkYXRlU2Nyb2xsQW5p
bWF0aW9uSWZOZWNlc3NhcnkoKTsKKworICAgICAgICBjb25zdCBIYXNoU2V0PFNjcm9sbGFibGVB
cmVhKj4qIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFyZWFzKCk7Cisg
ICAgICAgIGlmICghc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgZm9yIChhdXRvJiBzY3JvbGxhYmxlQXJlYSA6ICpzY3JvbGxhYmxlQXJlYXMpCisgICAg
ICAgICAgICBzY3JvbGxhYmxlQXJlYS0+dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3Nhcnko
KTsKKyAgICB9Cit9CisKIGJvb2wgUGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSkgJiYgbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODExMTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODg1LDYgKzg4NSw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRJc1Zpc2libGVJbnRlcm5hbChib29sKTsKICAgICB2b2lkIHNl
dElzVmlzdWFsbHlJZGxlSW50ZXJuYWwoYm9vbCk7CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEFu
aW1hdGlvbklmTmVjZXNzYXJ5KCk7CisKICAgICBlbnVtIFNob3VsZEhpZ2hsaWdodE1hdGNoZXMg
eyBEb05vdEhpZ2hsaWdodE1hdGNoZXMsIEhpZ2hsaWdodE1hdGNoZXMgfTsKICAgICBlbnVtIFNo
b3VsZE1hcmtNYXRjaGVzIHsgRG9Ob3RNYXJrTWF0Y2hlcywgTWFya01hdGNoZXMgfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAkocmV2aXNpb24g
MjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDExIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6Omhh
bmRsZVdoZWVsRXZlbnQoY28KICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAordm9pZCBTY3JvbGxB
bmltYXRvcjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKQoreworICAgIG1fc2Ny
b2xsQ29udHJvbGxlci51cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSgpOworfQorCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVRvdWNo
RXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAkocmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiAr
ODMsOCBAQCBwdWJsaWM6CiAKICAgICBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yICprZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9rZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yLmdldCgpOyB9CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEFuaW1hdGlv
bklmTmVjZXNzYXJ5KCk7CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsyMjgsMTIgQEAgdm9pZCBTY3JvbGxD
b250cm9sbGVyOjp1cGRhdGVLZXlib2FyZFNjcgogICAgIG1fY2xpZW50LmtleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IoKS0+dXBkYXRlS2V5Ym9hcmRTY3JvbGxQb3NpdGlvbihjdXJyZW50VGltZSk7
CiB9CiAKK3ZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNl
c3NhcnkoKQoreworICAgIGlmIChtX2lzQW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmcpCisgICAg
ICAgIG1fY2xpZW50LmtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoKS0+aGFuZGxlS2V5VXBFdmVu
dCgpOworfQorCiAvLyBDdXJyZW50bHksIG9ubHkgTWFjIHN1cHBvcnRzIG1vbWVudHVtIHNyb2xs
aW5nLWJhc2VkIHNjcm9sbHNuYXBwaW5nIGFuZCBydWJiZXIgYmFuZGluZwogLy8gc28gYWxsIG9m
IHRoZXNlIG1ldGhvZHMgYXJlIGEgbm9vcCBvbiBub24tTWFjIHBsYXRmb3Jtcy4KICNpZiAhUExB
VEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xs
ZXIuaAkocmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBiZWdpbktleWJvYXJkU2Nyb2xsaW5nKCk7CiAgICAgdm9pZCBzdG9wS2V5Ym9h
cmRTY3JvbGxpbmcoKTsKKworICAgIHZvaWQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3Nh
cnkoKTsKICAgICAKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHBlcmlvZGljYWxseSBieSB0aGUg
Y2xpZW50LiBTdGFydGVkIGJ5IHN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2soKSwgc3RvcHBlZCBieSBz
dG9wQW5pbWF0aW9uQ2FsbGJhY2soKS4KICAgICB2b2lkIGFuaW1hdGlvbkNhbGxiYWNrKE1vbm90
b25pY1RpbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcAkocmV2aXNpb24gMjgxMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDExIEBAIGJvb2wgU2Ny
b2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3IKICAgICByZXR1cm4gaGFuZGxlZEV2ZW50
OwogfQogCit2b2lkIFNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vz
c2FyeSgpCit7CisgICAgc2Nyb2xsQW5pbWF0b3IoKS51cGRhdGVTY3JvbGxBbmltYXRpb25JZk5l
Y2Vzc2FyeSgpOworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJvb2wgU2Nyb2xsYWJs
ZUFyZWE6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiB0b3VjaEV2
ZW50KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCShy
ZXZpc2lvbiAyODExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogICAgIHZvaWQg
cmVzbmFwQWZ0ZXJMYXlvdXQoKTsKICAgICB2b2lkIGRvUG9zdFRodW1iTW92ZVNuYXBwaW5nKFNj
cm9sbGJhck9yaWVudGF0aW9uKTsKIAorICAgIHZvaWQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZO
ZWNlc3NhcnkoKTsKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdmlydHVhbCBib29s
IGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7CiAjZW5kaWYKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI4MTIwOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDQ4IEBACisyMDIxLTA4LTE4ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAg
ICAgICBtYWNPUyBrZXktZHJpdmVuIHNtb290aCBzY3JvbGxpbmcgZG9lcyBub3Qgc3RvcCB3aGVu
IGZvY3VzIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyODMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06Cisg
ICAgICAgICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgaW5pdGlhbGl6ZV0pOgorICAgICAgICAo
K1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6
XSk6CisgICAgICAgICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNl
bGVjdG9yOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tleURvd246
d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIgcmF3S2V5RG93bldyYXBwZXI6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6
CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmF3S2V5VXA6d2l0aE1vZGlmaWVy
czp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmF3
S2V5VXBXcmFwcGVyOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGw6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6Y3JlYXRlUmF3S2V5RG93bk1lc3NhZ2VCb2R5
KToKKyAgICAgICAgKFdUUjo6Y3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keSk6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleURvd24pOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5t
bToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OmRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6
OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclBy
b3h5Lm1tOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQ
cm94eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2Vu
ZGVyUHJveHlXUEUuY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlE
b3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorCiAyMDIx
LTA4LTE4ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgbGF5b3V0IHRlc3QgZm9yIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGhhbmRs
ZXIgZm9yIGF0dHJpYnV0ZSBBWExpbmVGb3JUZXh0TWFya2VyIG9uIE1hY09TLgpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0J
KHJldmlzaW9uIDI4MTExMSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDggQEAgKyAodm9p
ZClpbml0aWFsaXplCiAgICAgICAgIEAiZm9jdXMiLAogICAgICAgICBAImlucHV0IiwKICAgICAg
ICAgQCJrZXlkb3duIiwKKyAgICAgICAgQCJyYXdrZXlkb3duIiwKKyAgICAgICAgQCJyYXdrZXl1
cCIsCiAgICAgICAgIEAia2V5cHJlc3MiLAogICAgICAgICBAImtleXVwIiwKICAgICAgICAgQCJs
b2FkIiwKQEAgLTI0NSw2ICsyNDcsOCBAQCArIChCT09MKWlzU2VsZWN0b3JFeGNsdWRlZEZyb21X
ZWJTY3JpcHQ6CiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGVuYWJsZURP
TVVJRXZlbnRMb2dnaW5nOikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
ZmlyZUtleWJvYXJkRXZlbnRzVG9FbGVtZW50OikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9
PSBAc2VsZWN0b3Ioa2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopCisgICAgICAg
ICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tleURvd246d2l0aE1vZGlmaWVyczp3
aXRoTG9jYXRpb246KQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihyYXdL
ZXlVcDp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopCiAgICAgICAgICAgICB8fCBhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKGxlYXBGb3J3YXJkOikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9
PSBAc2VsZWN0b3IobW91c2VEb3duOndpdGhNb2RpZmllcnM6KQogICAgICAgICAgICAgfHwgYVNl
bGVjdG9yID09IEBzZWxlY3Rvcihtb3VzZU1vdmVUb1g6WTopCkBAIC0zMDYsNiArMzEwLDEwIEBA
ICsgKE5TU3RyaW5nICopd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOigKICAgICAgICAgcmV0dXJu
IEAiZmlyZUtleWJvYXJkRXZlbnRzVG9FbGVtZW50IjsKICAgICBpZiAoYVNlbGVjdG9yID09IEBz
ZWxlY3RvcihrZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikpCiAgICAgICAgIHJl
dHVybiBAImtleURvd24iOworICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tleURv
d246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkKKyAgICAgICAgcmV0dXJuIEAicmF3S2V5
RG93biI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IocmF3S2V5VXA6d2l0aE1vZGlm
aWVyczp3aXRoTG9jYXRpb246KSkKKyAgICAgICAgcmV0dXJuIEAicmF3S2V5VXAiOwogICAgIGlm
IChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bjp3aXRo
TW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQogICAgICAgICByZXR1cm4gQCJzY2hlZHVsZUFzeW5j
aHJvbm91c0tleURvd24iOwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGxlYXBGb3J3
YXJkOikpCkBAIC0xMjA5LDYgKzEyMTcsNDM4IEBAIC0gKHZvaWQpa2V5RG93bldyYXBwZXI6KE5T
U3RyaW5nICopY2hhcmEKICAgICBbc2VsZiBrZXlEb3duOmNoYXJhY3RlciB3aXRoTW9kaWZpZXJz
Om1vZGlmaWVycyB3aXRoTG9jYXRpb246bG9jYXRpb25dOwogfQogCistICh2b2lkKXJhd0tleURv
d246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAq
KW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sKKyAgICBO
U1N0cmluZyAqZXZlbnRDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgdW5zaWduZWQgc2hvcnQg
a2V5Q29kZSA9IDA7CisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFy
cm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rpb25L
ZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdCOworICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFycm93Il0pIHsKKyAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBrZXlDb2RlID0gMHg3QzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAidXBBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U1VwQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
N0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJv
dyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5
OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3RDsKKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZVVwIl0pIHsKKyAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TUGFnZVVwRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDc0OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJwYWdlRG93biJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3du
RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc5OworICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSG9tZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHg3MzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiZW5kIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5kRnVu
Y3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc3OworICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNJbnNlcnRGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4NzI7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImRlbGV0ZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0Rl
bGV0ZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NTsK
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDM1OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJwcmludFNjcmVlbiJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50
U2NyZWVuRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDA7
IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxs
TGV0dGVyQSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24g
UnVzc2lhbiBsYXlvdXQuCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImxlZnRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSAweEZGRTE7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAw
eDM4OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4M0E7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSAweEZGRTQ7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNFOworICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4M0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAInJpZ2h0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKKyAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0Q7CisgICAgfQorCisgICAgLy8gQ29t
cGFyZSB0aGUgaW5wdXQgc3RyaW5nIHdpdGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVk
IGJ5IHRoZSBET00gc3BlYyAoaS5lLiAiRjEiLC4uLiwiRjI0IikuCisgICAgLy8gSWYgdGhlIGlu
cHV0IHN0cmluZyBpcyBhIGZ1bmN0aW9uLWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgorICAg
IGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gMjQ7IGkrKykgeworICAgICAgICBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBp
XV0pIHsKKyAgICAgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAo
aSAtIDEpOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaSkgeworICAg
ICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDI6IGtleUNvZGUgPSAweDc4OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9
IDB4NjM7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OiBrZXlD
b2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0OyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4NjU7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAx
MToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMjoga2V5Q29kZSA9
IDB4NkY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29kZSA9IDB4NkI7IGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAxNToga2V5Q29kZSA9IDB4NzE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNjog
a2V5Q29kZSA9IDB4NkE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4
NDA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAyMDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMu
CisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKKyAgICAgICAga2V5
Q29kZSA9IDB4MzA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIg
Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMxOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiXHIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MjQ7CisgICAgZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQorICAgICAgICBrZXlDb2RlID0g
MHg0QzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQor
ICAgICAgICBrZXlDb2RlID0gMHgzMzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImEiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDA7CisgICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBCOwor
ICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQorICAgICAgICBr
ZXlDb2RlID0gMHgwMjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImUiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEU7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJceDFiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDFCOworCisgICAg
S2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7CisgICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5p
bH0sCisgICAgICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ1
LCAnKycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5
LCBAImNsZWFyIn0sCisgICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCisgICAgICAgIHsw
LCAgICAweDRDLCAzLCBAImVudGVyIiB9LAorICAgICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9
LAorICAgICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAorICAgICAgICB7MHgxRCwgMHg1Miwg
JzAnLCBuaWx9LAorICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAorICAgICAgICB7MHgx
MywgMHg1NCwgJzInLCBuaWx9LAorICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAorICAg
ICAgICB7MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAorICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBu
aWx9LAorICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAorICAgICAgICB7MHgxQSwgMHg1
OSwgJzcnLCBuaWx9LAorICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAorICAgICAgICB7
MHgxOSwgMHg1QywgJzknLCBuaWx9LAorICAgIH07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcqIGN1
cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRh
YmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgeworICAgICAgICAgICAgaWYgKGxvY2F0
aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQorICAgICAgICAgICAgICAgIGtleUNvZGUg
PSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlDb2RlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOworICAgICAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzID0gZXZlbnRDaGFyYWN0ZXI7CisKKyAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7CisKKyAg
ICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdElu
ZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNF
dmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworI2Vsc2UKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBX
ZWJFdmVudEZsYWdNYXNrTGVmdFNoaWZ0S2V5OworI2VuZGlmCisgICAgICAgIGNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICB9CisK
KyAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpOworCisg
ICAgaWYgKGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQorICAgICAgICBtb2Rp
ZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworCisgICAgW1tbbWFp
bkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOworCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVu
dFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2lu
dCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgdGlt
ZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdpbmRvd051bWJlcjpbW1tt
YWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNvbnRleHQ6
W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0ZXJzOmV2
ZW50Q2hhcmFjdGVyCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNv
ZGU6a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50
IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOltz
ZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6
KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3
aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5k
ZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0p
OworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1
cnJlbnRFdmVudDpldmVudC5nZXQoKV07CisjZW5kaWYKKyAgICBbW1tbbWFpbkZyYW1lIHdlYlZp
ZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnQuZ2V0KCldOworI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07Cisj
ZW5kaWYKK30KKworLSAodm9pZClyYXdLZXlEb3duV3JhcHBlcjooTlNTdHJpbmcgKiljaGFyYWN0
ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlv
bjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAgIFtzZWxmIHJhd0tleURvd246Y2hhcmFj
dGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07Cit9CisK
Ky0gKHZvaWQpcmF3S2V5VXA6KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdl
YlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9j
YXRpb24KK3sKKyAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAg
dW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7CisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAibGVmdEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TTGVm
dEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdC
OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFycm93
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5
OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3QzsKKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4N0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImRvd25BcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0Rvd25B
cnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3RDsK
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZVVwIl0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZVVwRnVuY3Rpb25LZXk7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc0OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDc5OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJo
b21lIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSG9tZUZ1bmN0aW9uS2V5Owor
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3MzsKKyAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUg
PSAweDc3OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJpbnNl
cnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNJbnNlcnRGdW5jdGlvbktleTsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzI7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKSB7CisgICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBr
ZXlDb2RlID0gMHg3NTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiZXNjYXBlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM1OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNvZGUgZm9y
IFByaW50U2NyZWVuLgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAw
eDA0MzA7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBr
ZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IDB4RkZFMzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0I7Cisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7CisgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAg
ICAgIGtleUNvZGUgPSAweDM4OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJsZWZ0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNzsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0E7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUg
PSAweDNFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdo
dFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKKyAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IDB4RkZFODsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0Q7CisgICAg
fQorCisgICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3RyaW5nIHdpdGggdGhlIGZ1bmN0aW9uLWtl
eSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAoaS5lLiAiRjEiLC4uLiwiRjI0IikuCisg
ICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0aW9uLWtleSBuYW1lLCBzZXQgaXRz
IGtleSBjb2RlLgorICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gMjQ7IGkrKykgeworICAg
ICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJGJXUiLCBpXV0pIHsKKyAgICAgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0Yx
RnVuY3Rpb25LZXkgKyAoaSAtIDEpOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgICAgIHN3
aXRjaCAoaSkgeworICAgICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4OyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgMzoga2V5Q29kZSA9IDB4NjM7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2Rl
ID0gMHg3NjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOworICAgICAgICAg
ICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6IGtl
eUNvZGUgPSAweDY0OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4NjU7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29k
ZSA9IDB4Njk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29kZSA9IDB4NkI7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAxNToga2V5Q29kZSA9IDB4NzE7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAx
Nzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxODoga2V5Q29kZSA9
IDB4NEY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSAyMDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0
IGZvciBtb3N0IGtleXMuCisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQi
XSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCIgIl0pCisgICAgICAgIGtleUNvZGUgPSAweDMxOworICAgIGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4
MjQ7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQorICAg
ICAgICBrZXlDb2RlID0gMHg0QzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAIlx4OCJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMzsKKyAgICBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImEiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDA7Cisg
ICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCisgICAgICAgIGtl
eUNvZGUgPSAweDBCOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ZCJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImUiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEU7CisgICAgZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDFiIl0pCisgICAgICAgIGtleUNvZGUg
PSAweDFCOworCisgICAgS2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7CisgICAgICAgIHsweDJG
LCAweDQxLCAnLicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0sCisgICAg
ICAgIHswLCAgICAweDQ1LCAnKycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFy
TGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIn0sCisgICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5p
bH0sCisgICAgICAgIHswLCAgICAweDRDLCAzLCBAImVudGVyIiB9LAorICAgICAgICB7MHgxQiwg
MHg0RSwgJy0nLCBuaWx9LAorICAgICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAorICAgICAg
ICB7MHgxRCwgMHg1MiwgJzAnLCBuaWx9LAorICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9
LAorICAgICAgICB7MHgxMywgMHg1NCwgJzInLCBuaWx9LAorICAgICAgICB7MHgxNCwgMHg1NSwg
JzMnLCBuaWx9LAorICAgICAgICB7MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAorICAgICAgICB7MHgx
NywgMHg1NywgJzUnLCBuaWx9LAorICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAorICAg
ICAgICB7MHgxQSwgMHg1OSwgJzcnLCBuaWx9LAorICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBu
aWx9LAorICAgICAgICB7MHgxOSwgMHg1QywgJzknLCBuaWx9LAorICAgIH07CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsKKyAgICAg
ICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07CisgICAgICAgIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgeworICAgICAg
ICAgICAgaWYgKGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQorICAgICAgICAg
ICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlDb2RlOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOworICAg
ICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBOU1N0cmluZyAqY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzID0gZXZlbnRDaGFyYWN0ZXI7CisKKyAgICBpbnQgbW9kaWZpZXJG
bGFncyA9IDA7CisKKyAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3Rl
ciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5k
ZXg6MF0gPD0gJ1onKSB7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIG1vZGlm
aWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworI2Vsc2UKKyAgICAgICAgbW9k
aWZpZXJGbGFncyB8PSBXZWJFdmVudEZsYWdNYXNrTGVmdFNoaWZ0S2V5OworI2VuZGlmCisgICAg
ICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3Ry
aW5nXTsKKyAgICB9CisKKyAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyht
b2RpZmllcnMpOworCisgICAgaWYgKGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFE
KQorICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFk
OworCisgICAgW1tbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwor
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYXV0byBldmVudCA9IHJldGFpblB0cihb
TlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKKyAgICAgICAgbG9jYXRp
b246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdz
CisgICAgICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQorICAgICAgICB3aW5k
b3dOdW1iZXI6W1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gd2luZG93TnVtYmVyXQorICAg
ICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAg
Y2hhcmFjdGVyczpldmVudENoYXJhY3RlcgorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgIGlzQVJlcGVhdDpOTwor
ICAgICAgICBrZXlDb2RlOmtleUNvZGVdKTsKKyNlbHNlCisgICAgYXV0byBldmVudCA9IGFkb3B0
TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0
aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczpldmVudENoYXJhY3Rl
ciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
IG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdp
dGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hh
cmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBd
ID09ICdcdCcpXSk7CisjZW5kaWYKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtO
U0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50LmdldCgpXTsKKyNlbmRpZgorICAgIFtbW1ttYWlu
RnJhbWUgd2ViVmlld10gd2luZG93XSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnQuZ2V0KCld
OworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50
Om5pbF07CisjZW5kaWYKK30KKworLSAodm9pZClyYXdLZXlVcFdyYXBwZXI6KE5TU3RyaW5nICop
Y2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRo
TG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sKKyAgICBbc2VsZiByYXdLZXlVcDpj
aGFyYWN0ZXIgd2l0aE1vZGlmaWVyczptb2RpZmllcnMgd2l0aExvY2F0aW9uOmxvY2F0aW9uXTsK
K30KKwogLSAodm9pZClzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd246KE5TU3RyaW5nICopY2hh
cmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9j
YXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KIHsKICAgICBOU0ludm9jYXRpb24gKmludm9j
YXRpb24gPSBbTlNJbnZvY2F0aW9uIGludm9jYXRpb25XaXRoTWV0aG9kU2lnbmF0dXJlOltFdmVu
dFNlbmRpbmdDb250cm9sbGVyIGluc3RhbmNlTWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6QHNl
bGVjdG9yKGtleURvd25XcmFwcGVyOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOildXTsKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCShyZXZpc2lvbiAy
ODExMTEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsZWFwRm9yd2Fy
ZChpbnQgbWlsbGlzZWNvbmRzKTsKIAogICAgIHZvaWQga2V5RG93bihXS1N0cmluZ1JlZiBrZXks
IFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsKKyAgICB2b2lkIHJhd0tleURv
d24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7
CisgICAgdm9pZCByYXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVu
c2lnbmVkIGxvY2F0aW9uKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHVuc2lnbmVkIG1v
dXNlQnV0dG9uc0N1cnJlbnRseURvd24oKSBjb25zdCB7IHJldHVybiBtX21vdXNlQnV0dG9uc0N1
cnJlbnRseURvd247IH0KQEAgLTEwMSw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBk
YXRlQ2xpY2tDb3VudEZvckJ1dHRvbihpbnQgYnV0dG9uKTsKIAogICAgIHZvaWQgc2VuZE1vdXNl
RG93blRvU3RhcnRQcmVzc3VyZUV2ZW50cygpOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
ZW51bSBjbGFzcyBQcmVzc3VyZUNoYW5nZURpcmVjdGlvbiB7IEluY3JlYXNpbmcsIERlY3JlYXNp
bmcgfTsKICAgICBSZXRhaW5QdHI8TlNFdmVudD4gYmVnaW5QcmVzc3VyZUV2ZW50KGludCBzdGFn
ZSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMjgxMTExKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NjQsNiArMTU2NCwxNiBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpkaWRSZWNlaXZlS2V5RG93bk1lCiAgICAgbV9ldmVudFNlbmRlclByb3h5LT5rZXlEb3du
KHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwg
Ik1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7CiB9CiAK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cykK
K3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tleURvd24oc3RyaW5nVmFsdWUoZGljdGlv
bmFyeSwgIktleSIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiksIHVpbnQ2
NFZhbHVlKGRpY3Rpb25hcnksICJMb2NhdGlvbiIpKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxl
cjo6ZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25h
cnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2ZW50U2VuZGVy
UHJveHktPnJhd0tleVVwKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0VmFs
dWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9j
YXRpb24iKSk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVMaXZlRG9jdW1l
bnRzTGlzdChXS0FycmF5UmVmIGxpdmVEb2N1bWVudExpc3QpCiB7CiAgICAgYXV0byBudW1Eb2N1
bWVudHMgPSBXS0FycmF5R2V0U2l6ZShsaXZlRG9jdW1lbnRMaXN0KTsKQEAgLTE2MjEsNiArMTYz
MSwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZyCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tleURvd24iKSkgeworICAgICAgICAgICAg
ZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKGRpY3Rpb25hcnks
IGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5VXAiKSkg
eworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShkaWN0aW9uYXJ5LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwog
ICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwg
Ik1vdXNlU2Nyb2xsQnkiKSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3Vz
ZVNjcm9sbEJ5KGRvdWJsZVZhbHVlKGRpY3Rpb25hcnksICJYIiksIGRvdWJsZVZhbHVlKGRpY3Rp
b25hcnksICJZIikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTY2Miw2ICsxNjgyLDE2IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm8KICAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCisgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5RG93
biIpKSB7CisgICAgICAgICAgICBkaWRSZWNlaXZlUmF3S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoZGljdGlvbmFyeSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tleVVwIikpIHsKKyAgICAgICAg
ICAgIGRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoZGljdGlvbmFy
eSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7
CisgICAgICAgIH0KKwogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhz
dWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93biIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVy
UHJveHktPm1vdXNlRG93bih1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiQnV0dG9uIiksIHVpbnQ2
NFZhbHVlKGRpY3Rpb25hcnksICJNb2RpZmllcnMiKSwgc3RyaW5nVmFsdWUoZGljdGlvbmFyeSwg
IlBvaW50ZXJUeXBlIikpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51
bGxwdHIpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkocmV2
aXNpb24gMjgxMTExKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MzcsNiArNDM3LDggQEAgcHJpdmF0ZToKICAgICBXS1JldGFp
blB0cjxXS1R5cGVSZWY+IGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSgp
OwogCiAgICAgdm9pZCBkaWRSZWNlaXZlS2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUo
V0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7
CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUo
V0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7
CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdL
RGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnksIGJvb2wgc3luY2hyb25vdXMpOwog
CiAgICAgLy8gV0tDb250ZXh0Q2xpZW50CiAgICAgc3RhdGljIHZvaWQgbmV0d29ya1Byb2Nlc3NE
aWRDcmFzaChXS0NvbnRleHRSZWYsIGNvbnN0IHZvaWQqKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRp
bmdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgxMTExKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAxLDExICszMDEsNDEgQEAgc3RhdGljIFdLUmV0YWluUHRyPFdLTXV0YWJsZURp
Y3Rpb25hcnlSZQogICAgIHJldHVybiBib2R5OwogfQogCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tN
dXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRlUmF3S2V5RG93bk1lc3NhZ2VCb2R5KEpTU3RyaW5n
UmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGludCBsb2NhdGlvbikKK3sKKyAg
ICBhdXRvIGJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisgICAg
c2V0VmFsdWUoYm9keSwgIlN1Yk1lc3NhZ2UiLCAiUmF3S2V5RG93biIpOworICAgIHNldFZhbHVl
KGJvZHksICJLZXkiLCBrZXkpOworICAgIHNldFZhbHVlKGJvZHksICJNb2RpZmllcnMiLCBhZG9w
dFdLKFdLVUludDY0Q3JlYXRlKG1vZGlmaWVycykpKTsKKyAgICBzZXRWYWx1ZShib2R5LCAiTG9j
YXRpb24iLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKGxvY2F0aW9uKSkpOworICAgIHJldHVybiBi
b2R5OworfQorCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gY3Jl
YXRlUmF3S2V5VXBNZXNzYWdlQm9keShKU1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMg
bW9kaWZpZXJzLCBpbnQgbG9jYXRpb24pCit7CisgICAgYXV0byBib2R5ID0gYWRvcHRXSyhXS011
dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworICAgIHNldFZhbHVlKGJvZHksICJTdWJNZXNzYWdl
IiwgIlJhd0tleVVwIik7CisgICAgc2V0VmFsdWUoYm9keSwgIktleSIsIGtleSk7CisgICAgc2V0
VmFsdWUoYm9keSwgIk1vZGlmaWVycyIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobW9kaWZpZXJz
KSkpOworICAgIHNldFZhbHVlKGJvZHksICJMb2NhdGlvbiIsIGFkb3B0V0soV0tVSW50NjRDcmVh
dGUobG9jYXRpb24pKSk7CisgICAgcmV0dXJuIGJvZHk7Cit9CisKIHZvaWQgRXZlbnRTZW5kaW5n
Q29udHJvbGxlcjo6a2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJB
cnJheSwgaW50IGxvY2F0aW9uKQogewogICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJF
dmVudFNlbmRlciIsIGNyZWF0ZUtleURvd25NZXNzYWdlQm9keShrZXksIHBhcnNlTW9kaWZpZXJB
cnJheShtb2RpZmllckFycmF5KSwgbG9jYXRpb24pKTsKIH0KIAordm9pZCBFdmVudFNlbmRpbmdD
b250cm9sbGVyOjpyYXdLZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmll
ckFycmF5LCBpbnQgbG9jYXRpb24pCit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2Uo
IkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3S2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgcGFyc2VNb2Rp
ZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOworfQorCit2b2lkIEV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXI6OnJhd0tleVVwKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2Rp
ZmllckFycmF5LCBpbnQgbG9jYXRpb24pCit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3Nh
Z2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keShrZXksIHBhcnNlTW9k
aWZpZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRpb24pKTsKK30KKwogdm9pZCBFdmVudFNl
bmRpbmdDb250cm9sbGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oSlNTdHJpbmdSZWYg
a2V5KQogewogICAgIHBvc3RQYWdlTWVzc2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVLZXlEb3du
TWVzc2FnZUJvZHkoa2V5LCAwLCAwKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
aAkocmV2aXNpb24gMjgxMTExKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3
LDggQEAgcHVibGljOgogICAgIHZvaWQgY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFs
dWVSZWYgZnVuY3Rpb25DYWxsYmFjayk7CiAKICAgICB2b2lkIGtleURvd24oSlNTdHJpbmdSZWYg
a2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbik7CisgICAgdm9pZCBy
YXdLZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQg
bG9jYXRpb24pOworICAgIHZvaWQgcmF3S2V5VXAoSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVm
IG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbik7CiAgICAgdm9pZCBzY2hlZHVsZUFzeW5jaHJv
bm91c0tleURvd24oSlNTdHJpbmdSZWYga2V5KTsKIAogICAgIHZvaWQgdGV4dFpvb21JbigpOwpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCShy
ZXZpc2lvbiAyODExMTEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw2ICs0NSw4IEBAIGludGVyZmFjZSBFdmVudFNlbmRpbmdDb250cm9sbGVyIHsKICAgICB1bmRl
ZmluZWQgbGVhcEZvcndhcmQobG9uZyBtaWxsaXNlY29uZHMpOwogCiAgICAgdW5kZWZpbmVkIGtl
eURvd24oRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1vZGlmaWVyQXJyYXksIGxvbmcgbG9jYXRpb24p
OworICAgIHVuZGVmaW5lZCByYXdLZXlEb3duKERPTVN0cmluZyBrZXksIG9iamVjdCBtb2RpZmll
ckFycmF5LCBsb25nIGxvY2F0aW9uKTsKKyAgICB1bmRlZmluZWQgcmF3S2V5VXAoRE9NU3RyaW5n
IGtleSwgb2JqZWN0IG1vZGlmaWVyQXJyYXksIGxvbmcgbG9jYXRpb24pOwogICAgIHVuZGVmaW5l
ZCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oRE9NU3RyaW5nIGtleSk7CiAKICAgICAvLyBa
b29tIGZ1bmN0aW9ucy4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQkocmV2
aXNpb24gMjgxMTExKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9p
b3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksMTQg
QEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogewogfQogCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9k
aWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKK3ZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJz
IG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKIHZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6bW91c2VTY3JvbGxCeShpbnQgeCwgaW50IHkpCiB7CiB9CkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAkocmV2
aXNpb24gMjgxMTExKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQ
cm94eUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw2ICsyNDQsMTQgQEAgdm9pZCBFdmVu
dFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgIHdlYmtpdFdlYlZpZXdCYXNlU3lu
dGhlc2l6ZUtleUV2ZW50KHRvV2ViS2l0R0xpYkFQSShtX3Rlc3RDb250cm9sbGVyLT5tYWluV2Vi
VmlldygpLT5wbGF0Zm9ybVZpZXcoKSksIEtleUV2ZW50VHlwZTo6SW5zZXJ0LCBnZGtLZXlTeW0s
IG1vZGlmaWVycywgU2hvdWxkVHJhbnNsYXRlS2V5Ym9hcmRTdGF0ZTo6Tm8pOwogfQogCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9k
aWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKK3ZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJz
IG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKIHZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVudE1vZGlmaWVycyB3a01v
ZGlmaWVycywgV0tTdHJpbmdSZWYgcG9pbnRlclR5cGUpCiB7CiAgICAgdW5zaWduZWQgZ2RrQnV0
dG9uID0gZXZlbnRTZW5kZXJCdXR0b25Ub0dES0J1dHRvbihidXR0b24pOwpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCShyZXZpc2lvbiAy
ODExMTEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC04NTAsNiArODUwLDQxNiBAQCB2b2lkIEV2ZW50U2VuZGVyUHJv
eHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsK
IH0KIAordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwg
V0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworICAg
IE5TU3RyaW5nKiBjaGFyYWN0ZXIgPSB0b1dURlN0cmluZyhrZXkpOworCisgICAgTlNTdHJpbmcg
KmV2ZW50Q2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAgIHVuc2lnbmVkIHNob3J0IGtleUNvZGUg
PSAwOworICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OworICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3QjsKKyAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4N0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAInVwQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93
RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdFOworICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgewor
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKKyAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VVcCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2Rl
ID0gMHg3NDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFn
ZURvd24iXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9u
S2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3OTsKKyAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaG9tZSJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU0hvbWVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4NzM7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImVuZCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5
OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NzsKKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaW5zZXJ0Il0pIHsKKyAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TSW5zZXJ0RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDcyOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJkZWxldGUiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5j
dGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzU7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInByaW50U2NyZWVuIl0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTsKKyAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUgaXMgbm8ga25vd24gdmly
dHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0ZXJBIl0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNzaWFuIGxheW91dC4KKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUzOworICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBr
ZXlDb2RlID0gMHgzQjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAibGVmdFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMTsKKyAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Mzg7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gMHhGRkU3OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQTsK
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRDb250cm9s
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNDsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4M0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
MHhGRkUyOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQzsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQiXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHgzRDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ZXNjYXBlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7CisgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgIGtleUNvZGUgPSAweDM1OworICAgIH0KKworICAgIC8vIENvbXBhcmUgdGhl
IGlucHV0IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUg
RE9NIHNwZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIpLgorICAgIC8vIElmIHRoZSBpbnB1dCBzdHJp
bmcgaXMgYSBmdW5jdGlvbi1rZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDw9IDI0OyBpKyspIHsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7Cisg
ICAgICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsK
KyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAg
IGNhc2UgMToga2V5Q29kZSA9IDB4N0E7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiBrZXlD
b2RlID0gMHg3ODsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYzOyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDY6
IGtleUNvZGUgPSAweDYxOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNzoga2V5Q29kZSA9IDB4
NjI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAweDY1OyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgMTA6IGtleUNvZGUgPSAweDZEOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTE6IGtleUNv
ZGUgPSAweDY3OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTI6IGtleUNvZGUgPSAweDZGOyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgMTM6IGtleUNvZGUgPSAweDY5OyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
MTU6IGtleUNvZGUgPSAweDcxOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUg
PSAweDZBOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMTk6IGtleUNvZGUgPSAweDUwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjA6
IGtleUNvZGUgPSAweDVBOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlzLgorICAgIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCisgICAgICAgIGtleUNvZGUgPSAw
eDMwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiICJdKQorICAg
ICAgICBrZXlDb2RlID0gMHgzMTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAIlxyIl0pCisgICAgICAgIGtleUNvZGUgPSAweDI0OworICAgIGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKKyAgICAgICAga2V5Q29kZSA9IDB4NEM7Cisg
ICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkKKyAgICAgICAg
a2V5Q29kZSA9IDB4MzM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJhIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiYiJdKQorICAgICAgICBrZXlDb2RlID0gMHgwQjsKKyAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkKKyAgICAgICAga2V5Q29kZSA9
IDB4MDI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCisg
ICAgICAgIGtleUNvZGUgPSAweDBFOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiXHgxYiJdKQorICAgICAgICBrZXlDb2RlID0gMHgxQjsKKyAgICBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjoiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4Mjk7
CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI7Il0pCisgICAgICAg
IGtleUNvZGUgPSAweDI5OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiLCJdKQorICAgICAgICBrZXlDb2RlID0gMHgyQjsKKworICAgIEtleU1hcHBpbmdFbnRyeSB0
YWJsZVtdID0geworICAgICAgICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAorICAgICAgICB7MCwg
ICAgMHg0MywgJyonLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAorICAg
ICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAorICAg
ICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0QywgMywgQCJl
bnRlciIgfSwKKyAgICAgICAgezB4MUIsIDB4NEUsICctJywgbmlsfSwKKyAgICAgICAgezB4MTgs
IDB4NTEsICc9JywgbmlsfSwKKyAgICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKKyAgICAg
ICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwKKyAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmls
fSwKKyAgICAgICAgezB4MTQsIDB4NTUsICczJywgbmlsfSwKKyAgICAgICAgezB4MTUsIDB4NTYs
ICc0JywgbmlsfSwKKyAgICAgICAgezB4MTcsIDB4NTcsICc1JywgbmlsfSwKKyAgICAgICAgezB4
MTYsIDB4NTgsICc2JywgbmlsfSwKKyAgICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKKyAg
ICAgICAgezB4MUMsIDB4NUIsICc4JywgbmlsfSwKKyAgICAgICAgezB4MTksIDB4NUMsICc5Jywg
bmlsfSwKKyAgICB9OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVO
R1RIKHRhYmxlKTsgKytpKSB7CisgICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3Ry
aW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIg
bGVuZ3RoOjFdOworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVu
dENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0u
Y2hhcmFjdGVyTmFtZV0pIHsKKyAgICAgICAgICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8q
RE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFi
bGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorCisgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9
IGV2ZW50Q2hhcmFjdGVyOworCisgICAgaW50IG1vZGlmaWVyRmxhZ3MgPSAwOworCisgICAgaWYg
KFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDow
XSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykgeworICAg
ICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKKyAgICAgICAg
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJpbmdd
OworICAgIH0KKworICAgIG1vZGlmaWVyRmxhZ3MgfD0gYnVpbGRNb2RpZmllckZsYWdzKG1vZGlm
aWVycyk7CisKKyAgICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05f
TlVNUEFEKi8pCisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ051
bWVyaWNQYWQ7CisKKyAgICBOU0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5
cGU6TlNFdmVudFR5cGVLZXlEb3duCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUp
CisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncworICAgICAgICB0aW1lc3RhbXA6
YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKKyAgICAgICAgd2lu
ZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRv
dygpIHdpbmRvd051bWJlcl0KKyAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3Vy
cmVudENvbnRleHRdCisgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAg
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwor
ICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKKworICAgIFtO
U0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKKyAgICBbW21fdGVzdENvbnRyb2xsZXItPm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZl
bnRdOworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07Cit9CisKK3ZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1v
ZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7CisgICAgTlNTdHJpbmcqIGNoYXJhY3Rl
ciA9IHRvV1RGU3RyaW5nKGtleSk7CisKKyAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0ZXIgPSBj
aGFyYWN0ZXI7CisgICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7CisgICAgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDdCOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJyaWdodEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUmlnaHRB
cnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3QzsK
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsKKyAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBr
ZXlDb2RlID0gMHg3RDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAicGFnZVVwIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZVVwRnVuY3Rp
b25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc0OworICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDc5OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJob21lIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSG9t
ZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3MzsKKyAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIGtleUNvZGUgPSAweDc3OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJpbnNlcnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNJbnNl
cnRGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzI7Cisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKSB7Cisg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3JlZW4iXSkgeworICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBr
ZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFsIGtleSBjb2RlIGZvciBQ
cmludFNjcmVlbi4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
Y3lyaWxsaWNTbWFsbExldHRlckEiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgw
NDMwOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzOyAvLyBTaGFyZXMga2V5
IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0LgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSAweEZGRTM7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNCOworICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0U2hpZnQiXSkgewor
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUxOworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHgzODsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAibGVmdEFsdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTc7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNBOworICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkgeworICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gMHhGRkU0OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0g
MHgzRTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRT
aGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTI7CisgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgIGtleUNvZGUgPSAweDNDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSAweEZGRTg7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNEOworICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gMHgxQjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29k
ZSA9IDB4MzU7CisgICAgfQorCisgICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3RyaW5nIHdpdGgg
dGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAoaS5lLiAiRjEi
LC4uLiwiRjI0IikuCisgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0aW9uLWtl
eSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgorICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0g
MjQ7IGkrKykgeworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKKyAgICAgICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOworICAgICAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0g
MHg3QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4OyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6IGtleUNv
ZGUgPSAweDYwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgOTog
a2V5Q29kZSA9IDB4NjU7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4
NkQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNDoga2V5
Q29kZSA9IDB4NkI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNToga2V5Q29kZSA9IDB4NzE7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOToga2V5Q29k
ZSA9IDB4NTA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyMDoga2V5Q29kZSA9IDB4NUE7IGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gRklYTUU6IE5v
IGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiXHQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzA7CisgICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0pCisgICAgICAgIGtleUNvZGUgPSAweDMx
OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkKKyAgICAg
ICAga2V5Q29kZSA9IDB4MjQ7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJcbiJdKQorICAgICAgICBrZXlDb2RlID0gMHg0QzsKKyAgICBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMzsKKyAg
ICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImEiXSkKKyAgICAgICAga2V5
Q29kZSA9IDB4MDA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJi
Il0pCisgICAgICAgIGtleUNvZGUgPSAweDBCOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiZCJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMjsKKyAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4
MEU7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDFiIl0pCisg
ICAgICAgIGtleUNvZGUgPSAweDFCOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiOiJdKQorICAgICAgICBrZXlDb2RlID0gMHgyOTsKKyAgICBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjsiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4Mjk7Cisg
ICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIsIl0pCisgICAgICAgIGtl
eUNvZGUgPSAweDJCOworCisgICAgS2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7CisgICAgICAg
IHsweDJGLCAweDQxLCAnLicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0s
CisgICAgICAgIHswLCAgICAweDQ1LCAnKycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ3LCBO
U0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIn0sCisgICAgICAgIHsweDJDLCAweDRCLCAn
LycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDRDLCAzLCBAImVudGVyIiB9LAorICAgICAgICB7
MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAorICAgICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAor
ICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBuaWx9LAorICAgICAgICB7MHgxMiwgMHg1MywgJzEn
LCBuaWx9LAorICAgICAgICB7MHgxMywgMHg1NCwgJzInLCBuaWx9LAorICAgICAgICB7MHgxNCwg
MHg1NSwgJzMnLCBuaWx9LAorICAgICAgICB7MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAorICAgICAg
ICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAorICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9
LAorICAgICAgICB7MHgxQSwgMHg1OSwgJzcnLCBuaWx9LAorICAgICAgICB7MHgxQywgMHg1Qiwg
JzgnLCBuaWx9LAorICAgICAgICB7MHgxOSwgMHg1QywgJzknLCBuaWx9LAorICAgIH07CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsK
KyAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07CisgICAgICAg
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8
fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgewor
ICAgICAgICAgICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypET01fS0VZX0xPQ0FUSU9OX05V
TVBBRCovKQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlD
b2RlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtp
XS5tYWNLZXlDb2RlOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFj
dGVyU3RyaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBO
U1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gZXZlbnRDaGFyYWN0ZXI7CisK
KyAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7CisKKyAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhd
ID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFj
dGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7CisgICAgICAgIG1vZGlmaWVyRmxhZ3Mg
fD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107CisgICAgfQorCisgICAgbW9k
aWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKTsKKworICAgIGlmIChr
ZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKKyAgICAgICAg
bW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKKworICAgIE5T
RXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleVVw
CisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAgICAgIG1vZGlmaWVyRmxh
Z3M6bW9kaWZpZXJGbGFncworICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRU
aW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKKyAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250
cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KKyAg
ICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAg
IGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8K
KyAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKKworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50
OmV2ZW50XTsKKyAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3Jt
V2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50XTsKKyAgICBbTlNBcHAgX3NldEN1
cnJlbnRFdmVudDpuaWxdOworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xs
QnkoaW50IHgsIGludCB5KQogewogICAgIGF1dG8gY2dTY3JvbGxFdmVudCA9IGFkb3B0Q0YoQ0dF
dmVudENyZWF0ZVNjcm9sbFdoZWVsRXZlbnQyKDAsIGtDR1Njcm9sbEV2ZW50VW5pdExpbmUsIDIs
IHksIHgsIDApKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVy
UHJveHlXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL0V2
ZW50U2VuZGVyUHJveHlXaW4uY3BwCShyZXZpc2lvbiAyODExMTEpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzE0LDYgKzMxNCwxNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdS
CiAgICAgICAgIFNldEtleWJvYXJkU3RhdGUoa2V5U3RhdGUpOwogfQogCit2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1v
ZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQ
cm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVy
cywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogdm9pZCBFdmVudFNlbmRlclByb3h5OjphZGRUb3VjaFBvaW50KGludCwgaW50KQogewpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQ
RS5jcHAJKHJldmlzaW9uIDI4MTExMSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2
ZW50U2VuZGVyUHJveHlXUEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiArMzI3LDE0IEBA
IHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICBmcmVlKGVudHJp
ZXMpOwogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYg
a2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBX
S0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisK
IHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6YWRkVG91Y2hQb2ludChpbnQgeCwgaW50IHkpCiB7CiAg
ICAgc3RydWN0IHdwZV9pbnB1dF90b3VjaF9ldmVudF9yYXcgcmF3RXZlbnQgeyB3cGVfaW5wdXRf
dG91Y2hfZXZlbnRfdHlwZV9kb3duLCBzZWNUb01zVGltZXN0YW1wKG1fdGltZSksIHN0YXRpY19j
YXN0PGludD4obV90b3VjaEV2ZW50cy5zaXplKCkpLCBzdGF0aWNfY2FzdDxpbnQzMl90Pih4KSwg
c3RhdGljX2Nhc3Q8aW50MzJfdD4oeSkgfTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MTE4MCkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisy
MDIxLTA4LTE3ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBtYWNP
UyBrZXktZHJpdmVuIHNtb290aCBzY3JvbGxpbmcgZG9lcyBub3Qgc3RvcCB3aGVuIGZvY3VzIGNo
YW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
ODMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmct
cGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogcmVz
b3VyY2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5yYXdLZXlEb3du
KToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5yYXdLZXlVcCk6CisKIDIwMjEtMDgtMTcgIEFy
Y2FkeSBHb2xkbWludHMtT3Jsb3YgIDxhZ29sZG1pbnRzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dMSUJdIHRlc3QgaHR0cC90ZXN0cy9zZWN1cml0eS93ZWJhdWRpby1yZW5kZXItcmVtb3RlLWF1
ZGlvLWFsbG93ZWQtY3Jvc3NvcmlnaW4tcmVkaXJlY3QuaHRtbCBpcyBhIGZsYWt5IHRpbWVvdXQg
c2luY2UgcjI3ODAwNApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2lu
Zy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJv
YXJkLXNjcm9sbGluZy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2IEBACitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0JlZm9yZSBwcmVzc2luZyB0aGUg
c3BhY2ViYXIsIHdpbmRvdy5zY3JvbGxZID0gMAorQWZ0ZXIgcHJlc3NpbmcgdGhlIHNwYWNlYmFy
LCB3aW5kb3cuc2Nyb2xsWSA9IDI5MQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtl
eWJvYXJkLXNjcm9sbGluZy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgRXZlbnRIYW5kbGVyRHJp
dmVuU21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKzxodG1sPgorPGhl
YWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxl
PTEuNSwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gcHJpbnRTY3JvbGwob2JqKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
Zygic2Nyb2xsIGV2ZW50IG9uIGRvYzEiKTsKKworICAgICAgICAgICAgbGV0IGRvYzAgPSBkb2N1
bWVudDsKKyAgICAgICAgICAgIGxldCBpZnJhbWUxID0gZG9jMC5nZXRFbGVtZW50QnlJZCgnZnJh
bWUtMScpOworICAgICAgICAgICAgbGV0IGRvYzEgPSBpZnJhbWUxLmNvbnRlbnREb2N1bWVudDsK
KworICAgICAgICAgICAgdmFyIGRlbHRhID0gZG9jMS5kZWZhdWx0Vmlldy5zY3JvbGxZIC0gb2Jq
Lm9mZnNldDsKKyAgICAgICAgICAgIGRlYnVnKCJ3aW5kb3cuc2Nyb2xsWSA9ICIgKyBkb2MxLmRl
ZmF1bHRWaWV3LnNjcm9sbFkpOworICAgICAgICAgICAgZGVidWcoIm9iai5vZmZzZXQgPSAiICsg
b2JqLm9mZnNldCk7CisgICAgICAgICAgICBkZWJ1ZygiZGVsdGEgPSAiICsgZGVsdGEpOworCisg
ICAgICAgICAgICBvYmoub2Zmc2V0ID0gZG9jMS5kZWZhdWx0Vmlldy5zY3JvbGxZOworICAgICAg
ICB9CisKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXRlc3RSdW5uZXIucnVuVUlTY3JpcHQp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBsZXQgZG9jMCA9IGRvY3Vt
ZW50OworICAgICAgICAgICAgbGV0IGlmcmFtZTEgPSBkb2MwLmdldEVsZW1lbnRCeUlkKCdmcmFt
ZS0xJyk7CisgICAgICAgICAgICBsZXQgZG9jMSA9IGlmcmFtZTEuY29udGVudERvY3VtZW50Owor
ICAgICAgICAgICAgbGV0IGlmcmFtZTIgPSBkb2MwLmdldEVsZW1lbnRCeUlkKCdmcmFtZS0yJyk7
CisKKyAgICAgICAgICAgIGxldCBvYmogPSB7CisgICAgICAgICAgICAgICAgb2Zmc2V0OiAwCisg
ICAgICAgICAgICB9OworICAgICAgICAgICAgZG9jMS5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwi
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcHJpbnRTY3JvbGwob2JqKTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICBpZnJhbWUxLmZvY3VzKCk7CisgICAgICAgICAgICBk
ZWJ1ZygianVzdCBmb2N1c2VkIGZyYW1lIDEsIGFib3V0IHRvIHByZXNzIGRvd24gYXJyb3ciKTsK
KyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLnJhd0tleURvd24oImRvd25BcnJvdyIpOworICAg
ICAgICAgICAgaWZyYW1lMi5mb2N1cygpOworICAgICAgICAgICAgZGVidWcoImp1c3QgdW5mb2N1
c2VkIGZyYW1lMSIpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAg
ICNwbGFjZWhvbGRlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiA1
MDAwcHg7CisgICAgfQorICAgIGlmcmFtZSB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0
eWxlPSJtYXJnaW46IDA7IiBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPGlmcmFtZSBpZD0iZnJh
bWUtMSIgc3JjZG9jPSI8ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMjAwMHB4OyBi
YWNrZ3JvdW5kLWNvbG9yOiBibHVlOyc+PC9kaXY+Ij48L2lmcmFtZT4KKyAgICA8aWZyYW1lIGlk
PSJmcmFtZS0yIiBzcmNkb2M9IjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAyMDAw
cHg7IGJhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvZGl2PiI+PC9pZnJhbWU+CisgICAgPGRpdiBp
ZD0icGxhY2Vob2xkZXIiPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KK+KAiworPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExh
eW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwkocmV2aXNpb24gMjgxMTExKQorKysgTGF5b3V0VGVz
dHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDYgKzM0NCwz
MCBAQCB3aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAgICAgICAgIH0KICAgICB9
CiAKKyAgICBzdGF0aWMgcmF3S2V5RG93bihrZXksIG1vZGlmaWVycz1bXSkKKyAgICB7CisgICAg
ICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5yYXdLZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKKyAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5V
SVNjcmlwdChgdWlDb250cm9sbGVyLnJhd0tleURvd24oIiR7a2V5fSIsICR7SlNPTi5zdHJpbmdp
ZnkobW9kaWZpZXJzKX0pO2AsIHJlc29sdmUpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBz
dGF0aWMgcmF3S2V5VXAoa2V5LCBtb2RpZmllcnM9W10pCisgICAgeworICAgICAgICBpZiAoIXRo
aXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkgeworICAgICAgICAgICAgZXZl
bnRTZW5kZXIucmF3S2V5VXAoa2V5LCBtb2RpZmllcnMpOworICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNl
KChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNv
bnRyb2xsZXIucmF3S2V5VXAoIiR7a2V5fSIsICR7SlNPTi5zdHJpbmdpZnkobW9kaWZpZXJzKX0p
O2AsIHJlc29sdmUpOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBzdGF0aWMga2V5RG93bihr
ZXksIG1vZGlmaWVycz1bXSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8
fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7Cg==
</data>
<flag name="commit-queue"
          id="458723"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439219</attachid>
            <date>2021-09-24 17:26:25 -0700</date>
            <delta_ts>2021-09-27 15:49:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>66498</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzA0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA5LTI0ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkgb24g
dGhlIG9sZCBGcmFtZVZpZXcgYWZ0ZXIgY2hhbmdpbmcgRnJhbWUgZm9jdXMuCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorCisgICAgICAgIENhbGwgdXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKSB3aGVuIHRoZSB3aW5kb3cgdmlzaWJpbGl0eSAvIGFjdGl2ZSBzdGF0
ZSBjaGFuZ2VzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVNj
cm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAg
ICAgICBQbHVtYmluZyB0byBnZXQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSB0
byB0aGUgU2Nyb2xsQ29udHJvbGxlciwgd2hlcmUgd2UgY2FuIHRlbGwgCisgICAgICAgIHRoZSBr
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRvIGhhbmRsZSBrZXlVcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0wOS0yNCAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHR5cGVjaGVja2luZyBg
aXNgIG92ZXJsb2FkcyBmb3IgYHN0ZDo6dW5pcXVlX3B0cmAsIGBXVEY6OlVuaXF1ZVJlZmAsIGFu
ZCBgV1RGOjpXZWFrUHRyYApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMjgzMDQ5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksOSArMzU5LDEyIEBAIHZvaWQgRm9jdXND
b250cm9sbGVyOjpzZXRGb2N1c2VkRnJhbWUoRnIKICAgICBtX2ZvY3VzZWRGcmFtZSA9IG5ld0Zy
YW1lOwogCiAgICAgLy8gTm93IHRoYXQgdGhlIGZyYW1lIGlzIHVwZGF0ZWQsIGZpcmUgZXZlbnRz
IGFuZCB1cGRhdGUgdGhlIHNlbGVjdGlvbiBmb2N1c2VkIHN0YXRlcyBvZiBib3RoIGZyYW1lcy4K
LSAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUtPnZpZXcoKSkgewotICAgICAgICBvbGRGcmFt
ZS0+c2VsZWN0aW9uKCkuc2V0Rm9jdXNlZChmYWxzZSk7Ci0gICAgICAgIG9sZEZyYW1lLT5kb2N1
bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJs
dXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7
CisgICAgaWYgKG9sZEZyYW1lKSB7CisgICAgICAgIGlmIChGcmFtZVZpZXcqIG9sZEZyYW1lVmll
dyA9IG9sZEZyYW1lLT52aWV3KCkpIHsKKyAgICAgICAgICAgIG9sZEZyYW1lVmlldy0+dXBkYXRl
U2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIG9sZEZyYW1lLT5zZWxl
Y3Rpb24oKS5zZXRGb2N1c2VkKGZhbHNlKTsKKyAgICAgICAgICAgIG9sZEZyYW1lLT5kb2N1bWVu
dCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobmV3RnJhbWUgJiYgbmV3RnJhbWUtPnZpZXcoKSAm
JiBpc0ZvY3VzZWQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyODMwNDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzU1
LDEzICsyMzU1LDMzIEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWMK
ICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9hY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXJz
KQogICAgICAgICBvYnNlcnZlci5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKG9sZEFjdGl2aXR5U3Rh
dGUsIG1fYWN0aXZpdHlTdGF0ZSk7CiAKLSAgICBpZiAod2FzVmlzaWJsZUFuZEFjdGl2ZSAhPSBp
c1Zpc2libGVBbmRBY3RpdmUoKSkKKyAgICBpZiAod2FzVmlzaWJsZUFuZEFjdGl2ZSAhPSBpc1Zp
c2libGVBbmRBY3RpdmUoKSkgewogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgdXBkYXRlU2Nyb2xs
QW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsKKyAgICB9CiAKICAgICBpZiAobV9wZXJmb3JtYW5jZU1v
bml0b3IpCiAgICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5hY3Rpdml0eVN0YXRlQ2hhbmdl
ZChvbGRBY3Rpdml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlKTsKIH0KIAordm9pZCBQYWdlOjp1cGRh
dGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSgpCit7CisgICAgZm9yIChGcmFtZSogZnJhbWUg
PSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0
KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOworICAg
ICAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZy
YW1lVmlldy0+dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsKKworICAgICAgICBj
b25zdCBIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj4qIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmll
dy0+c2Nyb2xsYWJsZUFyZWFzKCk7CisgICAgICAgIGlmICghc2Nyb2xsYWJsZUFyZWFzKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChhdXRvJiBzY3JvbGxhYmxlQXJlYSA6
ICpzY3JvbGxhYmxlQXJlYXMpCisgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYS0+dXBkYXRlU2Ny
b2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsKKyAgICB9Cit9CisKIGJvb2wgUGFnZTo6aXNWaXNp
YmxlQW5kQWN0aXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRh
aW5zKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgJiYgbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5z
KEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZp
c2lvbiAyODMwNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtODg3LDYgKzg4Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJc1Zpc2libGVJbnRl
cm5hbChib29sKTsKICAgICB2b2lkIHNldElzVmlzdWFsbHlJZGxlSW50ZXJuYWwoYm9vbCk7CiAK
KyAgICB2b2lkIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7CisKICAgICBlbnVt
IFNob3VsZEhpZ2hsaWdodE1hdGNoZXMgeyBEb05vdEhpZ2hsaWdodE1hdGNoZXMsIEhpZ2hsaWdo
dE1hdGNoZXMgfTsKICAgICBlbnVtIFNob3VsZE1hcmtNYXRjaGVzIHsgRG9Ob3RNYXJrTWF0Y2hl
cywgTWFya01hdGNoZXMgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcAkocmV2aXNpb24gMjgzMDQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsNiArMjMwLDExIEBA
IGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY28KICAgICByZXR1cm4gaGFu
ZGxlZDsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvcjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZO
ZWNlc3NhcnkoKQoreworICAgIG1fc2Nyb2xsQ29udHJvbGxlci51cGRhdGVTY3JvbGxBbmltYXRp
b25JZk5lY2Vzc2FyeSgpOworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJvb2wgU2Ny
b2xsQW5pbWF0b3I6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikK
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAkocmV2aXNp
b24gMjgzMDQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJv
b2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklm
TmVjZXNzYXJ5KCk7CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lk
IGhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgeyB9CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAJKHJl
dmlzaW9uIDI4MzA0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDYgKzIyNSwxMSBAQCBib29sIFNjcm9sbGFibGVB
cmVhOjpoYW5kbGVXaGVlbEV2ZW50Rm9yCiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKIH0KIAor
dm9pZCBTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKQor
eworICAgIHNjcm9sbEFuaW1hdG9yKCkudXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3Nhcnko
KTsKK30KKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBib29sIFNjcm9sbGFibGVBcmVhOjpo
YW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAkocmV2aXNpb24g
MjgzMDQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc25hcEFm
dGVyTGF5b3V0KCk7CiAgICAgdm9pZCBkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyhTY3JvbGxiYXJP
cmllbnRhdGlvbik7CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5
KCk7CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVU
b3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiAyODMwNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDEy
IEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BLZXkKICAgICBzZXRJc0Fu
aW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5nKGZhbHNlKTsKIH0KIAordm9pZCBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKQoreworICAg
IGlmIChtX2lzQW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmcpCisgICAgICAgIG1fY2xpZW50Lmtl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoKS0+aGFuZGxlS2V5VXBFdmVudCgpOworfQorCiBib29s
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5h
dGlvbihGbG9hdFBvaW50IHN0YXJ0T2Zmc2V0LCBGbG9hdFBvaW50IGRlc3RpbmF0aW9uT2Zmc2V0
KQogewogICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgJKHJldmlzaW9u
IDI4MzA0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsOSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGJlZ2luS2V5Ym9hcmRTY3JvbGxpbmcoKTsKICAgICB2b2lkIHN0b3BLZXlib2FyZFNj
cm9sbGluZygpOwotICAgIAorCisgICAgdm9pZCB1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vz
c2FyeSgpOworCiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCBwZXJpb2RpY2FsbHkgYnkgdGhlIGNs
aWVudC4gU3RhcnRlZCBieSBzdGFydEFuaW1hdGlvbkNhbGxiYWNrKCksIHN0b3BwZWQgYnkgc3Rv
cEFuaW1hdGlvbkNhbGxiYWNrKCkuCiAgICAgdm9pZCBhbmltYXRpb25DYWxsYmFjayhNb25vdG9u
aWNUaW1lKTsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjgzMDQ5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDktMjQgIEJldGggRGFraW4gIDxiZGFraW5AYXBw
bGUuY29tPiBhbmQgRGFuYSBFc3RyYSA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBtYWNP
UyBrZXktZHJpdmVuIHNtb290aCBzY3JvbGxpbmcgZG9lcyBub3Qgc3RvcCB3aGVuIGZvY3VzIGNo
YW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
ODMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgICgr
W0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoK1tFdmVudFNl
bmRpbmdDb250cm9sbGVyIGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6CisgICAg
ICAgICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOl0p
OgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tleURvd246d2l0aE1vZGlm
aWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIg
cmF3S2V5RG93bldyYXBwZXI6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAg
ICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmF3S2V5VXA6d2l0aE1vZGlmaWVyczp3aXRoTG9j
YXRpb246XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmF3S2V5VXBXcmFw
cGVyOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGw6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6Y3JlYXRlUmF3S2V5RG93bk1lc3NhZ2VCb2R5KToKKyAgICAg
ICAgKFdUUjo6Y3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keSk6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRp
bmdDb250cm9sbGVyOjpyYXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbToKKyAgICAg
ICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2Vp
dmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0
ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94
eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVw
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tOgor
ICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdU
Ujo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRl
clByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3
S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlX
UEUuY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorCiAyMDIxLTA5LTI0ICBT
YW0gU25lZGRvbiAgPGdzbmVkZGVyc0BhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0VGVzdEZp
bmRlciBzaG91bGQgcmV0dXJuIHRlc3RzIGluIG9yZGVyCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjgz
MDQ5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsOCBAQCArICh2b2lkKWluaXRpYWxpemUK
ICAgICAgICAgQCJmb2N1cyIsCiAgICAgICAgIEAiaW5wdXQiLAogICAgICAgICBAImtleWRvd24i
LAorICAgICAgICBAInJhd2tleWRvd24iLAorICAgICAgICBAInJhd2tleXVwIiwKICAgICAgICAg
QCJrZXlwcmVzcyIsCiAgICAgICAgIEAia2V5dXAiLAogICAgICAgICBAImxvYWQiLApAQCAtMjQ1
LDYgKzI0Nyw4IEBAICsgKEJPT0wpaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDoKICAg
ICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoZW5hYmxlRE9NVUlFdmVudExvZ2dp
bmc6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihmaXJlS2V5Ym9hcmRF
dmVudHNUb0VsZW1lbnQ6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcihr
ZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikKKyAgICAgICAgICAgIHx8IGFTZWxl
Y3RvciA9PSBAc2VsZWN0b3IocmF3S2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjop
CisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tleVVwOndpdGhNb2Rp
ZmllcnM6d2l0aExvY2F0aW9uOikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0
b3IobGVhcEZvcndhcmQ6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvciht
b3VzZURvd246d2l0aE1vZGlmaWVyczopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNl
bGVjdG9yKG1vdXNlTW92ZVRvWDpZOikKQEAgLTMwNiw2ICszMTAsMTAgQEAgKyAoTlNTdHJpbmcg
Kil3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6KAogICAgICAgICByZXR1cm4gQCJmaXJlS2V5Ym9h
cmRFdmVudHNUb0VsZW1lbnQiOwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGtleURv
d246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkKICAgICAgICAgcmV0dXJuIEAia2V5RG93
biI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IocmF3S2V5RG93bjp3aXRoTW9kaWZp
ZXJzOndpdGhMb2NhdGlvbjopKQorICAgICAgICByZXR1cm4gQCJyYXdLZXlEb3duIjsKKyAgICBp
ZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihyYXdLZXlVcDp3aXRoTW9kaWZpZXJzOndpdGhMb2Nh
dGlvbjopKQorICAgICAgICByZXR1cm4gQCJyYXdLZXlVcCI7CiAgICAgaWYgKGFTZWxlY3RvciA9
PSBAc2VsZWN0b3Ioc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duOndpdGhNb2RpZmllcnM6d2l0
aExvY2F0aW9uOikpCiAgICAgICAgIHJldHVybiBAInNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93
biI7CiAgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IobGVhcEZvcndhcmQ6KSkKQEAgLTEy
MDksNiArMTIxNyw0MzggQEAgLSAodm9pZClrZXlEb3duV3JhcHBlcjooTlNTdHJpbmcgKiljaGFy
YQogICAgIFtzZWxmIGtleURvd246Y2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdp
dGhMb2NhdGlvbjpsb2NhdGlvbl07CiB9CiAKKy0gKHZvaWQpcmF3S2V5RG93bjooTlNTdHJpbmcg
KiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdp
dGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAgIE5TU3RyaW5nICpldmVu
dENoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAgICB1bnNpZ25lZCBzaG9ydCBrZXlDb2RlID0gMDsK
KyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDdDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJ1cEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0
aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3RTsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgIGtleUNvZGUgPSAweDdEOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
TlNQYWdlVXBGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
NzQ7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VEb3du
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlvbktleTsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzk7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDczOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJl
bmQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsKKyAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzc7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHg3MjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ZGVsZXRlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25L
ZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc1OworICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgeworICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gMHgxQjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
MzU7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInByaW50U2Ny
ZWVuIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlv
bktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUgaXMg
bm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0ZXJBIl0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNzaWFuIGxheW91
dC4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRy
b2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUzOworICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBrZXlDb2RlID0gMHgzQjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4RkZFMTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Mzg7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHgzQTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
cmlnaHRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNDsKKyAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0U7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gMHhGRkUyOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgz
QzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQi
XSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHgzRDsKKyAgICB9CisKKyAgICAvLyBDb21wYXJlIHRoZSBpbnB1
dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhlIERPTSBz
cGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KKyAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlz
IGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgeworICAgICAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7CisgICAg
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOworICAgICAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICBjYXNl
IDE6IGtleUNvZGUgPSAweDdBOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoga2V5Q29kZSA9
IDB4Nzg7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2RlID0gMHg2MzsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgNToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA2OiBrZXlD
b2RlID0gMHg2MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDc6IGtleUNvZGUgPSAweDYyOyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgODoga2V5Q29kZSA9IDB4NjQ7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEw
OiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDExOiBrZXlDb2RlID0g
MHg2NzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDEzOiBrZXlDb2RlID0gMHg2OTsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDE0OiBrZXlDb2RlID0gMHg2QjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE1OiBr
ZXlDb2RlID0gMHg3MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2RlID0gMHg2
QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE3OiBrZXlDb2RlID0gMHg0MDsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDIwOiBrZXlD
b2RlID0gMHg1QTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1vc3Qga2V5cy4KKyAgICBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMDsK
KyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiAiXSkKKyAgICAgICAg
a2V5Q29kZSA9IDB4MzE7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJcciJdKQorICAgICAgICBrZXlDb2RlID0gMHgyNDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCisgICAgICAgIGtleUNvZGUgPSAweDRDOworICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4Il0pCisgICAgICAgIGtleUNv
ZGUgPSAweDMzOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYSJd
KQorICAgICAgICBrZXlDb2RlID0gMHgwMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEI7CisgICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAy
OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZSJdKQorICAgICAg
ICBrZXlDb2RlID0gMHgwRTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAIlx4MWIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MUI7CisKKyAgICBLZXlNYXBwaW5nRW50
cnkgdGFibGVbXSA9IHsKKyAgICAgICAgezB4MkYsIDB4NDEsICcuJywgbmlsfSwKKyAgICAgICAg
ezAsICAgIDB4NDMsICcqJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NDUsICcrJywgbmlsfSwK
KyAgICAgICAgezAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXksIEAiY2xlYXIifSwK
KyAgICAgICAgezB4MkMsIDB4NEIsICcvJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NEMsIDMs
IEAiZW50ZXIiIH0sCisgICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5pbH0sCisgICAgICAgIHsw
eDE4LCAweDUxLCAnPScsIG5pbH0sCisgICAgICAgIHsweDFELCAweDUyLCAnMCcsIG5pbH0sCisg
ICAgICAgIHsweDEyLCAweDUzLCAnMScsIG5pbH0sCisgICAgICAgIHsweDEzLCAweDU0LCAnMics
IG5pbH0sCisgICAgICAgIHsweDE0LCAweDU1LCAnMycsIG5pbH0sCisgICAgICAgIHsweDE1LCAw
eDU2LCAnNCcsIG5pbH0sCisgICAgICAgIHsweDE3LCAweDU3LCAnNScsIG5pbH0sCisgICAgICAg
IHsweDE2LCAweDU4LCAnNicsIG5pbH0sCisgICAgICAgIHsweDFBLCAweDU5LCAnNycsIG5pbH0s
CisgICAgICAgIHsweDFDLCAweDVCLCAnOCcsIG5pbH0sCisgICAgICAgIHsweDE5LCAweDVDLCAn
OScsIG5pbH0sCisgICAgfTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZ
X0xFTkdUSCh0YWJsZSk7ICsraSkgeworICAgICAgICBOU1N0cmluZyogY3VycmVudENoYXJhY3Rl
clN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomdGFibGVbaV0uY2hhcmFj
dGVyIGxlbmd0aDoxXTsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOmN1
cnJlbnRDaGFyYWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOnRhYmxl
W2ldLmNoYXJhY3Rlck5hbWVdKSB7CisgICAgICAgICAgICBpZiAobG9jYXRpb24gPT0gRE9NX0tF
WV9MT0NBVElPTl9OVU1QQUQpCisgICAgICAgICAgICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1h
Y051bXBhZEtleUNvZGU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAga2V5Q29k
ZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7CisgICAgICAgICAgICBldmVudENoYXJhY3RlciA9IGN1
cnJlbnRDaGFyYWN0ZXJTdHJpbmc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBldmVudENo
YXJhY3RlcjsKKworICAgIGludCBtb2RpZmllckZsYWdzID0gMDsKKworICAgIGlmIChbY2hhcmFj
dGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPj0gJ0En
ICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA8PSAnWicpIHsKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJG
bGFnU2hpZnQ7CisjZWxzZQorICAgICAgICBtb2RpZmllckZsYWdzIHw9IFdlYkV2ZW50RmxhZ01h
c2tMZWZ0U2hpZnRLZXk7CisjZW5kaWYKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOworICAgIH0KKworICAgIG1vZGlmaWVy
RmxhZ3MgfD0gYnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycyk7CisKKyAgICBpZiAobG9jYXRp
b24gPT0gRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQpCisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0g
TlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisKKyAgICBbW1ttYWluRnJhbWUgZnJhbWVW
aWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNF
dmVudFR5cGVLZXlEb3duCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAg
ICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncworICAgICAgICB0aW1lc3RhbXA6W3NlbGYg
Y3VycmVudEV2ZW50VGltZV0KKyAgICAgICAgd2luZG93TnVtYmVyOltbW21haW5GcmFtZSB3ZWJW
aWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KKyAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0Nv
bnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIK
KyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7
CisjZWxzZQorICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRX
aXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2
ZW50VGltZV0gY2hhcmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFn
cyltb2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFn
ZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktl
eTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CisjZW5kaWYKKwor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2
ZW50LmdldCgpXTsKKyNlbmRpZgorICAgIFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBm
aXJzdFJlc3BvbmRlcl0ga2V5RG93bjpldmVudC5nZXQoKV07CisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKKyNlbmRpZgorfQorCist
ICh2b2lkKXJhd0tleURvd25XcmFwcGVyOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZp
ZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9uOih1bnNpZ25lZCBs
b25nKWxvY2F0aW9uCit7CisgICAgW3NlbGYgcmF3S2V5RG93bjpjaGFyYWN0ZXIgd2l0aE1vZGlm
aWVyczptb2RpZmllcnMgd2l0aExvY2F0aW9uOmxvY2F0aW9uXTsKK30KKworLSAodm9pZClyYXdL
ZXlVcDooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0
ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAg
IE5TU3RyaW5nICpldmVudENoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAgICB1bnNpZ25lZCBzaG9y
dCBrZXlDb2RlID0gMDsKKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0
QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlv
bktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0I7CisgICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgIGtleUNvZGUgPSAweDdDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TVXBBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0g
MHg3RTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFy
cm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25L
ZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdEOworICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgeworICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4NzQ7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAInBhZ2VEb3duIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURv
d25GdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzk7Cisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDczOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJlbmQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRG
dW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzc7CisgICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OworICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBrZXlDb2RlID0gMHg3MjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
RGVsZXRlRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc1
OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgxQjsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4MzU7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAInByaW50U2NyZWVuIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJp
bnRTY3JlZW5GdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
MDsgLy8gVGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4u
CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21h
bGxMZXR0ZXJBIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKKyAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBv
biBSdXNzaWFuIGxheW91dC4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAibGVmdENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUz
OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQjsKKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4RkZFMTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4Mzg7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRB
bHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3OworICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBrZXlDb2RlID0gMHgzQTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IDB4RkZFNDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0U7CisgICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgewor
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHgzQzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAicmlnaHRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4Owor
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRDsKKyAgICB9CisKKyAgICAvLyBD
b21wYXJlIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmlu
ZWQgYnkgdGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KKyAgICAvLyBJZiB0aGUg
aW5wdXQgc3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7CisgICAgICAgIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIs
IGldXSkgeworICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSAr
IChpIC0gMSk7CisgICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICAgICAgc3dpdGNoIChpKSB7Cisg
ICAgICAgICAgICBjYXNlIDE6IGtleUNvZGUgPSAweDdBOyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgMjoga2V5Q29kZSA9IDB4Nzg7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2Rl
ID0gMHg2MzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgNToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOworICAgICAgICAg
ICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDc6IGtl
eUNvZGUgPSAweDYyOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgODoga2V5Q29kZSA9IDB4NjQ7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDExOiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2Rl
ID0gMHg2RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEzOiBrZXlDb2RlID0gMHg2OTsgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDE0OiBrZXlDb2RlID0gMHg2QjsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE2
OiBrZXlDb2RlID0gMHg2QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE3OiBrZXlDb2RlID0g
MHg0MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDIwOiBrZXlDb2RlID0gMHg1QTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1vc3Qga2V5
cy4KKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQorICAgICAgICBr
ZXlDb2RlID0gMHgzMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
IiAiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzE7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJcciJdKQorICAgICAgICBrZXlDb2RlID0gMHgyNDsKKyAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCisgICAgICAgIGtleUNvZGUg
PSAweDRDOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4Il0p
CisgICAgICAgIGtleUNvZGUgPSAweDMzOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiYSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMDsKKyAgICBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEI7
CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCisgICAgICAg
IGtleUNvZGUgPSAweDAyOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiZSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwRTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAIlx4MWIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MUI7CisKKyAg
ICBLZXlNYXBwaW5nRW50cnkgdGFibGVbXSA9IHsKKyAgICAgICAgezB4MkYsIDB4NDEsICcuJywg
bmlsfSwKKyAgICAgICAgezAsICAgIDB4NDMsICcqJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4
NDUsICcrJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25L
ZXksIEAiY2xlYXIifSwKKyAgICAgICAgezB4MkMsIDB4NEIsICcvJywgbmlsfSwKKyAgICAgICAg
ezAsICAgIDB4NEMsIDMsIEAiZW50ZXIiIH0sCisgICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5p
bH0sCisgICAgICAgIHsweDE4LCAweDUxLCAnPScsIG5pbH0sCisgICAgICAgIHsweDFELCAweDUy
LCAnMCcsIG5pbH0sCisgICAgICAgIHsweDEyLCAweDUzLCAnMScsIG5pbH0sCisgICAgICAgIHsw
eDEzLCAweDU0LCAnMicsIG5pbH0sCisgICAgICAgIHsweDE0LCAweDU1LCAnMycsIG5pbH0sCisg
ICAgICAgIHsweDE1LCAweDU2LCAnNCcsIG5pbH0sCisgICAgICAgIHsweDE3LCAweDU3LCAnNScs
IG5pbH0sCisgICAgICAgIHsweDE2LCAweDU4LCAnNicsIG5pbH0sCisgICAgICAgIHsweDFBLCAw
eDU5LCAnNycsIG5pbH0sCisgICAgICAgIHsweDFDLCAweDVCLCAnOCcsIG5pbH0sCisgICAgICAg
IHsweDE5LCAweDVDLCAnOScsIG5pbH0sCisgICAgfTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgV1RGX0FSUkFZX0xFTkdUSCh0YWJsZSk7ICsraSkgeworICAgICAgICBOU1N0cmluZyog
Y3VycmVudENoYXJhY3RlclN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
dGFibGVbaV0uY2hhcmFjdGVyIGxlbmd0aDoxXTsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOmN1cnJlbnRDaGFyYWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOnRhYmxlW2ldLmNoYXJhY3Rlck5hbWVdKSB7CisgICAgICAgICAgICBpZiAobG9j
YXRpb24gPT0gRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQpCisgICAgICAgICAgICAgICAga2V5Q29k
ZSA9IHRhYmxlW2ldLm1hY051bXBhZEtleUNvZGU7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7CisgICAgICAgICAgICBldmVu
dENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmc7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKworICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnMgPSBldmVudENoYXJhY3RlcjsKKworICAgIGludCBtb2RpZmllckZsYWdzID0gMDsKKwor
ICAgIGlmIChbY2hhcmFjdGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0
SW5kZXg6MF0gPj0gJ0EnICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA8PSAnWicp
IHsKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBO
U0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQ7CisjZWxzZQorICAgICAgICBtb2RpZmllckZsYWdzIHw9
IFdlYkV2ZW50RmxhZ01hc2tMZWZ0U2hpZnRLZXk7CisjZW5kaWYKKyAgICAgICAgY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOworICAgIH0K
KworICAgIG1vZGlmaWVyRmxhZ3MgfD0gYnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycyk7CisK
KyAgICBpZiAobG9jYXRpb24gPT0gRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQpCisgICAgICAgIG1v
ZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisKKyAgICBbW1tt
YWluRnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CisKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2
ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcAorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2lu
dCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgdGlt
ZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdpbmRvd051bWJlcjpbW1tt
YWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNvbnRleHQ6
W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0ZXJzOmV2
ZW50Q2hhcmFjdGVyCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNv
ZGU6a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50
IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpbc2Vs
ZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgbW9kaWZpZXJzOihX
ZWJFdmVudEZsYWdzKW1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0
aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4
OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsK
KyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgW05TQXBwIF9zZXRDdXJy
ZW50RXZlbnQ6ZXZlbnQuZ2V0KCldOworI2VuZGlmCisgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3
XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudC5nZXQoKV07CisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKKyNlbmRp
ZgorfQorCistICh2b2lkKXJhd0tleVVwV3JhcHBlcjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0
aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5z
aWduZWQgbG9uZylsb2NhdGlvbgoreworICAgIFtzZWxmIHJhd0tleVVwOmNoYXJhY3RlciB3aXRo
TW9kaWZpZXJzOm1vZGlmaWVycyB3aXRoTG9jYXRpb246bG9jYXRpb25dOworfQorCiAtICh2b2lk
KXNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1v
ZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWdu
ZWQgbG9uZylsb2NhdGlvbgogewogICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFtOU0lu
dm9jYXRpb24gaW52b2NhdGlvbldpdGhNZXRob2RTaWduYXR1cmU6W0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIgaW5zdGFuY2VNZXRob2RTaWduYXR1cmVGb3JTZWxlY3RvcjpAc2VsZWN0b3Ioa2V5RG93
bldyYXBwZXI6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KV1dOwpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgJKHJldmlzaW9uIDI4MzA0OSkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxlYXBGb3J3YXJkKGludCBtaWxsaXNl
Y29uZHMpOwogCiAgICAgdm9pZCBrZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlm
aWVycywgdW5zaWduZWQgbG9jYXRpb24pOworICAgIHZvaWQgcmF3S2V5RG93bihXS1N0cmluZ1Jl
ZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsKKyAgICB2b2lkIHJh
d0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycywgdW5zaWduZWQgbG9jYXRp
b24pOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdW5zaWduZWQgbW91c2VCdXR0b25zQ3Vy
cmVudGx5RG93bigpIGNvbnN0IHsgcmV0dXJuIG1fbW91c2VCdXR0b25zQ3VycmVudGx5RG93bjsg
fQpAQCAtMTA0LDYgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDbGlja0NvdW50
Rm9yQnV0dG9uKGludCBidXR0b24pOwogCiAgICAgdm9pZCBzZW5kTW91c2VEb3duVG9TdGFydFBy
ZXNzdXJlRXZlbnRzKCk7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbnVtIGNsYXNzIFBy
ZXNzdXJlQ2hhbmdlRGlyZWN0aW9uIHsgSW5jcmVhc2luZywgRGVjcmVhc2luZyB9OwogICAgIFJl
dGFpblB0cjxOU0V2ZW50PiBiZWdpblByZXNzdXJlRXZlbnQoaW50IHN0YWdlKTsKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODMwNDkp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU5Niw2ICsxNTk2LDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2Vp
dmVLZXlEb3duTWUKICAgICBtX2V2ZW50U2VuZGVyUHJveHktPmtleURvd24oc3RyaW5nVmFsdWUo
ZGljdGlvbmFyeSwgIktleSIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiks
IHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJMb2NhdGlvbiIpKTsKIH0KIAordm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdL
RGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5LCBib29sIHN5bmNocm9ub3VzKQoreworICAgIG1fZXZl
bnRTZW5kZXJQcm94eS0+cmF3S2V5RG93bihzdHJpbmdWYWx1ZShkaWN0aW9uYXJ5LCAiS2V5Iiks
IHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJNb2RpZmllcnMiKSwgdWludDY0VmFsdWUoZGljdGlv
bmFyeSwgIkxvY2F0aW9uIikpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZl
UmF3S2V5VXBNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLRGljdGlvbmFyeVJlZiBkaWN0aW9u
YXJ5LCBib29sIHN5bmNocm9ub3VzKQoreworICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+cmF3S2V5
VXAoc3RyaW5nVmFsdWUoZGljdGlvbmFyeSwgIktleSIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5
LCAiTW9kaWZpZXJzIiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJMb2NhdGlvbiIpKTsKK30K
Kwogdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUxpdmVEb2N1bWVudHNMaXN0KFdLQXJy
YXlSZWYgbGl2ZURvY3VtZW50TGlzdCkKIHsKICAgICBhdXRvIG51bURvY3VtZW50cyA9IFdLQXJy
YXlHZXRTaXplKGxpdmVEb2N1bWVudExpc3QpOwpAQCAtMTY1Myw2ICsxNjYzLDE2IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlRnIKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1
Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5RG93biIpKSB7CisgICAgICAgICAgICBkaWRSZWNlaXZlUmF3
S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoZGljdGlvbmFyeSwgZmFsc2UpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJSYXdLZXlVcCIpKSB7CisgICAgICAgICAg
ICBkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKGRpY3Rpb25hcnks
IGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VTY3JvbGxC
eSIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNlU2Nyb2xsQnkoZG91
YmxlVmFsdWUoZGljdGlvbmFyeSwgIlgiKSwgZG91YmxlVmFsdWUoZGljdGlvbmFyeSwgIlkiKSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzAyLDYgKzE3MjIsMTYgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ubwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJSYXdLZXlEb3duIikpIHsKKyAgICAg
ICAgICAgIGRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShkaWN0
aW9uYXJ5LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5VXAiKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2
ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCB0cnVlKTsKKyAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgfQor
CiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1l
LCAiTW91c2VEb3duIikpIHsKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VE
b3duKHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJCdXR0b24iKSwgdWludDY0VmFsdWUoZGljdGlv
bmFyeSwgIk1vZGlmaWVycyIpLCBzdHJpbmdWYWx1ZShkaWN0aW9uYXJ5LCAiUG9pbnRlclR5cGUi
KSk7CiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyODMwNDkp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzOSw2ICs0MzksOCBAQCBwcml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdLVHlwZVJl
Zj4gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKCk7CiAKICAgICB2b2lk
IGRpZFJlY2VpdmVLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlS
ZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBib29sIHN5bmNocm9ub3VzKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlS
ZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBib29sIHN5bmNocm9ub3VzKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVm
IG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7CiAKICAgICAvLyBXS0Nv
bnRleHRDbGllbnQKICAgICBzdGF0aWMgdm9pZCBuZXR3b3JrUHJvY2Vzc0RpZENyYXNoKFdLQ29u
dGV4dFJlZiwgY29uc3Qgdm9pZCopOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiAyODMwNDkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEs
MTEgKzMwMSw0MSBAQCBzdGF0aWMgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlCiAg
ICAgcmV0dXJuIGJvZHk7CiB9CiAKK3N0YXRpYyBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9u
YXJ5UmVmPiBjcmVhdGVSYXdLZXlEb3duTWVzc2FnZUJvZHkoSlNTdHJpbmdSZWYga2V5LCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgaW50IGxvY2F0aW9uKQoreworICAgIGF1dG8gYm9keSA9
IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKyAgICBzZXRWYWx1ZShib2R5
LCAiU3ViTWVzc2FnZSIsICJSYXdLZXlEb3duIik7CisgICAgc2V0VmFsdWUoYm9keSwgIktleSIs
IGtleSk7CisgICAgc2V0VmFsdWUoYm9keSwgIk1vZGlmaWVycyIsIGFkb3B0V0soV0tVSW50NjRD
cmVhdGUobW9kaWZpZXJzKSkpOworICAgIHNldFZhbHVlKGJvZHksICJMb2NhdGlvbiIsIGFkb3B0
V0soV0tVSW50NjRDcmVhdGUobG9jYXRpb24pKSk7CisgICAgcmV0dXJuIGJvZHk7Cit9CisKK3N0
YXRpYyBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVSYXdLZXlVcE1l
c3NhZ2VCb2R5KEpTU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGlu
dCBsb2NhdGlvbikKK3sKKyAgICBhdXRvIGJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25h
cnlDcmVhdGUoKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIlN1Yk1lc3NhZ2UiLCAiUmF3S2V5VXAi
KTsKKyAgICBzZXRWYWx1ZShib2R5LCAiS2V5Iiwga2V5KTsKKyAgICBzZXRWYWx1ZShib2R5LCAi
TW9kaWZpZXJzIiwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShtb2RpZmllcnMpKSk7CisgICAgc2V0
VmFsdWUoYm9keSwgIkxvY2F0aW9uIiwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShsb2NhdGlvbikp
KTsKKyAgICByZXR1cm4gYm9keTsKK30KKwogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpr
ZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9j
YXRpb24pCiB7CiAgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoIkV2ZW50U2VuZGVyIiwg
Y3JlYXRlS2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgcGFyc2VNb2RpZmllckFycmF5KG1vZGlmaWVy
QXJyYXkpLCBsb2NhdGlvbikpOwogfQogCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJh
d0tleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBs
b2NhdGlvbikKK3sKKyAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZSgiRXZlbnRTZW5kZXIi
LCBjcmVhdGVSYXdLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCBwYXJzZU1vZGlmaWVyQXJyYXkobW9k
aWZpZXJBcnJheSksIGxvY2F0aW9uKSk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxl
cjo6cmF3S2V5VXAoSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGlu
dCBsb2NhdGlvbikKK3sKKyAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZSgiRXZlbnRTZW5k
ZXIiLCBjcmVhdGVSYXdLZXlVcE1lc3NhZ2VCb2R5KGtleSwgcGFyc2VNb2RpZmllckFycmF5KG1v
ZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOworfQorCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xs
ZXI6OnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihKU1N0cmluZ1JlZiBrZXkpCiB7CiAgICAg
cG9zdFBhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGNyZWF0ZUtleURvd25NZXNzYWdlQm9keShr
ZXksIDAsIDApKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCShyZXZpc2lvbiAy
ODMwNDkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoSlNWYWx1ZVJlZiBmdW5jdGlv
bkNhbGxiYWNrKTsKIAogICAgIHZvaWQga2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVS
ZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKTsKKyAgICB2b2lkIHJhd0tleURvd24oSlNT
dHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbik7Cisg
ICAgdm9pZCByYXdLZXlVcChKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJh
eSwgaW50IGxvY2F0aW9uKTsKICAgICB2b2lkIHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihK
U1N0cmluZ1JlZiBrZXkpOwogCiAgICAgdm9pZCB0ZXh0Wm9vbUluKCk7CkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwJKHJldmlzaW9uIDI4MzA0
OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDggQEAg
aW50ZXJmYWNlIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIgewogICAgIHVuZGVmaW5lZCBsZWFwRm9y
d2FyZChsb25nIG1pbGxpc2Vjb25kcyk7CiAKICAgICB1bmRlZmluZWQga2V5RG93bihET01TdHJp
bmcga2V5LCBvYmplY3QgbW9kaWZpZXJBcnJheSwgbG9uZyBsb2NhdGlvbik7CisgICAgdW5kZWZp
bmVkIHJhd0tleURvd24oRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1vZGlmaWVyQXJyYXksIGxvbmcg
bG9jYXRpb24pOworICAgIHVuZGVmaW5lZCByYXdLZXlVcChET01TdHJpbmcga2V5LCBvYmplY3Qg
bW9kaWZpZXJBcnJheSwgbG9uZyBsb2NhdGlvbik7CiAgICAgdW5kZWZpbmVkIHNjaGVkdWxlQXN5
bmNocm9ub3VzS2V5RG93bihET01TdHJpbmcga2V5KTsKIAogICAgIC8vIFpvb20gZnVuY3Rpb25z
LgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRT
ZW5kZXJQcm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tCShyZXZpc2lvbiAyODMwNDkp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRl
clByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwxNCBAQCB2b2lkIEV2ZW50
U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiB7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXJQ
cm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZp
ZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5
OjpyYXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1
bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3Vz
ZVNjcm9sbEJ5KGludCB4LCBpbnQgeSkKIHsKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCShyZXZpc2lvbiAyODMwNDkp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSwxNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OmtleURvd24oV0tTdHJpbmdSCiAgICAgd2Via2l0V2ViVmlld0Jhc2VTeW50aGVzaXplS2V5RXZl
bnQodG9XZWJLaXRHTGliQVBJKG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRm
b3JtVmlldygpKSwgS2V5RXZlbnRUeXBlOjpJbnNlcnQsIGdka0tleVN5bSwgbW9kaWZpZXJzLCBT
aG91bGRUcmFuc2xhdGVLZXlib2FyZFN0YXRlOjpObyk7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXJQ
cm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZp
ZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5
OjpyYXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1
bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3Vz
ZURvd24odW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzLCBXS1N0
cmluZ1JlZiBwb2ludGVyVHlwZSkKIHsKICAgICB1bnNpZ25lZCBnZGtCdXR0b24gPSBldmVudFNl
bmRlckJ1dHRvblRvR0RLQnV0dG9uKGJ1dHRvbik7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0JKHJldmlzaW9uIDI4MzA0OSkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTg1MCw2ICs4NTAsNDE2IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihX
S1N0cmluZ1IKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOwogfQogCit2b2lkIEV2
ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZp
ZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7CisgICAgTlNTdHJpbmcqIGNo
YXJhY3RlciA9IHRvV1RGU3RyaW5nKGtleSk7CisKKyAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0
ZXIgPSBjaGFyYWN0ZXI7CisgICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7CisgICAgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIGtleUNvZGUgPSAweDdCOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJyaWdodEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
UmlnaHRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0g
MHg3QzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJv
dyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0U7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAg
ICAgICBrZXlDb2RlID0gMHg3RDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicGFnZVVwIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZVVw
RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc0OworICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7Cisg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc5OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TSG9tZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3
MzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7CisgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgIGtleUNvZGUgPSAweDc3OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
TlNJbnNlcnRGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
NzI7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJd
KSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OworICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NTsKKyAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3JlZW4iXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAg
ICAgICBrZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFsIGtleSBjb2Rl
IGZvciBQcmludFNjcmVlbi4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gMHgwNDMwOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzOyAvLyBTaGFy
ZXMga2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0LgorICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSAweEZGRTM7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNC
OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0U2hpZnQi
XSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUxOworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHgzODsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZG
RTc7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNBOworICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU0OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHgzRTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
cmlnaHRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTI7CisgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNDOworICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSAweEZGRTg7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNEOwor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgewor
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgxQjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4MzU7CisgICAgfQorCisgICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3RyaW5n
IHdpdGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAoaS5l
LiAiRjEiLC4uLiwiRjI0IikuCisgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0
aW9uLWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgorICAgIGZvciAodW5zaWduZWQgaSA9IDE7
IGkgPD0gMjQ7IGkrKykgeworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKKyAgICAgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOworICAgICAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgY2FzZSAxOiBrZXlD
b2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4OyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6
IGtleUNvZGUgPSAweDYwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNjoga2V5Q29kZSA9IDB4
NjE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0OyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgOToga2V5Q29kZSA9IDB4NjU7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29k
ZSA9IDB4NkQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAx
NDoga2V5Q29kZSA9IDB4NkI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNToga2V5Q29kZSA9
IDB4NzE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOTog
a2V5Q29kZSA9IDB4NTA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyMDoga2V5Q29kZSA9IDB4
NUE7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gRklY
TUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCisgICAgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzA7CisgICAgZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0pCisgICAgICAgIGtleUNvZGUg
PSAweDMxOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkK
KyAgICAgICAga2V5Q29kZSA9IDB4MjQ7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJcbiJdKQorICAgICAgICBrZXlDb2RlID0gMHg0QzsKKyAgICBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQorICAgICAgICBrZXlDb2RlID0gMHgz
MzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImEiXSkKKyAgICAg
ICAga2V5Q29kZSA9IDB4MDA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBCOworICAgIGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMjsKKyAgICBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkKKyAgICAgICAga2V5Q29k
ZSA9IDB4MEU7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDFi
Il0pCisgICAgICAgIGtleUNvZGUgPSAweDFCOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiOiJdKQorICAgICAgICBrZXlDb2RlID0gMHgyOTsKKyAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjsiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4
Mjk7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIsIl0pCisgICAg
ICAgIGtleUNvZGUgPSAweDJCOworCisgICAgS2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7Cisg
ICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQzLCAnKics
IG5pbH0sCisgICAgICAgIHswLCAgICAweDQ1LCAnKycsIG5pbH0sCisgICAgICAgIHswLCAgICAw
eDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIn0sCisgICAgICAgIHsweDJDLCAw
eDRCLCAnLycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDRDLCAzLCBAImVudGVyIiB9LAorICAg
ICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAorICAgICAgICB7MHgxOCwgMHg1MSwgJz0nLCBu
aWx9LAorICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBuaWx9LAorICAgICAgICB7MHgxMiwgMHg1
MywgJzEnLCBuaWx9LAorICAgICAgICB7MHgxMywgMHg1NCwgJzInLCBuaWx9LAorICAgICAgICB7
MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAorICAgICAgICB7MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAor
ICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAorICAgICAgICB7MHgxNiwgMHg1OCwgJzYn
LCBuaWx9LAorICAgICAgICB7MHgxQSwgMHg1OSwgJzcnLCBuaWx9LAorICAgICAgICB7MHgxQywg
MHg1QiwgJzgnLCBuaWx9LAorICAgICAgICB7MHgxOSwgMHg1QywgJzknLCBuaWx9LAorICAgIH07
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyAr
K2kpIHsKKyAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07Cisg
ICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVyU3Ry
aW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1l
XSkgeworICAgICAgICAgICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypET01fS0VZX0xPQ0FU
SU9OX05VTVBBRCovKQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNOdW1w
YWRLZXlDb2RlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0
YWJsZVtpXS5tYWNLZXlDb2RlOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBjdXJyZW50
Q2hhcmFjdGVyU3RyaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gZXZlbnRDaGFyYWN0
ZXI7CisKKyAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7CisKKyAgICBpZiAoW2NoYXJhY3RlciBs
ZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBb
Y2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7CisgICAgICAgIG1vZGlmaWVy
RmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworICAgICAgICBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107CisgICAgfQorCisg
ICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKTsKKworICAg
IGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKKyAg
ICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKKwor
ICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlw
ZUtleURvd24KKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAgICAgbW9k
aWZpZXJGbGFnczptb2RpZmllckZsYWdzCisgICAgICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVG
b3JFdmVudFRpbWUoY3VycmVudEV2ZW50VGltZSgpKQorICAgICAgICB3aW5kb3dOdW1iZXI6W21f
dGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVt
YmVyXQorICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0K
KyAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgorICAgICAgICBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgIGlzQVJl
cGVhdDpOTworICAgICAgICBrZXlDb2RlOmtleUNvZGVdOworCisgICAgW05TQXBwIF9zZXRDdXJy
ZW50RXZlbnQ6ZXZlbnRdOworICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1XaW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5RG93bjpldmVudF07CisgICAgW05T
QXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojpy
YXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNp
Z25lZCBrZXlMb2NhdGlvbikKK3sKKyAgICBOU1N0cmluZyogY2hhcmFjdGVyID0gdG9XVEZTdHJp
bmcoa2V5KTsKKworICAgIE5TU3RyaW5nICpldmVudENoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAg
ICB1bnNpZ25lZCBzaG9ydCBrZXlDb2RlID0gMDsKKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNM
ZWZ0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
N0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJy
b3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25L
ZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdDOworICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAg
ICAgICBrZXlDb2RlID0gMHg3RTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiZG93bkFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93
bkFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdE
OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKKyAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzQ7CisgICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VEb3duIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TUGFnZURvd25GdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5
Q29kZSA9IDB4Nzk7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImhvbWUiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDczOworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29k
ZSA9IDB4Nzc7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImlu
c2VydCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5
OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3MjsKKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsKKyAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDc1OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJwcmludFNjcmVlbiJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50
U2NyZWVuRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDA7
IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxs
TGV0dGVyQSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24g
UnVzc2lhbiBsYXlvdXQuCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImxlZnRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSAweEZGRTE7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAw
eDM4OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4M0E7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSAweEZGRTQ7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNFOworICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4M0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAInJpZ2h0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKKyAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0Q7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSAweDFCOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzNTsKKyAg
ICB9CisKKyAgICAvLyBDb21wYXJlIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24t
a2V5IG5hbWVzIGRlZmluZWQgYnkgdGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4K
KyAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBp
dHMga2V5IGNvZGUuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7Cisg
ICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIkYldSIsIGldXSkgeworICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
RjFGdW5jdGlvbktleSArIChpIC0gMSk7CisgICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICAgICAg
c3dpdGNoIChpKSB7CisgICAgICAgICAgICBjYXNlIDE6IGtleUNvZGUgPSAweDdBOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMjoga2V5Q29kZSA9IDB4Nzg7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAzOiBrZXlDb2RlID0gMHg2MzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6IGtleUNv
ZGUgPSAweDc2OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNToga2V5Q29kZSA9IDB4NjA7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDc6IGtleUNvZGUgPSAweDYyOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgODog
a2V5Q29kZSA9IDB4NjQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2
NTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDExOiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEzOiBrZXlD
b2RlID0gMHg2OTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE0OiBrZXlDb2RlID0gMHg2Qjsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIDE2OiBrZXlDb2RlID0gMHg2QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDE3OiBrZXlDb2RlID0gMHg0MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2Rl
ID0gMHg0RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDIwOiBrZXlDb2RlID0gMHg1QTsgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBz
ZXQgZm9yIG1vc3Qga2V5cy4KKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJc
dCJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAIiAiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzE7CisgICAgZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcciJdKQorICAgICAgICBrZXlDb2RlID0g
MHgyNDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCisg
ICAgICAgIGtleUNvZGUgPSAweDRDOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiXHg4Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMzOworICAgIGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMDsK
KyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkKKyAgICAgICAg
a2V5Q29kZSA9IDB4MEI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJkIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAyOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiZSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwRTsKKyAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4MWIiXSkKKyAgICAgICAga2V5Q29k
ZSA9IDB4MUI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI6Il0p
CisgICAgICAgIGtleUNvZGUgPSAweDI5OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiOyJdKQorICAgICAgICBrZXlDb2RlID0gMHgyOTsKKyAgICBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiwiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MkI7
CisKKyAgICBLZXlNYXBwaW5nRW50cnkgdGFibGVbXSA9IHsKKyAgICAgICAgezB4MkYsIDB4NDEs
ICcuJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NDMsICcqJywgbmlsfSwKKyAgICAgICAgezAs
ICAgIDB4NDUsICcrJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVu
Y3Rpb25LZXksIEAiY2xlYXIifSwKKyAgICAgICAgezB4MkMsIDB4NEIsICcvJywgbmlsfSwKKyAg
ICAgICAgezAsICAgIDB4NEMsIDMsIEAiZW50ZXIiIH0sCisgICAgICAgIHsweDFCLCAweDRFLCAn
LScsIG5pbH0sCisgICAgICAgIHsweDE4LCAweDUxLCAnPScsIG5pbH0sCisgICAgICAgIHsweDFE
LCAweDUyLCAnMCcsIG5pbH0sCisgICAgICAgIHsweDEyLCAweDUzLCAnMScsIG5pbH0sCisgICAg
ICAgIHsweDEzLCAweDU0LCAnMicsIG5pbH0sCisgICAgICAgIHsweDE0LCAweDU1LCAnMycsIG5p
bH0sCisgICAgICAgIHsweDE1LCAweDU2LCAnNCcsIG5pbH0sCisgICAgICAgIHsweDE3LCAweDU3
LCAnNScsIG5pbH0sCisgICAgICAgIHsweDE2LCAweDU4LCAnNicsIG5pbH0sCisgICAgICAgIHsw
eDFBLCAweDU5LCAnNycsIG5pbH0sCisgICAgICAgIHsweDFDLCAweDVCLCAnOCcsIG5pbH0sCisg
ICAgICAgIHsweDE5LCAweDVDLCAnOScsIG5pbH0sCisgICAgfTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSCh0YWJsZSk7ICsraSkgeworICAgICAgICBOU1N0
cmluZyogY3VycmVudENoYXJhY3RlclN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomdGFibGVbaV0uY2hhcmFjdGVyIGxlbmd0aDoxXTsKKyAgICAgICAgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOmN1cnJlbnRDaGFyYWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOnRhYmxlW2ldLmNoYXJhY3Rlck5hbWVdKSB7CisgICAgICAgICAgICBp
ZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisgICAg
ICAgICAgICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY051bXBhZEtleUNvZGU7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7
CisgICAgICAgICAgICBldmVudENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmc7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIE5TU3RyaW5nICpjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBldmVudENoYXJhY3RlcjsKKworICAgIGludCBtb2Rp
ZmllckZsYWdzID0gMDsKKworICAgIGlmIChbY2hhcmFjdGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hh
cmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPj0gJ0EnICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVy
QXRJbmRleDowXSA8PSAnWicpIHsKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9k
aWZpZXJGbGFnU2hpZnQ7CisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtj
aGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICB9CisKKyAgICBtb2RpZmllckZsYWdzIHw9
IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpOworCisgICAgaWYgKGtleUxvY2F0aW9uID09
IDB4MDMgLypET01fS0VZX0xPQ0FUSU9OX05VTVBBRCovKQorICAgICAgICBtb2RpZmllckZsYWdz
IHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworCisgICAgTlNFdmVudCAqZXZlbnQg
PSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKKyAgICAgICAgbG9j
YXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZs
YWdzCisgICAgICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVudEV2
ZW50VGltZSgpKQorICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5X
ZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQorICAgICAgICBjb250ZXh0
OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFjdGVyczpl
dmVudENoYXJhY3RlcgorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlD
b2RlOmtleUNvZGVdOworCisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOworICAg
IFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSBmaXJz
dFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnRdOworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5p
bF07Cit9CisKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3JvbGxCeShpbnQgeCwgaW50
IHkpCiB7CiAgICAgYXV0byBjZ1Njcm9sbEV2ZW50ID0gYWRvcHRDRihDR0V2ZW50Q3JlYXRlU2Ny
b2xsV2hlZWxFdmVudDIoMCwga0NHU2Nyb2xsRXZlbnRVbml0TGluZSwgMiwgeSwgeCwgMCkpOwpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94
eVdpbi5jcHAJKHJldmlzaW9uIDI4MzA0OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2lu
L0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNiArMzE0LDE0
IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICAgICAgU2V0
S2V5Ym9hcmRTdGF0ZShrZXlTdGF0ZSk7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3
S2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNp
Z25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlV
cChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBr
ZXlMb2NhdGlvbikKK3sKK30KKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIEV2ZW50
U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQoaW50LCBpbnQpCiB7CkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAkocmV2aXNp
b24gMjgzMDQ5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94
eVdQRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw2ICszMjcsMTQgQEAgdm9pZCBFdmVudFNl
bmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgIGZyZWUoZW50cmllcyk7CiB9CiAKK3Zv
aWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRN
b2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwordm9pZCBF
dmVudFNlbmRlclByb3h5OjpyYXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmll
cnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwogdm9pZCBFdmVudFNl
bmRlclByb3h5OjphZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSkKIHsKICAgICBzdHJ1Y3Qgd3Bl
X2lucHV0X3RvdWNoX2V2ZW50X3JhdyByYXdFdmVudCB7IHdwZV9pbnB1dF90b3VjaF9ldmVudF90
eXBlX2Rvd24sIHNlY1RvTXNUaW1lc3RhbXAobV90aW1lKSwgc3RhdGljX2Nhc3Q8aW50PihtX3Rv
dWNoRXZlbnRzLnNpemUoKSksIHN0YXRpY19jYXN0PGludDMyX3Q+KHgpLCBzdGF0aWNfY2FzdDxp
bnQzMl90Pih5KSB9OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjgzMDQ5KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDktMjQgIEJl
dGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPiBhbmQgRGFuYSBFc3RyYSA8ZGVzdHJhQGFwcGxl
LmNvbT4KKworICAgICAgICBtYWNPUyBrZXktZHJpdmVuIHNtb290aCBzY3JvbGxpbmcgZG9lcyBu
b3Qgc3RvcCB3aGVuIGZvY3VzIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxl
LWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
c2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbDog
QWRkZWQuCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdpbmRv
dy5VSUhlbHBlci5yYXdLZXlEb3duKToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5yYXdLZXlV
cCk6CisKIDIwMjEtMDktMjQgIEVyaWMgSHV0Y2hpc29uICA8ZWh1dGNoaXNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgWyBDYXRhbGluYSBEZWJ1ZyB3azEgRVdTIF0gc3ZnL2RvbS9TVkdBbmltYXRl
ZExpc3RQcm9wZXJ0eVRlYXJPZmYtY3Jhc2gtMi5odG1sIGlzIGEgZmxha3kgY3Jhc2guCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9h
cmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVj
dGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZv
Y3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKKworU1VDQ0VTUzogQmx1ZSBmcmFtZSBzdG9wcGVkIHNj
b2xsaW5nIGJlZm9yZSByZWQgZnJhbWUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1r
ZXlib2FyZC1zY3JvbGxpbmcuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIEV2ZW50SGFuZGxlckRy
aXZlblNtb290aEtleWJvYXJkU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxo
ZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2Fs
ZT0xLjUsIHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFJlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCByZWRP
ZmZzZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVkLWZyYW1lJykuY29udGVudERvY3Vt
ZW50LmRlZmF1bHRWaWV3LnNjcm9sbFk7CisgICAgICAgICAgICBsZXQgYmx1ZU9mZnNldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdibHVlLWZyYW1lJykuY29udGVudERvY3VtZW50LmRlZmF1
bHRWaWV3LnNjcm9sbFk7CisgICAgICAgICAgICBpZiAocmVkT2Zmc2V0ID4gMTkwMCkgeworICAg
ICAgICAgICAgICAgIGlmIChibHVlT2Zmc2V0ID4gMTkwMCkKKyAgICAgICAgICAgICAgICAgICAg
ZGVidWcoIkZBSUw6IEJsdWUgZnJhbWUgc2Nyb2xsZWQgYXMgZmFyIGFzIHRoZSByZWQgZnJhbWUu
Iik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiU1VD
Q0VTUzogQmx1ZSBmcmFtZSBzdG9wcGVkIHNjb2xsaW5nIGJlZm9yZSByZWQgZnJhbWUiKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF0ZXN0UnVubmVyLnJ1blVJU2Ny
aXB0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbGV0IGJsdWVGcmFt
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdibHVlLWZyYW1lJyk7CisgICAgICAgICAgICBs
ZXQgcmVkRnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVkLWZyYW1lJyk7CisgICAg
ICAgICAgICBsZXQgcmVkRG9jdW1lbnQgPSByZWRGcmFtZS5jb250ZW50RG9jdW1lbnQ7CisKKyAg
ICAgICAgICAgIHJlZERvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBzY3JvbGxSZWQoKTsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICBibHVlRnJhbWUuZm9jdXMoKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVy
LnJhd0tleURvd24oImRvd25BcnJvdyIpOworICAgICAgICAgICAgcmVkRnJhbWUuZm9jdXMoKTsK
KyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLnJhd0tleURvd24oImRvd25BcnJvdyIpOworICAg
ICAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAgICNwbGFjZWhvbGRlciB7Cisg
ICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiA1MDAwcHg7CisgICAgfQorICAg
IGlmcmFtZSB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46IDA7IiBv
bmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPGlmcmFtZSBpZD0iYmx1ZS1mcmFtZSIgc3JjZG9jPSI8
ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMjAwMHB4OyBiYWNrZ3JvdW5kLWNvbG9y
OiBibHVlOyc+PC9kaXY+Ij48L2lmcmFtZT4KKyAgICA8aWZyYW1lIGlkPSJyZWQtZnJhbWUiIHNy
Y2RvYz0iPGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDIwMDBweDsgYmFja2dyb3Vu
ZC1jb2xvcjogcmVkOyc+PC9kaXY+Ij48L2lmcmFtZT4KKyAgICA8ZGl2IGlkPSJwbGFjZWhvbGRl
ciI+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCShyZXZpc2lvbiAyODMwNDkpCisr
KyBMYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDQsNiArMzQ0LDMwIEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICAg
ICAgfQogICAgIH0KIAorICAgIHN0YXRpYyByYXdLZXlEb3duKGtleSwgbW9kaWZpZXJzPVtdKQor
ICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5
KCkpIHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLnJhd0tleURvd24oa2V5LCBtb2RpZmllcnMp
OworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIucmF3S2V5RG93bigiJHtrZXl9IiwgJHtK
U09OLnN0cmluZ2lmeShtb2RpZmllcnMpfSk7YCwgcmVzb2x2ZSk7CisgICAgICAgIH0pOworICAg
IH0KKworICAgIHN0YXRpYyByYXdLZXlVcChrZXksIG1vZGlmaWVycz1bXSkKKyAgICB7CisgICAg
ICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5yYXdLZXlVcChrZXksIG1vZGlmaWVycyk7CisgICAgICAgICAg
ICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
bmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlT
Y3JpcHQoYHVpQ29udHJvbGxlci5yYXdLZXlVcCgiJHtrZXl9IiwgJHtKU09OLnN0cmluZ2lmeSht
b2RpZmllcnMpfSk7YCwgcmVzb2x2ZSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIHN0YXRp
YyBrZXlEb3duKGtleSwgbW9kaWZpZXJzPVtdKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmlz
V2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkpIHsK
</data>
<flag name="commit-queue"
          id="462832"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439405</attachid>
            <date>2021-09-27 15:49:38 -0700</date>
            <delta_ts>2021-09-28 15:20:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>68291</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzE0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA5LTI3ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkgb24g
dGhlIG9sZCBGcmFtZVZpZXcgYWZ0ZXIgY2hhbmdpbmcgRnJhbWUgZm9jdXMuCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorCisgICAgICAgIENhbGwgdXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKSB3aGVuIHRoZSB3aW5kb3cgdmlzaWJpbGl0eSAvIGFjdGl2ZSBzdGF0
ZSBjaGFuZ2VzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVNj
cm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAg
ICAgICBQbHVtYmluZyB0byBnZXQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSB0
byB0aGUgU2Nyb2xsQ29udHJvbGxlciwgd2hlcmUgd2UgY2FuIHRlbGwgCisgICAgICAgIHRoZSBr
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRvIGhhbmRsZSBrZXlVcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0wOS0yNyAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGUubmFtZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgzMTQyKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksOSArMzU5
LDEyIEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRnJhbWUoRnIKICAgICBtX2Zv
Y3VzZWRGcmFtZSA9IG5ld0ZyYW1lOwogCiAgICAgLy8gTm93IHRoYXQgdGhlIGZyYW1lIGlzIHVw
ZGF0ZWQsIGZpcmUgZXZlbnRzIGFuZCB1cGRhdGUgdGhlIHNlbGVjdGlvbiBmb2N1c2VkIHN0YXRl
cyBvZiBib3RoIGZyYW1lcy4KLSAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUtPnZpZXcoKSkg
ewotICAgICAgICBvbGRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0Rm9jdXNlZChmYWxzZSk7Ci0gICAg
ICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSk7CisgICAgaWYgKG9sZEZyYW1lKSB7CisgICAgICAgIGlmIChGcmFt
ZVZpZXcqIG9sZEZyYW1lVmlldyA9IG9sZEZyYW1lLT52aWV3KCkpIHsKKyAgICAgICAgICAgIG9s
ZEZyYW1lVmlldy0+dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsKKyAgICAgICAg
ICAgIG9sZEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRGb2N1c2VkKGZhbHNlKTsKKyAgICAgICAgICAg
IG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobmV3RnJhbWUgJiYg
bmV3RnJhbWUtPnZpZXcoKSAmJiBpc0ZvY3VzZWQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CShyZXZpc2lvbiAyODMxNDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzU1LDEzICsyMzU1LDMzIEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlT
dGF0ZShPcHRpb25TZXQ8QWMKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9hY3Rpdml0eVN0
YXRlQ2hhbmdlT2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci5hY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKG9sZEFjdGl2aXR5U3RhdGUsIG1fYWN0aXZpdHlTdGF0ZSk7CiAKLSAgICBpZiAod2FzVmlz
aWJsZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkKKyAgICBpZiAod2FzVmlzaWJs
ZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkgewogICAgICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3NhcnkoKTsKKyAg
ICAgICAgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsKKyAgICB9CiAKICAgICBp
ZiAobV9wZXJmb3JtYW5jZU1vbml0b3IpCiAgICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5h
Y3Rpdml0eVN0YXRlQ2hhbmdlZChvbGRBY3Rpdml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlKTsKIH0K
IAordm9pZCBQYWdlOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSgpCit7CisgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBm
cmFtZS0+dmlldygpOworICAgICAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIGZyYW1lVmlldy0+dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3Nh
cnkoKTsKKworICAgICAgICBjb25zdCBIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj4qIHNjcm9sbGFi
bGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFyZWFzKCk7CisgICAgICAgIGlmICghc2Ny
b2xsYWJsZUFyZWFzKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChhdXRv
JiBzY3JvbGxhYmxlQXJlYSA6ICpzY3JvbGxhYmxlQXJlYXMpCisgICAgICAgICAgICBzY3JvbGxh
YmxlQXJlYS0+dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsKKyAgICB9Cit9CisK
IGJvb2wgUGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9h
Y3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgJiYgbV9hY3Rp
dml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODMxNDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtODg3LDYgKzg4Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRJc1Zpc2libGVJbnRlcm5hbChib29sKTsKICAgICB2b2lkIHNldElzVmlzdWFsbHlJZGxl
SW50ZXJuYWwoYm9vbCk7CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNz
YXJ5KCk7CisKICAgICBlbnVtIFNob3VsZEhpZ2hsaWdodE1hdGNoZXMgeyBEb05vdEhpZ2hsaWdo
dE1hdGNoZXMsIEhpZ2hsaWdodE1hdGNoZXMgfTsKICAgICBlbnVtIFNob3VsZE1hcmtNYXRjaGVz
IHsgRG9Ob3RNYXJrTWF0Y2hlcywgTWFya01hdGNoZXMgfTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAkocmV2aXNpb24gMjgzMTQyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzAsNiArMjMwLDExIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQo
Y28KICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvcjo6dXBkYXRl
U2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKQoreworICAgIG1fc2Nyb2xsQ29udHJvbGxlci51
cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSgpOworfQorCiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxh
dGZvcm1Ub3VjaEV2ZW50JikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuaAkocmV2aXNpb24gMjgzMTQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2b2lkIHVwZGF0
ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZl
bnRQaGFzZSkgeyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5jcHAJKHJldmlzaW9uIDI4MzE0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDYgKzIyNSwxMSBA
QCBib29sIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVXaGVlbEV2ZW50Rm9yCiAgICAgcmV0dXJuIGhh
bmRsZWRFdmVudDsKIH0KIAordm9pZCBTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKQoreworICAgIHNjcm9sbEFuaW1hdG9yKCkudXBkYXRlU2Nyb2xsQW5p
bWF0aW9uSWZOZWNlc3NhcnkoKTsKK30KKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBib29s
IFNjcm9sbGFibGVBcmVhOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVu
dCYgdG91Y2hFdmVudCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuaAkocmV2aXNpb24gMjgzMTQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc25hcEFmdGVyTGF5b3V0KCk7CiAgICAgdm9pZCBkb1Bvc3RUaHVtYk1vdmVT
bmFwcGluZyhTY3JvbGxiYXJPcmllbnRhdGlvbik7CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEFu
aW1hdGlvbklmTmVjZXNzYXJ5KCk7CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODMxNDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg2LDYgKzg2LDEyIEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0
b3BLZXkKICAgICBzZXRJc0FuaW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5nKGZhbHNlKTsKIH0KIAor
dm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZO
ZWNlc3NhcnkoKQoreworICAgIGlmIChtX2lzQW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmcpCisg
ICAgICAgIG1fY2xpZW50LmtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoKS0+aGFuZGxlS2V5VXBF
dmVudCgpOworfQorCiBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydEFuaW1h
dGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihGbG9hdFBvaW50IHN0YXJ0T2Zmc2V0LCBGbG9hdFBvaW50
IGRlc3RpbmF0aW9uT2Zmc2V0KQogewogICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmgJKHJldmlzaW9uIDI4MzE0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJlZ2luS2V5Ym9hcmRTY3JvbGxpbmcoKTsKICAgICB2
b2lkIHN0b3BLZXlib2FyZFNjcm9sbGluZygpOwotICAgIAorCisgICAgdm9pZCB1cGRhdGVTY3Jv
bGxBbmltYXRpb25JZk5lY2Vzc2FyeSgpOworCiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCBwZXJp
b2RpY2FsbHkgYnkgdGhlIGNsaWVudC4gU3RhcnRlZCBieSBzdGFydEFuaW1hdGlvbkNhbGxiYWNr
KCksIHN0b3BwZWQgYnkgc3RvcEFuaW1hdGlvbkNhbGxiYWNrKCkuCiAgICAgdm9pZCBhbmltYXRp
b25DYWxsYmFjayhNb25vdG9uaWNUaW1lKTsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjgzMTQyKQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDktMjcgIEJldGgg
RGFraW4gIDxiZGFraW5AYXBwbGUuY29tPiBhbmQgRGFuYSBFc3RyYSA8ZGVzdHJhQGFwcGxlLmNv
bT4KKworICAgICAgICBtYWNPUyBrZXktZHJpdmVuIHNtb290aCBzY3JvbGxpbmcgZG9lcyBub3Qg
c3RvcCB3aGVuIGZvY3VzIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyODMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIubW06CisgICAgICAgICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgaW5pdGlhbGl6ZV0pOgor
ICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGlzU2VsZWN0b3JFeGNsdWRlZEZyb21X
ZWJTY3JpcHQ6XSk6CisgICAgICAgICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgd2ViU2NyaXB0
TmFtZUZvclNlbGVjdG9yOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJh
d0tleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICgtW0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIgcmF3S2V5RG93bldyYXBwZXI6d2l0aE1vZGlmaWVyczp3aXRoTG9j
YXRpb246XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmF3S2V5VXA6d2l0
aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIgcmF3S2V5VXBXcmFwcGVyOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6Y3JlYXRlUmF3S2V5RG93bk1l
c3NhZ2VCb2R5KToKKyAgICAgICAgKFdUUjo6Y3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keSk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleURvd24pOgorICAgICAg
ICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlVcCk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmg6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQ
cm94eUlPUy5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdU
Ujo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9FdmVu
dFNlbmRlclByb3h5Lm1tOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlE
b3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwOgorICAgICAg
ICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd3Bl
L0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAp
OgorCiAyMDIxLTA5LTI3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIEJ1aWxkIGFuIHVubGlua2VkIGJhc2VsaW5lIEpJVApJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI4
MzE0MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDggQEAgKyAodm9pZClpbml0aWFsaXpl
CiAgICAgICAgIEAiZm9jdXMiLAogICAgICAgICBAImlucHV0IiwKICAgICAgICAgQCJrZXlkb3du
IiwKKyAgICAgICAgQCJyYXdrZXlkb3duIiwKKyAgICAgICAgQCJyYXdrZXl1cCIsCiAgICAgICAg
IEAia2V5cHJlc3MiLAogICAgICAgICBAImtleXVwIiwKICAgICAgICAgQCJsb2FkIiwKQEAgLTI0
NSw2ICsyNDcsOCBAQCArIChCT09MKWlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6CiAg
ICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGVuYWJsZURPTVVJRXZlbnRMb2dn
aW5nOikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoZmlyZUtleWJvYXJk
RXZlbnRzVG9FbGVtZW50OikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
a2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopCisgICAgICAgICAgICB8fCBhU2Vs
ZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246
KQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihyYXdLZXlVcDp3aXRoTW9k
aWZpZXJzOndpdGhMb2NhdGlvbjopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVj
dG9yKGxlYXBGb3J3YXJkOikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
bW91c2VEb3duOndpdGhNb2RpZmllcnM6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBz
ZWxlY3Rvcihtb3VzZU1vdmVUb1g6WTopCkBAIC0zMDYsNiArMzEwLDEwIEBAICsgKE5TU3RyaW5n
ICopd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOigKICAgICAgICAgcmV0dXJuIEAiZmlyZUtleWJv
YXJkRXZlbnRzVG9FbGVtZW50IjsKICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihrZXlE
b3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikpCiAgICAgICAgIHJldHVybiBAImtleURv
d24iOworICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tleURvd246d2l0aE1vZGlm
aWVyczp3aXRoTG9jYXRpb246KSkKKyAgICAgICAgcmV0dXJuIEAicmF3S2V5RG93biI7CisgICAg
aWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IocmF3S2V5VXA6d2l0aE1vZGlmaWVyczp3aXRoTG9j
YXRpb246KSkKKyAgICAgICAgcmV0dXJuIEAicmF3S2V5VXAiOwogICAgIGlmIChhU2VsZWN0b3Ig
PT0gQHNlbGVjdG9yKHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bjp3aXRoTW9kaWZpZXJzOndp
dGhMb2NhdGlvbjopKQogICAgICAgICByZXR1cm4gQCJzY2hlZHVsZUFzeW5jaHJvbm91c0tleURv
d24iOwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGxlYXBGb3J3YXJkOikpCkBAIC0x
MjA5LDYgKzEyMTcsNDM4IEBAIC0gKHZvaWQpa2V5RG93bldyYXBwZXI6KE5TU3RyaW5nICopY2hh
cmEKICAgICBbc2VsZiBrZXlEb3duOmNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOm1vZGlmaWVycyB3
aXRoTG9jYXRpb246bG9jYXRpb25dOwogfQogCistICh2b2lkKXJhd0tleURvd246KE5TU3RyaW5n
ICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3
aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sKKyAgICBOU1N0cmluZyAqZXZl
bnRDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7
CisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdCOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBr
ZXlDb2RlID0gMHg3QzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAidXBBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5j
dGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0U7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHg3RDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAicGFnZVVwIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TUGFnZVVwRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAw
eDc0OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93
biJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc5OworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IE5TSG9tZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHg3MzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ZW5kIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc3OworICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNJbnNlcnRGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5
Q29kZSA9IDB4NzI7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImRlbGV0ZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9u
S2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NTsKKyAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4MUI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAw
eDM1OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNj
cmVlbiJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rp
b25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlz
IG5vIGtub3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgorICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7CisgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAg
ICAgIGtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlv
dXQuCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250
cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSAweEZGRTE7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM4OworICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5
Q29kZSA9IDB4M0E7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InJpZ2h0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNFOworICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IDB4RkZFMjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
M0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4M0Q7CisgICAgfQorCisgICAgLy8gQ29tcGFyZSB0aGUgaW5w
dXQgc3RyaW5nIHdpdGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00g
c3BlYyAoaS5lLiAiRjEiLC4uLiwiRjI0IikuCisgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBp
cyBhIGZ1bmN0aW9uLWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPD0gMjQ7IGkrKykgeworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKKyAgICAg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOworICAg
ICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgY2Fz
ZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUg
PSAweDc4OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNjoga2V5
Q29kZSA9IDB4NjE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2Mjsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0OyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4NjU7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAx
MDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9
IDB4Njc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAxNDoga2V5Q29kZSA9IDB4NkI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNTog
a2V5Q29kZSA9IDB4NzE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4
NkE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyMDoga2V5
Q29kZSA9IDB4NUE7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCisgICAgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzA7
CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0pCisgICAgICAg
IGtleUNvZGUgPSAweDMxOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiXHIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MjQ7CisgICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQorICAgICAgICBrZXlDb2RlID0gMHg0QzsKKyAgICBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQorICAgICAgICBrZXlD
b2RlID0gMHgzMzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImEi
XSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBCOworICAgIGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQorICAgICAgICBrZXlDb2RlID0gMHgw
MjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkKKyAgICAg
ICAga2V5Q29kZSA9IDB4MEU7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJceDFiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDFCOworCisgICAgS2V5TWFwcGluZ0Vu
dHJ5IHRhYmxlW10gPSB7CisgICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5pbH0sCisgICAgICAg
IHswLCAgICAweDQzLCAnKicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ1LCAnKycsIG5pbH0s
CisgICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIn0s
CisgICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDRDLCAz
LCBAImVudGVyIiB9LAorICAgICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAorICAgICAgICB7
MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAorICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBuaWx9LAor
ICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAorICAgICAgICB7MHgxMywgMHg1NCwgJzIn
LCBuaWx9LAorICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAorICAgICAgICB7MHgxNSwg
MHg1NiwgJzQnLCBuaWx9LAorICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAorICAgICAg
ICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAorICAgICAgICB7MHgxQSwgMHg1OSwgJzcnLCBuaWx9
LAorICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAorICAgICAgICB7MHgxOSwgMHg1Qywg
JzknLCBuaWx9LAorICAgIH07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJB
WV9MRU5HVEgodGFibGUpOyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFyYWN0
ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNoYXJh
Y3RlciBsZW5ndGg6MV07CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpj
dXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0YWJs
ZVtpXS5jaGFyYWN0ZXJOYW1lXSkgeworICAgICAgICAgICAgaWYgKGxvY2F0aW9uID09IERPTV9L
RVlfTE9DQVRJT05fTlVNUEFEKQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5t
YWNOdW1wYWRLZXlDb2RlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGtleUNv
ZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBj
dXJyZW50Q2hhcmFjdGVyU3RyaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gZXZlbnRD
aGFyYWN0ZXI7CisKKyAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7CisKKyAgICBpZiAoW2NoYXJh
Y3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdB
JyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7CisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVy
RmxhZ1NoaWZ0OworI2Vsc2UKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBXZWJFdmVudEZsYWdN
YXNrTGVmdFNoaWZ0S2V5OworI2VuZGlmCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICB9CisKKyAgICBtb2RpZmll
ckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpOworCisgICAgaWYgKGxvY2F0
aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQorICAgICAgICBtb2RpZmllckZsYWdzIHw9
IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworCisgICAgW1tbbWFpbkZyYW1lIGZyYW1l
Vmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOworCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5T
RXZlbnRUeXBlS2V5RG93bgorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAg
ICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgdGltZXN0YW1wOltzZWxm
IGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdpbmRvd051bWJlcjpbW1ttYWluRnJhbWUgd2Vi
Vmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3ND
b250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVy
CisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnMKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6a2V5Q29kZV0p
OworI2Vsc2UKKyAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0
V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRF
dmVudFRpbWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50Rmxh
Z3MpbW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5h
Z2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJL
ZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworI2VuZGlmCisK
KyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpl
dmVudC5nZXQoKV07CisjZW5kaWYKKyAgICBbW1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10g
Zmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnQuZ2V0KCldOworI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CisjZW5kaWYKK30KKwor
LSAodm9pZClyYXdLZXlEb3duV3JhcHBlcjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlm
aWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQg
bG9uZylsb2NhdGlvbgoreworICAgIFtzZWxmIHJhd0tleURvd246Y2hhcmFjdGVyIHdpdGhNb2Rp
ZmllcnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07Cit9CisKKy0gKHZvaWQpcmF3
S2V5VXA6KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVj
dCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sKKyAg
ICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgdW5zaWduZWQgc2hv
cnQga2V5Q29kZSA9IDA7CisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVm
dEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rp
b25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdCOworICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFycm93Il0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHg3QzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSBOU1VwQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4N0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25B
cnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9u
S2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3RDsKKyAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZVVwIl0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IE5TUGFnZVVwRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAg
ICAgIGtleUNvZGUgPSAweDc0OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJwYWdlRG93biJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VE
b3duRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc5Owor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSG9tZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBrZXlDb2RlID0gMHg3MzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5k
RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc3OworICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNJbnNlcnRGdW5jdGlvbktleTsKKyAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzI7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U0RlbGV0ZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3
NTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7CisgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAg
ICAgIGtleUNvZGUgPSAweDM1OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJwcmludFNjcmVlbiJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1By
aW50U2NyZWVuRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAw
eDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVu
LgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1Nt
YWxsTGV0dGVyQSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7CisgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIg
b24gUnVzc2lhbiBsYXlvdXQuCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImxlZnRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZF
MzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUg
PSAweDM4OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0
QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKKyAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0E7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSAweEZGRTQ7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNFOworICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4M0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAInJpZ2h0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0Q7CisgICAgfQorCisgICAgLy8g
Q29tcGFyZSB0aGUgaW5wdXQgc3RyaW5nIHdpdGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZp
bmVkIGJ5IHRoZSBET00gc3BlYyAoaS5lLiAiRjEiLC4uLiwiRjI0IikuCisgICAgLy8gSWYgdGhl
IGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0aW9uLWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgor
ICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gMjQ7IGkrKykgeworICAgICAgICBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUi
LCBpXV0pIHsKKyAgICAgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkg
KyAoaSAtIDEpOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaSkgewor
ICAgICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDI6IGtleUNvZGUgPSAweDc4OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoga2V5Q29k
ZSA9IDB4NjM7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OiBr
ZXlDb2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4NjU7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMjoga2V5Q29k
ZSA9IDB4NkY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29kZSA9IDB4NkI7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAxNToga2V5Q29kZSA9IDB4NzE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAx
Njoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9
IDB4NDA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAyMDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtl
eXMuCisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKKyAgICAgICAg
a2V5Q29kZSA9IDB4MzA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCIgIl0pCisgICAgICAgIGtleUNvZGUgPSAweDMxOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MjQ7CisgICAgZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQorICAgICAgICBrZXlDb2Rl
ID0gMHg0QzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJd
KQorICAgICAgICBrZXlDb2RlID0gMHgzMzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImEiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDA7CisgICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBC
OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQorICAgICAg
ICBrZXlDb2RlID0gMHgwMjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImUiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEU7CisgICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJceDFiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDFCOworCisg
ICAgS2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7CisgICAgICAgIHsweDJGLCAweDQxLCAnLics
IG5pbH0sCisgICAgICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0sCisgICAgICAgIHswLCAgICAw
eDQ1LCAnKycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9u
S2V5LCBAImNsZWFyIn0sCisgICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCisgICAgICAg
IHswLCAgICAweDRDLCAzLCBAImVudGVyIiB9LAorICAgICAgICB7MHgxQiwgMHg0RSwgJy0nLCBu
aWx9LAorICAgICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAorICAgICAgICB7MHgxRCwgMHg1
MiwgJzAnLCBuaWx9LAorICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAorICAgICAgICB7
MHgxMywgMHg1NCwgJzInLCBuaWx9LAorICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAor
ICAgICAgICB7MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAorICAgICAgICB7MHgxNywgMHg1NywgJzUn
LCBuaWx9LAorICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAorICAgICAgICB7MHgxQSwg
MHg1OSwgJzcnLCBuaWx9LAorICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAorICAgICAg
ICB7MHgxOSwgMHg1QywgJzknLCBuaWx9LAorICAgIH07CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcq
IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JnRhYmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgeworICAgICAgICAgICAgaWYgKGxv
Y2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQorICAgICAgICAgICAgICAgIGtleUNv
ZGUgPSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlDb2RlOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOworICAgICAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzID0gZXZlbnRDaGFyYWN0ZXI7CisKKyAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7CisK
KyAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJB
dEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1on
KSB7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0g
TlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworI2Vsc2UKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8
PSBXZWJFdmVudEZsYWdNYXNrTGVmdFNoaWZ0S2V5OworI2VuZGlmCisgICAgICAgIGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICB9
CisKKyAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpOwor
CisgICAgaWYgKGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQorICAgICAgICBt
b2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworCisgICAgW1tb
bWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOworCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlF
dmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9p
bnQoNSwgNSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCisgICAgICAgIHRp
bWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQorICAgICAgICB3aW5kb3dOdW1iZXI6W1tb
bWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gd2luZG93TnVtYmVyXQorICAgICAgICBjb250ZXh0
OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFjdGVyczpl
dmVudENoYXJhY3RlcgorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlD
b2RlOmtleUNvZGVdKTsKKyNlbHNlCisgICAgYXV0byBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVu
dCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6W3Nl
bGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczoo
V2ViRXZlbnRGbGFncyltb2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdp
dGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRl
eDowXSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7
CisjZW5kaWYKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3Vy
cmVudEV2ZW50OmV2ZW50LmdldCgpXTsKKyNlbmRpZgorICAgIFtbW1ttYWluRnJhbWUgd2ViVmll
d10gd2luZG93XSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnQuZ2V0KCldOworI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CisjZW5k
aWYKK30KKworLSAodm9pZClyYXdLZXlVcFdyYXBwZXI6KE5TU3RyaW5nICopY2hhcmFjdGVyIHdp
dGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVu
c2lnbmVkIGxvbmcpbG9jYXRpb24KK3sKKyAgICBbc2VsZiByYXdLZXlVcDpjaGFyYWN0ZXIgd2l0
aE1vZGlmaWVyczptb2RpZmllcnMgd2l0aExvY2F0aW9uOmxvY2F0aW9uXTsKK30KKwogLSAodm9p
ZClzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhN
b2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2ln
bmVkIGxvbmcpbG9jYXRpb24KIHsKICAgICBOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSBbTlNJ
bnZvY2F0aW9uIGludm9jYXRpb25XaXRoTWV0aG9kU2lnbmF0dXJlOltFdmVudFNlbmRpbmdDb250
cm9sbGVyIGluc3RhbmNlTWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6QHNlbGVjdG9yKGtleURv
d25XcmFwcGVyOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOildXTsKSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCShyZXZpc2lvbiAyODMxNDIpCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsZWFwRm9yd2FyZChpbnQgbWlsbGlz
ZWNvbmRzKTsKIAogICAgIHZvaWQga2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2Rp
ZmllcnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsKKyAgICB2b2lkIHJhd0tleURvd24oV0tTdHJpbmdS
ZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CisgICAgdm9pZCBy
YXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0
aW9uKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHVuc2lnbmVkIG1vdXNlQnV0dG9uc0N1
cnJlbnRseURvd24oKSBjb25zdCB7IHJldHVybiBtX21vdXNlQnV0dG9uc0N1cnJlbnRseURvd247
IH0KQEAgLTEwNCw2ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQ2xpY2tDb3Vu
dEZvckJ1dHRvbihpbnQgYnV0dG9uKTsKIAogICAgIHZvaWQgc2VuZE1vdXNlRG93blRvU3RhcnRQ
cmVzc3VyZUV2ZW50cygpOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBjbGFzcyBQ
cmVzc3VyZUNoYW5nZURpcmVjdGlvbiB7IEluY3JlYXNpbmcsIERlY3JlYXNpbmcgfTsKICAgICBS
ZXRhaW5QdHI8TlNFdmVudD4gYmVnaW5QcmVzc3VyZUV2ZW50KGludCBzdGFnZSk7CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgzMTQy
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1OTYsNiArMTU5NiwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNl
aXZlS2V5RG93bk1lCiAgICAgbV9ldmVudFNlbmRlclByb3h5LT5rZXlEb3duKHN0cmluZ1ZhbHVl
KGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIp
LCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7CiB9CiAKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShX
S0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2
ZW50U2VuZGVyUHJveHktPnJhd0tleURvd24oc3RyaW5nVmFsdWUoZGljdGlvbmFyeSwgIktleSIp
LCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiksIHVpbnQ2NFZhbHVlKGRpY3Rp
b25hcnksICJMb2NhdGlvbiIpKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2
ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlv
bmFyeSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tl
eVVwKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlvbmFy
eSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7Cit9
CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVMaXZlRG9jdW1lbnRzTGlzdChXS0Fy
cmF5UmVmIGxpdmVEb2N1bWVudExpc3QpCiB7CiAgICAgYXV0byBudW1Eb2N1bWVudHMgPSBXS0Fy
cmF5R2V0U2l6ZShsaXZlRG9jdW1lbnRMaXN0KTsKQEAgLTE2NTMsNiArMTY2MywxNiBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZyCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhz
dWJNZXNzYWdlTmFtZSwgIlJhd0tleURvd24iKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJh
d0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKGRpY3Rpb25hcnksIGZhbHNlKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5VXAiKSkgeworICAgICAgICAg
ICAgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5
LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlU2Nyb2xs
QnkiKSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3VzZVNjcm9sbEJ5KGRv
dWJsZVZhbHVlKGRpY3Rpb25hcnksICJYIiksIGRvdWJsZVZhbHVlKGRpY3Rpb25hcnksICJZIikp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTcwMiw2ICsxNzIyLDE2IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm8KICAgICAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5RG93biIpKSB7CisgICAg
ICAgICAgICBkaWRSZWNlaXZlUmF3S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoZGlj
dGlvbmFyeSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVs
bHB0cik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tleVVwIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2Vp
dmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoZGljdGlvbmFyeSwgdHJ1ZSk7Cisg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIH0K
KwogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFt
ZSwgIk1vdXNlRG93biIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNl
RG93bih1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiQnV0dG9uIiksIHVpbnQ2NFZhbHVlKGRpY3Rp
b25hcnksICJNb2RpZmllcnMiKSwgc3RyaW5nVmFsdWUoZGljdGlvbmFyeSwgIlBvaW50ZXJUeXBl
IikpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjgzMTQy
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NDAsNiArNDQwLDggQEAgcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1R5cGVS
ZWY+IGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSgpOwogCiAgICAgdm9p
ZCBkaWRSZWNlaXZlS2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5
UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7CisgICAgdm9pZCBk
aWRSZWNlaXZlUmF3S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5
UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7CisgICAgdm9pZCBk
aWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLRGljdGlvbmFyeVJl
ZiBtZXNzYWdlQm9keURpY3Rpb25hcnksIGJvb2wgc3luY2hyb25vdXMpOwogCiAgICAgLy8gV0tD
b250ZXh0Q2xpZW50CiAgICAgc3RhdGljIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRDcmFzaChXS0Nv
bnRleHRSZWYsIGNvbnN0IHZvaWQqKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMjgzMTQyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAx
LDExICszMDEsNDEgQEAgc3RhdGljIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZQog
ICAgIHJldHVybiBib2R5OwogfQogCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlv
bmFyeVJlZj4gY3JlYXRlUmF3S2V5RG93bk1lc3NhZ2VCb2R5KEpTU3RyaW5nUmVmIGtleSwgV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGludCBsb2NhdGlvbikKK3sKKyAgICBhdXRvIGJvZHkg
PSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisgICAgc2V0VmFsdWUoYm9k
eSwgIlN1Yk1lc3NhZ2UiLCAiUmF3S2V5RG93biIpOworICAgIHNldFZhbHVlKGJvZHksICJLZXki
LCBrZXkpOworICAgIHNldFZhbHVlKGJvZHksICJNb2RpZmllcnMiLCBhZG9wdFdLKFdLVUludDY0
Q3JlYXRlKG1vZGlmaWVycykpKTsKKyAgICBzZXRWYWx1ZShib2R5LCAiTG9jYXRpb24iLCBhZG9w
dFdLKFdLVUludDY0Q3JlYXRlKGxvY2F0aW9uKSkpOworICAgIHJldHVybiBib2R5OworfQorCitz
dGF0aWMgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRlUmF3S2V5VXBN
ZXNzYWdlQm9keShKU1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBp
bnQgbG9jYXRpb24pCit7CisgICAgYXV0byBib2R5ID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9u
YXJ5Q3JlYXRlKCkpOworICAgIHNldFZhbHVlKGJvZHksICJTdWJNZXNzYWdlIiwgIlJhd0tleVVw
Iik7CisgICAgc2V0VmFsdWUoYm9keSwgIktleSIsIGtleSk7CisgICAgc2V0VmFsdWUoYm9keSwg
Ik1vZGlmaWVycyIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobW9kaWZpZXJzKSkpOworICAgIHNl
dFZhbHVlKGJvZHksICJMb2NhdGlvbiIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobG9jYXRpb24p
KSk7CisgICAgcmV0dXJuIGJvZHk7Cit9CisKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6
a2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxv
Y2F0aW9uKQogewogICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIs
IGNyZWF0ZUtleURvd25NZXNzYWdlQm9keShrZXksIHBhcnNlTW9kaWZpZXJBcnJheShtb2RpZmll
ckFycmF5KSwgbG9jYXRpb24pKTsKIH0KIAordm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpy
YXdLZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQg
bG9jYXRpb24pCit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoIkV2ZW50U2VuZGVy
IiwgY3JlYXRlUmF3S2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgcGFyc2VNb2RpZmllckFycmF5KG1v
ZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOworfQorCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xs
ZXI6OnJhd0tleVVwKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBp
bnQgbG9jYXRpb24pCit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoIkV2ZW50U2Vu
ZGVyIiwgY3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keShrZXksIHBhcnNlTW9kaWZpZXJBcnJheSht
b2RpZmllckFycmF5KSwgbG9jYXRpb24pKTsKK30KKwogdm9pZCBFdmVudFNlbmRpbmdDb250cm9s
bGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oSlNTdHJpbmdSZWYga2V5KQogewogICAg
IHBvc3RQYWdlTWVzc2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHko
a2V5LCAwLCAwKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkocmV2aXNpb24g
MjgzMTQyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNl
bmRpbmdDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDggQEAgcHVibGlj
OgogICAgIHZvaWQgY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rp
b25DYWxsYmFjayk7CiAKICAgICB2b2lkIGtleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVl
UmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlEb3duKEpT
U3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pOwor
ICAgIHZvaWQgcmF3S2V5VXAoSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJy
YXksIGludCBsb2NhdGlvbik7CiAgICAgdm9pZCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24o
SlNTdHJpbmdSZWYga2V5KTsKIAogICAgIHZvaWQgdGV4dFpvb21JbigpOwpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiAyODMx
NDIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBA
IGludGVyZmFjZSBFdmVudFNlbmRpbmdDb250cm9sbGVyIHsKICAgICB1bmRlZmluZWQgbGVhcEZv
cndhcmQobG9uZyBtaWxsaXNlY29uZHMpOwogCiAgICAgdW5kZWZpbmVkIGtleURvd24oRE9NU3Ry
aW5nIGtleSwgb2JqZWN0IG1vZGlmaWVyQXJyYXksIGxvbmcgbG9jYXRpb24pOworICAgIHVuZGVm
aW5lZCByYXdLZXlEb3duKERPTVN0cmluZyBrZXksIG9iamVjdCBtb2RpZmllckFycmF5LCBsb25n
IGxvY2F0aW9uKTsKKyAgICB1bmRlZmluZWQgcmF3S2V5VXAoRE9NU3RyaW5nIGtleSwgb2JqZWN0
IG1vZGlmaWVyQXJyYXksIGxvbmcgbG9jYXRpb24pOwogICAgIHVuZGVmaW5lZCBzY2hlZHVsZUFz
eW5jaHJvbm91c0tleURvd24oRE9NU3RyaW5nIGtleSk7CiAKICAgICAvLyBab29tIGZ1bmN0aW9u
cy4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50
U2VuZGVyUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQkocmV2aXNpb24gMjgzMTQy
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5k
ZXJQcm94eUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksMTQgQEAgdm9pZCBFdmVu
dFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogewogfQogCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlm
aWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywg
dW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91
c2VTY3JvbGxCeShpbnQgeCwgaW50IHkpCiB7CiB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAkocmV2aXNpb24gMjgzMTQy
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUsMTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5
OjprZXlEb3duKFdLU3RyaW5nUgogICAgIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZUtleUV2
ZW50KHRvV2ViS2l0R0xpYkFQSShtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0
Zm9ybVZpZXcoKSksIEtleUV2ZW50VHlwZTo6SW5zZXJ0LCBnZGtLZXlTeW0sIG1vZGlmaWVycywg
U2hvdWxkVHJhbnNsYXRlS2V5Ym9hcmRTdGF0ZTo6Tm8pOwogfQogCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlm
aWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywg
dW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91
c2VEb3duKHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVudE1vZGlmaWVycyB3a01vZGlmaWVycywgV0tT
dHJpbmdSZWYgcG9pbnRlclR5cGUpCiB7CiAgICAgdW5zaWduZWQgZ2RrQnV0dG9uID0gZXZlbnRT
ZW5kZXJCdXR0b25Ub0dES0J1dHRvbihidXR0b24pOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCShyZXZpc2lvbiAyODMxNDIpCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC04NTAsNiArODUwLDQxNiBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24o
V0tTdHJpbmdSCiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKIH0KIAordm9pZCBF
dmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlm
aWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworICAgIE5TU3RyaW5nKiBj
aGFyYWN0ZXIgPSB0b1dURlN0cmluZyhrZXkpOworCisgICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFj
dGVyID0gY2hhcmFjdGVyOworICAgIHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOworICAgIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHg3QjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAicmlnaHRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U1JpZ2h0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4N0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJy
b3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdFOworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgeworICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAga2V5Q29kZSA9IDB4N0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAInBhZ2VVcCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VV
cEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NDsKKyAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgewor
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3OTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaG9tZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSBOU0hvbWVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
NzM7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiaW5zZXJ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TSW5zZXJ0RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAw
eDcyOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUi
XSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKKyAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzU7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInByaW50U2NyZWVuIl0pIHsKKyAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAga2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29k
ZSBmb3IgUHJpbnRTY3JlZW4uCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImN5cmlsbGljU21hbGxMZXR0ZXJBIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IDB4MDQzMDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hh
cmVzIGtleSB3aXRoICJGIiBvbiBSdXNzaWFuIGxheW91dC4KKyAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gMHhGRkUzOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgz
QjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMTsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4Mzg7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImxlZnRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhG
RkU3OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQTsKKyAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5
Q29kZSA9IDB4M0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InJpZ2h0U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOworICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQzsKKyAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gMHhGRkU4OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRDsK
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDM1OworICAgIH0KKworICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmlu
ZyB3aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGku
ZS4gIkYxIiwuLi4sIkYyNCIpLgorICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5j
dGlvbi1rZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAx
OyBpIDw9IDI0OyBpKyspIHsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7CisgICAgICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKKyAgICAgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgMToga2V5
Q29kZSA9IDB4N0E7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3ODsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA1
OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDY6IGtleUNvZGUgPSAw
eDYxOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNzoga2V5Q29kZSA9IDB4NjI7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDk6IGtleUNvZGUgPSAweDY1OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTA6IGtleUNv
ZGUgPSAweDZEOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgMTM6IGtleUNvZGUgPSAweDY5OyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
MTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUg
PSAweDcxOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAweDZBOyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTk6
IGtleUNvZGUgPSAweDUwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAw
eDVBOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJ
WE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlzLgorICAgIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMwOworICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiICJdKQorICAgICAgICBrZXlDb2Rl
ID0gMHgzMTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0p
CisgICAgICAgIGtleUNvZGUgPSAweDI0OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiXG4iXSkKKyAgICAgICAga2V5Q29kZSA9IDB4NEM7CisgICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4
MzM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCisgICAg
ICAgIGtleUNvZGUgPSAweDAwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiYiJdKQorICAgICAgICBrZXlDb2RlID0gMHgwQjsKKyAgICBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDI7CisgICAg
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCisgICAgICAgIGtleUNv
ZGUgPSAweDBFOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgx
YiJdKQorICAgICAgICBrZXlDb2RlID0gMHgxQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAIjoiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI7Il0pCisgICAgICAgIGtleUNvZGUgPSAw
eDI5OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiLCJdKQorICAg
ICAgICBrZXlDb2RlID0gMHgyQjsKKworICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0gewor
ICAgICAgICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0MywgJyon
LCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAorICAgICAgICB7MCwgICAg
MHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAorICAgICAgICB7MHgyQywg
MHg0QiwgJy8nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAg
ICAgICAgezB4MUIsIDB4NEUsICctJywgbmlsfSwKKyAgICAgICAgezB4MTgsIDB4NTEsICc9Jywg
bmlsfSwKKyAgICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKKyAgICAgICAgezB4MTIsIDB4
NTMsICcxJywgbmlsfSwKKyAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKKyAgICAgICAg
ezB4MTQsIDB4NTUsICczJywgbmlsfSwKKyAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwK
KyAgICAgICAgezB4MTcsIDB4NTcsICc1JywgbmlsfSwKKyAgICAgICAgezB4MTYsIDB4NTgsICc2
JywgbmlsfSwKKyAgICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKKyAgICAgICAgezB4MUMs
IDB4NUIsICc4JywgbmlsfSwKKyAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKKyAgICB9
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsg
KytpKSB7CisgICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOwor
ICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0
cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFt
ZV0pIHsKKyAgICAgICAgICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NB
VElPTl9OVU1QQUQqLykKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVt
cGFkS2V5Q29kZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0g
dGFibGVbaV0ubWFjS2V5Q29kZTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVu
dENoYXJhY3RlclN0cmluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
CisgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFj
dGVyOworCisgICAgaW50IG1vZGlmaWVyRmxhZ3MgPSAwOworCisgICAgaWYgKFtjaGFyYWN0ZXIg
bGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYg
W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykgeworICAgICAgICBtb2RpZmll
ckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKKyAgICAgICAgY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOworICAgIH0KKwor
ICAgIG1vZGlmaWVyRmxhZ3MgfD0gYnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycyk7CisKKyAg
ICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisg
ICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisK
KyAgICBOU0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5
cGVLZXlEb3duCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAgICAgIG1v
ZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncworICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1l
Rm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKKyAgICAgICAgd2luZG93TnVtYmVyOltt
X3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051
bWJlcl0KKyAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRd
CisgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FS
ZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKKworICAgIFtOU0FwcCBfc2V0Q3Vy
cmVudEV2ZW50OmV2ZW50XTsKKyAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCkt
PnBsYXRmb3JtV2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnRdOworICAgIFtO
U0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5z
aWduZWQga2V5TG9jYXRpb24pCit7CisgICAgTlNTdHJpbmcqIGNoYXJhY3RlciA9IHRvV1RGU3Ry
aW5nKGtleSk7CisKKyAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7Cisg
ICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7CisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
TGVmdEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAw
eDdCOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFy
cm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUmlnaHRBcnJvd0Z1bmN0aW9u
S2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3QzsKKyAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAga2V5Q29kZSA9IDB4N0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImRvd25BcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0Rv
d25BcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3
RDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZVVwIl0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZVVwRnVuY3Rpb25LZXk7CisgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc0OworICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDc5OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJob21lIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSG9tZUZ1bmN0aW9uS2V5
OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3MzsKKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDc3OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJp
bnNlcnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNJbnNlcnRGdW5jdGlvbktl
eTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzI7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHg3NTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAicHJpbnRTY3JlZW4iXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQcmlu
dFNjcmVlbkZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgw
OyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFsIGtleSBjb2RlIGZvciBQcmludFNjcmVlbi4K
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiY3lyaWxsaWNTbWFs
bExldHRlckEiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgwNDMwOworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzOyAvLyBTaGFyZXMga2V5IHdpdGggIkYiIG9u
IFJ1c3NpYW4gbGF5b3V0LgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJsZWZ0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTM7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNCOworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0U2hpZnQiXSkgeworICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gMHhGRkUxOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0g
MHgzODsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFs
dCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTc7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDNBOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gMHhGRkU0OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRTsKKyAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRTaGlmdCJdKSB7Cisg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDNDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJyaWdodEFsdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTg7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNEOworICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gMHgxQjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MzU7Cisg
ICAgfQorCisgICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3RyaW5nIHdpdGggdGhlIGZ1bmN0aW9u
LWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAoaS5lLiAiRjEiLC4uLiwiRjI0Iiku
CisgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0aW9uLWtleSBuYW1lLCBzZXQg
aXRzIGtleSBjb2RlLgorICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gMjQ7IGkrKykgewor
ICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKKyAgICAgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgICAg
IHN3aXRjaCAoaSkgeworICAgICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4OyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA0OiBrZXlD
b2RlID0gMHg3NjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6
IGtleUNvZGUgPSAweDY0OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4
NjU7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMzoga2V5
Q29kZSA9IDB4Njk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29kZSA9IDB4NkI7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNToga2V5Q29kZSA9IDB4NzE7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxODoga2V5Q29k
ZSA9IDB4NEY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAyMDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMg
c2V0IGZvciBtb3N0IGtleXMuCisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
XHQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCIgIl0pCisgICAgICAgIGtleUNvZGUgPSAweDMxOworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkKKyAgICAgICAga2V5Q29kZSA9
IDB4MjQ7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQor
ICAgICAgICBrZXlDb2RlID0gMHg0QzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAIlx4OCJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMzsKKyAgICBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImEiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDA7
CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCisgICAgICAg
IGtleUNvZGUgPSAweDBCOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiZCJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImUiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEU7CisgICAgZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDFiIl0pCisgICAgICAgIGtleUNv
ZGUgPSAweDFCOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiOiJd
KQorICAgICAgICBrZXlDb2RlID0gMHgyOTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAIjsiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIsIl0pCisgICAgICAgIGtleUNvZGUgPSAweDJC
OworCisgICAgS2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7CisgICAgICAgIHsweDJGLCAweDQx
LCAnLicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0sCisgICAgICAgIHsw
LCAgICAweDQ1LCAnKycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1
bmN0aW9uS2V5LCBAImNsZWFyIn0sCisgICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCisg
ICAgICAgIHswLCAgICAweDRDLCAzLCBAImVudGVyIiB9LAorICAgICAgICB7MHgxQiwgMHg0RSwg
Jy0nLCBuaWx9LAorICAgICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAorICAgICAgICB7MHgx
RCwgMHg1MiwgJzAnLCBuaWx9LAorICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAorICAg
ICAgICB7MHgxMywgMHg1NCwgJzInLCBuaWx9LAorICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBu
aWx9LAorICAgICAgICB7MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAorICAgICAgICB7MHgxNywgMHg1
NywgJzUnLCBuaWx9LAorICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAorICAgICAgICB7
MHgxQSwgMHg1OSwgJzcnLCBuaWx9LAorICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAor
ICAgICAgICB7MHgxOSwgMHg1QywgJzknLCBuaWx9LAorICAgIH07CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsKKyAgICAgICAgTlNT
dHJpbmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JnRhYmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07CisgICAgICAgIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgeworICAgICAgICAgICAg
aWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypET01fS0VZX0xPQ0FUSU9OX05VTVBBRCovKQorICAg
ICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlDb2RlOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2Rl
OworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBOU1N0cmluZyAqY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gZXZlbnRDaGFyYWN0ZXI7CisKKyAgICBpbnQgbW9k
aWZpZXJGbGFncyA9IDA7CisKKyAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2No
YXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3Rl
ckF0SW5kZXg6MF0gPD0gJ1onKSB7CisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1v
ZGlmaWVyRmxhZ1NoaWZ0OworICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBb
Y2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107CisgICAgfQorCisgICAgbW9kaWZpZXJGbGFncyB8
PSBidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKTsKKworICAgIGlmIChrZXlMb2NhdGlvbiA9
PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKKyAgICAgICAgbW9kaWZpZXJGbGFn
cyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKKworICAgIE5TRXZlbnQgKmV2ZW50
ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCisgICAgICAgIGxv
Y2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJG
bGFncworICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRF
dmVudFRpbWUoKSkKKyAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWlu
V2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KKyAgICAgICAgY29udGV4
dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAgIGNoYXJhY3RlcnM6
ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5
Q29kZTprZXlDb2RlXTsKKworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKKyAg
ICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgZmly
c3RSZXNwb25kZXJdIGtleVVwOmV2ZW50XTsKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpu
aWxdOworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkoaW50IHgsIGlu
dCB5KQogewogICAgIGF1dG8gY2dTY3JvbGxFdmVudCA9IGFkb3B0Q0YoQ0dFdmVudENyZWF0ZVNj
cm9sbFdoZWVsRXZlbnQyKDAsIGtDR1Njcm9sbEV2ZW50VW5pdExpbmUsIDIsIHksIHgsIDApKTsK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJv
eHlXaW4uY3BwCShyZXZpc2lvbiAyODMxNDIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dp
bi9FdmVudFNlbmRlclByb3h5V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDYgKzMxNCwx
NCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgICAgIFNl
dEtleWJvYXJkU3RhdGUoa2V5U3RhdGUpOwogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJh
d0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5z
aWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5
VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQg
a2V5TG9jYXRpb24pCit7Cit9CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBFdmVu
dFNlbmRlclByb3h5OjphZGRUb3VjaFBvaW50KGludCwgaW50KQogewpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAJKHJldmlz
aW9uIDI4MzE0MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJv
eHlXUEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiArMzI3LDE0IEBAIHZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICBmcmVlKGVudHJpZXMpOwogfQogCit2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50
TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKK3ZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZp
ZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKIHZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6YWRkVG91Y2hQb2ludChpbnQgeCwgaW50IHkpCiB7CiAgICAgc3RydWN0IHdw
ZV9pbnB1dF90b3VjaF9ldmVudF9yYXcgcmF3RXZlbnQgeyB3cGVfaW5wdXRfdG91Y2hfZXZlbnRf
dHlwZV9kb3duLCBzZWNUb01zVGltZXN0YW1wKG1fdGltZSksIHN0YXRpY19jYXN0PGludD4obV90
b3VjaEV2ZW50cy5zaXplKCkpLCBzdGF0aWNfY2FzdDxpbnQzMl90Pih4KSwgc3RhdGljX2Nhc3Q8
aW50MzJfdD4oeSkgfTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzE0MikKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDIxLTA5LTI3ICBC
ZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMg
bm90IHN0b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICB1c2VGbGV4aWJsZVZpZXdwb3J0IGFuZCBFdmVudEhhbmRsZXJE
cml2ZW5TbW9vdGhLZXlib2FyZFNjcm9sbGluZ0VuYWJsZWQga2V5cyBhcmUgV0syIG9ubHkgCisg
ICAgICAgIHJpZ2h0IG5vdywgc28gc2tpcCB0aGUgbmV3IHRlc3QgaW4gZ2VuZXJhbC4KKyAgICAg
ICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCisgICAgICAgIE5ldyB0ZXN0IHRoYXQgdmVyaWZpZXMg
dGhpcyBidWcgaXMgcmVzb2x2ZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2lu
Zy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3Jv
bGxpbmcuaHRtbDogQWRkZWQuCisKKyAgICAgICAgRG8gcnVuIHRoZSB0ZXN0IG9yIHdrMi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9uczoKKworICAgICAgICBOZXcgc3Vw
cG9ydCBmb3IgcmF3S2V5RG93biBpbiBvcmRlciB0byBzaW11bGF0ZSBob2xkaW5nIHRoZSBrZXkg
ZG93bi4KKyAgICAgICAgKiByZXNvdXJjZXMvdWktaGVscGVyLmpzOgorICAgICAgICAod2luZG93
LlVJSGVscGVyLnJhd0tleURvd24pOgorICAgICAgICAod2luZG93LlVJSGVscGVyLnJhd0tleVVw
KToKKwogMjAyMS0wOS0yNyAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29qaW1hQGFwcGxlLmNvbT4K
IAogICAgICAgICBbIG1hY09TIHdrMSBdIHdlYmFuaW1hdGlvbnMvcmVsYXRpdmUtb3JkZXJpbmct
b2YtdHJhbnNsYXRlLWFuZC1yb3RhdGUtcHJvcGVydGllcy1hY2NlbGVyYXRlZC5odG1sIGlzIGEg
Zmxha3kgaW1hZ2UgZmFpbHVyZS4KSW5kZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjgz
MTQyKQorKysgTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAt
OTYsNiArOTYsNyBAQCBmYXN0L2Zvcm1zL2VudGVya2V5aGludC1hdHRyaWJ1dGUtdmFsdWVzCiBm
YXN0L3Njcm9sbGluZy9rZXlib2FyZC1zY3JvbGxpbmctZGlzdGFuY2UtZG93bkFycm93Lmh0bWwg
WyBTa2lwIF0KIGZhc3Qvc2Nyb2xsaW5nL2tleWJvYXJkLXNjcm9sbGluZy1kaXN0YW5jZS1wYWdl
RG93bi5odG1sIFsgU2tpcCBdCiBmYXN0L3Njcm9sbGluZy9rZXlib2FyZC1zY3JvbGxpbmctbGFz
dC10aW1lc3RhbXAuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdl
LXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1sIFsgU2tpcCBdCiAKICMgSGlnaGxpZ2h0aW5n
IG1hcmtlZCB0ZXh0IHJhbmdlcyBmcm9tIGxheW91dCB0ZXN0cyBpcyBvbmx5IHN1cHBvcnRlZCBp
biBXZWJLaXQyLgogZWRpdGluZy9pbnB1dC9jb21wb3NpdGlvbi1oaWdobGlnaHRzLmh0bWwgWyBT
a2lwIF0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13
aGlsZS1rZXlib2FyZC1zY3JvbGxpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3Jv
bGxpbmctZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmctZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorCitTVUNDRVNTOiBCbHVlIGZyYW1l
IHN0b3BwZWQgc2NvbGxpbmcgYmVmb3JlIHJlZCBmcmFtZQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1w
YWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3Jv
bGxpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUgaHRt
bD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgRXZl
bnRIYW5kbGVyRHJpdmVuU21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxw
ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJp
bml0aWFsLXNjYWxlPTEuNSwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAgPHNjcmlwdD4KKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsUmVkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbGV0IHJlZE9mZnNldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWQtZnJhbWUnKS5j
b250ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXcuc2Nyb2xsWTsKKyAgICAgICAgICAgIGxldCBibHVl
T2Zmc2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JsdWUtZnJhbWUnKS5jb250ZW50RG9j
dW1lbnQuZGVmYXVsdFZpZXcuc2Nyb2xsWTsKKyAgICAgICAgICAgIGlmIChyZWRPZmZzZXQgPiAx
OTAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGJsdWVPZmZzZXQgPiAxOTAwKQorICAgICAgICAg
ICAgICAgICAgICBkZWJ1ZygiRkFJTDogQmx1ZSBmcmFtZSBzY3JvbGxlZCBhcyBmYXIgYXMgdGhl
IHJlZCBmcmFtZS4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGRlYnVnKCJTVUNDRVNTOiBCbHVlIGZyYW1lIHN0b3BwZWQgc2NvbGxpbmcgYmVmb3JlIHJlZCBm
cmFtZSIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXRlc3RSdW5u
ZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBs
ZXQgYmx1ZUZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JsdWUtZnJhbWUnKTsKKyAg
ICAgICAgICAgIGxldCByZWRGcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWQtZnJh
bWUnKTsKKyAgICAgICAgICAgIGxldCByZWREb2N1bWVudCA9IHJlZEZyYW1lLmNvbnRlbnREb2N1
bWVudDsKKworICAgICAgICAgICAgcmVkRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xs
IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHNjcm9sbFJlZCgpOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIGJsdWVGcmFtZS5mb2N1cygpOworICAgICAgICAgICAgYXdh
aXQgVUlIZWxwZXIucmF3S2V5RG93bigiZG93bkFycm93Iik7CisgICAgICAgICAgICByZWRGcmFt
ZS5mb2N1cygpOworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIucmF3S2V5RG93bigiZG93bkFy
cm93Iik7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgI3BsYWNl
aG9sZGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDUwMDBweDsK
KyAgICB9CisgICAgaWZyYW1lIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgc3R5bGU9Im1h
cmdpbjogMDsiIG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8aWZyYW1lIGlkPSJibHVlLWZyYW1l
IiBzcmNkb2M9IjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAyMDAwcHg7IGJhY2tn
cm91bmQtY29sb3I6IGJsdWU7Jz48L2Rpdj4iPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgaWQ9InJl
ZC1mcmFtZSIgc3JjZG9jPSI8ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMjAwMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48L2Rpdj4iPjwvaWZyYW1lPgorICAgIDxkaXYgaWQ9
InBsYWNlaG9sZGVyIj4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9ucwkocmV2aXNpb24gMjgzMTQyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RF
eHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTg1Nyw2ICs4NTcsNyBAQCBqcy90aHJvdy1s
YXJnZS1zdHJpbmctb29tLmh0bWwgWyBQYXNzIF0KIGZhc3Qvc2Nyb2xsaW5nL2tleWJvYXJkLXNj
cm9sbGluZy1kaXN0YW5jZS1kb3duQXJyb3cuaHRtbCBbIFBhc3MgXQogZmFzdC9zY3JvbGxpbmcv
a2V5Ym9hcmQtc2Nyb2xsaW5nLWRpc3RhbmNlLXBhZ2VEb3duLmh0bWwgWyBQYXNzIF0KIGZhc3Qv
c2Nyb2xsaW5nL2tleWJvYXJkLXNjcm9sbGluZy1sYXN0LXRpbWVzdGFtcC5odG1sIFsgUGFzcyBd
CitmYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5n
Lmh0bWwgWyBQYXNzIF0KIGZhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5o
dG1sIFsgUGFzcyBdCiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLXRo
ZW4tc3RvcC5odG1sIFsgUGFzcyBdCiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXNlY29u
ZC1yZWNvZ25pdGlvbi5odG1sIFsgUGFzcyBdCkluZGV4OiBMYXlvdXRUZXN0cy9yZXNvdXJjZXMv
dWktaGVscGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxw
ZXIuanMJKHJldmlzaW9uIDI4MzE0MikKKysrIExheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxw
ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTM0NCw2ICszNDQsMzAgQEAgd2luZG93LlVJSGVscGVy
ID0gY2xhc3MgVUlIZWxwZXIgewogICAgICAgICB9CiAgICAgfQogCisgICAgc3RhdGljIHJhd0tl
eURvd24oa2V5LCBtb2RpZmllcnM9W10pCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaXNXZWJL
aXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkgeworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
cmF3S2V5RG93bihrZXksIG1vZGlmaWVycyk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZXNvbHZlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUpID0+IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29udHJvbGxl
ci5yYXdLZXlEb3duKCIke2tleX0iLCAke0pTT04uc3RyaW5naWZ5KG1vZGlmaWVycyl9KTtgLCBy
ZXNvbHZlKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc3RhdGljIHJhd0tleVVwKGtleSwg
bW9kaWZpZXJzPVtdKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0
aGlzLmlzSU9TRmFtaWx5KCkpIHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLnJhd0tleVVwKGtl
eSwgbW9kaWZpZXJzKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgdWlDb250cm9sbGVyLnJhd0tleVVwKCIk
e2tleX0iLCAke0pTT04uc3RyaW5naWZ5KG1vZGlmaWVycyl9KTtgLCByZXNvbHZlKTsKKyAgICAg
ICAgfSk7CisgICAgfQorCiAgICAgc3RhdGljIGtleURvd24oa2V5LCBtb2RpZmllcnM9W10pCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHko
KSkgewo=
</data>
<flag name="commit-queue"
          id="463087"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439531</attachid>
            <date>2021-09-28 15:20:51 -0700</date>
            <delta_ts>2021-09-30 21:32:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>68193</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzE5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA5LTI4ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkgb24g
dGhlIG9sZCBGcmFtZVZpZXcgYWZ0ZXIgY2hhbmdpbmcgRnJhbWUgZm9jdXMuCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorCisgICAgICAgIENhbGwgdXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKSB3aGVuIHRoZSB3aW5kb3cgdmlzaWJpbGl0eSAvIGFjdGl2ZSBzdGF0
ZSBjaGFuZ2VzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVNj
cm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAg
ICAgICBQbHVtYmluZyB0byBnZXQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSB0
byB0aGUgU2Nyb2xsQ29udHJvbGxlciwgd2hlcmUgd2UgY2FuIHRlbGwgCisgICAgICAgIHRoZSBr
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRvIGhhbmRsZSBrZXlVcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0wOS0yOCAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIE5lZ2F0aXZlIGlu
dGVnZXJzIGluIEBmb250LXBhbGV0dGUtdmFsdWVzIGFyZSBpbnZhbGlkCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODMxOTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
OSw5ICszNTksMTIgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRGcmFtZShGcgog
ICAgIG1fZm9jdXNlZEZyYW1lID0gbmV3RnJhbWU7CiAKICAgICAvLyBOb3cgdGhhdCB0aGUgZnJh
bWUgaXMgdXBkYXRlZCwgZmlyZSBldmVudHMgYW5kIHVwZGF0ZSB0aGUgc2VsZWN0aW9uIGZvY3Vz
ZWQgc3RhdGVzIG9mIGJvdGggZnJhbWVzLgotICAgIGlmIChvbGRGcmFtZSAmJiBvbGRGcmFtZS0+
dmlldygpKSB7Ci0gICAgICAgIG9sZEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRGb2N1c2VkKGZhbHNl
KTsKLSAgICAgICAgb2xkRnJhbWUtPmRvY3VtZW50KCktPmRpc3BhdGNoV2luZG93RXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICBpZiAob2xkRnJhbWUpIHsKKyAgICAgICAg
aWYgKEZyYW1lVmlldyogb2xkRnJhbWVWaWV3ID0gb2xkRnJhbWUtPnZpZXcoKSkgeworICAgICAg
ICAgICAgb2xkRnJhbWVWaWV3LT51cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSgpOwor
ICAgICAgICAgICAgb2xkRnJhbWUtPnNlbGVjdGlvbigpLnNldEZvY3VzZWQoZmFsc2UpOworICAg
ICAgICAgICAgb2xkRnJhbWUtPmRvY3VtZW50KCktPmRpc3BhdGNoV2luZG93RXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChuZXdG
cmFtZSAmJiBuZXdGcmFtZS0+dmlldygpICYmIGlzRm9jdXNlZCgpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHJldmlzaW9uIDI4MzE5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNTUsMTMgKzIzNTUsMzMgQEAgdm9pZCBQYWdlOjpzZXRB
Y3Rpdml0eVN0YXRlKE9wdGlvblNldDxBYwogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX2Fj
dGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2Uob2xkQWN0aXZpdHlTdGF0ZSwgbV9hY3Rpdml0eVN0YXRlKTsKIAotICAgIGlm
ICh3YXNWaXNpYmxlQW5kQWN0aXZlICE9IGlzVmlzaWJsZUFuZEFjdGl2ZSgpKQorICAgIGlmICh3
YXNWaXNpYmxlQW5kQWN0aXZlICE9IGlzVmlzaWJsZUFuZEFjdGl2ZSgpKSB7CiAgICAgICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlTm93UGxheWluZ0luZm9JZk5lY2Vzc2Fy
eSgpOworICAgICAgICB1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSgpOworICAgIH0K
IAogICAgIGlmIChtX3BlcmZvcm1hbmNlTW9uaXRvcikKICAgICAgICAgbV9wZXJmb3JtYW5jZU1v
bml0b3ItPmFjdGl2aXR5U3RhdGVDaGFuZ2VkKG9sZEFjdGl2aXR5U3RhdGUsIGFjdGl2aXR5U3Rh
dGUpOwogfQogCit2b2lkIFBhZ2U6OnVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkK
K3sKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgZnJhbWVWaWV3LT51cGRhdGVTY3JvbGxBbmltYXRpb25J
Zk5lY2Vzc2FyeSgpOworCisgICAgICAgIGNvbnN0IEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPiog
c2Nyb2xsYWJsZUFyZWFzID0gZnJhbWVWaWV3LT5zY3JvbGxhYmxlQXJlYXMoKTsKKyAgICAgICAg
aWYgKCFzY3JvbGxhYmxlQXJlYXMpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBm
b3IgKGF1dG8mIHNjcm9sbGFibGVBcmVhIDogKnNjcm9sbGFibGVBcmVhcykKKyAgICAgICAgICAg
IHNjcm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSgpOworICAg
IH0KK30KKwogYm9vbCBQYWdlOjppc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSAm
JiBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDI4MzE5OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04ODcsNiArODg3LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldElzVmlzaWJsZUludGVybmFsKGJvb2wpOwogICAgIHZvaWQgc2V0SXNWaXN1
YWxseUlkbGVJbnRlcm5hbChib29sKTsKIAorICAgIHZvaWQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9u
SWZOZWNlc3NhcnkoKTsKKwogICAgIGVudW0gU2hvdWxkSGlnaGxpZ2h0TWF0Y2hlcyB7IERvTm90
SGlnaGxpZ2h0TWF0Y2hlcywgSGlnaGxpZ2h0TWF0Y2hlcyB9OwogICAgIGVudW0gU2hvdWxkTWFy
a01hdGNoZXMgeyBEb05vdE1hcmtNYXRjaGVzLCBNYXJrTWF0Y2hlcyB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCShyZXZpc2lvbiAyODMxOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMCw2ICsyMzAsMTEgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hl
ZWxFdmVudChjbwogICAgIHJldHVybiBoYW5kbGVkOwogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9y
Ojp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSgpCit7CisgICAgbV9zY3JvbGxDb250
cm9sbGVyLnVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7Cit9CisKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlVG91Y2hFdmVudChj
b25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvci5oCShyZXZpc2lvbiAyODMxOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNu
YXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZv
aWQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsKKyAgICAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlKSB7IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmNwcAkocmV2aXNpb24gMjgzMTk4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsNiAr
MjI1LDExIEBAIGJvb2wgU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3IKICAgICBy
ZXR1cm4gaGFuZGxlZEV2ZW50OwogfQogCit2b2lkIFNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3Jv
bGxBbmltYXRpb25JZk5lY2Vzc2FyeSgpCit7CisgICAgc2Nyb2xsQW5pbWF0b3IoKS51cGRhdGVT
Y3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSgpOworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKIGJvb2wgU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1U
b3VjaEV2ZW50JiB0b3VjaEV2ZW50KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oCShyZXZpc2lvbiAyODMxOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDggQEAg
cHVibGljOgogICAgIHZvaWQgcmVzbmFwQWZ0ZXJMYXlvdXQoKTsKICAgICB2b2lkIGRvUG9zdFRo
dW1iTW92ZVNuYXBwaW5nKFNjcm9sbGJhck9yaWVudGF0aW9uKTsKIAorICAgIHZvaWQgdXBkYXRl
U2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAgICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2
ZW50Jik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI4MzE5OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODYsNiArODYsMTIgQEAgdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6c3RvcEtleQogICAgIHNldElzQW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmcoZmFsc2Up
OwogfQogCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1faXNBbmltYXRpbmdLZXlib2FyZFNjcm9s
bGluZykKKyAgICAgICAgbV9jbGllbnQua2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcigpLT5oYW5k
bGVLZXlVcEV2ZW50KCk7Cit9CisKIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0
YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKEZsb2F0UG9pbnQgc3RhcnRPZmZzZXQsIEZs
b2F0UG9pbnQgZGVzdGluYXRpb25PZmZzZXQpCiB7CiAgICAgaWYgKG1fY3VycmVudEFuaW1hdGlv
bikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMjgzMTk4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQy
LDcgKzE0Miw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5LZXlib2FyZFNjcm9sbGluZygp
OwogICAgIHZvaWQgc3RvcEtleWJvYXJkU2Nyb2xsaW5nKCk7Ci0gICAgCisKKyAgICB2b2lkIHVw
ZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7CisKICAgICAvLyBTaG91bGQgYmUgY2Fs
bGVkIHBlcmlvZGljYWxseSBieSB0aGUgY2xpZW50LiBTdGFydGVkIGJ5IHN0YXJ0QW5pbWF0aW9u
Q2FsbGJhY2soKSwgc3RvcHBlZCBieSBzdG9wQW5pbWF0aW9uQ2FsbGJhY2soKS4KICAgICB2b2lk
IGFuaW1hdGlvbkNhbGxiYWNrKE1vbm90b25pY1RpbWUpOwogCkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODMxOTgpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0OCBAQAorMjAyMS0wOS0y
OCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+IGFuZCBEYW5hIEVzdHJhIDxkZXN0cmFA
YXBwbGUuY29tPgorCisgICAgICAgIG1hY09TIGtleS1kcml2ZW4gc21vb3RoIHNjcm9sbGluZyBk
b2VzIG5vdCBzdG9wIHdoZW4gZm9jdXMgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MzAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5tbToKKyAgICAgICAgKCtbRXZlbnRTZW5kaW5nQ29udHJvbGxlciBpbml0aWFs
aXplXSk6CisgICAgICAgICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgaXNTZWxlY3RvckV4Y2x1
ZGVkRnJvbVdlYlNjcmlwdDpdKToKKyAgICAgICAgKCtbRXZlbnRTZW5kaW5nQ29udHJvbGxlciB3
ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIgcmF3S2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAg
KC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciByYXdLZXlEb3duV3JhcHBlcjp3aXRoTW9kaWZpZXJz
OndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciByYXdL
ZXlVcDp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5k
aW5nQ29udHJvbGxlciByYXdLZXlVcFdyYXBwZXI6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246
XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpjcmVhdGVSYXdL
ZXlEb3duTWVzc2FnZUJvZHkpOgorICAgICAgICAoV1RSOjpjcmVhdGVSYXdLZXlVcE1lc3NhZ2VC
b2R5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6cmF3S2V5RG93bik6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleVVwKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVu
dFNlbmRlclByb3h5SU9TLm1tOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdL
ZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlV
cE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
bWFjL0V2ZW50U2VuZGVyUHJveHkubW06CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6
OnJhd0tleURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHA6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24pOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGVyUHJveHk6OnJhd0tleURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpy
YXdLZXlVcCk6CisKIDIwMjEtMDktMjggIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW0NvY29hXSBBZGQgU1BJIHRvIHNlbGVjdCBhIHRhYiBjcmVhdGVkIGJ5IF9XS0luc3Bl
Y3RvckV4dGVuc2lvbgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI4MzE5OCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDIsNiArMjAyLDggQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIEAiZm9jdXMiLAog
ICAgICAgICBAImlucHV0IiwKICAgICAgICAgQCJrZXlkb3duIiwKKyAgICAgICAgQCJyYXdrZXlk
b3duIiwKKyAgICAgICAgQCJyYXdrZXl1cCIsCiAgICAgICAgIEAia2V5cHJlc3MiLAogICAgICAg
ICBAImtleXVwIiwKICAgICAgICAgQCJsb2FkIiwKQEAgLTI0NSw2ICsyNDcsOCBAQCArIChCT09M
KWlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6CiAgICAgICAgICAgICB8fCBhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKGVuYWJsZURPTVVJRXZlbnRMb2dnaW5nOikKICAgICAgICAgICAgIHx8
IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoZmlyZUtleWJvYXJkRXZlbnRzVG9FbGVtZW50OikKICAg
ICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioa2V5RG93bjp3aXRoTW9kaWZpZXJz
OndpdGhMb2NhdGlvbjopCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJh
d0tleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KQorICAgICAgICAgICAgfHwgYVNl
bGVjdG9yID09IEBzZWxlY3RvcihyYXdLZXlVcDp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjop
CiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGxlYXBGb3J3YXJkOikKICAg
ICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IobW91c2VEb3duOndpdGhNb2RpZmll
cnM6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcihtb3VzZU1vdmVUb1g6
WTopCkBAIC0zMDYsNiArMzEwLDEwIEBAICsgKE5TU3RyaW5nICopd2ViU2NyaXB0TmFtZUZvclNl
bGVjdG9yOigKICAgICAgICAgcmV0dXJuIEAiZmlyZUtleWJvYXJkRXZlbnRzVG9FbGVtZW50IjsK
ICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihrZXlEb3duOndpdGhNb2RpZmllcnM6d2l0
aExvY2F0aW9uOikpCiAgICAgICAgIHJldHVybiBAImtleURvd24iOworICAgIGlmIChhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKHJhd0tleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkK
KyAgICAgICAgcmV0dXJuIEAicmF3S2V5RG93biI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IocmF3S2V5VXA6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkKKyAgICAgICAgcmV0
dXJuIEAicmF3S2V5VXAiOwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNjaGVkdWxl
QXN5bmNocm9ub3VzS2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQogICAgICAg
ICByZXR1cm4gQCJzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24iOwogICAgIGlmIChhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKGxlYXBGb3J3YXJkOikpCkBAIC0xMjA5LDYgKzEyMTcsNDM4IEBAIC0g
KHZvaWQpa2V5RG93bldyYXBwZXI6KE5TU3RyaW5nICopY2hhcmEKICAgICBbc2VsZiBrZXlEb3du
OmNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOm1vZGlmaWVycyB3aXRoTG9jYXRpb246bG9jYXRpb25d
OwogfQogCistICh2b2lkKXJhd0tleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2Rp
ZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVk
IGxvbmcpbG9jYXRpb24KK3sKKyAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0ZXIgPSBjaGFyYWN0
ZXI7CisgICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7CisgICAgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDdCOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJy
aWdodEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUmlnaHRBcnJvd0Z1
bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3QzsKKyAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2Rl
ID0gMHg3RDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFn
ZVVwIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZVVwRnVuY3Rpb25LZXk7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc0OworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAg
ICAgIGtleUNvZGUgPSAweDc5OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJob21lIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSG9tZUZ1bmN0
aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3MzsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDc3OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJpbnNlcnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNJbnNlcnRGdW5j
dGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzI7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHg3NTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM1OworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5
IGNvZGUgZm9yIFByaW50U2NyZWVuLgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSAweDA0MzA7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM7IC8v
IFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4M0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRT
aGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7CisgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgIGtleUNvZGUgPSAweDM4OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4RkZFNzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0E7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7Cisg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDNFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJyaWdodFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0M7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKKyAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IDB4RkZFODsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
M0Q7CisgICAgfQorCisgICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3RyaW5nIHdpdGggdGhlIGZ1
bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAoaS5lLiAiRjEiLC4uLiwi
RjI0IikuCisgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0aW9uLWtleSBuYW1l
LCBzZXQgaXRzIGtleSBjb2RlLgorICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gMjQ7IGkr
KykgeworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKKyAgICAgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4OyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA0
OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6IGtleUNvZGUgPSAw
eDYwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDg6IGtleUNvZGUgPSAweDY0OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgOToga2V5Q29k
ZSA9IDB4NjU7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAx
Mzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29kZSA9
IDB4NkI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNToga2V5Q29kZSA9IDB4NzE7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxODog
a2V5Q29kZSA9IDB4NEY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4
NTA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyMDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gRklYTUU6IE5vIGtleUNv
ZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiXHQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzA7CisgICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0pCisgICAgICAgIGtleUNvZGUgPSAweDMxOworICAg
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkKKyAgICAgICAga2V5
Q29kZSA9IDB4MjQ7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJc
biJdKQorICAgICAgICBrZXlDb2RlID0gMHg0QzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAIlx4OCJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMzsKKyAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImEiXSkKKyAgICAgICAga2V5Q29kZSA9
IDB4MDA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCisg
ICAgICAgIGtleUNvZGUgPSAweDBCOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiZCJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMjsKKyAgICBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEU7Cisg
ICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDFiIl0pCisgICAgICAg
IGtleUNvZGUgPSAweDFCOworCisgICAgS2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7CisgICAg
ICAgIHsweDJGLCAweDQxLCAnLicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQzLCAnKicsIG5p
bH0sCisgICAgICAgIHswLCAgICAweDQ1LCAnKycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ3
LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIn0sCisgICAgICAgIHsweDJDLCAweDRC
LCAnLycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDRDLCAzLCBAImVudGVyIiB9LAorICAgICAg
ICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAorICAgICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9
LAorICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBuaWx9LAorICAgICAgICB7MHgxMiwgMHg1Mywg
JzEnLCBuaWx9LAorICAgICAgICB7MHgxMywgMHg1NCwgJzInLCBuaWx9LAorICAgICAgICB7MHgx
NCwgMHg1NSwgJzMnLCBuaWx9LAorICAgICAgICB7MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAorICAg
ICAgICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAorICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBu
aWx9LAorICAgICAgICB7MHgxQSwgMHg1OSwgJzcnLCBuaWx9LAorICAgICAgICB7MHgxQywgMHg1
QiwgJzgnLCBuaWx9LAorICAgICAgICB7MHgxOSwgMHg1QywgJzknLCBuaWx9LAorICAgIH07Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kp
IHsKKyAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07CisgICAg
ICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5n
XSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkg
eworICAgICAgICAgICAgaWYgKGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQor
ICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlDb2RlOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlD
b2RlOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5n
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBOU1N0cmluZyAq
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gZXZlbnRDaGFyYWN0ZXI7CisKKyAgICBpbnQg
bW9kaWZpZXJGbGFncyA9IDA7CisKKyAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYg
W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJh
Y3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
ICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworI2Vsc2UKKyAg
ICAgICAgbW9kaWZpZXJGbGFncyB8PSBXZWJFdmVudEZsYWdNYXNrTGVmdFNoaWZ0S2V5OworI2Vu
ZGlmCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93
ZXJjYXNlU3RyaW5nXTsKKyAgICB9CisKKyAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZp
ZXJGbGFncyhtb2RpZmllcnMpOworCisgICAgaWYgKGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJ
T05fTlVNUEFEKQorICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdO
dW1lcmljUGFkOworCisgICAgW1tbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBs
YXlvdXRdOworCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYXV0byBldmVudCA9IHJl
dGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgorICAg
ICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1v
ZGlmaWVyRmxhZ3MKKyAgICAgICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisg
ICAgICAgIHdpbmRvd051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dO
dW1iZXJdCisgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0
XQorICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCisgICAgICAgIGNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgaXNB
UmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2
ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJF
dmVudEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6
ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJGbGFncyBpc1Jl
cGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpb
Y2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFj
dGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07CisjZW5kaWYK
KyAgICBbW1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleURv
d246ZXZlbnQuZ2V0KCldOworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBf
c2V0Q3VycmVudEV2ZW50Om5pbF07CisjZW5kaWYKK30KKworLSAodm9pZClyYXdLZXlEb3duV3Jh
cHBlcjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0
ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAg
IFtzZWxmIHJhd0tleURvd246Y2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdpdGhM
b2NhdGlvbjpsb2NhdGlvbl07Cit9CisKKy0gKHZvaWQpcmF3S2V5VXA6KE5TU3RyaW5nICopY2hh
cmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9j
YXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sKKyAgICBOU1N0cmluZyAqZXZlbnRDaGFy
YWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7CisgICAg
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKKyAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDdCOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJyaWdodEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2Rl
ID0gMHg3QzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBB
cnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktl
eTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0U7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHg3RDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAicGFnZVVwIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFn
ZVVwRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc0Owor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7CisgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc5OworICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IE5TSG9tZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0g
MHg3MzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc3OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNJbnNlcnRGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4NzI7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0
ZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5Owor
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NTsKKyAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4MUI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM1Owor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJd
KSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtu
b3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgorICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAga2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZG
RTE7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM4OworICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4M0E7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0
Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IDB4RkZFMjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0M7Cisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4M0Q7CisgICAgfQorCisgICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3Ry
aW5nIHdpdGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAo
aS5lLiAiRjEiLC4uLiwiRjI0IikuCisgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1
bmN0aW9uLWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgorICAgIGZvciAodW5zaWduZWQgaSA9
IDE7IGkgPD0gMjQ7IGkrKykgeworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKKyAgICAgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOworICAgICAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgY2FzZSAxOiBr
ZXlDb2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNjoga2V5Q29kZSA9
IDB4NjE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0OyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgOToga2V5Q29kZSA9IDB4NjU7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMDoga2V5
Q29kZSA9IDB4NkQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAxNDoga2V5Q29kZSA9IDB4NkI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNToga2V5Q29k
ZSA9IDB4NzE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAx
OToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyMDoga2V5Q29kZSA9
IDB4NUE7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8g
RklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCisgICAgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzA7CisgICAg
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0pCisgICAgICAgIGtleUNv
ZGUgPSAweDMxOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIi
XSkKKyAgICAgICAga2V5Q29kZSA9IDB4MjQ7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJcbiJdKQorICAgICAgICBrZXlDb2RlID0gMHg0QzsKKyAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQorICAgICAgICBrZXlDb2RlID0g
MHgzMzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImEiXSkKKyAg
ICAgICAga2V5Q29kZSA9IDB4MDA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBCOworICAgIGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMjsKKyAg
ICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkKKyAgICAgICAga2V5
Q29kZSA9IDB4MEU7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJc
eDFiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDFCOworCisgICAgS2V5TWFwcGluZ0VudHJ5IHRh
YmxlW10gPSB7CisgICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5pbH0sCisgICAgICAgIHswLCAg
ICAweDQzLCAnKicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ1LCAnKycsIG5pbH0sCisgICAg
ICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIn0sCisgICAg
ICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDRDLCAzLCBAImVu
dGVyIiB9LAorICAgICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAorICAgICAgICB7MHgxOCwg
MHg1MSwgJz0nLCBuaWx9LAorICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBuaWx9LAorICAgICAg
ICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAorICAgICAgICB7MHgxMywgMHg1NCwgJzInLCBuaWx9
LAorICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAorICAgICAgICB7MHgxNSwgMHg1Niwg
JzQnLCBuaWx9LAorICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAorICAgICAgICB7MHgx
NiwgMHg1OCwgJzYnLCBuaWx9LAorICAgICAgICB7MHgxQSwgMHg1OSwgJzcnLCBuaWx9LAorICAg
ICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAorICAgICAgICB7MHgxOSwgMHg1QywgJzknLCBu
aWx9LAorICAgIH07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5H
VEgodGFibGUpOyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJp
bmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNoYXJhY3RlciBs
ZW5ndGg6MV07CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpjdXJyZW50
Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0YWJsZVtpXS5j
aGFyYWN0ZXJOYW1lXSkgeworICAgICAgICAgICAgaWYgKGxvY2F0aW9uID09IERPTV9LRVlfTE9D
QVRJT05fTlVNUEFEKQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNOdW1w
YWRLZXlDb2RlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0
YWJsZVtpXS5tYWNLZXlDb2RlOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBjdXJyZW50
Q2hhcmFjdGVyU3RyaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gZXZlbnRDaGFyYWN0
ZXI7CisKKyAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7CisKKyAgICBpZiAoW2NoYXJhY3RlciBs
ZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBb
Y2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7CisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1No
aWZ0OworI2Vsc2UKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBXZWJFdmVudEZsYWdNYXNrTGVm
dFNoaWZ0S2V5OworI2VuZGlmCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9
IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICB9CisKKyAgICBtb2RpZmllckZsYWdz
IHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpOworCisgICAgaWYgKGxvY2F0aW9uID09
IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQorICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZl
bnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworCisgICAgW1tbbWFpbkZyYW1lIGZyYW1lVmlld10g
ZG9jdW1lbnRWaWV3XSBsYXlvdXRdOworCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
YXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRU
eXBlS2V5VXAKKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAgICAgbW9k
aWZpZXJGbGFnczptb2RpZmllckZsYWdzCisgICAgICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50
RXZlbnRUaW1lXQorICAgICAgICB3aW5kb3dOdW1iZXI6W1tbbWFpbkZyYW1lIHdlYlZpZXddIHdp
bmRvd10gd2luZG93TnVtYmVyXQorICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBj
dXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgorICAgICAg
ICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
CisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOmtleUNvZGVdKTsKKyNlbHNl
CisgICAgYXV0byBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlF
dmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0g
Y2hhcmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmll
ckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5p
bCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJh
Y3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CisjZW5kaWYKKworI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50LmdldCgp
XTsKKyNlbmRpZgorICAgIFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBmaXJzdFJlc3Bv
bmRlcl0ga2V5VXA6ZXZlbnQuZ2V0KCldOworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CisjZW5kaWYKK30KKworLSAodm9pZClyYXdL
ZXlVcFdyYXBwZXI6KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlw
dE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24K
K3sKKyAgICBbc2VsZiByYXdLZXlVcDpjaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczptb2RpZmllcnMg
d2l0aExvY2F0aW9uOmxvY2F0aW9uXTsKK30KKwogLSAodm9pZClzY2hlZHVsZUFzeW5jaHJvbm91
c0tleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9i
amVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KIHsK
ICAgICBOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSBbTlNJbnZvY2F0aW9uIGludm9jYXRpb25X
aXRoTWV0aG9kU2lnbmF0dXJlOltFdmVudFNlbmRpbmdDb250cm9sbGVyIGluc3RhbmNlTWV0aG9k
U2lnbmF0dXJlRm9yU2VsZWN0b3I6QHNlbGVjdG9yKGtleURvd25XcmFwcGVyOndpdGhNb2RpZmll
cnM6d2l0aExvY2F0aW9uOildXTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRT
ZW5kZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRT
ZW5kZXJQcm94eS5oCShyZXZpc2lvbiAyODMxOTgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0V2ZW50U2VuZGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsZWFwRm9yd2FyZChpbnQgbWlsbGlzZWNvbmRzKTsKIAogICAgIHZvaWQg
a2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0
aW9uKTsKKyAgICB2b2lkIHJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZp
ZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlVcChXS1N0cmluZ1JlZiBr
ZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHVuc2lnbmVkIG1vdXNlQnV0dG9uc0N1cnJlbnRseURvd24oKSBjb25zdCB7
IHJldHVybiBtX21vdXNlQnV0dG9uc0N1cnJlbnRseURvd247IH0KQEAgLTEwNCw2ICsxMDYsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbihpbnQgYnV0dG9u
KTsKIAogICAgIHZvaWQgc2VuZE1vdXNlRG93blRvU3RhcnRQcmVzc3VyZUV2ZW50cygpOworCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBjbGFzcyBQcmVzc3VyZUNoYW5nZURpcmVjdGlv
biB7IEluY3JlYXNpbmcsIERlY3JlYXNpbmcgfTsKICAgICBSZXRhaW5QdHI8TlNFdmVudD4gYmVn
aW5QcmVzc3VyZUV2ZW50KGludCBzdGFnZSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgzMTk4KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTYsNiArMTU5
NiwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlS2V5RG93bk1lCiAgICAgbV9l
dmVudFNlbmRlclByb3h5LT5rZXlEb3duKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwg
dWludDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9u
YXJ5LCAiTG9jYXRpb24iKSk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVS
YXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlv
bmFyeSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tl
eURvd24oc3RyaW5nVmFsdWUoZGljdGlvbmFyeSwgIktleSIpLCB1aW50NjRWYWx1ZShkaWN0aW9u
YXJ5LCAiTW9kaWZpZXJzIiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJMb2NhdGlvbiIpKTsK
K30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91
cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tleVVwKHN0cmluZ1ZhbHVlKGRpY3Rp
b25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50
NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRpZFJlY2VpdmVMaXZlRG9jdW1lbnRzTGlzdChXS0FycmF5UmVmIGxpdmVEb2N1bWVudExp
c3QpCiB7CiAgICAgYXV0byBudW1Eb2N1bWVudHMgPSBXS0FycmF5R2V0U2l6ZShsaXZlRG9jdW1l
bnRMaXN0KTsKQEAgLTE2NTMsNiArMTY2MywxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlTWVzc2FnZUZyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tl
eURvd24iKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKGRpY3Rpb25hcnksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1l
c3NhZ2VOYW1lLCAiUmF3S2V5VXAiKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVw
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCBmYWxzZSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlU2Nyb2xsQnkiKSkgewogICAgICAgICAgICAg
bV9ldmVudFNlbmRlclByb3h5LT5tb3VzZVNjcm9sbEJ5KGRvdWJsZVZhbHVlKGRpY3Rpb25hcnks
ICJYIiksIGRvdWJsZVZhbHVlKGRpY3Rpb25hcnksICJZIikpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTcwMiw2ICsxNzIyLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVT
eW5jaHJvbm8KICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsK
ICAgICAgICAgfQogCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1
Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5RG93biIpKSB7CisgICAgICAgICAgICBkaWRSZWNlaXZlUmF3
S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoZGljdGlvbmFyeSwgdHJ1ZSk7CisgICAg
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwg
IlJhd0tleVVwIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoZGljdGlvbmFyeSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93biIpKSB7CiAg
ICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNlRG93bih1aW50NjRWYWx1ZShkaWN0
aW9uYXJ5LCAiQnV0dG9uIiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJNb2RpZmllcnMiKSwg
c3RyaW5nVmFsdWUoZGljdGlvbmFyeSwgIlBvaW50ZXJUeXBlIikpOwogICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjgzMTk4KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDAsNiArNDQwLDgg
QEAgcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IGdldEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YSgpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlS2V5RG93bk1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlv
bmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5RG93bk1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlv
bmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5VXBNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25h
cnksIGJvb2wgc3luY2hyb25vdXMpOwogCiAgICAgLy8gV0tDb250ZXh0Q2xpZW50CiAgICAgc3Rh
dGljIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRDcmFzaChXS0NvbnRleHRSZWYsIGNvbnN0IHZvaWQq
KTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgzMTk4
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDExICszMDEsNDEgQEAgc3RhdGlj
IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZQogICAgIHJldHVybiBib2R5OwogfQog
CitzdGF0aWMgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRlUmF3S2V5
RG93bk1lc3NhZ2VCb2R5KEpTU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmll
cnMsIGludCBsb2NhdGlvbikKK3sKKyAgICBhdXRvIGJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURp
Y3Rpb25hcnlDcmVhdGUoKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIlN1Yk1lc3NhZ2UiLCAiUmF3
S2V5RG93biIpOworICAgIHNldFZhbHVlKGJvZHksICJLZXkiLCBrZXkpOworICAgIHNldFZhbHVl
KGJvZHksICJNb2RpZmllcnMiLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKG1vZGlmaWVycykpKTsK
KyAgICBzZXRWYWx1ZShib2R5LCAiTG9jYXRpb24iLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKGxv
Y2F0aW9uKSkpOworICAgIHJldHVybiBib2R5OworfQorCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tN
dXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keShKU1N0cmluZ1Jl
ZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBpbnQgbG9jYXRpb24pCit7CisgICAg
YXV0byBib2R5ID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworICAgIHNl
dFZhbHVlKGJvZHksICJTdWJNZXNzYWdlIiwgIlJhd0tleVVwIik7CisgICAgc2V0VmFsdWUoYm9k
eSwgIktleSIsIGtleSk7CisgICAgc2V0VmFsdWUoYm9keSwgIk1vZGlmaWVycyIsIGFkb3B0V0so
V0tVSW50NjRDcmVhdGUobW9kaWZpZXJzKSkpOworICAgIHNldFZhbHVlKGJvZHksICJMb2NhdGlv
biIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobG9jYXRpb24pKSk7CisgICAgcmV0dXJuIGJvZHk7
Cit9CisKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6a2V5RG93bihKU1N0cmluZ1JlZiBr
ZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKQogewogICAgIHBvc3RT
eW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGNyZWF0ZUtleURvd25NZXNzYWdl
Qm9keShrZXksIHBhcnNlTW9kaWZpZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRpb24pKTsK
IH0KIAordm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlEb3duKEpTU3RyaW5nUmVm
IGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pCit7CisgICAgcG9z
dFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3S2V5RG93bk1l
c3NhZ2VCb2R5KGtleSwgcGFyc2VNb2RpZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlv
bikpOworfQorCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleVVwKEpTU3RyaW5n
UmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pCit7CisgICAg
cG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3S2V5VXBN
ZXNzYWdlQm9keShrZXksIHBhcnNlTW9kaWZpZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRp
b24pKTsKK30KKwogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzY2hlZHVsZUFzeW5jaHJv
bm91c0tleURvd24oSlNTdHJpbmdSZWYga2V5KQogewogICAgIHBvc3RQYWdlTWVzc2FnZSgiRXZl
bnRTZW5kZXIiLCBjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCAwLCAwKSk7CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMjgzMTk4KQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogICAgIHZvaWQgY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjayk7CiAKICAgICB2
b2lkIGtleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGlu
dCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1
ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pOworICAgIHZvaWQgcmF3S2V5VXAoSlNT
dHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbik7CiAg
ICAgdm9pZCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oSlNTdHJpbmdSZWYga2V5KTsKIAog
ICAgIHZvaWQgdGV4dFpvb21JbigpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiAyODMxOTgpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBAIGludGVyZmFjZSBFdmVudFNlbmRp
bmdDb250cm9sbGVyIHsKICAgICB1bmRlZmluZWQgbGVhcEZvcndhcmQobG9uZyBtaWxsaXNlY29u
ZHMpOwogCiAgICAgdW5kZWZpbmVkIGtleURvd24oRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1vZGlm
aWVyQXJyYXksIGxvbmcgbG9jYXRpb24pOworICAgIHVuZGVmaW5lZCByYXdLZXlEb3duKERPTVN0
cmluZyBrZXksIG9iamVjdCBtb2RpZmllckFycmF5LCBsb25nIGxvY2F0aW9uKTsKKyAgICB1bmRl
ZmluZWQgcmF3S2V5VXAoRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1vZGlmaWVyQXJyYXksIGxvbmcg
bG9jYXRpb24pOwogICAgIHVuZGVmaW5lZCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oRE9N
U3RyaW5nIGtleSk7CiAKICAgICAvLyBab29tIGZ1bmN0aW9ucy4KSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZl
bnRTZW5kZXJQcm94eUlPUy5tbQkocmV2aXNpb24gMjgzMTk4KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzksNiArNzksMTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3du
KFdLU3RyaW5nUgogewogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tT
dHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9j
YXRpb24pCit7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdS
ZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24p
Cit7Cit9CisKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3JvbGxCeShpbnQgeCwgaW50
IHkpCiB7CiB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclBy
b3h5R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVu
dFNlbmRlclByb3h5R3RrLmNwcAkocmV2aXNpb24gMjgzMTk4KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
NSw2ICsyNDUsMTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgog
ICAgIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZUtleUV2ZW50KHRvV2ViS2l0R0xpYkFQSSht
X3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSksIEtleUV2ZW50
VHlwZTo6SW5zZXJ0LCBnZGtLZXlTeW0sIG1vZGlmaWVycywgU2hvdWxkVHJhbnNsYXRlS2V5Ym9h
cmRTdGF0ZTo6Tm8pOwogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tT
dHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9j
YXRpb24pCit7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdS
ZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24p
Cit7Cit9CisKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRv
biwgV0tFdmVudE1vZGlmaWVycyB3a01vZGlmaWVycywgV0tTdHJpbmdSZWYgcG9pbnRlclR5cGUp
CiB7CiAgICAgdW5zaWduZWQgZ2RrQnV0dG9uID0gZXZlbnRTZW5kZXJCdXR0b25Ub0dES0J1dHRv
bihidXR0b24pOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQ
cm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNl
bmRlclByb3h5Lm1tCShyZXZpc2lvbiAyODMxOTgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9FdmVudFNlbmRlclByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NTAsNiArODUwLDQx
NiBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgW05TQXBw
IF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKIH0KIAordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdL
ZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2ln
bmVkIGtleUxvY2F0aW9uKQoreworICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXIgPSB0b1dURlN0cmlu
ZyhrZXkpOworCisgICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAg
IHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOworICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImxlZnRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0xl
ZnRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3
QjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBcnJv
dyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktl
eTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0M7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkgeworICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAg
ICAgIGtleUNvZGUgPSAweDdFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJkb3duQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEb3du
QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0Q7
CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VVcCJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgeworICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHg3OTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
aG9tZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hvbWVGdW5jdGlvbktleTsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzM7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2Rl
ID0gMHg3NzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaW5z
ZXJ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5zZXJ0RnVuY3Rpb25LZXk7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDcyOworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4NzU7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAInByaW50U2NyZWVuIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRT
Y3JlZW5GdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MDsg
Ly8gVGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxM
ZXR0ZXJBIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKKyAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBS
dXNzaWFuIGxheW91dC4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAibGVmdENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUzOwor
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQjsKKyAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IDB4RkZFMTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
Mzg7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQi
XSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3OworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHgzQTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4RkZFNDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0U7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOworICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBr
ZXlDb2RlID0gMHgzQzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAicmlnaHRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OworICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRDsKKyAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IDB4MUI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM1OworICAg
IH0KKworICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1r
ZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIpLgor
ICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkgbmFtZSwgc2V0IGl0
cyBrZXkgY29kZS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDI0OyBpKyspIHsKKyAg
ICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiRiV1IiwgaV1dKSB7CisgICAgICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNG
MUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgICAgICBz
d2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgMToga2V5Q29kZSA9IDB4N0E7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNDoga2V5Q29k
ZSA9IDB4NzY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDY6IGtleUNvZGUgPSAweDYxOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgNzoga2V5Q29kZSA9IDB4NjI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA4OiBr
ZXlDb2RlID0gMHg2NDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAweDY1
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAweDZEOyBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTM6IGtleUNv
ZGUgPSAweDY5OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAweDcxOyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAweDZBOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
MTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTg6IGtleUNvZGUg
PSAweDRGOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTk6IGtleUNvZGUgPSAweDUwOyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNl
dCBmb3IgbW9zdCBrZXlzLgorICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0
Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiICJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMTsKKyAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCisgICAgICAgIGtleUNvZGUgPSAw
eDI0OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKKyAg
ICAgICAga2V5Q29kZSA9IDB4NEM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJceDgiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzM7CisgICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAwOwor
ICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQorICAgICAgICBr
ZXlDb2RlID0gMHgwQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJlIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBFOworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQorICAgICAgICBrZXlDb2Rl
ID0gMHgxQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjoiXSkK
KyAgICAgICAga2V5Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCI7Il0pCisgICAgICAgIGtleUNvZGUgPSAweDI5OworICAgIGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiLCJdKQorICAgICAgICBrZXlDb2RlID0gMHgyQjsK
KworICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0geworICAgICAgICB7MHgyRiwgMHg0MSwg
Jy4nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAorICAgICAgICB7MCwg
ICAgMHg0NSwgJysnLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5j
dGlvbktleSwgQCJjbGVhciJ9LAorICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9LAorICAg
ICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAgICAgezB4MUIsIDB4NEUsICct
JywgbmlsfSwKKyAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKKyAgICAgICAgezB4MUQs
IDB4NTIsICcwJywgbmlsfSwKKyAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwKKyAgICAg
ICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKKyAgICAgICAgezB4MTQsIDB4NTUsICczJywgbmls
fSwKKyAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKKyAgICAgICAgezB4MTcsIDB4NTcs
ICc1JywgbmlsfSwKKyAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKKyAgICAgICAgezB4
MUEsIDB4NTksICc3JywgbmlsfSwKKyAgICAgICAgezB4MUMsIDB4NUIsICc4JywgbmlsfSwKKyAg
ICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKKyAgICB9OworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7CisgICAgICAgIE5TU3Ry
aW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgICAgICBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKKyAgICAgICAgICAgIGlm
IChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKKyAgICAg
ICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsK
KyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgTlNTdHJpbmcgKmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOworCisgICAgaW50IG1vZGlm
aWVyRmxhZ3MgPSAwOworCisgICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFy
YWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJB
dEluZGV4OjBdIDw9ICdaJykgeworICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2Rp
ZmllckZsYWdTaGlmdDsKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW2No
YXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOworICAgIH0KKworICAgIG1vZGlmaWVyRmxhZ3MgfD0g
YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycyk7CisKKyAgICBpZiAoa2V5TG9jYXRpb24gPT0g
MHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisgICAgICAgIG1vZGlmaWVyRmxhZ3Mg
fD0gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisKKyAgICBOU0V2ZW50ICpldmVudCA9
IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duCisgICAgICAgIGxv
Y2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJG
bGFncworICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRF
dmVudFRpbWUoKSkKKyAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWlu
V2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KKyAgICAgICAgY29udGV4
dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAgIGNoYXJhY3RlcnM6
ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5
Q29kZTprZXlDb2RlXTsKKworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKKyAg
ICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgZmly
c3RSZXNwb25kZXJdIGtleURvd246ZXZlbnRdOworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50
Om5pbF07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYg
a2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7
CisgICAgTlNTdHJpbmcqIGNoYXJhY3RlciA9IHRvV1RGU3RyaW5nKGtleSk7CisKKyAgICBOU1N0
cmluZyAqZXZlbnRDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgdW5zaWduZWQgc2hvcnQga2V5
Q29kZSA9IDA7CisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdCOworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFycm93Il0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHg3QzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAidXBBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1Vw
QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0U7
CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJd
KSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5Owor
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3RDsKKyAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZVVwIl0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IE5TUGFnZVVwRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDc0OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJwYWdlRG93biJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVu
Y3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc5OworICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKKyAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IE5TSG9tZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAg
ICAgICBrZXlDb2RlID0gMHg3MzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiZW5kIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rp
b25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc3OworICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgeworICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNJbnNlcnRGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAga2V5Q29kZSA9IDB4NzI7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImRlbGV0ZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0
ZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NTsKKyAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3JlZW4iXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5Owor
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBrbm93
biB2aXJ0dWFsIGtleSBjb2RlIGZvciBQcmludFNjcmVlbi4KKyAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gMHgwNDMwOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHgzOyAvLyBTaGFyZXMga2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0LgorICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTM7CisgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAg
ICAgIGtleUNvZGUgPSAweDNCOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJsZWZ0U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUx
OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzODsKKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSAweEZGRTc7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAw
eDNBOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodENv
bnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU0OworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAicmlnaHRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSAweEZGRTI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNDOworICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7Cisg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTg7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDNEOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJlc2NhcGUiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgxQjsKKyAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MzU7CisgICAgfQorCisgICAgLy8gQ29tcGFy
ZSB0aGUgaW5wdXQgc3RyaW5nIHdpdGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5
IHRoZSBET00gc3BlYyAoaS5lLiAiRjEiLC4uLiwiRjI0IikuCisgICAgLy8gSWYgdGhlIGlucHV0
IHN0cmluZyBpcyBhIGZ1bmN0aW9uLWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgorICAgIGZv
ciAodW5zaWduZWQgaSA9IDE7IGkgPD0gMjQ7IGkrKykgeworICAgICAgICBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0p
IHsKKyAgICAgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAt
IDEpOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAg
ICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6
IGtleUNvZGUgPSAweDc4OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4
NjM7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2Rl
ID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0OyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4NjU7IGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMTog
a2V5Q29kZSA9IDB4Njc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4
NkY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29kZSA9IDB4NkI7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAxNToga2V5Q29kZSA9IDB4NzE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNjoga2V5
Q29kZSA9IDB4NkE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAyMDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCisg
ICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKKyAgICAgICAga2V5Q29k
ZSA9IDB4MzA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0p
CisgICAgICAgIGtleUNvZGUgPSAweDMxOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiXHIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MjQ7CisgICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQorICAgICAgICBrZXlDb2RlID0gMHg0
QzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQorICAg
ICAgICBrZXlDb2RlID0gMHgzMzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImEiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDA7CisgICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBCOworICAg
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQorICAgICAgICBrZXlD
b2RlID0gMHgwMjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUi
XSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEU7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJceDFiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDFCOworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiOiJdKQorICAgICAgICBrZXlDb2RlID0g
MHgyOTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjsiXSkKKyAg
ICAgICAga2V5Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCIsIl0pCisgICAgICAgIGtleUNvZGUgPSAweDJCOworCisgICAgS2V5TWFwcGluZ0Vu
dHJ5IHRhYmxlW10gPSB7CisgICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5pbH0sCisgICAgICAg
IHswLCAgICAweDQzLCAnKicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ1LCAnKycsIG5pbH0s
CisgICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIn0s
CisgICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDRDLCAz
LCBAImVudGVyIiB9LAorICAgICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAorICAgICAgICB7
MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAorICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBuaWx9LAor
ICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAorICAgICAgICB7MHgxMywgMHg1NCwgJzIn
LCBuaWx9LAorICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAorICAgICAgICB7MHgxNSwg
MHg1NiwgJzQnLCBuaWx9LAorICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAorICAgICAg
ICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAorICAgICAgICB7MHgxQSwgMHg1OSwgJzcnLCBuaWx9
LAorICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAorICAgICAgICB7MHgxOSwgMHg1Qywg
JzknLCBuaWx9LAorICAgIH07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJB
WV9MRU5HVEgodGFibGUpOyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFyYWN0
ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNoYXJh
Y3RlciBsZW5ndGg6MV07CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpj
dXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0YWJs
ZVtpXS5jaGFyYWN0ZXJOYW1lXSkgeworICAgICAgICAgICAgaWYgKGtleUxvY2F0aW9uID09IDB4
MDMgLypET01fS0VZX0xPQ0FUSU9OX05VTVBBRCovKQorICAgICAgICAgICAgICAgIGtleUNvZGUg
PSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlDb2RlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOworICAgICAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzID0gZXZlbnRDaGFyYWN0ZXI7CisKKyAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7CisKKyAg
ICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdElu
ZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7
CisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworICAg
ICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0
cmluZ107CisgICAgfQorCisgICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxhZ3Mo
bW9kaWZpZXJzKTsKKworICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NB
VElPTl9OVU1QQUQqLykKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJG
bGFnTnVtZXJpY1BhZDsKKworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRX
aXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUs
IDUpCisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncworICAgICAgICB0aW1lc3Rh
bXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKKyAgICAgICAg
d2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdp
bmRvdygpIHdpbmRvd051bWJlcl0KKyAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQg
Y3VycmVudENvbnRleHRdCisgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKKyAgICAg
ICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKKworICAg
IFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKKyAgICBbW21fdGVzdENvbnRyb2xsZXIt
Pm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2
ZW50XTsKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOworfQorCiB2b2lkIEV2ZW50
U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkoaW50IHgsIGludCB5KQogewogICAgIGF1dG8gY2dT
Y3JvbGxFdmVudCA9IGFkb3B0Q0YoQ0dFdmVudENyZWF0ZVNjcm9sbFdoZWVsRXZlbnQyKDAsIGtD
R1Njcm9sbEV2ZW50VW5pdExpbmUsIDIsIHksIHgsIDApKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwCShyZXZpc2lvbiAy
ODMxOTgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDYgKzMxNCwxNCBAQCB2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgICAgIFNldEtleWJvYXJkU3RhdGUoa2V5U3Rh
dGUpOwogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYg
a2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBX
S0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBFdmVudFNlbmRlclByb3h5OjphZGRUb3Vj
aFBvaW50KGludCwgaW50KQogewpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZl
bnRTZW5kZXJQcm94eVdQRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAJKHJldmlzaW9uIDI4MzE5OCkKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjcsNiArMzI3LDE0IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihX
S1N0cmluZ1IKICAgICBmcmVlKGVudHJpZXMpOwogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OnJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywg
dW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3
S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWdu
ZWQga2V5TG9jYXRpb24pCit7Cit9CisKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6YWRkVG91Y2hQ
b2ludChpbnQgeCwgaW50IHkpCiB7CiAgICAgc3RydWN0IHdwZV9pbnB1dF90b3VjaF9ldmVudF9y
YXcgcmF3RXZlbnQgeyB3cGVfaW5wdXRfdG91Y2hfZXZlbnRfdHlwZV9kb3duLCBzZWNUb01zVGlt
ZXN0YW1wKG1fdGltZSksIHN0YXRpY19jYXN0PGludD4obV90b3VjaEV2ZW50cy5zaXplKCkpLCBz
dGF0aWNfY2FzdDxpbnQzMl90Pih4KSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oeSkgfTsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI4MzE5OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA5LTI4ICBCZXRoIERha2luICA8YmRha2luQGFw
cGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+CisKKyAgICAgICAgbWFj
T1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0b3Agd2hlbiBmb2N1cyBj
aGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB1
c2VGbGV4aWJsZVZpZXdwb3J0IGFuZCBFdmVudEhhbmRsZXJEcml2ZW5TbW9vdGhLZXlib2FyZFNj
cm9sbGluZ0VuYWJsZWQga2V5cyBhcmUgV0syIG9ubHkgCisgICAgICAgIHJpZ2h0IG5vdywgc28g
c2tpcCB0aGUgbmV3IHRlc3QgaW4gZ2VuZXJhbC4KKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25z
OgorCisgICAgICAgIE5ldyB0ZXN0IHRoYXQgdmVyaWZpZXMgdGhpcyBidWcgaXMgcmVzb2x2ZWQu
CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJk
LXNjcm9sbGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5n
L3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbDogQWRkZWQuCisK
KyAgICAgICAgRG8gcnVuIHRoZSB0ZXN0IGZvciBtYWMtd2syLiByYXdLZXlEb3duIC8gcmF3S2V5
VXAgYXJlIGN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQgCisgICAgICAgIGVsc2V3aGVyZS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKKyAgICAgICAgTmV3
IHN1cHBvcnQgZm9yIHJhd0tleURvd24gaW4gb3JkZXIgdG8gc2ltdWxhdGUgaG9sZGluZyB0aGUg
a2V5IGRvd24uCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdp
bmRvdy5VSUhlbHBlci5yYXdLZXlEb3duKToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5yYXdL
ZXlVcCk6CisKIDIwMjEtMDktMjggIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYXJraW5nIG1vcmUgdGVzdHMgY3Jhc2hpbmcgd2l0aCB1bmNhdWdodCBleGNl
cHRpb24gJ05TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uJwpJbmRleDogTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CShyZXZpc2lvbiAyODMxOTgpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIGZhc3QvZm9ybXMvZW50ZXJrZXloaW50LWF0dHJp
YnV0ZS12YWx1ZXMKIGZhc3Qvc2Nyb2xsaW5nL2tleWJvYXJkLXNjcm9sbGluZy1kaXN0YW5jZS1k
b3duQXJyb3cuaHRtbCBbIFNraXAgXQogZmFzdC9zY3JvbGxpbmcva2V5Ym9hcmQtc2Nyb2xsaW5n
LWRpc3RhbmNlLXBhZ2VEb3duLmh0bWwgWyBTa2lwIF0KIGZhc3Qvc2Nyb2xsaW5nL2tleWJvYXJk
LXNjcm9sbGluZy1sYXN0LXRpbWVzdGFtcC5odG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy91
bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwgWyBTa2lwIF0KIAog
IyBIaWdobGlnaHRpbmcgbWFya2VkIHRleHQgcmFuZ2VzIGZyb20gbGF5b3V0IHRlc3RzIGlzIG9u
bHkgc3VwcG9ydGVkIGluIFdlYktpdDIuCiBlZGl0aW5nL2lucHV0L2NvbXBvc2l0aW9uLWhpZ2hs
aWdodHMuaHRtbCBbIFNraXAgXQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5m
b2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxl
LWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9s
bGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACisKK1NVQ0NF
U1M6IEJsdWUgZnJhbWUgc3RvcHBlZCBzY29sbGluZyBiZWZvcmUgcmVkIGZyYW1lCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2Fy
ZC1zY3JvbGxpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxl
LWtleWJvYXJkLXNjcm9sbGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAK
KzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmll
d3BvcnQ9dHJ1ZSBFdmVudEhhbmRsZXJEcml2ZW5TbW9vdGhLZXlib2FyZFNjcm9sbGluZ0VuYWJs
ZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPG1ldGEgbmFtZT0idmlld3Bv
cnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS41LCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAgICA8
c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxSZWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBsZXQgcmVkT2Zmc2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3JlZC1mcmFtZScpLmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldy5zY3JvbGxZOworICAgICAg
ICAgICAgbGV0IGJsdWVPZmZzZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmx1ZS1mcmFt
ZScpLmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldy5zY3JvbGxZOworICAgICAgICAgICAgaWYg
KHJlZE9mZnNldCA+IDE5MDApIHsKKyAgICAgICAgICAgICAgICBpZiAoYmx1ZU9mZnNldCA+IDE5
MDApCisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJGQUlMOiBCbHVlIGZyYW1lIHNjcm9sbGVk
IGFzIGZhciBhcyB0aGUgcmVkIGZyYW1lLiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgZGVidWcoIlNVQ0NFU1M6IEJsdWUgZnJhbWUgc3RvcHBlZCBzY29sbGlu
ZyBiZWZvcmUgcmVkIGZyYW1lIik7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBhc3luYyBmdW5jdGlv
biBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5l
ciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGxldCBibHVlRnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmx1
ZS1mcmFtZScpOworICAgICAgICAgICAgbGV0IHJlZEZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3JlZC1mcmFtZScpOworICAgICAgICAgICAgbGV0IHJlZERvY3VtZW50ID0gcmVkRnJh
bWUuY29udGVudERvY3VtZW50OworCisgICAgICAgICAgICByZWREb2N1bWVudC5hZGRFdmVudExp
c3RlbmVyKCJzY3JvbGwiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2Nyb2xsUmVk
KCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYmx1ZUZyYW1lLmZvY3VzKCk7Cisg
ICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5yYXdLZXlEb3duKCJkb3duQXJyb3ciKTsKKyAgICAg
ICAgICAgIHJlZEZyYW1lLmZvY3VzKCk7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5yYXdL
ZXlEb3duKCJkb3duQXJyb3ciKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzdHls
ZT4KKyAgICAjcGxhY2Vob2xkZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhl
aWdodDogNTAwMHB4OworICAgIH0KKyAgICBpZnJhbWUgeworICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keSBzdHlsZT0ibWFyZ2luOiAwOyIgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxpZnJhbWUg
aWQ9ImJsdWUtZnJhbWUiIHNyY2RvYz0iPGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6
IDIwMDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsnPjwvZGl2PiI+PC9pZnJhbWU+CisgICAg
PGlmcmFtZSBpZD0icmVkLWZyYW1lIiBzcmNkb2M9IjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsg
aGVpZ2h0OiAyMDAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvZGl2PiI+PC9pZnJhbWU+
CisgICAgPGRpdiBpZD0icGxhY2Vob2xkZXIiPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI4MzE5OCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAt
NDIsNiArNDIsOCBAQCBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbGl2CiBm
YXN0L21lZGlhL21xLXByZWZlcnMtY29udHJhc3QtbGl2ZS11cGRhdGUuaHRtbCBbIFBhc3MgXQog
ZmFzdC9tZWRpYS9tcS1wcmVmZXJzLWNvbnRyYXN0Lmh0bWwgWyBQYXNzIF0KIAorZmFzdC9zY3Jv
bGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1sIFsgUGFz
cyBdCisKIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5IFsgUGFzcyBdCiAKICMgQVBQTEVfUEFZX0lO
U1RBTExNRU5UUyB3YXMgZmlyc3QgYXZhaWxhYmxlIGluIENhdGFsaW5hLgpJbmRleDogTGF5b3V0
VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzCShyZXZpc2lvbiAyODMxOTgpCisrKyBMYXlvdXRUZXN0cy9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsNiArMzQ0LDMwIEBA
IHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICAgICAgfQogICAgIH0KIAor
ICAgIHN0YXRpYyByYXdLZXlEb3duKGtleSwgbW9kaWZpZXJzPVtdKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkpIHsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLnJhd0tleURvd24oa2V5LCBtb2RpZmllcnMpOworICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2Ny
aXB0KGB1aUNvbnRyb2xsZXIucmF3S2V5RG93bigiJHtrZXl9IiwgJHtKU09OLnN0cmluZ2lmeSht
b2RpZmllcnMpfSk7YCwgcmVzb2x2ZSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHN0YXRp
YyByYXdLZXlVcChrZXksIG1vZGlmaWVycz1bXSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5p
c1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7CisgICAgICAgICAgICBldmVudFNl
bmRlci5yYXdLZXlVcChrZXksIG1vZGlmaWVycyk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJl
c29sdmUpID0+IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29udHJv
bGxlci5yYXdLZXlVcCgiJHtrZXl9IiwgJHtKU09OLnN0cmluZ2lmeShtb2RpZmllcnMpfSk7YCwg
cmVzb2x2ZSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIHN0YXRpYyBrZXlEb3duKGtleSwg
bW9kaWZpZXJzPVtdKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0
aGlzLmlzSU9TRmFtaWx5KCkpIHsK
</data>
<flag name="commit-queue"
          id="463328"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439819</attachid>
            <date>2021-09-30 21:32:31 -0700</date>
            <delta_ts>2021-10-01 16:29:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-4.txt</filename>
            <type>text/plain</type>
            <size>72350</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzM1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA5LTI4ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkgb24g
dGhlIG9sZCBGcmFtZVZpZXcgYWZ0ZXIgY2hhbmdpbmcgRnJhbWUgZm9jdXMuCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorCisgICAgICAgIENhbGwgdXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKSB3aGVuIHRoZSB3aW5kb3cgdmlzaWJpbGl0eSAvIGFjdGl2ZSBzdGF0
ZSBjaGFuZ2VzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVNj
cm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAg
ICAgICBQbHVtYmluZyB0byBnZXQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSB0
byB0aGUgU2Nyb2xsQ29udHJvbGxlciwgd2hlcmUgd2UgY2FuIHRlbGwgCisgICAgICAgIHRoZSBr
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRvIGhhbmRsZSBrZXlVcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0wOS0zMCAgU2lodWkg
TGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEZpbGUgU3lzdGVtIEFj
Y2VzcyBBUEkgYXZhaWxhYmxlIGluIFdvcmtlcgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgzMzUyKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksNyArMzU5LDggQEAg
dm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRGcmFtZShGcgogICAgIG1fZm9jdXNlZEZy
YW1lID0gbmV3RnJhbWU7CiAKICAgICAvLyBOb3cgdGhhdCB0aGUgZnJhbWUgaXMgdXBkYXRlZCwg
ZmlyZSBldmVudHMgYW5kIHVwZGF0ZSB0aGUgc2VsZWN0aW9uIGZvY3VzZWQgc3RhdGVzIG9mIGJv
dGggZnJhbWVzLgotICAgIGlmIChvbGRGcmFtZSAmJiBvbGRGcmFtZS0+dmlldygpKSB7CisgICAg
aWYgKGF1dG8qIG9sZEZyYW1lVmlldyA9IG9sZEZyYW1lID8gb2xkRnJhbWUtPnZpZXcoKSA6IG51
bGxwdHIpIHsKKyAgICAgICAgb2xkRnJhbWVWaWV3LT5zdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwog
ICAgICAgICBvbGRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0Rm9jdXNlZChmYWxzZSk7CiAgICAgICAg
IG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAy
ODMzNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzU1LDEzICsyMzU1LDMzIEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25T
ZXQ8QWMKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9hY3Rpdml0eVN0YXRlQ2hhbmdlT2Jz
ZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKG9sZEFjdGl2
aXR5U3RhdGUsIG1fYWN0aXZpdHlTdGF0ZSk7CiAKLSAgICBpZiAod2FzVmlzaWJsZUFuZEFjdGl2
ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkKKyAgICBpZiAod2FzVmlzaWJsZUFuZEFjdGl2ZSAh
PSBpc1Zpc2libGVBbmRBY3RpdmUoKSkgewogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgc3RvcFNj
cm9sbEFuaW1hdGlvbnMoKTsKKyAgICB9CiAKICAgICBpZiAobV9wZXJmb3JtYW5jZU1vbml0b3Ip
CiAgICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5hY3Rpdml0eVN0YXRlQ2hhbmdlZChvbGRB
Y3Rpdml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlKTsKIH0KIAordm9pZCBQYWdlOjpzdG9wU2Nyb2xs
QW5pbWF0aW9ucygpCit7CisgICAgZm9yIChhdXRvKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBhdXRv
KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOworICAgICAgICBpZiAoIWZyYW1lVmlldykKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZyYW1lVmlldy0+c3RvcFNjcm9sbEFuaW1h
dGlvbnMoKTsKKworICAgICAgICBjb25zdCBIYXNoU2V0PFNjcm9sbGFibGVBcmVhKj4qIHNjcm9s
bGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFyZWFzKCk7CisgICAgICAgIGlmICgh
c2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChh
dXRvJiBzY3JvbGxhYmxlQXJlYSA6ICpzY3JvbGxhYmxlQXJlYXMpCisgICAgICAgICAgICBzY3Jv
bGxhYmxlQXJlYS0+c3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKyAgICB9Cit9CisKIGJvb2wgUGFn
ZTo6aXNWaXNpYmxlQW5kQWN0aXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hY3Rpdml0eVN0
YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgJiYgbV9hY3Rpdml0eVN0YXRl
LmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCShyZXZpc2lvbiAyODMzNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtODg3LDYgKzg4Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJc1Zp
c2libGVJbnRlcm5hbChib29sKTsKICAgICB2b2lkIHNldElzVmlzdWFsbHlJZGxlSW50ZXJuYWwo
Ym9vbCk7CiAKKyAgICB2b2lkIHN0b3BTY3JvbGxBbmltYXRpb25zKCk7CisKICAgICBlbnVtIFNo
b3VsZEhpZ2hsaWdodE1hdGNoZXMgeyBEb05vdEhpZ2hsaWdodE1hdGNoZXMsIEhpZ2hsaWdodE1h
dGNoZXMgfTsKICAgICBlbnVtIFNob3VsZE1hcmtNYXRjaGVzIHsgRG9Ob3RNYXJrTWF0Y2hlcywg
TWFya01hdGNoZXMgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmNwcAkocmV2aXNpb24gMjgzMzUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsNiArMjMwLDExIEBAIGJv
b2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY28KICAgICByZXR1cm4gaGFuZGxl
ZDsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvcjo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQorewor
ICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zdG9wU2Nyb2xsQW5pbWF0aW9ucygpOworfQorCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVRvdWNoRXZl
bnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAkocmV2aXNpb24gMjgzMzUyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3Jv
bGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAg
ICB2b2lkIHN0b3BTY3JvbGxBbmltYXRpb25zKCk7CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZl
bnRQaGFzZSkgeyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5jcHAJKHJldmlzaW9uIDI4MzM1MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDYgKzIyNSwxMSBA
QCBib29sIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVXaGVlbEV2ZW50Rm9yCiAgICAgcmV0dXJuIGhh
bmRsZWRFdmVudDsKIH0KIAordm9pZCBTY3JvbGxhYmxlQXJlYTo6c3RvcFNjcm9sbEFuaW1hdGlv
bnMoKQoreworICAgIHNjcm9sbEFuaW1hdG9yKCkuc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKK30K
KwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBib29sIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVU
b3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAkocmV2aXNpb24gMjgzMzUy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAkod29ya2luZyBj
b3B5KQpAQCAtMTAxLDYgKzEwMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc25hcEFmdGVyTGF5
b3V0KCk7CiAgICAgdm9pZCBkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyhTY3JvbGxiYXJPcmllbnRh
dGlvbik7CiAKKyAgICB2b2lkIHN0b3BTY3JvbGxBbmltYXRpb25zKCk7CisKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBs
YXRmb3JtVG91Y2hFdmVudCYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAy
ODMzNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDEyIEBAIHZvaWQgU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BLZXkKICAgICBzZXRJc0FuaW1hdGluZ0tleWJvYXJkU2Ny
b2xsaW5nKGZhbHNlKTsKIH0KIAordm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3Rv
cFNjcm9sbEFuaW1hdGlvbnMoKQoreworICAgIGlmIChtX2lzQW5pbWF0aW5nS2V5Ym9hcmRTY3Jv
bGxpbmcpCisgICAgICAgIG1fY2xpZW50LmtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoKS0+aGFu
ZGxlS2V5VXBFdmVudCgpOworfQorCiBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpz
dGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihGbG9hdFBvaW50IHN0YXJ0T2Zmc2V0LCBG
bG9hdFBvaW50IGRlc3RpbmF0aW9uT2Zmc2V0KQogewogICAgIGlmIChtX2N1cnJlbnRBbmltYXRp
b24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyLmgJKHJldmlzaW9uIDI4MzM1MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
Miw3ICsxNDIsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJlZ2luS2V5Ym9hcmRTY3JvbGxpbmco
KTsKICAgICB2b2lkIHN0b3BLZXlib2FyZFNjcm9sbGluZygpOwotICAgIAorCisgICAgdm9pZCBz
dG9wU2Nyb2xsQW5pbWF0aW9ucygpOworCiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCBwZXJpb2Rp
Y2FsbHkgYnkgdGhlIGNsaWVudC4gU3RhcnRlZCBieSBzdGFydEFuaW1hdGlvbkNhbGxiYWNrKCks
IHN0b3BwZWQgYnkgc3RvcEFuaW1hdGlvbkNhbGxiYWNrKCkuCiAgICAgdm9pZCBhbmltYXRpb25D
YWxsYmFjayhNb25vdG9uaWNUaW1lKTsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjgzMzU4KQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjEtMDktMzAgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPiBhbmQgRGFuYSBFc3RyYSA8ZGVzdHJhQGFwcGxlLmNvbT4K
KworICAgICAgICBtYWNPUyBrZXktZHJpdmVuIHNtb290aCBzY3JvbGxpbmcgZG9lcyBub3Qgc3Rv
cCB3aGVuIGZvY3VzIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyODMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUgcGF0Y2ggZG9lc24ndCB5ZXQgY2hhbmdl
IERSVCB0byBzaGFyZSBjb2RlLiBJbiBXZWJLaXRUZXN0UnVubmVyLCB0aGUgY29kZSAKKyAgICAg
ICAgdG8gZXh0cmFjdCBtb2RpZmllciBrZXkgaW5mb3JtYXRpb24gaXMgcHVsbGVkIGludG8gYSBs
aXR0bGUgY2xhc3MgY2FsbGVkIE1vZGlmaWVyS2V5RXh0cmFjdG9yIAorICAgICAgICBhbmQgc2hh
cmVkIGJldHdlZW4gcmF3S2V5RG93biwgcmF3S2V5VXAsIGFuZCBrZXlEb3duLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAg
ICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoK1tFdmVu
dFNlbmRpbmdDb250cm9sbGVyIGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6Cisg
ICAgICAgICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9y
Ol0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tleURvd246d2l0aE1v
ZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIgcmF3S2V5RG93bldyYXBwZXI6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAg
ICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmF3S2V5VXA6d2l0aE1vZGlmaWVyczp3aXRo
TG9jYXRpb246XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmF3S2V5VXBX
cmFwcGVyOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGw6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6Y3JlYXRlUmF3S2V5RG93bk1lc3NhZ2VCb2R5KToKKyAg
ICAgICAgKFdUUjo6Y3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keSk6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNl
bmRpbmdDb250cm9sbGVyOjpyYXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJl
Y2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQ
cm94eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tl
eVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1t
OgorICAgICAgICAoLVtNb2RpZmllcktleUV4dHJhY3RvciBpbml0V2l0aEtleTptb2RpZmllcnM6
a2V5TG9jYXRpb246XSk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24p
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNl
bmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6
cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJv
eHlXUEUuY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorCiAyMDIxLTA5LTMw
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
U3RvcCBtYWtpbmcgYSBmaWxlIG5hbWVkIG51bGwgd2hlbiBydW5uaW5nIEFQSSB0ZXN0cwpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIubW0JKHJldmlzaW9uIDI4MzM1MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDggQEAg
KyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIEAiZm9jdXMiLAogICAgICAgICBAImlucHV0IiwK
ICAgICAgICAgQCJrZXlkb3duIiwKKyAgICAgICAgQCJyYXdrZXlkb3duIiwKKyAgICAgICAgQCJy
YXdrZXl1cCIsCiAgICAgICAgIEAia2V5cHJlc3MiLAogICAgICAgICBAImtleXVwIiwKICAgICAg
ICAgQCJsb2FkIiwKQEAgLTI0NSw2ICsyNDcsOCBAQCArIChCT09MKWlzU2VsZWN0b3JFeGNsdWRl
ZEZyb21XZWJTY3JpcHQ6CiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGVu
YWJsZURPTVVJRXZlbnRMb2dnaW5nOikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IoZmlyZUtleWJvYXJkRXZlbnRzVG9FbGVtZW50OikKICAgICAgICAgICAgIHx8IGFTZWxl
Y3RvciA9PSBAc2VsZWN0b3Ioa2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopCisg
ICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tleURvd246d2l0aE1vZGlm
aWVyczp3aXRoTG9jYXRpb246KQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rv
cihyYXdLZXlVcDp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopCiAgICAgICAgICAgICB8fCBh
U2VsZWN0b3IgPT0gQHNlbGVjdG9yKGxlYXBGb3J3YXJkOikKICAgICAgICAgICAgIHx8IGFTZWxl
Y3RvciA9PSBAc2VsZWN0b3IobW91c2VEb3duOndpdGhNb2RpZmllcnM6KQogICAgICAgICAgICAg
fHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcihtb3VzZU1vdmVUb1g6WTopCkBAIC0zMDYsNiArMzEw
LDEwIEBAICsgKE5TU3RyaW5nICopd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOigKICAgICAgICAg
cmV0dXJuIEAiZmlyZUtleWJvYXJkRXZlbnRzVG9FbGVtZW50IjsKICAgICBpZiAoYVNlbGVjdG9y
ID09IEBzZWxlY3RvcihrZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikpCiAgICAg
ICAgIHJldHVybiBAImtleURvd24iOworICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJh
d0tleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkKKyAgICAgICAgcmV0dXJuIEAi
cmF3S2V5RG93biI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IocmF3S2V5VXA6d2l0
aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkKKyAgICAgICAgcmV0dXJuIEAicmF3S2V5VXAiOwog
ICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93
bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQogICAgICAgICByZXR1cm4gQCJzY2hlZHVs
ZUFzeW5jaHJvbm91c0tleURvd24iOwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGxl
YXBGb3J3YXJkOikpCkBAIC0xMjA5LDYgKzEyMTcsNDM4IEBAIC0gKHZvaWQpa2V5RG93bldyYXBw
ZXI6KE5TU3RyaW5nICopY2hhcmEKICAgICBbc2VsZiBrZXlEb3duOmNoYXJhY3RlciB3aXRoTW9k
aWZpZXJzOm1vZGlmaWVycyB3aXRoTG9jYXRpb246bG9jYXRpb25dOwogfQogCistICh2b2lkKXJh
d0tleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9i
amVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sK
KyAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgdW5zaWduZWQg
c2hvcnQga2V5Q29kZSA9IDA7CisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
bGVmdEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVu
Y3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdCOworICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFycm93Il0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3QzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29k
ZSA9IDB4N0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRv
d25BcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0
aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3RDsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZVVwIl0pIHsKKyAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZVVwRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIGtleUNvZGUgPSAweDc0OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJwYWdlRG93biJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1Bh
Z2VEb3duRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc5
OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSG9tZUZ1bmN0aW9uS2V5OworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHg3MzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
RW5kRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc3Owor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgewor
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNJbnNlcnRGdW5jdGlvbktleTsKKyAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzI7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0g
MHg3NTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBl
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7CisgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIGtleUNvZGUgPSAweDM1OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUg
PSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2Ny
ZWVuLgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxp
Y1NtYWxsTGV0dGVyQSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAi
RiIgb24gUnVzc2lhbiBsYXlvdXQuCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4
RkZFMzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDM4OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJs
ZWZ0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKKyAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0E7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSAweEZGRTQ7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNFOwor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKKyAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAga2V5Q29kZSA9IDB4M0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZF
ODsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0Q7CisgICAgfQorCisgICAg
Ly8gQ29tcGFyZSB0aGUgaW5wdXQgc3RyaW5nIHdpdGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBk
ZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAoaS5lLiAiRjEiLC4uLiwiRjI0IikuCisgICAgLy8gSWYg
dGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0aW9uLWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2Rl
LgorICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gMjQ7IGkrKykgeworICAgICAgICBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJG
JXUiLCBpXV0pIHsKKyAgICAgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25L
ZXkgKyAoaSAtIDEpOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaSkg
eworICAgICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDI6IGtleUNvZGUgPSAweDc4OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoga2V5
Q29kZSA9IDB4NjM7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3Njsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA3
OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAw
eDY0OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4NjU7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMjoga2V5
Q29kZSA9IDB4NkY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29kZSA9IDB4NkI7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAxNToga2V5Q29kZSA9IDB4NzE7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29k
ZSA9IDB4NDA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAyMDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0
IGtleXMuCisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKKyAgICAg
ICAga2V5Q29kZSA9IDB4MzA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCIgIl0pCisgICAgICAgIGtleUNvZGUgPSAweDMxOworICAgIGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MjQ7CisgICAg
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQorICAgICAgICBrZXlD
b2RlID0gMHg0QzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4
OCJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImEiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDA7CisgICAgZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCisgICAgICAgIGtleUNvZGUgPSAw
eDBCOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQorICAg
ICAgICBrZXlDb2RlID0gMHgwMjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImUiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEU7CisgICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDFiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDFCOwor
CisgICAgS2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7CisgICAgICAgIHsweDJGLCAweDQxLCAn
LicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0sCisgICAgICAgIHswLCAg
ICAweDQ1LCAnKycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0
aW9uS2V5LCBAImNsZWFyIn0sCisgICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCisgICAg
ICAgIHswLCAgICAweDRDLCAzLCBAImVudGVyIiB9LAorICAgICAgICB7MHgxQiwgMHg0RSwgJy0n
LCBuaWx9LAorICAgICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAorICAgICAgICB7MHgxRCwg
MHg1MiwgJzAnLCBuaWx9LAorICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAorICAgICAg
ICB7MHgxMywgMHg1NCwgJzInLCBuaWx9LAorICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9
LAorICAgICAgICB7MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAorICAgICAgICB7MHgxNywgMHg1Nywg
JzUnLCBuaWx9LAorICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAorICAgICAgICB7MHgx
QSwgMHg1OSwgJzcnLCBuaWx9LAorICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAorICAg
ICAgICB7MHgxOSwgMHg1QywgJzknLCBuaWx9LAorICAgIH07CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsKKyAgICAgICAgTlNTdHJp
bmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JnRhYmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07CisgICAgICAgIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgeworICAgICAgICAgICAgaWYg
KGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQorICAgICAgICAgICAgICAgIGtl
eUNvZGUgPSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlDb2RlOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOworICAgICAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzID0gZXZlbnRDaGFyYWN0ZXI7CisKKyAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7
CisKKyAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0
ZXJBdEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0g
J1onKSB7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIG1vZGlmaWVyRmxhZ3Mg
fD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworI2Vsc2UKKyAgICAgICAgbW9kaWZpZXJGbGFn
cyB8PSBXZWJFdmVudEZsYWdNYXNrTGVmdFNoaWZ0S2V5OworI2VuZGlmCisgICAgICAgIGNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKKyAg
ICB9CisKKyAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMp
OworCisgICAgaWYgKGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQorICAgICAg
ICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworCisgICAg
W1tbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOworCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBr
ZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgorICAgICAgICBsb2NhdGlvbjpOU01h
a2VQb2ludCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAg
ICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdpbmRvd051bWJl
cjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNv
bnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0
ZXJzOmV2ZW50Q2hhcmFjdGVyCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAg
IGtleUNvZGU6a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dl
YkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0
YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2Rp
ZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxh
Z3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3Rl
ckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAn
XHQnKV0pOworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAg
X3NldEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07CisjZW5kaWYKKyAgICBbW1tbbWFpbkZyYW1l
IHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnQuZ2V0KCldOwor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5p
bF07CisjZW5kaWYKK30KKworLSAodm9pZClyYXdLZXlEb3duV3JhcHBlcjooTlNTdHJpbmcgKilj
aGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhM
b2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAgIFtzZWxmIHJhd0tleURvd246
Y2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07
Cit9CisKKy0gKHZvaWQpcmF3S2V5VXA6KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmll
cnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxv
bmcpbG9jYXRpb24KK3sKKyAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7
CisgICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7CisgICAgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUg
PSAweDdCOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdo
dEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUmlnaHRBcnJvd0Z1bmN0
aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3QzsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4N0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U0Rvd25BcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0g
MHg3RDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZVVw
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZVVwRnVuY3Rpb25LZXk7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc0OworICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7CisgICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IGtleUNvZGUgPSAweDc5OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJob21lIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSG9tZUZ1bmN0aW9u
S2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3MzsKKyAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsKKyAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDc3OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJpbnNlcnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNJbnNlcnRGdW5jdGlv
bktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzI7CisgICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAg
ICAgICBrZXlDb2RlID0gMHg3NTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiZXNjYXBlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM1OworICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNv
ZGUgZm9yIFByaW50U2NyZWVuLgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSAweDA0MzA7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNo
YXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
M0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlm
dCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDM4OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4
RkZFNzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0E7CisgICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDNFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJyaWdodFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKKyAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0M7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4RkZFODsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0Q7
CisgICAgfQorCisgICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3RyaW5nIHdpdGggdGhlIGZ1bmN0
aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAoaS5lLiAiRjEiLC4uLiwiRjI0
IikuCisgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0aW9uLWtleSBuYW1lLCBz
ZXQgaXRzIGtleSBjb2RlLgorICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gMjQ7IGkrKykg
eworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKKyAgICAgICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
ICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4OyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA0OiBr
ZXlDb2RlID0gMHg3NjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYw
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDg6IGtleUNvZGUgPSAweDY0OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9
IDB4NjU7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMzog
a2V5Q29kZSA9IDB4Njk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29kZSA9IDB4
NkI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNToga2V5Q29kZSA9IDB4NzE7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxODoga2V5
Q29kZSA9IDB4NEY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyMDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gRklYTUU6IE5vIGtleUNvZGUg
aXMgc2V0IGZvciBtb3N0IGtleXMuCisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiXHQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0pCisgICAgICAgIGtleUNvZGUgPSAweDMxOworICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkKKyAgICAgICAga2V5Q29k
ZSA9IDB4MjQ7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJd
KQorICAgICAgICBrZXlDb2RlID0gMHg0QzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAIlx4OCJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMzsKKyAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImEiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4
MDA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCisgICAg
ICAgIGtleUNvZGUgPSAweDBCOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiZCJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMjsKKyAgICBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEU7CisgICAg
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDFiIl0pCisgICAgICAgIGtl
eUNvZGUgPSAweDFCOworCisgICAgS2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7CisgICAgICAg
IHsweDJGLCAweDQxLCAnLicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0s
CisgICAgICAgIHswLCAgICAweDQ1LCAnKycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ3LCBO
U0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIn0sCisgICAgICAgIHsweDJDLCAweDRCLCAn
LycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDRDLCAzLCBAImVudGVyIiB9LAorICAgICAgICB7
MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAorICAgICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAor
ICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBuaWx9LAorICAgICAgICB7MHgxMiwgMHg1MywgJzEn
LCBuaWx9LAorICAgICAgICB7MHgxMywgMHg1NCwgJzInLCBuaWx9LAorICAgICAgICB7MHgxNCwg
MHg1NSwgJzMnLCBuaWx9LAorICAgICAgICB7MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAorICAgICAg
ICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAorICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9
LAorICAgICAgICB7MHgxQSwgMHg1OSwgJzcnLCBuaWx9LAorICAgICAgICB7MHgxQywgMHg1Qiwg
JzgnLCBuaWx9LAorICAgICAgICB7MHgxOSwgMHg1QywgJzknLCBuaWx9LAorICAgIH07CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsK
KyAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07CisgICAgICAg
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8
fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgewor
ICAgICAgICAgICAgaWYgKGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQorICAg
ICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlDb2RlOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2Rl
OworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBOU1N0cmluZyAqY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gZXZlbnRDaGFyYWN0ZXI7CisKKyAgICBpbnQgbW9k
aWZpZXJGbGFncyA9IDA7CisKKyAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2No
YXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3Rl
ckF0SW5kZXg6MF0gPD0gJ1onKSB7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAg
IG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworI2Vsc2UKKyAgICAg
ICAgbW9kaWZpZXJGbGFncyB8PSBXZWJFdmVudEZsYWdNYXNrTGVmdFNoaWZ0S2V5OworI2VuZGlm
CisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJj
YXNlU3RyaW5nXTsKKyAgICB9CisKKyAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJG
bGFncyhtb2RpZmllcnMpOworCisgICAgaWYgKGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05f
TlVNUEFEKQorICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1l
cmljUGFkOworCisgICAgW1tbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlv
dXRdOworCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYXV0byBldmVudCA9IHJldGFp
blB0cihbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKKyAgICAgICAg
bG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmll
ckZsYWdzCisgICAgICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQorICAgICAg
ICB3aW5kb3dOdW1iZXI6W1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gd2luZG93TnVtYmVy
XQorICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAg
ICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgorICAgICAgICBjaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgIGlzQVJlcGVh
dDpOTworICAgICAgICBrZXlDb2RlOmtleUNvZGVdKTsKKyNlbHNlCisgICAgYXV0byBldmVudCA9
IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRL
ZXlVcCB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczpldmVudENo
YXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllckZsYWdzIGlzUmVwZWF0aW5n
Ok5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0
ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdElu
ZGV4OjBdID09ICdcdCcpXSk7CisjZW5kaWYKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50LmdldCgpXTsKKyNlbmRpZgorICAgIFtb
W1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnQu
Z2V0KCldOworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVu
dEV2ZW50Om5pbF07CisjZW5kaWYKK30KKworLSAodm9pZClyYXdLZXlVcFdyYXBwZXI6KE5TU3Ry
aW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVy
cyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sKKyAgICBbc2VsZiByYXdL
ZXlVcDpjaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczptb2RpZmllcnMgd2l0aExvY2F0aW9uOmxvY2F0
aW9uXTsKK30KKwogLSAodm9pZClzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd246KE5TU3RyaW5n
ICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3
aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KIHsKICAgICBOU0ludm9jYXRpb24g
Kmludm9jYXRpb24gPSBbTlNJbnZvY2F0aW9uIGludm9jYXRpb25XaXRoTWV0aG9kU2lnbmF0dXJl
OltFdmVudFNlbmRpbmdDb250cm9sbGVyIGluc3RhbmNlTWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0
b3I6QHNlbGVjdG9yKGtleURvd25XcmFwcGVyOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOild
XTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCShyZXZp
c2lvbiAyODMzNTIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsZWFw
Rm9yd2FyZChpbnQgbWlsbGlzZWNvbmRzKTsKIAogICAgIHZvaWQga2V5RG93bihXS1N0cmluZ1Jl
ZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsKKyAgICB2b2lkIHJh
d0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2Nh
dGlvbik7CisgICAgdm9pZCByYXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmll
cnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHVuc2ln
bmVkIG1vdXNlQnV0dG9uc0N1cnJlbnRseURvd24oKSBjb25zdCB7IHJldHVybiBtX21vdXNlQnV0
dG9uc0N1cnJlbnRseURvd247IH0KQEAgLTEwNCw2ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgdXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbihpbnQgYnV0dG9uKTsKIAogICAgIHZvaWQgc2Vu
ZE1vdXNlRG93blRvU3RhcnRQcmVzc3VyZUV2ZW50cygpOworCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgZW51bSBjbGFzcyBQcmVzc3VyZUNoYW5nZURpcmVjdGlvbiB7IEluY3JlYXNpbmcsIERl
Y3JlYXNpbmcgfTsKICAgICBSZXRhaW5QdHI8TlNFdmVudD4gYmVnaW5QcmVzc3VyZUV2ZW50KGlu
dCBzdGFnZSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMjgzMzUyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTYsNiArMTU5NiwxNiBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjpkaWRSZWNlaXZlS2V5RG93bk1lCiAgICAgbV9ldmVudFNlbmRlclByb3h5LT5r
ZXlEb3duKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlv
bmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7
CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJv
bm91cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tleURvd24oc3RyaW5nVmFsdWUo
ZGljdGlvbmFyeSwgIktleSIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiks
IHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJMb2NhdGlvbiIpKTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0Rp
Y3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2ZW50
U2VuZGVyUHJveHktPnJhd0tleVVwKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWlu
dDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5
LCAiTG9jYXRpb24iKSk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVMaXZl
RG9jdW1lbnRzTGlzdChXS0FycmF5UmVmIGxpdmVEb2N1bWVudExpc3QpCiB7CiAgICAgYXV0byBu
dW1Eb2N1bWVudHMgPSBXS0FycmF5R2V0U2l6ZShsaXZlRG9jdW1lbnRMaXN0KTsKQEAgLTE2NTMs
NiArMTY2MywxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZyCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tleURvd24iKSkgeworICAgICAg
ICAgICAgZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKGRpY3Rp
b25hcnksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5
VXAiKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShkaWN0aW9uYXJ5LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKwogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdl
TmFtZSwgIk1vdXNlU2Nyb2xsQnkiKSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5
LT5tb3VzZVNjcm9sbEJ5KGRvdWJsZVZhbHVlKGRpY3Rpb25hcnksICJYIiksIGRvdWJsZVZhbHVl
KGRpY3Rpb25hcnksICJZIikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTcwMiw2ICsxNzIy
LDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm8KICAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCisgICAg
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3
S2V5RG93biIpKSB7CisgICAgICAgICAgICBkaWRSZWNlaXZlUmF3S2V5RG93bk1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoZGljdGlvbmFyeSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tleVVwIikpIHsKKyAg
ICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoZGlj
dGlvbmFyeSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVs
bHB0cik7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93biIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50
U2VuZGVyUHJveHktPm1vdXNlRG93bih1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiQnV0dG9uIiks
IHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJNb2RpZmllcnMiKSwgc3RyaW5nVmFsdWUoZGljdGlv
bmFyeSwgIlBvaW50ZXJUeXBlIikpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAkocmV2aXNpb24gMjgzMzUyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNiArNDQxLDggQEAgcHJpdmF0ZToKICAgICBX
S1JldGFpblB0cjxXS1R5cGVSZWY+IGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YSgpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlS2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJv
bm91cyk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJv
bm91cyk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnksIGJvb2wgc3luY2hyb25v
dXMpOwogCiAgICAgLy8gV0tDb250ZXh0Q2xpZW50CiAgICAgc3RhdGljIHZvaWQgbmV0d29ya1By
b2Nlc3NEaWRDcmFzaChXS0NvbnRleHRSZWYsIGNvbnN0IHZvaWQqKTsKSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgzMzUyKQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAxLDExICszMDEsNDEgQEAgc3RhdGljIFdLUmV0YWluUHRyPFdLTXV0
YWJsZURpY3Rpb25hcnlSZQogICAgIHJldHVybiBib2R5OwogfQogCitzdGF0aWMgV0tSZXRhaW5Q
dHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRlUmF3S2V5RG93bk1lc3NhZ2VCb2R5KEpT
U3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGludCBsb2NhdGlvbikK
K3sKKyAgICBhdXRvIGJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7
CisgICAgc2V0VmFsdWUoYm9keSwgIlN1Yk1lc3NhZ2UiLCAiUmF3S2V5RG93biIpOworICAgIHNl
dFZhbHVlKGJvZHksICJLZXkiLCBrZXkpOworICAgIHNldFZhbHVlKGJvZHksICJNb2RpZmllcnMi
LCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKG1vZGlmaWVycykpKTsKKyAgICBzZXRWYWx1ZShib2R5
LCAiTG9jYXRpb24iLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKGxvY2F0aW9uKSkpOworICAgIHJl
dHVybiBib2R5OworfQorCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJl
Zj4gY3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keShKU1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2Rp
ZmllcnMgbW9kaWZpZXJzLCBpbnQgbG9jYXRpb24pCit7CisgICAgYXV0byBib2R5ID0gYWRvcHRX
SyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworICAgIHNldFZhbHVlKGJvZHksICJTdWJN
ZXNzYWdlIiwgIlJhd0tleVVwIik7CisgICAgc2V0VmFsdWUoYm9keSwgIktleSIsIGtleSk7Cisg
ICAgc2V0VmFsdWUoYm9keSwgIk1vZGlmaWVycyIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobW9k
aWZpZXJzKSkpOworICAgIHNldFZhbHVlKGJvZHksICJMb2NhdGlvbiIsIGFkb3B0V0soV0tVSW50
NjRDcmVhdGUobG9jYXRpb24pKSk7CisgICAgcmV0dXJuIGJvZHk7Cit9CisKIHZvaWQgRXZlbnRT
ZW5kaW5nQ29udHJvbGxlcjo6a2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9k
aWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKQogewogICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNz
YWdlKCJFdmVudFNlbmRlciIsIGNyZWF0ZUtleURvd25NZXNzYWdlQm9keShrZXksIHBhcnNlTW9k
aWZpZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRpb24pKTsKIH0KIAordm9pZCBFdmVudFNl
bmRpbmdDb250cm9sbGVyOjpyYXdLZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBt
b2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pCit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1l
c3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3S2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgcGFy
c2VNb2RpZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOworfQorCit2b2lkIEV2
ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleVVwKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJl
ZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pCit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFn
ZU1lc3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keShrZXksIHBh
cnNlTW9kaWZpZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRpb24pKTsKK30KKwogdm9pZCBF
dmVudFNlbmRpbmdDb250cm9sbGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oSlNTdHJp
bmdSZWYga2V5KQogewogICAgIHBvc3RQYWdlTWVzc2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVL
ZXlEb3duTWVzc2FnZUJvZHkoa2V5LCAwLCAwKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuaAkocmV2aXNpb24gMjgzMzUyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDYgKzY4LDggQEAgcHVibGljOgogICAgIHZvaWQgY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjayk7CiAKICAgICB2b2lkIGtleURvd24oSlNTdHJp
bmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbik7CisgICAg
dm9pZCByYXdLZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5
LCBpbnQgbG9jYXRpb24pOworICAgIHZvaWQgcmF3S2V5VXAoSlNTdHJpbmdSZWYga2V5LCBKU1Zh
bHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbik7CiAgICAgdm9pZCBzY2hlZHVsZUFz
eW5jaHJvbm91c0tleURvd24oSlNTdHJpbmdSZWYga2V5KTsKIAogICAgIHZvaWQgdGV4dFpvb21J
bigpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
aWRsCShyZXZpc2lvbiAyODMzNTIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw2ICs0Niw4IEBAIGludGVyZmFjZSBFdmVudFNlbmRpbmdDb250cm9sbGVyIHsKICAg
ICB1bmRlZmluZWQgbGVhcEZvcndhcmQobG9uZyBtaWxsaXNlY29uZHMpOwogCiAgICAgdW5kZWZp
bmVkIGtleURvd24oRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1vZGlmaWVyQXJyYXksIGxvbmcgbG9j
YXRpb24pOworICAgIHVuZGVmaW5lZCByYXdLZXlEb3duKERPTVN0cmluZyBrZXksIG9iamVjdCBt
b2RpZmllckFycmF5LCBsb25nIGxvY2F0aW9uKTsKKyAgICB1bmRlZmluZWQgcmF3S2V5VXAoRE9N
U3RyaW5nIGtleSwgb2JqZWN0IG1vZGlmaWVyQXJyYXksIGxvbmcgbG9jYXRpb24pOwogICAgIHVu
ZGVmaW5lZCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oRE9NU3RyaW5nIGtleSk7CiAKICAg
ICAvLyBab29tIGZ1bmN0aW9ucy4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5t
bQkocmV2aXNpb24gMjgzMzUyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzksNiAr
NzksMTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogewogfQog
Cit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKK3Zv
aWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9k
aWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKIHZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6bW91c2VTY3JvbGxCeShpbnQgeCwgaW50IHkpCiB7CiB9CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNw
cAkocmV2aXNpb24gMjgzMzUyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRT
ZW5kZXJQcm94eUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUsMTQgQEAgdm9p
ZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgIHdlYmtpdFdlYlZpZXdC
YXNlU3ludGhlc2l6ZUtleUV2ZW50KHRvV2ViS2l0R0xpYkFQSShtX3Rlc3RDb250cm9sbGVyLT5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSksIEtleUV2ZW50VHlwZTo6SW5zZXJ0LCBnZGtL
ZXlTeW0sIG1vZGlmaWVycywgU2hvdWxkVHJhbnNsYXRlS2V5Ym9hcmRTdGF0ZTo6Tm8pOwogfQog
Cit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKK3Zv
aWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9k
aWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKIHZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVudE1vZGlmaWVy
cyB3a01vZGlmaWVycywgV0tTdHJpbmdSZWYgcG9pbnRlclR5cGUpCiB7CiAgICAgdW5zaWduZWQg
Z2RrQnV0dG9uID0gZXZlbnRTZW5kZXJCdXR0b25Ub0dES0J1dHRvbihidXR0b24pOwpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCShyZXZp
c2lvbiAyODMzNTIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclBy
b3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSwyMjIgQEAgLSAodm9pZClfcG9zdERl
bGF5ZWQ7CiAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ0dFdmVudDooQ0dFdmVudFJlZilldmVu
dCBldmVudFJlZjoodm9pZCAqKWV2ZW50UmVmOwogQGVuZAogCitzdHJ1Y3QgS2V5TWFwcGluZ0Vu
dHJ5IHsKKyAgICBpbnQgbWFjS2V5Q29kZTsKKyAgICBpbnQgbWFjTnVtcGFkS2V5Q29kZTsKKyAg
ICB1bmljaGFyIGNoYXJhY3RlcjsKKyAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFtZTsKK307CisK
K0BpbnRlcmZhY2UgTW9kaWZpZXJLZXlFeHRyYWN0b3IgOiBOU09iamVjdCB7CitAcHVibGljCisg
ICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyOworICAgIHVuc2lnbmVkIHNob3J0IGtleUNvZGU7
CisgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczsKKyAgICBpbnQgbW9k
aWZpZXJGbGFnczsKK30KKworLSAoaWQpaW5pdFdpdGhLZXk6KE5TU3RyaW5nICopa2V5IG1vZGlm
aWVyczooaW50KW1vZGlmaWVycyBrZXlMb2NhdGlvbjoodW5zaWduZWQpa2V5TG9jYXRpb247CitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBNb2RpZmllcktleUV4dHJhY3RvcgorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhLZXk6KE5TU3RyaW5nICopY2hhcmFjdGVyIG1vZGlmaWVyczooaW50KW1v
ZGlmaWVycyBrZXlMb2NhdGlvbjoodW5zaWduZWQpa2V5TG9jYXRpb24KK3sKKyAgICBzZWxmID0g
W3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IGV2ZW50Q2hhcmFjdGVyID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6Y2hhcmFj
dGVyXTsKKyAgICBrZXlDb2RlID0gMDsKKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJsZWZ0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJy
b3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0I7Cisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdDOworICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBr
ZXlDb2RlID0gMHg3RTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiZG93bkFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93
RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdEOworICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKKyAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzQ7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAInBhZ2VEb3duIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TUGFnZURvd25GdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4Nzk7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUi
XSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7CisgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDczOworICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNFbmRGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
Nzc7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJd
KSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OworICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3MjsKKyAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDc1OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJw
cmludFNjcmVlbiJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVu
RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRo
ZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgorICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVy
QSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lh
biBsYXlvdXQuCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxl
ZnRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSAweEZGRTE7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM4Owor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4M0E7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZG
RTQ7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNFOworICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKKyAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29k
ZSA9IDB4M0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJp
Z2h0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKKyAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSAweDFCOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzNTsKKyAgICB9CisK
KyAgICAvLyBDb21wYXJlIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5h
bWVzIGRlZmluZWQgYnkgdGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KKyAgICAv
LyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5
IGNvZGUuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7CisgICAgICAg
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIkYldSIsIGldXSkgeworICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5j
dGlvbktleSArIChpIC0gMSk7CisgICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICAgICAgc3dpdGNo
IChpKSB7CisgICAgICAgICAgICBjYXNlIDE6IGtleUNvZGUgPSAweDdBOyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgMjoga2V5Q29kZSA9IDB4Nzg7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAz
OiBrZXlDb2RlID0gMHg2MzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAw
eDc2OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDc6IGtleUNvZGUgPSAweDYyOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgODoga2V5Q29k
ZSA9IDB4NjQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDExOiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEy
OiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEzOiBrZXlDb2RlID0g
MHg2OTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE0OiBrZXlDb2RlID0gMHg2QjsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDE2OiBrZXlDb2RlID0gMHg2QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE3OiBr
ZXlDb2RlID0gMHg0MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0
RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDIwOiBrZXlDb2RlID0gMHg1QTsgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9y
IG1vc3Qga2V5cy4KKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQor
ICAgICAgICBrZXlDb2RlID0gMHgzMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAIiAiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzE7CisgICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcciJdKQorICAgICAgICBrZXlDb2RlID0gMHgyNDsK
KyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCisgICAgICAg
IGtleUNvZGUgPSAweDRDOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiXHg4Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMzOworICAgIGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMDsKKyAgICBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkKKyAgICAgICAga2V5Q29k
ZSA9IDB4MEI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0p
CisgICAgICAgIGtleUNvZGUgPSAweDAyOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiZSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwRTsKKyAgICBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4MWIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4
MUI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI6Il0pCisgICAg
ICAgIGtleUNvZGUgPSAweDI5OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiOyJdKQorICAgICAgICBrZXlDb2RlID0gMHgyOTsKKyAgICBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAIiwiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MkI7CisKKyAg
ICBLZXlNYXBwaW5nRW50cnkgdGFibGVbXSA9IHsKKyAgICAgICAgezB4MkYsIDB4NDEsICcuJywg
bmlsfSwKKyAgICAgICAgezAsICAgIDB4NDMsICcqJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4
NDUsICcrJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25L
ZXksIEAiY2xlYXIifSwKKyAgICAgICAgezB4MkMsIDB4NEIsICcvJywgbmlsfSwKKyAgICAgICAg
ezAsICAgIDB4NEMsIDMsIEAiZW50ZXIiIH0sCisgICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5p
bH0sCisgICAgICAgIHsweDE4LCAweDUxLCAnPScsIG5pbH0sCisgICAgICAgIHsweDFELCAweDUy
LCAnMCcsIG5pbH0sCisgICAgICAgIHsweDEyLCAweDUzLCAnMScsIG5pbH0sCisgICAgICAgIHsw
eDEzLCAweDU0LCAnMicsIG5pbH0sCisgICAgICAgIHsweDE0LCAweDU1LCAnMycsIG5pbH0sCisg
ICAgICAgIHsweDE1LCAweDU2LCAnNCcsIG5pbH0sCisgICAgICAgIHsweDE3LCAweDU3LCAnNScs
IG5pbH0sCisgICAgICAgIHsweDE2LCAweDU4LCAnNicsIG5pbH0sCisgICAgICAgIHsweDFBLCAw
eDU5LCAnNycsIG5pbH0sCisgICAgICAgIHsweDFDLCAweDVCLCAnOCcsIG5pbH0sCisgICAgICAg
IHsweDE5LCAweDVDLCAnOScsIG5pbH0sCisgICAgfTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgV1RGX0FSUkFZX0xFTkdUSCh0YWJsZSk7ICsraSkgeworICAgICAgICBOU1N0cmluZyog
Y3VycmVudENoYXJhY3RlclN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
dGFibGVbaV0uY2hhcmFjdGVyIGxlbmd0aDoxXTsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOmN1cnJlbnRDaGFyYWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOnRhYmxlW2ldLmNoYXJhY3Rlck5hbWVdKSB7CisgICAgICAgICAgICBpZiAoa2V5
TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisgICAgICAgICAg
ICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY051bXBhZEtleUNvZGU7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7CisgICAg
ICAgICAgICBldmVudENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmc7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycyA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOmV2ZW50Q2hhcmFjdGVy
XTsKKworICAgIG1vZGlmaWVyRmxhZ3MgPSAwOworCisgICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3Ro
XSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJh
Y3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykgeworICAgICAgICBtb2RpZmllckZsYWdz
IHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOworICAgIH0KKworICAgIG1v
ZGlmaWVyRmxhZ3MgfD0gbW9kaWZpZXJzOworCisgICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMg
LypET01fS0VZX0xPQ0FUSU9OX05VTVBBRCovKQorICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5T
RXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworICAgIAorICAgIHJldHVybiBzZWxmOworfQor
CitAZW5kCisKIEBpbnRlcmZhY2UgRXZlbnRTZW5kZXJTeW50aGV0aWNFdmVudCA6IE5TRXZlbnQg
ewogQHB1YmxpYwogICAgIE5TUG9pbnQgX2V2ZW50U2VuZGVyX2xvY2F0aW9uSW5XaW5kb3c7CkBA
IC0yMzgsMTMgKzQ1NCw2IEBAIGVudW0gTW91c2VCdXR0b24gewogICAgIE5vTW91c2VCdXR0b24g
PSAtMgogfTsKIAotc3RydWN0IEtleU1hcHBpbmdFbnRyeSB7Ci0gICAgaW50IG1hY0tleUNvZGU7
Ci0gICAgaW50IG1hY051bXBhZEtleUNvZGU7Ci0gICAgdW5pY2hhciBjaGFyYWN0ZXI7Ci0gICAg
TlNTdHJpbmcqIGNoYXJhY3Rlck5hbWU7Ci19OwotCiBzdGF0aWMgTlNFdmVudFR5cGUgZXZlbnRU
eXBlRm9yTW91c2VCdXR0b25BbmRBY3Rpb24oaW50IGJ1dHRvbiwgTW91c2VBY3Rpb24gYWN0aW9u
KQogewogICAgIHN3aXRjaCAoYnV0dG9uKSB7CkBAIC02MzIsMjAzICs4NDEsMTggQEAgdm9pZCBF
dmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZChpbnQgbQogCiB2b2lkIEV2ZW50U2VuZGVyUHJv
eHk6OmtleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywg
dW5zaWduZWQga2V5TG9jYXRpb24pCiB7Ci0gICAgTlNTdHJpbmcqIGNoYXJhY3RlciA9IHRvV1RG
U3RyaW5nKGtleSk7Ci0KLSAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7
Ci0gICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7Ci0gICAgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDdCOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdo
dEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUmlnaHRBcnJvd0Z1bmN0
aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3QzsKLSAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJdKSB7Ci0gICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
LSAgICAgICAga2V5Q29kZSA9IDB4N0U7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U0Rvd25BcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0g
MHg3RDsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZVVw
Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZVVwRnVuY3Rpb25LZXk7Ci0g
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc0OwotICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7Ci0gICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAg
IGtleUNvZGUgPSAweDc5OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJob21lIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSG9tZUZ1bmN0aW9u
S2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3MzsKLSAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsKLSAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtl
eUNvZGUgPSAweDc3OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJpbnNlcnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNJbnNlcnRGdW5jdGlv
bktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzI7Ci0gICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHg3NTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicHJpbnRTY3JlZW4iXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQ
cmludFNjcmVlbkZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0g
MHgwOyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFsIGtleSBjb2RlIGZvciBQcmludFNjcmVl
bi4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiY3lyaWxsaWNT
bWFsbExldHRlckEiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgwNDMwOwotICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzOyAvLyBTaGFyZXMga2V5IHdpdGggIkYi
IG9uIFJ1c3NpYW4gbGF5b3V0LgotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZG
RTM7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNCOwotICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0U2hpZnQiXSkgewotICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gMHhGRkUxOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2Rl
ID0gMHgzODsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVm
dEFsdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTc7Ci0gICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNBOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkgewotICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gMHhGRkU0OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzRTsKLSAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRTaGlmdCJdKSB7
Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTI7Ci0gICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAg
ICAgIGtleUNvZGUgPSAweDNDOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJyaWdodEFsdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTg7
Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNEOwotICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgewotICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gMHgxQjsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4MzU7
Ci0gICAgfQotCi0gICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3RyaW5nIHdpdGggdGhlIGZ1bmN0
aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAoaS5lLiAiRjEiLC4uLiwiRjI0
IikuCi0gICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0aW9uLWtleSBuYW1lLCBz
ZXQgaXRzIGtleSBjb2RlLgotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gMjQ7IGkrKykg
ewotICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKLSAgICAgICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOwotICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAg
ICAgIHN3aXRjaCAoaSkgewotICAgICAgICAgICAgICAgIGNhc2UgMToga2V5Q29kZSA9IDB4N0E7
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjoga2V5Q29kZSA9IDB4Nzg7IGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgNToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNjoga2V5
Q29kZSA9IDB4NjE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNzoga2V5Q29kZSA9IDB4
NjI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgODoga2V5Q29kZSA9IDB4NjQ7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4NjU7IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAweDZEOyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDExOiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAx
Mjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTM6IGtleUNv
ZGUgPSAweDY5OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE0OiBrZXlDb2RlID0gMHg2
QjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNToga2V5Q29kZSA9IDB4NzE7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAweDZBOyBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIDE3OiBrZXlDb2RlID0gMHg0MDsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
MTk6IGtleUNvZGUgPSAweDUwOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDIwOiBrZXlD
b2RlID0gMHg1QTsgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1vc3Qga2V5cy4KLSAgICBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQotICAgICAgICBrZXlDb2RlID0gMHgzMDsK
LSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiAiXSkKLSAgICAgICAg
a2V5Q29kZSA9IDB4MzE7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJcciJdKQotICAgICAgICBrZXlDb2RlID0gMHgyNDsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDRDOwotICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4Il0pCi0gICAgICAgIGtleUNv
ZGUgPSAweDMzOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYSJd
KQotICAgICAgICBrZXlDb2RlID0gMHgwMDsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MEI7Ci0gICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDAy
OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZSJdKQotICAgICAg
ICBrZXlDb2RlID0gMHgwRTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAIlx4MWIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MUI7Ci0gICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCI6Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDI5OwotICAg
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiOyJdKQotICAgICAgICBrZXlD
b2RlID0gMHgyOTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiwi
XSkKLSAgICAgICAga2V5Q29kZSA9IDB4MkI7Ci0KLSAgICBLZXlNYXBwaW5nRW50cnkgdGFibGVb
XSA9IHsKLSAgICAgICAgezB4MkYsIDB4NDEsICcuJywgbmlsfSwKLSAgICAgICAgezAsICAgIDB4
NDMsICcqJywgbmlsfSwKLSAgICAgICAgezAsICAgIDB4NDUsICcrJywgbmlsfSwKLSAgICAgICAg
ezAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXksIEAiY2xlYXIifSwKLSAgICAgICAg
ezB4MkMsIDB4NEIsICcvJywgbmlsfSwKLSAgICAgICAgezAsICAgIDB4NEMsIDMsIEAiZW50ZXIi
IH0sCi0gICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5pbH0sCi0gICAgICAgIHsweDE4LCAweDUx
LCAnPScsIG5pbH0sCi0gICAgICAgIHsweDFELCAweDUyLCAnMCcsIG5pbH0sCi0gICAgICAgIHsw
eDEyLCAweDUzLCAnMScsIG5pbH0sCi0gICAgICAgIHsweDEzLCAweDU0LCAnMicsIG5pbH0sCi0g
ICAgICAgIHsweDE0LCAweDU1LCAnMycsIG5pbH0sCi0gICAgICAgIHsweDE1LCAweDU2LCAnNCcs
IG5pbH0sCi0gICAgICAgIHsweDE3LCAweDU3LCAnNScsIG5pbH0sCi0gICAgICAgIHsweDE2LCAw
eDU4LCAnNicsIG5pbH0sCi0gICAgICAgIHsweDFBLCAweDU5LCAnNycsIG5pbH0sCi0gICAgICAg
IHsweDFDLCAweDVCLCAnOCcsIG5pbH0sCi0gICAgICAgIHsweDE5LCAweDVDLCAnOScsIG5pbH0s
Ci0gICAgfTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSCh0
YWJsZSk7ICsraSkgewotICAgICAgICBOU1N0cmluZyogY3VycmVudENoYXJhY3RlclN0cmluZyA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomdGFibGVbaV0uY2hhcmFjdGVyIGxlbmd0
aDoxXTsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOmN1cnJlbnRDaGFy
YWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOnRhYmxlW2ldLmNoYXJh
Y3Rlck5hbWVdKSB7Ci0gICAgICAgICAgICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9L
RVlfTE9DQVRJT05fTlVNUEFEKi8pCi0gICAgICAgICAgICAgICAga2V5Q29kZSA9IHRhYmxlW2ld
Lm1hY051bXBhZEtleUNvZGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAga2V5
Q29kZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7Ci0gICAgICAgICAgICBldmVudENoYXJhY3RlciA9
IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBldmVu
dENoYXJhY3RlcjsKLQotICAgIGludCBtb2RpZmllckZsYWdzID0gMDsKLQotICAgIGlmIChbY2hh
cmFjdGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPj0g
J0EnICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA8PSAnWicpIHsKLSAgICAgICAg
bW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQ7Ci0gICAgICAgIGNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKLSAg
ICB9Ci0KLSAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMp
OwotCi0gICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypET01fS0VZX0xPQ0FUSU9OX05VTVBB
RCovKQotICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmlj
UGFkOworICAgIE1vZGlmaWVyS2V5RXh0cmFjdG9yICptb2RpZmllcktleUV4dHJhY3RvciA9IFtb
TW9kaWZpZXJLZXlFeHRyYWN0b3IgYWxsb2NdIGluaXRXaXRoS2V5OnRvV1RGU3RyaW5nKGtleSkg
bW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIGtleUxvY2F0aW9uOmtleUxv
Y2F0aW9uXTsKIAogICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlw
ZTpOU0V2ZW50VHlwZUtleURvd24KLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5T
TWFrZVBvaW50KDUsIDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1v
ZGlmaWVyRmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRp
bWVGb3JFdmVudFRpbWUoY3VycmVudEV2ZW50VGltZSgpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9y
bVdpbmRvdygpIHdpbmRvd051bWJlcl0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6
W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQotICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgotICAgICAgICAgICAgICAgICAgICAgICAgY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwotICAg
ICAgICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0gICAgICAgICAgICAgICAgICAgICAg
ICBrZXlDb2RlOmtleUNvZGVdOworICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQor
ICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5tb2RpZmllckZsYWdz
CisgICAgICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVudEV2ZW50
VGltZSgpKQorICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJW
aWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQorICAgICAgICBjb250ZXh0OltO
U0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFjdGVyczptb2Rp
ZmllcktleUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnMKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6bW9kaWZpZXJLZXlF
eHRyYWN0b3ItPmtleUNvZGVdOwogCiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRd
OwogICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3co
KSBmaXJzdFJlc3BvbmRlcl0ga2V5RG93bjpldmVudF07CkBAIC04MzYsMTQgKzg2MCw1NCBAQCB2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAKICAgICBldmVudCA9IFtO
U0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcAogICAgICAgICAgICAgICAg
ICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncworICAgICAgICAgICAgICAgICAgICAgICAg
bW9kaWZpZXJGbGFnczptb2RpZmllcktleUV4dHJhY3Rvci0+bW9kaWZpZXJGbGFncwogICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShjdXJy
ZW50RXZlbnRUaW1lKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6W21f
dGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVt
YmVyXQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQg
Y3VycmVudENvbnRleHRdCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50
Q2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5
RXh0cmFjdG9yLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlzQVJlcGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlD
b2RlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6bW9kaWZpZXJLZXlFeHRyYWN0
b3ItPmtleUNvZGVdOworCisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOworICAg
IFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSBmaXJz
dFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnRdOworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5p
bF07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBr
ZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sK
KyAgICBNb2RpZmllcktleUV4dHJhY3RvciAqbW9kaWZpZXJLZXlFeHRyYWN0b3IgPSBbW01vZGlm
aWVyS2V5RXh0cmFjdG9yIGFsbG9jXSBpbml0V2l0aEtleTp0b1dURlN0cmluZyhrZXkpIG1vZGlm
aWVyczpidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjprZXlMb2NhdGlv
bl07CisKKyAgICBOU0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNF
dmVudFR5cGVLZXlEb3duCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAg
ICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3MKKyAg
ICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1l
KCkpCisgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXco
KS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNvbnRleHQ6W05TR3Jh
cGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVy
S2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTptb2RpZmllcktleUV4dHJh
Y3Rvci0+a2V5Q29kZV07CisKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07Cisg
ICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIGZp
cnN0UmVzcG9uZGVyXSBrZXlEb3duOmV2ZW50XTsKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVu
dDpuaWxdOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVm
IGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQor
eworICAgIE1vZGlmaWVyS2V5RXh0cmFjdG9yICptb2RpZmllcktleUV4dHJhY3RvciA9IFtbTW9k
aWZpZXJLZXlFeHRyYWN0b3IgYWxsb2NdIGluaXRXaXRoS2V5OnRvV1RGU3RyaW5nKGtleSkgbW9k
aWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIGtleUxvY2F0aW9uOmtleUxvY2F0
aW9uXTsKKworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpO
U0V2ZW50VHlwZUtleVVwCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAg
ICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3MKKyAg
ICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1l
KCkpCisgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXco
KS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNvbnRleHQ6W05TR3Jh
cGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVy
S2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTptb2RpZmllcktleUV4dHJh
Y3Rvci0+a2V5Q29kZV07CiAKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAg
ICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIGZp
cnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudF07CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcAkocmV2aXNpb24gMjgzMzUyKQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxNCw2ICszMTQsMTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojpr
ZXlEb3duKFdLU3RyaW5nUgogICAgICAgICBTZXRLZXlib2FyZFN0YXRlKGtleVN0YXRlKTsKIH0K
IAordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCit2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1v
ZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6YWRkVG91Y2hQb2ludChp
bnQsIGludCkKIHsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVy
UHJveHlXUEUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2
ZW50U2VuZGVyUHJveHlXUEUuY3BwCShyZXZpc2lvbiAyODMzNTIpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzI3LDYgKzMyNywxNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdS
CiAgICAgZnJlZShlbnRyaWVzKTsKIH0KIAordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlE
b3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVk
IGtleUxvY2F0aW9uKQoreworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdL
U3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxv
Y2F0aW9uKQoreworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQoaW50
IHgsIGludCB5KQogewogICAgIHN0cnVjdCB3cGVfaW5wdXRfdG91Y2hfZXZlbnRfcmF3IHJhd0V2
ZW50IHsgd3BlX2lucHV0X3RvdWNoX2V2ZW50X3R5cGVfZG93biwgc2VjVG9Nc1RpbWVzdGFtcCht
X3RpbWUpLCBzdGF0aWNfY2FzdDxpbnQ+KG1fdG91Y2hFdmVudHMuc2l6ZSgpKSwgc3RhdGljX2Nh
c3Q8aW50MzJfdD4oeCksIHN0YXRpY19jYXN0PGludDMyX3Q+KHkpIH07CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyODMzNTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyNyBAQAorMjAyMS0wOS0yOCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+
IGFuZCBEYW5hIEVzdHJhIDxkZXN0cmFAYXBwbGUuY29tPgorCisgICAgICAgIG1hY09TIGtleS1k
cml2ZW4gc21vb3RoIHNjcm9sbGluZyBkb2VzIG5vdCBzdG9wIHdoZW4gZm9jdXMgY2hhbmdlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MzAyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgdXNlRmxleGli
bGVWaWV3cG9ydCBhbmQgRXZlbnRIYW5kbGVyRHJpdmVuU21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdF
bmFibGVkIGtleXMgYXJlIFdLMiBvbmx5IAorICAgICAgICByaWdodCBub3csIHNvIHNraXAgdGhl
IG5ldyB0ZXN0IGluIGdlbmVyYWwuCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKworICAg
ICAgICBOZXcgdGVzdCB0aGF0IHZlcmlmaWVzIHRoaXMgYnVnIGlzIHJlc29sdmVkLgorICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxp
bmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy91bmZvY3Vz
aW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWw6IEFkZGVkLgorCisgICAgICAg
IERvIHJ1biB0aGUgdGVzdCBmb3IgbWFjLXdrMi4gcmF3S2V5RG93biAvIHJhd0tleVVwIGFyZSBj
dXJyZW50bHkgbm90IGltcGxlbWVudGVkIAorICAgICAgICBlbHNld2hlcmUuCisgICAgICAgICog
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCisgICAgICAgIE5ldyBzdXBwb3J0
IGZvciByYXdLZXlEb3duIGluIG9yZGVyIHRvIHNpbXVsYXRlIGhvbGRpbmcgdGhlIGtleSBkb3du
LgorICAgICAgICAqIHJlc291cmNlcy91aS1oZWxwZXIuanM6CisgICAgICAgICh3aW5kb3cuVUlI
ZWxwZXIucmF3S2V5RG93bik6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIucmF3S2V5VXApOgor
CiAyMDIxLTA5LTMwICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAg
IE1ha2UgRmlsZSBTeXN0ZW0gQWNjZXNzIEFQSSBhdmFpbGFibGUgaW4gV29ya2VyCkluZGV4OiBM
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI4MzM1MikKKysrIExheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAgZmFzdC9mb3Jtcy9lbnRl
cmtleWhpbnQtYXR0cmlidXRlLXZhbHVlcwogZmFzdC9zY3JvbGxpbmcva2V5Ym9hcmQtc2Nyb2xs
aW5nLWRpc3RhbmNlLWRvd25BcnJvdy5odG1sIFsgU2tpcCBdCiBmYXN0L3Njcm9sbGluZy9rZXli
b2FyZC1zY3JvbGxpbmctZGlzdGFuY2UtcGFnZURvd24uaHRtbCBbIFNraXAgXQogZmFzdC9zY3Jv
bGxpbmcva2V5Ym9hcmQtc2Nyb2xsaW5nLWxhc3QtdGltZXN0YW1wLmh0bWwgWyBTa2lwIF0KK2Zh
c3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRt
bCBbIFNraXAgXQogCiAjIEhpZ2hsaWdodGluZyBtYXJrZWQgdGV4dCByYW5nZXMgZnJvbSBsYXlv
dXQgdGVzdHMgaXMgb25seSBzdXBwb3J0ZWQgaW4gV2ViS2l0Mi4KIGVkaXRpbmcvaW5wdXQvY29t
cG9zaXRpb24taGlnaGxpZ2h0cy5odG1sIFsgU2tpcCBdCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3Vz
aW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUt
a2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDYgQEAKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CitTVUNDRVNTOiBCbHVlIGZyYW1lIHN0b3BwZWQgc2NvbGxpbmcgYmVmb3JlIHJlZCBmcmFtZQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUt
a2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFn
ZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDYyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4
aWJsZVZpZXdwb3J0PXRydWUgRXZlbnRIYW5kbGVyRHJpdmVuU21vb3RoS2V5Ym9hcmRTY3JvbGxp
bmdFbmFibGVkPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPG1ldGEgbmFtZT0idmll
d3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS41LCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAg
ICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxSZWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBsZXQgcmVkT2Zmc2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3JlZC1mcmFtZScpLmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldy5zY3JvbGxZOworICAg
ICAgICAgICAgbGV0IGJsdWVPZmZzZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmx1ZS1m
cmFtZScpLmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldy5zY3JvbGxZOworICAgICAgICAgICAg
aWYgKHJlZE9mZnNldCA+IDE5MDApIHsKKyAgICAgICAgICAgICAgICBpZiAoYmx1ZU9mZnNldCA+
IDE5MDApCisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJGQUlMOiBCbHVlIGZyYW1lIHNjcm9s
bGVkIGFzIGZhciBhcyB0aGUgcmVkIGZyYW1lLiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgZGVidWcoIlNVQ0NFU1M6IEJsdWUgZnJhbWUgc3RvcHBlZCBzY29s
bGluZyBiZWZvcmUgcmVkIGZyYW1lIik7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBhc3luYyBmdW5j
dGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1
bm5lciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGxldCBibHVlRnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Ymx1ZS1mcmFtZScpOworICAgICAgICAgICAgbGV0IHJlZEZyYW1lID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3JlZC1mcmFtZScpOworICAgICAgICAgICAgbGV0IHJlZERvY3VtZW50ID0gcmVk
RnJhbWUuY29udGVudERvY3VtZW50OworCisgICAgICAgICAgICByZWREb2N1bWVudC5hZGRFdmVu
dExpc3RlbmVyKCJzY3JvbGwiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2Nyb2xs
UmVkKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYmx1ZUZyYW1lLmZvY3VzKCk7
CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5yYXdLZXlEb3duKCJkb3duQXJyb3ciKTsKKyAg
ICAgICAgICAgIHJlZEZyYW1lLmZvY3VzKCk7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5y
YXdLZXlEb3duKCJkb3duQXJyb3ciKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxz
dHlsZT4KKyAgICAjcGxhY2Vob2xkZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
IGhlaWdodDogNTAwMHB4OworICAgIH0KKyAgICBpZnJhbWUgeworICAgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keSBzdHlsZT0ibWFyZ2luOiAwOyIgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxpZnJh
bWUgaWQ9ImJsdWUtZnJhbWUiIHNyY2RvYz0iPGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWln
aHQ6IDIwMDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsnPjwvZGl2PiI+PC9pZnJhbWU+Cisg
ICAgPGlmcmFtZSBpZD0icmVkLWZyYW1lIiBzcmNkb2M9IjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBw
eDsgaGVpZ2h0OiAyMDAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvZGl2PiI+PC9pZnJh
bWU+CisgICAgPGRpdiBpZD0icGxhY2Vob2xkZXIiPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjgzMzUyKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2
ICs0Miw4IEBAIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1saXYKIGZhc3Qv
bWVkaWEvbXEtcHJlZmVycy1jb250cmFzdC1saXZlLXVwZGF0ZS5odG1sIFsgUGFzcyBdCiBmYXN0
L21lZGlhL21xLXByZWZlcnMtY29udHJhc3QuaHRtbCBbIFBhc3MgXQogCitmYXN0L3Njcm9sbGlu
Zy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwgWyBQYXNzIF0K
KwogaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkgWyBQYXNzIF0KIAogIyBBUFBMRV9QQVlfSU5TVEFM
TE1FTlRTIHdhcyBmaXJzdCBhdmFpbGFibGUgaW4gQ2F0YWxpbmEuCkluZGV4OiBMYXlvdXRUZXN0
cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Jlc291
cmNlcy91aS1oZWxwZXIuanMJKHJldmlzaW9uIDI4MzM1MikKKysrIExheW91dFRlc3RzL3Jlc291
cmNlcy91aS1oZWxwZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTM0NCw2ICszNDQsMzAgQEAgd2lu
ZG93LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogICAgICAgICB9CiAgICAgfQogCisgICAg
c3RhdGljIHJhd0tleURvd24oa2V5LCBtb2RpZmllcnM9W10pCisgICAgeworICAgICAgICBpZiAo
IXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkgeworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIucmF3S2V5RG93bihrZXksIG1vZGlmaWVycyk7CisgICAgICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFBy
b21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQo
YHVpQ29udHJvbGxlci5yYXdLZXlEb3duKCIke2tleX0iLCAke0pTT04uc3RyaW5naWZ5KG1vZGlm
aWVycyl9KTtgLCByZXNvbHZlKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc3RhdGljIHJh
d0tleVVwKGtleSwgbW9kaWZpZXJzPVtdKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzV2Vi
S2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkpIHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LnJhd0tleVVwKGtleSwgbW9kaWZpZXJzKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJl
c29sdmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2
ZSkgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgdWlDb250cm9sbGVy
LnJhd0tleVVwKCIke2tleX0iLCAke0pTT04uc3RyaW5naWZ5KG1vZGlmaWVycyl9KTtgLCByZXNv
bHZlKTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgc3RhdGljIGtleURvd24oa2V5LCBtb2Rp
ZmllcnM9W10pCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMu
aXNJT1NGYW1pbHkoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439930</attachid>
            <date>2021-10-01 16:29:16 -0700</date>
            <delta_ts>2021-10-04 10:08:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-5.txt</filename>
            <type>text/plain</type>
            <size>81935</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzQxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEwLTAxICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkgb24g
dGhlIG9sZCBGcmFtZVZpZXcgYWZ0ZXIgY2hhbmdpbmcgRnJhbWUgZm9jdXMuCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorCisgICAgICAgIENhbGwgdXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKSB3aGVuIHRoZSB3aW5kb3cgdmlzaWJpbGl0eSAvIGFjdGl2ZSBzdGF0
ZSBjaGFuZ2VzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVNj
cm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAg
ICAgICBQbHVtYmluZyB0byBnZXQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSB0
byB0aGUgU2Nyb2xsQ29udHJvbGxlciwgd2hlcmUgd2UgY2FuIHRlbGwgCisgICAgICAgIHRoZSBr
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRvIGhhbmRsZSBrZXlVcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0xMC0wMSAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgbmV3IGluY3Vt
YmVudC13aW5kb3cgdW50aWwgaXQgaXMgZnVsbHkgaW1wbGVtZW50ZWQKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI4MzQxOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5
LDcgKzM1OSw4IEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRnJhbWUoRnIKICAg
ICBtX2ZvY3VzZWRGcmFtZSA9IG5ld0ZyYW1lOwogCiAgICAgLy8gTm93IHRoYXQgdGhlIGZyYW1l
IGlzIHVwZGF0ZWQsIGZpcmUgZXZlbnRzIGFuZCB1cGRhdGUgdGhlIHNlbGVjdGlvbiBmb2N1c2Vk
IHN0YXRlcyBvZiBib3RoIGZyYW1lcy4KLSAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUtPnZp
ZXcoKSkgeworICAgIGlmIChhdXRvKiBvbGRGcmFtZVZpZXcgPSBvbGRGcmFtZSA/IG9sZEZyYW1l
LT52aWV3KCkgOiBudWxscHRyKSB7CisgICAgICAgIG9sZEZyYW1lVmlldy0+c3RvcFNjcm9sbEFu
aW1hdGlvbnMoKTsKICAgICAgICAgb2xkRnJhbWUtPnNlbGVjdGlvbigpLnNldEZvY3VzZWQoZmFs
c2UpOwogICAgICAgICBvbGRGcmFtZS0+ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAkocmV2aXNpb24gMjgzNDE4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjM1NSwxMyArMjM1NSwzMyBAQCB2b2lkIFBhZ2U6OnNldEFjdGl2aXR5
U3RhdGUoT3B0aW9uU2V0PEFjCiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fYWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVycykKICAgICAgICAgb2JzZXJ2ZXIuYWN0aXZpdHlTdGF0ZURpZENo
YW5nZShvbGRBY3Rpdml0eVN0YXRlLCBtX2FjdGl2aXR5U3RhdGUpOwogCi0gICAgaWYgKHdhc1Zp
c2libGVBbmRBY3RpdmUgIT0gaXNWaXNpYmxlQW5kQWN0aXZlKCkpCisgICAgaWYgKHdhc1Zpc2li
bGVBbmRBY3RpdmUgIT0gaXNWaXNpYmxlQW5kQWN0aXZlKCkpIHsKICAgICAgICAgUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVOb3dQbGF5aW5nSW5mb0lmTmVjZXNzYXJ5KCk7Cisg
ICAgICAgIHN0b3BTY3JvbGxBbmltYXRpb25zKCk7CisgICAgfQogCiAgICAgaWYgKG1fcGVyZm9y
bWFuY2VNb25pdG9yKQogICAgICAgICBtX3BlcmZvcm1hbmNlTW9uaXRvci0+YWN0aXZpdHlTdGF0
ZUNoYW5nZWQob2xkQWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZSk7CiB9CiAKK3ZvaWQgUGFn
ZTo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQoreworICAgIGZvciAoYXV0byogZnJhbWUgPSAmbWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsK
KyAgICAgICAgYXV0byogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgaWYgKCFm
cmFtZVZpZXcpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmcmFtZVZpZXctPnN0
b3BTY3JvbGxBbmltYXRpb25zKCk7CisKKyAgICAgICAgY29uc3QgSGFzaFNldDxTY3JvbGxhYmxl
QXJlYSo+KiBzY3JvbGxhYmxlQXJlYXMgPSBmcmFtZVZpZXctPnNjcm9sbGFibGVBcmVhcygpOwor
ICAgICAgICBpZiAoIXNjcm9sbGFibGVBcmVhcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIGZvciAoYXV0byYgc2Nyb2xsYWJsZUFyZWEgOiAqc2Nyb2xsYWJsZUFyZWFzKQorICAg
ICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnN0b3BTY3JvbGxBbmltYXRpb25zKCk7CisgICAgfQor
fQorCiBib29sIFBhZ2U6OmlzVmlzaWJsZUFuZEFjdGl2ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpICYmIG1f
YWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjgzNDE4KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4Nyw2ICs4ODcsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0SXNWaXNpYmxlSW50ZXJuYWwoYm9vbCk7CiAgICAgdm9pZCBzZXRJc1Zpc3VhbGx5
SWRsZUludGVybmFsKGJvb2wpOwogCisgICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwor
CiAgICAgZW51bSBTaG91bGRIaWdobGlnaHRNYXRjaGVzIHsgRG9Ob3RIaWdobGlnaHRNYXRjaGVz
LCBIaWdobGlnaHRNYXRjaGVzIH07CiAgICAgZW51bSBTaG91bGRNYXJrTWF0Y2hlcyB7IERvTm90
TWFya01hdGNoZXMsIE1hcmtNYXRjaGVzIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAJKHJldmlzaW9uIDI4MzQxOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMwLDYg
KzIzMCwxMSBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvCiAgICAg
cmV0dXJuIGhhbmRsZWQ7CiB9CiAKK3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OnN0b3BTY3JvbGxBbmlt
YXRpb25zKCkKK3sKKyAgICBtX3Njcm9sbENvbnRyb2xsZXIuc3RvcFNjcm9sbEFuaW1hdGlvbnMo
KTsKK30KKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBib29sIFNjcm9sbEFuaW1hdG9yOjpo
YW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgJKHJldmlzaW9uIDI4MzQxOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDYgKzgzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHByb2Nlc3NXaGVl
bEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSB7IHJldHVybiBm
YWxzZTsgfQogCisgICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOworICAgIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxh
dGZvcm1XaGVlbEV2ZW50UGhhc2UpIHsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCShyZXZpc2lvbiAyODM0MTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
NSw2ICsyMjUsMTEgQEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudEZvcgog
ICAgIHJldHVybiBoYW5kbGVkRXZlbnQ7CiB9CiAKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6OnN0b3BT
Y3JvbGxBbmltYXRpb25zKCkKK3sKKyAgICBzY3JvbGxBbmltYXRvcigpLnN0b3BTY3JvbGxBbmlt
YXRpb25zKCk7Cit9CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogYm9vbCBTY3JvbGxhYmxl
QXJlYTo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIHRvdWNoRXZl
bnQpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgJKHJl
dmlzaW9uIDI4MzQxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZXNuYXBBZnRlckxheW91dCgpOwogICAgIHZvaWQgZG9Qb3N0VGh1bWJNb3ZlU25hcHBpbmcoU2Ny
b2xsYmFyT3JpZW50YXRpb24pOwogCisgICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwor
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlVG91Y2hF
dmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMjgzNDE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxMiBAQCB2
b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdG9wS2V5CiAgICAgc2V0SXNBbmltYXRp
bmdLZXlib2FyZFNjcm9sbGluZyhmYWxzZSk7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXI6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkKK3sKKyAgICBpZiAobV9pc0FuaW1hdGlu
Z0tleWJvYXJkU2Nyb2xsaW5nKQorICAgICAgICBtX2NsaWVudC5rZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yKCktPmhhbmRsZUtleVVwRXZlbnQoKTsKK30KKwogYm9vbCBTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oRmxvYXRQb2ludCBz
dGFydE9mZnNldCwgRmxvYXRQb2ludCBkZXN0aW5hdGlvbk9mZnNldCkKIHsKICAgICBpZiAobV9j
dXJyZW50QW5pbWF0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCShyZXZpc2lvbiAyODM0MTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDIsNyArMTQyLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBiZWdpbktleWJv
YXJkU2Nyb2xsaW5nKCk7CiAgICAgdm9pZCBzdG9wS2V5Ym9hcmRTY3JvbGxpbmcoKTsKLSAgICAK
KworICAgIHZvaWQgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKwogICAgIC8vIFNob3VsZCBiZSBj
YWxsZWQgcGVyaW9kaWNhbGx5IGJ5IHRoZSBjbGllbnQuIFN0YXJ0ZWQgYnkgc3RhcnRBbmltYXRp
b25DYWxsYmFjaygpLCBzdG9wcGVkIGJ5IHN0b3BBbmltYXRpb25DYWxsYmFjaygpLgogICAgIHZv
aWQgYW5pbWF0aW9uQ2FsbGJhY2soTW9ub3RvbmljVGltZSk7CiAKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzQxOCkKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEw
LTAxICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3Ry
YUBhcHBsZS5jb20+CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5n
IGRvZXMgbm90IHN0b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHB1bGxzIHRoZSBjb2RlIHRvIGV4
dHJhY3QgbW9kaWZpZXIga2V5IGluZm9ybWF0aW9uIGlzIHB1bGxlZCBpbnRvIGEgbGl0dGxlIGNs
YXNzIAorICAgICAgICBjYWxsZWQgTW9kaWZpZXJLZXlFeHRyYWN0b3IgaW4gVGVzdFJ1bm5lclNo
YXJlZC4gVGhhdCBjb2RlIGlzIG5vdyBzaGFyZWQgYmV0d2VlbiBEUlQgYW5kIFdLVFIgCisgICAg
ICAgIGZvciB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb25zIG9mIGtleURvd24uIFRoZSBwYXRj
aCBhbHNvIGFkZHMgc3VwcG9ydCBmb3IgcmF3S2V5RG93biBhbmQgCisgICAgICAgIHJhd0tleVVw
IHRvIERSVCBhbmQgV0tUUiwgYW5kIGJvdGggb2YgdGhvc2UgYWxzbyBuZWVkIHRvIHVzZSBNb2Rp
ZmllcktleUV4dHJhY3Rvci4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgICgrW0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVy
IGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6CisgICAgICAgICgrW0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOl0pOgorICAgICAgICAoLVtF
dmVudFNlbmRpbmdDb250cm9sbGVyIGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246
XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmF3S2V5RG93bjp3aXRoTW9k
aWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxl
ciByYXdLZXlEb3duV3JhcHBlcjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAg
ICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciByYXdLZXlVcDp3aXRoTW9kaWZpZXJzOndpdGhM
b2NhdGlvbjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciByYXdLZXlVcFdy
YXBwZXI6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICogVGVzdFJ1bm5l
clNoYXJlZC9jb2NvYS9Nb2RpZmllcktleUV4dHJhY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBU
ZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLm1tOiBBZGRlZC4KKyAg
ICAgICAgKC1bTW9kaWZpZXJLZXlFeHRyYWN0b3IgaW5pdFdpdGhLZXk6bW9kaWZpZXJzOmtleUxv
Y2F0aW9uOl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6Y3Jl
YXRlUmF3S2V5RG93bk1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdUUjo6Y3JlYXRlUmF3S2V5VXBN
ZXNzYWdlQm9keSk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tl
eURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlVcCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdD
b250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9p
b3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94
eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVw
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZl
UmF3S2V5VXBNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNl
bmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5
RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjprZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJh
d0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5
V2luLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcDoKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVy
UHJveHk6OnJhd0tleVVwKToKKwogMjAyMS0xMC0wMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFy
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdGNvcmVweV0gQWRkIFRhc2tQb29sIChGb2xs
b3ctdXAgZml4KQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODM0
MTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDcgQEAKIAkJN0NGRjlC
QzIyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkMxMjUzM0JDMTYwMDA4MDA5RiAvKiBU
ZXN0Q29tbWFuZC5jcHAgKi87IH07CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLzsgfTsKIAkJODQ2NUUyQzcwRkZBOERGMjAw
M0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODQ2NUUyQzYwRkZBOERGMjAwM0I4MzQyIC8qIFBpeGVsRHVt
cFN1cHBvcnQuY3BwICovOyB9OworCQk5M0IwNDBCODI3MDdDMzBGMDA3NkU5NjAgLyogTW9kaWZp
ZXJLZXlFeHRyYWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0IwNDBCNzI3MDdDMzBGMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0b3Iu
bW0gKi87IH07CiAJCTkzQzc4ODI2MjUwQzZEM0EwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25z
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4
ODI0MjUwQzZEMzkwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJOTND
Nzg4MkUyNTBDNzE3MjAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODI5MjUwQzcxMzQwMEMwQUEyNCAvKiBK
U0Jhc2ljcy5jcHAgKi87IH07CiAJCUExMTU4RDU4MTg5Mjc0MEMwMDg4QzE3QiAvKiBEdW1wUmVu
ZGVyVHJlZUJyb3dzZXJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTExNThENTYxODkyNzNFQjAwODhDMTdCIC8qIER1bXBSZW5kZXJUcmVlQnJv
d3NlclZpZXcubW0gKi87IH07CkBAIC0zNDcsNiArMzQ4LDggQEAKIAkJODQ2NUUyQzYwRkZBOERG
MjAwM0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBpeGVsRHVtcFN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzM1NDM1RjAzRDc1NTAyMDA4NjM1Q0UgLyogV2ViS2l0LmZyYW1ld29yayAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIu
ZnJhbWV3b3JrOyBwYXRoID0gV2ViS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJOTM0MDk5NTQwODU0MENBRjAwN0YzQkM4IC8qIER1bXBSZW5kZXJU
cmVlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29t
cGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBEdW1w
UmVuZGVyVHJlZTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTNCMDQw
QjYyNzA3QzMwRjAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmaWVyS2V5RXh0cmFjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzQjA0MEI3MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmllcktl
eUV4dHJhY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1v
ZGlmaWVyS2V5RXh0cmFjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0M3
ODgyNDI1MEM2RDM5MDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZ0ZXN0RnVuY3Rpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNzg4MjUyNTBDNkQzOTAwQzBBQTI0IC8qIFJlZnRlc3RG
dW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmdGVzdEZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0M3ODgyOTI1MEM3MTM0MDBD
MEFBMjQgLyogSlNCYXNpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNpY3MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQwLDYgKzk0Myw4IEBACiAJCQkJRjQ0QTUz
MUMyMUI4OUE0NTAwREJCOTlDIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJCQkJ
RjRDMzU3ODkyMEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLywK
IAkJCQlGNEMzNTc4ODIwRTg0NDI3MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5t
bSAqLywKKwkJCQk5M0IwNDBCNjI3MDdDMzBGMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0
b3IuaCAqLywKKwkJCQk5M0IwNDBCNzI3MDdDMzBGMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRy
YWN0b3IubW0gKi8sCiAJCQkJRjQwMTBCN0EyNERBMjAwRTAwQTg3NkUyIC8qIFBvc2VBc0NsYXNz
LmggKi8sCiAJCQkJRjQwMTBCNzkyNERBMjAwRTAwQTg3NkUyIC8qIFBvc2VBc0NsYXNzLm1tICov
LAogCQkJKTsKQEAgLTEyNTEsNiArMTI1Niw3IEBACiAJCQkJODAwNDVBRUUxNDc3MThFNzAwODI5
MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjlDRkJBMTExMjI3MzZFNjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5QkI3QzVDMUM1MDUyNzgwMDJDNTI1QiAvKiBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTkzQjA0MEI4Mjcw
N0MzMEYwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTI5Q0ZCQTJFMTIyNzNBMTAwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMEUyNEUxMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBNUExNUYwMTZFMTVD
RDAwMEY3QzU2MSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQkocmV2aXNpb24gMjgzNDE4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJEdW1w
UmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVQ
YXN0ZWJvYXJkLmgiCisjaW1wb3J0ICJNb2RpZmllcktleUV4dHJhY3Rvci5oIgogI2ltcG9ydCAi
V2ViQ29yZVRlc3RTdXBwb3J0LmgiCiAjaW1wb3J0IDxXZWJLaXQvRE9NUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+CkBAIC04MSwxMyArODIsNiBAQCBlbnVtIE1v
dXNlQnV0dG9uIHsKICAgICBOb01vdXNlQnV0dG9uID0gLTIKIH07CiAKLXN0cnVjdCBLZXlNYXBw
aW5nRW50cnkgewotICAgIGludCBtYWNLZXlDb2RlOwotICAgIGludCBtYWNOdW1wYWRLZXlDb2Rl
OwotICAgIHVuaWNoYXIgY2hhcmFjdGVyOwotICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXJOYW1lOwot
fTsKLQogTlNQb2ludCBsYXN0TW91c2VQb3NpdGlvbjsKIE5TUG9pbnQgbGFzdENsaWNrUG9zaXRp
b247CiBpbnQgbGFzdENsaWNrQnV0dG9uID0gTm9Nb3VzZUJ1dHRvbjsKQEAgLTIwMiw2ICsxOTYs
OCBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgQCJmb2N1cyIsCiAgICAgICAgIEAiaW5w
dXQiLAogICAgICAgICBAImtleWRvd24iLAorICAgICAgICBAInJhd2tleWRvd24iLAorICAgICAg
ICBAInJhd2tleXVwIiwKICAgICAgICAgQCJrZXlwcmVzcyIsCiAgICAgICAgIEAia2V5dXAiLAog
ICAgICAgICBAImxvYWQiLApAQCAtMjQ1LDYgKzI0MSw4IEBAICsgKEJPT0wpaXNTZWxlY3RvckV4
Y2x1ZGVkRnJvbVdlYlNjcmlwdDoKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0
b3IoZW5hYmxlRE9NVUlFdmVudExvZ2dpbmc6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09
IEBzZWxlY3RvcihmaXJlS2V5Ym9hcmRFdmVudHNUb0VsZW1lbnQ6KQogICAgICAgICAgICAgfHwg
YVNlbGVjdG9yID09IEBzZWxlY3RvcihrZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9u
OikKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IocmF3S2V5RG93bjp3aXRo
TW9kaWZpZXJzOndpdGhMb2NhdGlvbjopCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNl
bGVjdG9yKHJhd0tleVVwOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikKICAgICAgICAgICAg
IHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IobGVhcEZvcndhcmQ6KQogICAgICAgICAgICAgfHwg
YVNlbGVjdG9yID09IEBzZWxlY3Rvcihtb3VzZURvd246d2l0aE1vZGlmaWVyczopCiAgICAgICAg
ICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKG1vdXNlTW92ZVRvWDpZOikKQEAgLTMwNiw2
ICszMDQsMTAgQEAgKyAoTlNTdHJpbmcgKil3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6KAogICAg
ICAgICByZXR1cm4gQCJmaXJlS2V5Ym9hcmRFdmVudHNUb0VsZW1lbnQiOwogICAgIGlmIChhU2Vs
ZWN0b3IgPT0gQHNlbGVjdG9yKGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkK
ICAgICAgICAgcmV0dXJuIEAia2V5RG93biI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0
b3IocmF3S2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQorICAgICAgICByZXR1
cm4gQCJyYXdLZXlEb3duIjsKKyAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihyYXdLZXlV
cDp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQorICAgICAgICByZXR1cm4gQCJyYXdLZXlV
cCI7CiAgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2NoZWR1bGVBc3luY2hyb25vdXNL
ZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikpCiAgICAgICAgIHJldHVybiBAInNj
aGVkdWxlQXN5bmNocm9ub3VzS2V5RG93biI7CiAgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0
b3IobGVhcEZvcndhcmQ6KSkKQEAgLTk3MiwyMDQgKzk3NCwyMyBAQCArICh2b2lkKWNsZWFyU2F2
ZWRFdmVudHMKIAogLSAodm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRoTW9k
aWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9uOih1bnNpZ25l
ZCBsb25nKWxvY2F0aW9uCiB7Ci0gICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyID0gY2hhcmFj
dGVyOwotICAgIHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOwotICAgIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlD
b2RlID0gMHg3QjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
cmlnaHRBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0QXJyb3dG
dW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0M7Ci0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkgewotICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdFOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29k
ZSA9IDB4N0Q7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBh
Z2VVcCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9uS2V5
OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NDsKLSAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgewotICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHg3OTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiaG9tZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hvbWVGdW5j
dGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzM7Ci0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAg
ICBrZXlDb2RlID0gMHg3NzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiaW5zZXJ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5zZXJ0RnVu
Y3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDcyOwotICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
LSAgICAgICAga2V5Q29kZSA9IDB4NzU7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDFC
OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzNTsKLSAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3JlZW4iXSkgewotICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OwotICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OwotICAgICAgICBrZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFsIGtl
eSBjb2RlIGZvciBQcmludFNjcmVlbi4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgewotICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gMHgwNDMwOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzOyAv
LyBTaGFyZXMga2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0LgotICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweEZGRTM7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDNCOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0
U2hpZnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUxOwotICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzODsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSAweEZGRTc7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNBOwotICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkgewot
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU0OwotICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAg
ICBrZXlDb2RlID0gMHgzRTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAicmlnaHRTaGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTI7
Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNDOwotICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7Ci0gICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSAweEZGRTg7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAw
eDNEOwotICAgIH0KLQotICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRoZSBm
dW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwuLi4s
IkYyNCIpLgotICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkgbmFt
ZSwgc2V0IGl0cyBrZXkgY29kZS4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDI0OyBp
KyspIHsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7Ci0gICAgICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKLSAgICAgICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAg
ICAgICAgICBzd2l0Y2ggKGkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6IGtleUNvZGUgPSAw
eDdBOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4OyBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDY6
IGtleUNvZGUgPSAweDYxOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDc6IGtleUNvZGUg
PSAweDYyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0OyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAweDY1OyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEzOiBr
ZXlDb2RlID0gMHg2OTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29kZSA9
IDB4NkI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAweDcxOyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2RlID0gMHg2QTsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyMDog
a2V5Q29kZSA9IDB4NUE7IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCi0gICAgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4
MzA7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0pCi0gICAg
ICAgIGtleUNvZGUgPSAweDMxOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiXHIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MjQ7Ci0gICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQotICAgICAgICBrZXlDb2RlID0gMHg0QzsKLSAg
ICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQotICAgICAgICBr
ZXlDb2RlID0gMHgzMzsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImEiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDA7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJiIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBCOwotICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQotICAgICAgICBrZXlDb2RlID0g
MHgwMjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkKLSAg
ICAgICAga2V5Q29kZSA9IDB4MEU7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJceDFiIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDFCOwotCi0gICAgS2V5TWFwcGlu
Z0VudHJ5IHRhYmxlW10gPSB7Ci0gICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5pbH0sCi0gICAg
ICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0sCi0gICAgICAgIHswLCAgICAweDQ1LCAnKycsIG5p
bH0sCi0gICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFy
In0sCi0gICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCi0gICAgICAgIHswLCAgICAweDRD
LCAzLCBAImVudGVyIiB9LAotICAgICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAotICAgICAg
ICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAotICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBuaWx9
LAotICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAotICAgICAgICB7MHgxMywgMHg1NCwg
JzInLCBuaWx9LAotICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAotICAgICAgICB7MHgx
NSwgMHg1NiwgJzQnLCBuaWx9LAotICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAotICAg
ICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAotICAgICAgICB7MHgxQSwgMHg1OSwgJzcnLCBu
aWx9LAotICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAotICAgICAgICB7MHgxOSwgMHg1
QywgJzknLCBuaWx9LAotICAgIH07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9B
UlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsKLSAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFy
YWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNo
YXJhY3RlciBsZW5ndGg6MV07Ci0gICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0
YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgewotICAgICAgICAgICAgaWYgKGxvY2F0aW9uID09IERP
TV9LRVlfTE9DQVRJT05fTlVNUEFEKQotICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtp
XS5tYWNOdW1wYWRLZXlDb2RlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGtl
eUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOwotICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gZXZl
bnRDaGFyYWN0ZXI7Ci0KLSAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7Ci0KLSAgICBpZiAoW2No
YXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID49
ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7Ci0jaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlm
aWVyRmxhZ1NoaWZ0OwotI2Vsc2UKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBXZWJFdmVudEZs
YWdNYXNrTGVmdFNoaWZ0S2V5OwotI2VuZGlmCi0gICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKLSAgICB9Ci0KLSAgICBtb2Rp
ZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpOwotCi0gICAgaWYgKGxv
Y2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQotICAgICAgICBtb2RpZmllckZsYWdz
IHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworICAgIE1vZGlmaWVyS2V5RXh0cmFj
dG9yICptb2RpZmllcktleUV4dHJhY3RvciA9IFtbTW9kaWZpZXJLZXlFeHRyYWN0b3IgYWxsb2Nd
IGluaXRXaXRoS2V5OmNoYXJhY3RlciBtb2RpZmllcnM6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlm
aWVycykga2V5TG9jYXRpb246bG9jYXRpb25dOwogCiAgICAgW1tbbWFpbkZyYW1lIGZyYW1lVmll
d10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZl
bnRUeXBlS2V5RG93bgogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9p
bnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJG
bGFncworICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleUV4
dHJhY3Rvci0+bW9kaWZpZXJGbGFncwogICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1w
OltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCiAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dO
dW1iZXI6W1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gd2luZG93TnVtYmVyXQogICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRl
eHRdCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJz
Om1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5j
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJl
cGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5rZXlDb2Rl
XSk7CiAjZWxzZQotICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGlu
aXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6W3NlbGYgY3VycmVu
dEV2ZW50VGltZV0gY2hhcmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRG
bGFncyltb2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1h
bmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1Rh
YktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CisgICAgYXV0
byBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6
V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0
ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlm
aWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6
bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hh
cmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKICNlbmRpZgogCiAjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMTgzLDE2ICsxMDA0LDE2IEBAIC0gKHZvaWQpa2V5RG93
bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2kKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBl
S2V5VXAKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3It
Pm1vZGlmaWVyRmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpbc2VsZiBj
dXJyZW50RXZlbnRUaW1lXQogICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVyOltb
W21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQotICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgotICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycworICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczptb2RpZmll
cktleUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8K
LSAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV0pOworICAgICAgICAgICAg
ICAgICAgICAgICAga2V5Q29kZTptb2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV0pOwogI2Vs
c2UKLSAgICBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVu
dFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hh
cmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllckZs
YWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBr
ZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJhY3Rl
ciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CisgICAgZXZlbnQgPSBhZG9wdE5TKFtb
V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0
YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlFeHRyYWN0
b3ItPmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktl
eUV4dHJhY3Rvci0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZl
bnRGbGFncyltb2RpZmllcktleUV4dHJhY3Rvci0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpO
TyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVy
IGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRl
eDowXSA9PSAnXHQnKV0pOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAg
LTEyMDksNiArMTAzMCw3NiBAQCAtICh2b2lkKWtleURvd25XcmFwcGVyOihOU1N0cmluZyAqKWNo
YXJhCiAgICAgW3NlbGYga2V5RG93bjpjaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczptb2RpZmllcnMg
d2l0aExvY2F0aW9uOmxvY2F0aW9uXTsKIH0KIAorLSAodm9pZClyYXdLZXlEb3duOihOU1N0cmlu
ZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMg
d2l0aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCit7CisgICAgTW9kaWZpZXJLZXlF
eHRyYWN0b3IgKm1vZGlmaWVyS2V5RXh0cmFjdG9yID0gW1tNb2RpZmllcktleUV4dHJhY3RvciBh
bGxvY10gaW5pdFdpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1vZGlmaWVyRmxhZ3Mo
bW9kaWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl07CisKKyAgICBbW1ttYWluRnJhbWUgZnJh
bWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6
TlNFdmVudFR5cGVLZXlEb3duCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisg
ICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3MK
KyAgICAgICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdpbmRv
d051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisgICAg
ICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBj
aGFyYWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAgICBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29k
ZTptb2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2ZW50
ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVu
dEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9k
aWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1v
ZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllcktleUV4dHJhY3Rvci0+bW9kaWZpZXJGbGFn
cyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5
Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIg
Y2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07Cisj
ZW5kaWYKKyAgICBbW1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJd
IGtleURvd246ZXZlbnQuZ2V0KCldOworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtO
U0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CisjZW5kaWYKK30KKworLSAodm9pZClyYXdLZXlE
b3duV3JhcHBlcjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0
T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgor
eworICAgIFtzZWxmIHJhd0tleURvd246Y2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJz
IHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07Cit9CisKKy0gKHZvaWQpcmF3S2V5VXA6KE5TU3RyaW5n
ICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3
aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sKKyAgICBNb2RpZmllcktleUV4
dHJhY3RvciAqbW9kaWZpZXJLZXlFeHRyYWN0b3IgPSBbW01vZGlmaWVyS2V5RXh0cmFjdG9yIGFs
bG9jXSBpbml0V2l0aEtleTpjaGFyYWN0ZXIgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyht
b2RpZmllcnMpIGtleUxvY2F0aW9uOmxvY2F0aW9uXTsKKworICAgIFtbW21haW5GcmFtZSBmcmFt
ZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpO
U0V2ZW50VHlwZUtleVVwCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAg
ICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3MKKyAg
ICAgICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdpbmRvd051
bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisgICAgICAg
IGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFy
YWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAgICBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTpt
b2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2ZW50ID0g
YWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtl
eVVwIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOm1vZGlmaWVy
S2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6
bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmll
cnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3MgaXNS
ZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6
W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJh
Y3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnQuZ2V0KCldOworI2VuZGlm
CisgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBrZXlV
cDpldmVudC5nZXQoKV07CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgW05TQXBwIF9z
ZXRDdXJyZW50RXZlbnQ6bmlsXTsKKyNlbmRpZgorfQorCistICh2b2lkKXJhd0tleVVwV3JhcHBl
cjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICop
bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAgIFtz
ZWxmIHJhd0tleVVwOmNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOm1vZGlmaWVycyB3aXRoTG9jYXRp
b246bG9jYXRpb25dOworfQorCiAtICh2b2lkKXNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bjoo
TlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9k
aWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgogewogICAgIE5TSW52
b2NhdGlvbiAqaW52b2NhdGlvbiA9IFtOU0ludm9jYXRpb24gaW52b2NhdGlvbldpdGhNZXRob2RT
aWduYXR1cmU6W0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgaW5zdGFuY2VNZXRob2RTaWduYXR1cmVG
b3JTZWxlY3RvcjpAc2VsZWN0b3Ioa2V5RG93bldyYXBwZXI6d2l0aE1vZGlmaWVyczp3aXRoTG9j
YXRpb246KV1dOwpJbmRleDogVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktl
eUV4dHJhY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2Ev
TW9kaWZpZXJLZXlFeHRyYWN0b3IuaAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0UnVubmVy
U2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCitzdHJ1Y3QgS2V5TWFwcGlu
Z0VudHJ5IHsKKyAgICBpbnQgbWFjS2V5Q29kZTsKKyAgICBpbnQgbWFjTnVtcGFkS2V5Q29kZTsK
KyAgICB1bmljaGFyIGNoYXJhY3RlcjsKKyAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFtZTsKK307
CisKK0BpbnRlcmZhY2UgTW9kaWZpZXJLZXlFeHRyYWN0b3IgOiBOU09iamVjdCB7CitAcHVibGlj
CisgICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyOworICAgIHVuc2lnbmVkIHNob3J0IGtleUNv
ZGU7CisgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczsKKyAgICBpbnQg
bW9kaWZpZXJGbGFnczsKK30KKworLSAoaWQpaW5pdFdpdGhLZXk6KE5TU3RyaW5nICopa2V5IG1v
ZGlmaWVyczooaW50KW1vZGlmaWVycyBrZXlMb2NhdGlvbjoodW5zaWduZWQpa2V5TG9jYXRpb247
CitAZW5kCkluZGV4OiBUb29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0
cmFjdG9yLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9k
aWZpZXJLZXlFeHRyYWN0b3IubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9jb2NvYS9Nb2RpZmllcktleUV4dHJhY3Rvci5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDIyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTW9k
aWZpZXJLZXlFeHRyYWN0b3IuaCIKKworI2ltcG9ydCA8V2ViS2l0L1dlYktpdExlZ2FjeS5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworQGltcGxlbWVudGF0aW9uIE1vZGlmaWVyS2V5RXh0
cmFjdG9yCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEtleTooTlNTdHJpbmcgKiljaGFyYWN0
ZXIgbW9kaWZpZXJzOihpbnQpbW9kaWZpZXJzIGtleUxvY2F0aW9uOih1bnNpZ25lZClrZXlMb2Nh
dGlvbgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgZXZlbnRDaGFyYWN0ZXIgPSBbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFN0cmluZzpjaGFyYWN0ZXJdOworICAgIGtleUNvZGUgPSAwOworICAgIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHg3QjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAicmlnaHRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0
QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0M7
CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7CisgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdFOworICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4N0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAInBhZ2VVcCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0
aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NDsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OworICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBrZXlDb2RlID0gMHg3OTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiaG9tZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hv
bWVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzM7Cisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHg3NzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiaW5zZXJ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5z
ZXJ0RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDcyOwor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgewor
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKKyAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzU7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAInByaW50U2NyZWVuIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3Ig
UHJpbnRTY3JlZW4uCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImN5cmlsbGljU21hbGxMZXR0ZXJBIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4
MDQzMDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtl
eSB3aXRoICJGIiBvbiBSdXNzaWFuIGxheW91dC4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gMHhGRkUzOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQjsKKyAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMTsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4Mzg7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImxlZnRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3Owor
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQTsKKyAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4RkZFNDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4M0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0
U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gMHhGRkU4OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRDsKKyAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDM1OworICAgIH0KKworICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRo
IHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYx
IiwuLi4sIkYyNCIpLgorICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1r
ZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9
IDI0OyBpKyspIHsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7CisgICAgICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKKyAgICAgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgMToga2V5Q29kZSA9
IDB4N0E7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA1OiBrZXlD
b2RlID0gMHg2MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDY6IGtleUNvZGUgPSAweDYxOyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgNzoga2V5Q29kZSA9IDB4NjI7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDk6
IGtleUNvZGUgPSAweDY1OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAw
eDZEOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgMTM6IGtleUNvZGUgPSAweDY5OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6IGtl
eUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAweDcx
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAweDZBOyBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTk6IGtleUNv
ZGUgPSAweDUwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBO
byBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlzLgorICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAIlx0Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMwOworICAgIGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiICJdKQorICAgICAgICBrZXlDb2RlID0gMHgz
MTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCisgICAg
ICAgIGtleUNvZGUgPSAweDI0OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiXG4iXSkKKyAgICAgICAga2V5Q29kZSA9IDB4NEM7CisgICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzM7Cisg
ICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCisgICAgICAgIGtl
eUNvZGUgPSAweDAwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
YiJdKQorICAgICAgICBrZXlDb2RlID0gMHgwQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDI7CisgICAgZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCisgICAgICAgIGtleUNvZGUgPSAw
eDBFOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQor
ICAgICAgICBrZXlDb2RlID0gMHgxQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAIjoiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI7Il0pCisgICAgICAgIGtleUNvZGUgPSAweDI5Owor
ICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiLCJdKQorICAgICAgICBr
ZXlDb2RlID0gMHgyQjsKKworICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0geworICAgICAg
ICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9
LAorICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0Nywg
TlNDbGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAorICAgICAgICB7MHgyQywgMHg0Qiwg
Jy8nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAgICAg
ezB4MUIsIDB4NEUsICctJywgbmlsfSwKKyAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwK
KyAgICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKKyAgICAgICAgezB4MTIsIDB4NTMsICcx
JywgbmlsfSwKKyAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKKyAgICAgICAgezB4MTQs
IDB4NTUsICczJywgbmlsfSwKKyAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKKyAgICAg
ICAgezB4MTcsIDB4NTcsICc1JywgbmlsfSwKKyAgICAgICAgezB4MTYsIDB4NTgsICc2Jywgbmls
fSwKKyAgICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKKyAgICAgICAgezB4MUMsIDB4NUIs
ICc4JywgbmlsfSwKKyAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKKyAgICB9OworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7
CisgICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgICAg
ICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10g
fHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsK
KyAgICAgICAgICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9O
VU1QQUQqLykKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5
Q29kZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVb
aV0ubWFjS2V5Q29kZTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJh
Y3RlclN0cmluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhT
dHJpbmc6ZXZlbnRDaGFyYWN0ZXJdOworCisgICAgbW9kaWZpZXJGbGFncyA9IDA7CisKKyAgICBp
ZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4
OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7Cisg
ICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworICAgICAg
ICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmlu
Z107CisgICAgfQorCisgICAgbW9kaWZpZXJGbGFncyB8PSBtb2RpZmllcnM7CisKKyAgICBpZiAo
a2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisgICAgICAg
IG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisgICAgCisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKK0BlbmQKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
RXZlbnRTZW5kZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
RXZlbnRTZW5kZXJQcm94eS5oCShyZXZpc2lvbiAyODM0MTgpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBsZWFwRm9yd2FyZChpbnQgbWlsbGlzZWNvbmRzKTsKIAogICAg
IHZvaWQga2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVk
IGxvY2F0aW9uKTsKKyAgICB2b2lkIHJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50
TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlVcChXS1N0cmlu
Z1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHVuc2lnbmVkIG1vdXNlQnV0dG9uc0N1cnJlbnRseURvd24oKSBj
b25zdCB7IHJldHVybiBtX21vdXNlQnV0dG9uc0N1cnJlbnRseURvd247IH0KQEAgLTEwNCw2ICsx
MDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbihpbnQg
YnV0dG9uKTsKIAogICAgIHZvaWQgc2VuZE1vdXNlRG93blRvU3RhcnRQcmVzc3VyZUV2ZW50cygp
OworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBjbGFzcyBQcmVzc3VyZUNoYW5nZURp
cmVjdGlvbiB7IEluY3JlYXNpbmcsIERlY3JlYXNpbmcgfTsKICAgICBSZXRhaW5QdHI8TlNFdmVu
dD4gYmVnaW5QcmVzc3VyZUV2ZW50KGludCBzdGFnZSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgzNDE4KQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTYs
NiArMTU5NiwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlS2V5RG93bk1lCiAg
ICAgbV9ldmVudFNlbmRlclByb3h5LT5rZXlEb3duKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJL
ZXkiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShk
aWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJl
Y2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYg
ZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHkt
PnJhd0tleURvd24oc3RyaW5nVmFsdWUoZGljdGlvbmFyeSwgIktleSIpLCB1aW50NjRWYWx1ZShk
aWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJMb2NhdGlv
biIpKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5j
aHJvbm91cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tleVVwKHN0cmluZ1ZhbHVl
KGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIp
LCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7Cit9CisKIHZvaWQgVGVzdENv
bnRyb2xsZXI6OmRpZFJlY2VpdmVMaXZlRG9jdW1lbnRzTGlzdChXS0FycmF5UmVmIGxpdmVEb2N1
bWVudExpc3QpCiB7CiAgICAgYXV0byBudW1Eb2N1bWVudHMgPSBXS0FycmF5R2V0U2l6ZShsaXZl
RG9jdW1lbnRMaXN0KTsKQEAgLTE2NTMsNiArMTY2MywxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVy
OjpkaWRSZWNlaXZlTWVzc2FnZUZyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAor
ICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwg
IlJhd0tleURvd24iKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKGRpY3Rpb25hcnksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5VXAiKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJh
d0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCBmYWxzZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlU2Nyb2xsQnkiKSkgewogICAgICAg
ICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3VzZVNjcm9sbEJ5KGRvdWJsZVZhbHVlKGRpY3Rp
b25hcnksICJYIiksIGRvdWJsZVZhbHVlKGRpY3Rpb25hcnksICJZIikpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTcwMiw2ICsxNzIyLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJl
Y2VpdmVTeW5jaHJvbm8KICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyKTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5RG93biIpKSB7CisgICAgICAgICAgICBkaWRSZWNl
aXZlUmF3S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoZGljdGlvbmFyeSwgdHJ1ZSk7
CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdl
TmFtZSwgIlJhd0tleVVwIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlVcE1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUoZGljdGlvbmFyeSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93biIp
KSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNlRG93bih1aW50NjRWYWx1
ZShkaWN0aW9uYXJ5LCAiQnV0dG9uIiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJNb2RpZmll
cnMiKSwgc3RyaW5nVmFsdWUoZGljdGlvbmFyeSwgIlBvaW50ZXJUeXBlIikpOwogICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjgzNDE4KQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNiAr
NDQxLDggQEAgcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IGdldEluamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSgpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlS2V5
RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5
RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5
RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5
RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5
VXBNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURp
Y3Rpb25hcnksIGJvb2wgc3luY2hyb25vdXMpOwogCiAgICAgLy8gV0tDb250ZXh0Q2xpZW50CiAg
ICAgc3RhdGljIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRDcmFzaChXS0NvbnRleHRSZWYsIGNvbnN0
IHZvaWQqKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
MjgzNDE4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNl
bmRpbmdDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDExICszMDEsNDEgQEAg
c3RhdGljIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZQogICAgIHJldHVybiBib2R5
OwogfQogCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRl
UmF3S2V5RG93bk1lc3NhZ2VCb2R5KEpTU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllcnMsIGludCBsb2NhdGlvbikKK3sKKyAgICBhdXRvIGJvZHkgPSBhZG9wdFdLKFdLTXV0
YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIlN1Yk1lc3NhZ2Ui
LCAiUmF3S2V5RG93biIpOworICAgIHNldFZhbHVlKGJvZHksICJLZXkiLCBrZXkpOworICAgIHNl
dFZhbHVlKGJvZHksICJNb2RpZmllcnMiLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKG1vZGlmaWVy
cykpKTsKKyAgICBzZXRWYWx1ZShib2R5LCAiTG9jYXRpb24iLCBhZG9wdFdLKFdLVUludDY0Q3Jl
YXRlKGxvY2F0aW9uKSkpOworICAgIHJldHVybiBib2R5OworfQorCitzdGF0aWMgV0tSZXRhaW5Q
dHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keShKU1N0
cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBpbnQgbG9jYXRpb24pCit7
CisgICAgYXV0byBib2R5ID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOwor
ICAgIHNldFZhbHVlKGJvZHksICJTdWJNZXNzYWdlIiwgIlJhd0tleVVwIik7CisgICAgc2V0VmFs
dWUoYm9keSwgIktleSIsIGtleSk7CisgICAgc2V0VmFsdWUoYm9keSwgIk1vZGlmaWVycyIsIGFk
b3B0V0soV0tVSW50NjRDcmVhdGUobW9kaWZpZXJzKSkpOworICAgIHNldFZhbHVlKGJvZHksICJM
b2NhdGlvbiIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobG9jYXRpb24pKSk7CisgICAgcmV0dXJu
IGJvZHk7Cit9CisKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6a2V5RG93bihKU1N0cmlu
Z1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKQogewogICAg
IHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGNyZWF0ZUtleURvd25N
ZXNzYWdlQm9keShrZXksIHBhcnNlTW9kaWZpZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRp
b24pKTsKIH0KIAordm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlEb3duKEpTU3Ry
aW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pCit7Cisg
ICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3S2V5
RG93bk1lc3NhZ2VCb2R5KGtleSwgcGFyc2VNb2RpZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBs
b2NhdGlvbikpOworfQorCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleVVwKEpT
U3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pCit7
CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3
S2V5VXBNZXNzYWdlQm9keShrZXksIHBhcnNlTW9kaWZpZXJBcnJheShtb2RpZmllckFycmF5KSwg
bG9jYXRpb24pKTsKK30KKwogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzY2hlZHVsZUFz
eW5jaHJvbm91c0tleURvd24oSlNTdHJpbmdSZWYga2V5KQogewogICAgIHBvc3RQYWdlTWVzc2Fn
ZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCAwLCAwKSk7Cklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMjgzNDE4KQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogICAgIHZvaWQgY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjayk7CiAK
ICAgICB2b2lkIGtleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJy
YXksIGludCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlEb3duKEpTU3RyaW5nUmVmIGtleSwg
SlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pOworICAgIHZvaWQgcmF3S2V5
VXAoSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlv
bik7CiAgICAgdm9pZCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oSlNTdHJpbmdSZWYga2V5
KTsKIAogICAgIHZvaWQgdGV4dFpvb21JbigpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiAyODM0MTgpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBAIGludGVyZmFjZSBFdmVu
dFNlbmRpbmdDb250cm9sbGVyIHsKICAgICB1bmRlZmluZWQgbGVhcEZvcndhcmQobG9uZyBtaWxs
aXNlY29uZHMpOwogCiAgICAgdW5kZWZpbmVkIGtleURvd24oRE9NU3RyaW5nIGtleSwgb2JqZWN0
IG1vZGlmaWVyQXJyYXksIGxvbmcgbG9jYXRpb24pOworICAgIHVuZGVmaW5lZCByYXdLZXlEb3du
KERPTVN0cmluZyBrZXksIG9iamVjdCBtb2RpZmllckFycmF5LCBsb25nIGxvY2F0aW9uKTsKKyAg
ICB1bmRlZmluZWQgcmF3S2V5VXAoRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1vZGlmaWVyQXJyYXks
IGxvbmcgbG9jYXRpb24pOwogICAgIHVuZGVmaW5lZCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURv
d24oRE9NU3RyaW5nIGtleSk7CiAKICAgICAvLyBab29tIGZ1bmN0aW9ucy4KSW5kZXg6IFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9p
b3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQkocmV2aXNpb24gMjgzNDE4KQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksMTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojpr
ZXlEb3duKFdLU3RyaW5nUgogewogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURv
d24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQg
a2V5TG9jYXRpb24pCit7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tT
dHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9j
YXRpb24pCit7Cit9CisKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3JvbGxCeShpbnQg
eCwgaW50IHkpCiB7CiB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RS
dW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjgzNDE4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVu
bmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsx
MjYsNyBAQAogCQk4MDM0QzY2MjE0ODc2MzY0MDBBQzMyRTkgLyogQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MDM0QzY2MTE0ODc2MzY0MDBBQzMyRTkgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMu
bW0gKi87IH07CiAJCTgwOTczMzhBMTQ4NzRBNUEwMDgxNTZEOSAvKiBBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgwOTczMzg5MTQ4NzRBNUEwMDgxNTZEOSAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5tbSAqLzsgfTsKIAkJOTM3NjQxN0EyMTBENzM3MjAwQTNEQUFFIC8qIFdl
YktpdFRlc3RSdW5uZXJXaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5Mzc2NDE3NjIxMEQ3MzYwMDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1bm5l
cldpbmRvdy5tbSAqLzsgfTsKKwkJOTNCMDQwQjUyNzA3QzAyRTAwNzZFOTYwIC8qIE1vZGlmaWVy
S2V5RXh0cmFjdG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNCMDQwQjMyNzA3QzAyRTAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1t
ICovOyB9OwogCQk5M0M3ODgyMzI1MEM2QzJFMDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M3ODgx
RjI1MEM2OUU0MDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCTkzQzc4
ODMxMjUwQzcxOUYwMEMwQUEyNCAvKiBKU0Jhc2ljcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M3ODgzMDI1MEM3MTk5MDBDMEFBMjQgLyogSlNC
YXNpY3MuY3BwICovOyB9OwogCQk5M0M3ODgzMjI1MEM3MUI3MDBDMEFBMjQgLyogSlNCYXNpY3Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4
MzAyNTBDNzE5OTAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCAqLzsgfTsKQEAgLTM3MCw2ICszNzEs
OCBAQAogCQk5MzM4RDFCRTI1MEJEOUREMDBFODI3RjYgLyogRGljdGlvbmFyeUZ1bmN0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEaWN0aW9uYXJ5RnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzNzY0MTc2MjEwRDczNjAwMEEzREFBRSAvKiBXZWJLaXRUZXN0UnVubmVy
V2luZG93Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViS2l0
VGVzdFJ1bm5lcldpbmRvdy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM3NjQx
NzcyMTBENzM2MTAwQTNEQUFFIC8qIFdlYktpdFRlc3RSdW5uZXJXaW5kb3cuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5M0IwNDBCMjI3MDdDMDJEMDA3NkU5NjAgLyogTW9kaWZp
ZXJLZXlFeHRyYWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTW9kaWZp
ZXJLZXlFeHRyYWN0b3IuaDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZp
ZXJLZXlFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMDQwQjMy
NzA3QzAyRTAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTW9kaWZpZXJLZXlFeHRyYWN0b3IubW07IHBhdGgg
PSAuLi9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0M3ODgxRjI1MEM2OUU0MDBDMEFBMjQgLyogUmVm
dGVzdEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBS
ZWZ0ZXN0RnVuY3Rpb25zLmNwcDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvUmVmdGVzdEZ1
bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzc4ODIwMjUwQzY5
RTQwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFJlZnRlc3RGdW5jdGlvbnMuaDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQv
UmVmdGVzdEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0M3ODgy
RjI1MEM3MTk5MDBDMEFBMjQgLyogSlNCYXNpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNCYXNpY3Mu
aDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvQmluZGluZ3MvSlNCYXNpY3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1NSw2ICs5NTgsOCBAQAogCQkJCUY0NEE1MzE2MjFC
ODk5REEwMERCQjk5QyAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tICovLAogCQkJCUY0QzM1
NzhCMjBFODQ0NDAwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCiAJCQkJ
RjRDMzU3OEEyMEU4NDQ0MDAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8s
CisJCQkJOTNCMDQwQjIyNzA3QzAyRDAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLmgg
Ki8sCisJCQkJOTNCMDQwQjMyNzA3QzAyRTAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9y
Lm1tICovLAogCQkJCTJFMkE3NjVCMjM3MEM4QTAwMDhGOUZGRSAvKiBQbGF0Zm9ybVZpZXdIZWxw
ZXJzLmggKi8sCiAJCQkJMkUyQTc2NUMyMzcwQzhBMDAwOEY5RkZFIC8qIFBsYXRmb3JtVmlld0hl
bHBlcnMubW0gKi8sCiAJCQkJRjQwMTBCN0QyNERBMjA0ODAwQTg3NkUyIC8qIFBvc2VBc0NsYXNz
LmggKi8sCkBAIC0xMjQ2LDYgKzEyNTEsNyBAQAogCQkJCUExODUxMDNGMUI5QUUxMjkwMDc0NEFF
QiAvKiBHZW9sb2NhdGlvblByb3ZpZGVyTW9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNDRB
NTMxODIxQjg5OUU1MDBEQkI5OUMgLyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTMxREE4QTNEMUU3MjA1Q0MwMEUxREYyRiAvKiBJT1NMYXlvdXRUZXN0Q29t
bXVuaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5M0IwNDBCNTI3MDdDMDJFMDA3NkU5
NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0M3ODgz
MjI1MEM3MUI3MDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3
M0I1NTExQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMThFNzE4MUQ2QkM0NTYwMDI3RTU0NyAvKiBKU1dyYXBwZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRl
clByb3h5R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9F
dmVudFNlbmRlclByb3h5R3RrLmNwcAkocmV2aXNpb24gMjgzNDE4KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0NSw2ICsyNDUsMTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5n
UgogICAgIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZUtleUV2ZW50KHRvV2ViS2l0R0xpYkFQ
SShtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSksIEtleUV2
ZW50VHlwZTo6SW5zZXJ0LCBnZGtLZXlTeW0sIG1vZGlmaWVycywgU2hvdWxkVHJhbnNsYXRlS2V5
Ym9hcmRTdGF0ZTo6Tm8pOwogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24o
V0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5
TG9jYXRpb24pCit7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJp
bmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRp
b24pCit7Cit9CisKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1
dHRvbiwgV0tFdmVudE1vZGlmaWVycyB3a01vZGlmaWVycywgV0tTdHJpbmdSZWYgcG9pbnRlclR5
cGUpCiB7CiAgICAgdW5zaWduZWQgZ2RrQnV0dG9uID0gZXZlbnRTZW5kZXJCdXR0b25Ub0dES0J1
dHRvbihidXR0b24pOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5k
ZXJQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVu
dFNlbmRlclByb3h5Lm1tCShyZXZpc2lvbiAyODM0MTgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW1wb3J0ICJFdmVudFNlbmRlclByb3h5LmgiCiAKICNpbXBvcnQgIkNvcmVHcmFwaGlj
c1Rlc3RTUEkuaCIKKyNpbXBvcnQgIk1vZGlmaWVyS2V5RXh0cmFjdG9yLmgiCiAjaW1wb3J0ICJQ
bGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2ltcG9ydCAi
VGVzdENvbnRyb2xsZXIuaCIKQEAgLTIzOCwxMyArMjM5LDYgQEAgZW51bSBNb3VzZUJ1dHRvbiB7
CiAgICAgTm9Nb3VzZUJ1dHRvbiA9IC0yCiB9OwogCi1zdHJ1Y3QgS2V5TWFwcGluZ0VudHJ5IHsK
LSAgICBpbnQgbWFjS2V5Q29kZTsKLSAgICBpbnQgbWFjTnVtcGFkS2V5Q29kZTsKLSAgICB1bmlj
aGFyIGNoYXJhY3RlcjsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFtZTsKLX07Ci0KIHN0YXRp
YyBOU0V2ZW50VHlwZSBldmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihpbnQgYnV0dG9u
LCBNb3VzZUFjdGlvbiBhY3Rpb24pCiB7CiAgICAgc3dpdGNoIChidXR0b24pIHsKQEAgLTYzMiwy
MDMgKzYyNiwxOCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJkKGludCBtCiAK
IHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRN
b2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKIHsKLSAgICBOU1N0cmlu
ZyogY2hhcmFjdGVyID0gdG9XVEZTdHJpbmcoa2V5KTsKLQotICAgIE5TU3RyaW5nICpldmVudENo
YXJhY3RlciA9IGNoYXJhY3RlcjsKLSAgICB1bnNpZ25lZCBzaG9ydCBrZXlDb2RlID0gMDsKLSAg
ICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0I7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNv
ZGUgPSAweDdDOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1
cEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9u
S2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3RTsKLSAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsKLSAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
Ci0gICAgICAgIGtleUNvZGUgPSAweDdEOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQ
YWdlVXBGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzQ7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VEb3duIl0p
IHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlvbktleTsKLSAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzk7Ci0gICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgewotICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNIb21lRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDczOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQi
XSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsKLSAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzc7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2Rl
ID0gMHg3MjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVs
ZXRlIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7
Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc1OwotICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
Ci0gICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5
IGNvZGUgZm9yIFByaW50U2NyZWVuLgotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSAweDA0MzA7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM7IC8v
IFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCi0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKLSAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9
IDB4M0I7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRT
aGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7Ci0gICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM4OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4RkZFNzsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0E7Ci0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7Ci0g
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAg
IGtleUNvZGUgPSAweDNFOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJyaWdodFNoaWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsK
LSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0M7Ci0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKLSAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IDB4RkZFODsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4
M0Q7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJd
KSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHgzNTsKLSAgICB9Ci0KLSAgICAvLyBDb21wYXJlIHRoZSBpbnB1dCBz
dHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhlIERPTSBzcGVj
IChpLmUuICJGMSIsLi4uLCJGMjQiKS4KLSAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEg
ZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMTsgaSA8PSAyNDsgaSsrKSB7Ci0gICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgewotICAgICAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7Ci0gICAgICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOwotICAgICAgICAgICAgc3dpdGNoIChpKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiBrZXlD
b2RlID0gMHg3ODsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2RlID0gMHg2
MzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA4OiBr
ZXlDb2RlID0gMHg2NDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0g
MHg2NTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE1OiBr
ZXlDb2RlID0gMHg3MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9
IDB4NkE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9z
dCBrZXlzLgotICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCi0gICAg
ICAgIGtleUNvZGUgPSAweDMwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiICJdKQotICAgICAgICBrZXlDb2RlID0gMHgzMTsKLSAgICBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDI0OwotICAg
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKLSAgICAgICAga2V5
Q29kZSA9IDB4NEM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJc
eDgiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJhIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDAwOwotICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQotICAgICAgICBrZXlDb2RlID0g
MHgwQjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkKLSAg
ICAgICAga2V5Q29kZSA9IDB4MDI7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJlIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBFOwotICAgIGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQotICAgICAgICBrZXlDb2RlID0gMHgxQjsK
LSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjoiXSkKLSAgICAgICAg
a2V5Q29kZSA9IDB4Mjk7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCI7Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDI5OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiLCJdKQotICAgICAgICBrZXlDb2RlID0gMHgyQjsKLQotICAgIEtl
eU1hcHBpbmdFbnRyeSB0YWJsZVtdID0gewotICAgICAgICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9
LAotICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NSwg
JysnLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktleSwg
QCJjbGVhciJ9LAotICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9LAotICAgICAgICB7MCwg
ICAgMHg0QywgMywgQCJlbnRlciIgfSwKLSAgICAgICAgezB4MUIsIDB4NEUsICctJywgbmlsfSwK
LSAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKLSAgICAgICAgezB4MUQsIDB4NTIsICcw
JywgbmlsfSwKLSAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwKLSAgICAgICAgezB4MTMs
IDB4NTQsICcyJywgbmlsfSwKLSAgICAgICAgezB4MTQsIDB4NTUsICczJywgbmlsfSwKLSAgICAg
ICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKLSAgICAgICAgezB4MTcsIDB4NTcsICc1Jywgbmls
fSwKLSAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKLSAgICAgICAgezB4MUEsIDB4NTks
ICc3JywgbmlsfSwKLSAgICAgICAgezB4MUMsIDB4NUIsICc4JywgbmlsfSwKLSAgICAgICAgezB4
MTksIDB4NUMsICc5JywgbmlsfSwKLSAgICB9OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7Ci0gICAgICAgIE5TU3RyaW5nKiBjdXJy
ZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJs
ZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOwotICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKLSAgICAgICAgICAgIGlmIChrZXlMb2Nh
dGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKLSAgICAgICAgICAgICAg
ICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKLSAgICAgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOwotCi0gICAgaW50IG1vZGlmaWVyRmxhZ3Mg
PSAwOwotCi0gICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hh
cmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBd
IDw9ICdaJykgewotICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdT
aGlmdDsKLSAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW2NoYXJhY3RlciBs
b3dlcmNhc2VTdHJpbmddOwotICAgIH0KLQotICAgIG1vZGlmaWVyRmxhZ3MgfD0gYnVpbGRNb2Rp
ZmllckZsYWdzKG1vZGlmaWVycyk7Ci0KLSAgICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRP
TV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCi0gICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVu
dE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisgICAgTW9kaWZpZXJLZXlFeHRyYWN0b3IgKm1vZGlm
aWVyS2V5RXh0cmFjdG9yID0gW1tNb2RpZmllcktleUV4dHJhY3RvciBhbGxvY10gaW5pdFdpdGhL
ZXk6dG9XVEZTdHJpbmcoa2V5KSBtb2RpZmllcnM6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVy
cykga2V5TG9jYXRpb246a2V5TG9jYXRpb25dOwogCiAgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNF
dmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncwotICAgICAgICAgICAgICAgICAgICAgICAg
dGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQotICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV07CisgICAgICAgIGxvY2F0aW9u
Ok5TTWFrZVBvaW50KDUsIDUpCisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRy
YWN0b3ItPm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2
ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCisgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0
Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJd
CisgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAg
ICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAg
ICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAg
a2V5Q29kZTptb2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV07CiAKICAgICBbTlNBcHAgX3Nl
dEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmll
dygpLT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlEb3duOmV2ZW50XTsKQEAg
LTgzNiwxNCArNjQ1LDU0IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmlu
Z1IKIAogICAgIGV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtl
eVVwCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQot
ICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCisgICAg
ICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5t
b2RpZmllckZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVU
aW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZv
cm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2
ZW50Q2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cwogICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0gICAgICAgICAgICAgICAg
ICAgICAgICBrZXlDb2RlOmtleUNvZGVdOworICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29k
ZTptb2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV07CisKKyAgICBbTlNBcHAgX3NldEN1cnJl
bnRFdmVudDpldmVudF07CisgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5w
bGF0Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudF07CisgICAgW05TQXBw
IF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdL
ZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2ln
bmVkIGtleUxvY2F0aW9uKQoreworICAgIE1vZGlmaWVyS2V5RXh0cmFjdG9yICptb2RpZmllcktl
eUV4dHJhY3RvciA9IFtbTW9kaWZpZXJLZXlFeHRyYWN0b3IgYWxsb2NdIGluaXRXaXRoS2V5OnRv
V1RGU3RyaW5nKGtleSkgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIGtl
eUxvY2F0aW9uOmtleUxvY2F0aW9uXTsKKworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQg
a2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleURvd24KKyAgICAgICAgbG9jYXRpb246TlNN
YWtlUG9pbnQoNSwgNSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleUV4dHJhY3Rv
ci0+bW9kaWZpZXJGbGFncworICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRU
aW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKKyAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250
cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KKyAg
ICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAg
IGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyCisgICAgICAg
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlD
b2RlOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5rZXlDb2RlXTsKKworICAgIFtOU0FwcCBfc2V0Q3Vy
cmVudEV2ZW50OmV2ZW50XTsKKyAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCkt
PnBsYXRmb3JtV2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnRdOworICAgIFtO
U0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5z
aWduZWQga2V5TG9jYXRpb24pCit7CisgICAgTW9kaWZpZXJLZXlFeHRyYWN0b3IgKm1vZGlmaWVy
S2V5RXh0cmFjdG9yID0gW1tNb2RpZmllcktleUV4dHJhY3RvciBhbGxvY10gaW5pdFdpdGhLZXk6
dG9XVEZTdHJpbmcoa2V5KSBtb2RpZmllcnM6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycykg
a2V5TG9jYXRpb246a2V5TG9jYXRpb25dOworCisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVu
dCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKKyAgICAgICAgbG9jYXRpb246TlNN
YWtlUG9pbnQoNSwgNSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleUV4dHJhY3Rv
ci0+bW9kaWZpZXJGbGFncworICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRU
aW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKKyAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250
cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KKyAg
ICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAg
IGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyCisgICAgICAg
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlD
b2RlOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5rZXlDb2RlXTsKIAogICAgIFtOU0FwcCBfc2V0Q3Vy
cmVudEV2ZW50OmV2ZW50XTsKICAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCkt
PnBsYXRmb3JtV2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50XTsKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3Bw
CShyZXZpc2lvbiAyODM0MTgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNl
bmRlclByb3h5V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDYgKzMxNCwxNCBAQCB2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgICAgIFNldEtleWJvYXJk
U3RhdGUoa2V5U3RhdGUpOwogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24o
V0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5
TG9jYXRpb24pCit7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJp
bmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRp
b24pCit7Cit9CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBFdmVudFNlbmRlclBy
b3h5OjphZGRUb3VjaFBvaW50KGludCwgaW50KQogewpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAJKHJldmlzaW9uIDI4MzQx
OCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiArMzI3LDE0IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICBmcmVlKGVudHJpZXMpOwogfQogCit2b2lkIEV2ZW50
U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJz
IG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKK3ZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlm
aWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKIHZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6YWRkVG91Y2hQb2ludChpbnQgeCwgaW50IHkpCiB7CiAgICAgc3RydWN0IHdwZV9pbnB1dF90
b3VjaF9ldmVudF9yYXcgcmF3RXZlbnQgeyB3cGVfaW5wdXRfdG91Y2hfZXZlbnRfdHlwZV9kb3du
LCBzZWNUb01zVGltZXN0YW1wKG1fdGltZSksIHN0YXRpY19jYXN0PGludD4obV90b3VjaEV2ZW50
cy5zaXplKCkpLCBzdGF0aWNfY2FzdDxpbnQzMl90Pih4KSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4o
eSkgfTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzQxOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDIxLTEwLTAxICBCZXRoIERha2lu
ICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+CisK
KyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0b3Ag
d2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICB1c2VGbGV4aWJsZVZpZXdwb3J0IGFuZCBFdmVudEhhbmRsZXJEcml2ZW5TbW9v
dGhLZXlib2FyZFNjcm9sbGluZ0VuYWJsZWQga2V5cyBhcmUgV0syIG9ubHkgCisgICAgICAgIHJp
Z2h0IG5vdywgc28gc2tpcCB0aGUgbmV3IHRlc3QgaW4gZ2VuZXJhbC4KKyAgICAgICAgKiBUZXN0
RXhwZWN0YXRpb25zOgorCisgICAgICAgIE5ldyB0ZXN0IHRoYXQgdmVyaWZpZXMgdGhpcyBidWcg
aXMgcmVzb2x2ZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdo
aWxlLWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRt
bDogQWRkZWQuCisKKyAgICAgICAgRG8gcnVuIHRoZSB0ZXN0IGZvciBtYWMtd2syLiByYXdLZXlE
b3duIC8gcmF3S2V5VXAgYXJlIGN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQgCisgICAgICAgIGVs
c2V3aGVyZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisK
KyAgICAgICAgTmV3IHN1cHBvcnQgZm9yIHJhd0tleURvd24gaW4gb3JkZXIgdG8gc2ltdWxhdGUg
aG9sZGluZyB0aGUga2V5IGRvd24uCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoK
KyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5yYXdLZXlEb3duKToKKyAgICAgICAgKHdpbmRvdy5V
SUhlbHBlci5yYXdLZXlVcCk6CisKIDIwMjEtMTAtMDEgIEF5dW1pIEtvamltYSAgPGF5dW1pX2tv
amltYUBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1MgUmVsZWFzZSAmIG1hY09TIHdrMiBdIGh0
dHAvdGVzdHMvbWlzYy9yZXBlYXQtb3Blbi1jYW5jZWwuaHRtbCBpcyBhIGZsYWt5IHRpbWVvdXQu
CkluZGV4OiBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI4MzQxOCkKKysrIExheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAgZmFzdC9m
b3Jtcy9lbnRlcmtleWhpbnQtYXR0cmlidXRlLXZhbHVlcwogZmFzdC9zY3JvbGxpbmcva2V5Ym9h
cmQtc2Nyb2xsaW5nLWRpc3RhbmNlLWRvd25BcnJvdy5odG1sIFsgU2tpcCBdCiBmYXN0L3Njcm9s
bGluZy9rZXlib2FyZC1zY3JvbGxpbmctZGlzdGFuY2UtcGFnZURvd24uaHRtbCBbIFNraXAgXQog
ZmFzdC9zY3JvbGxpbmcva2V5Ym9hcmQtc2Nyb2xsaW5nLWxhc3QtdGltZXN0YW1wLmh0bWwgWyBT
a2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3Jv
bGxpbmcuaHRtbCBbIFNraXAgXQogCiAjIEhpZ2hsaWdodGluZyBtYXJrZWQgdGV4dCByYW5nZXMg
ZnJvbSBsYXlvdXQgdGVzdHMgaXMgb25seSBzdXBwb3J0ZWQgaW4gV2ViS2l0Mi4KIGVkaXRpbmcv
aW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sIFsgU2tpcCBdCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xs
aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBh
Z2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDYgQEAKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCitTVUNDRVNTOiBCbHVlIGZyYW1lIHN0b3BwZWQgc2NvbGxpbmcgYmVmb3JlIHJl
ZCBmcmFtZQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBh
Z2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGlu
Zy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9j
dXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgRXZlbnRIYW5kbGVyRHJpdmVuU21vb3RoS2V5Ym9h
cmRTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPG1ldGEg
bmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS41LCB1c2VyLXNjYWxhYmxl
PW5vIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxS
ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQgcmVkT2Zmc2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3JlZC1mcmFtZScpLmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldy5zY3Jv
bGxZOworICAgICAgICAgICAgbGV0IGJsdWVPZmZzZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYmx1ZS1mcmFtZScpLmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldy5zY3JvbGxZOworICAg
ICAgICAgICAgaWYgKHJlZE9mZnNldCA+IDE5MDApIHsKKyAgICAgICAgICAgICAgICBpZiAoYmx1
ZU9mZnNldCA+IDE5MDApCisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJGQUlMOiBCbHVlIGZy
YW1lIHNjcm9sbGVkIGFzIGZhciBhcyB0aGUgcmVkIGZyYW1lLiIpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIlNVQ0NFU1M6IEJsdWUgZnJhbWUgc3Rv
cHBlZCBzY29sbGluZyBiZWZvcmUgcmVkIGZyYW1lIik7CisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBh
c3luYyBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF3aW5k
b3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGxldCBibHVlRnJhbWUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYmx1ZS1mcmFtZScpOworICAgICAgICAgICAgbGV0IHJlZEZyYW1lID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZC1mcmFtZScpOworICAgICAgICAgICAgbGV0IHJlZERvY3Vt
ZW50ID0gcmVkRnJhbWUuY29udGVudERvY3VtZW50OworCisgICAgICAgICAgICByZWREb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgc2Nyb2xsUmVkKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYmx1ZUZyYW1l
LmZvY3VzKCk7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5yYXdLZXlEb3duKCJkb3duQXJy
b3ciKTsKKyAgICAgICAgICAgIHJlZEZyYW1lLmZvY3VzKCk7CisgICAgICAgICAgICBhd2FpdCBV
SUhlbHBlci5yYXdLZXlEb3duKCJkb3duQXJyb3ciKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0
PgorICAgIDxzdHlsZT4KKyAgICAjcGxhY2Vob2xkZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgICAgIGhlaWdodDogNTAwMHB4OworICAgIH0KKyAgICBpZnJhbWUgeworICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorICAgIDwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOiAwOyIgb25sb2FkPSJydW5UZXN0KCkiPgor
ICAgIDxpZnJhbWUgaWQ9ImJsdWUtZnJhbWUiIHNyY2RvYz0iPGRpdiBzdHlsZT0nd2lkdGg6IDEw
MHB4OyBoZWlnaHQ6IDIwMDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsnPjwvZGl2PiI+PC9p
ZnJhbWU+CisgICAgPGlmcmFtZSBpZD0icmVkLWZyYW1lIiBzcmNkb2M9IjxkaXYgc3R5bGU9J3dp
ZHRoOiAxMDBweDsgaGVpZ2h0OiAyMDAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvZGl2
PiI+PC9pZnJhbWU+CisgICAgPGRpdiBpZD0icGxhY2Vob2xkZXIiPgorICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjgzNDE4KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw2ICs0Miw4IEBAIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1s
aXYKIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1jb250cmFzdC1saXZlLXVwZGF0ZS5odG1sIFsgUGFz
cyBdCiBmYXN0L21lZGlhL21xLXByZWZlcnMtY29udHJhc3QuaHRtbCBbIFBhc3MgXQogCitmYXN0
L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwg
WyBQYXNzIF0KKwogaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkgWyBQYXNzIF0KIAogIyBBUFBMRV9Q
QVlfSU5TVEFMTE1FTlRTIHdhcyBmaXJzdCBhdmFpbGFibGUgaW4gQ2F0YWxpbmEuCkluZGV4OiBM
YXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMJKHJldmlzaW9uIDI4MzQxOCkKKysrIExheW91dFRl
c3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTM0NCw2ICszNDQs
MzAgQEAgd2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogICAgICAgICB9CiAgICAg
fQogCisgICAgc3RhdGljIHJhd0tleURvd24oa2V5LCBtb2RpZmllcnM9W10pCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkgeworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIucmF3S2V5RG93bihrZXksIG1vZGlmaWVycyk7CisgICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVu
VUlTY3JpcHQoYHVpQ29udHJvbGxlci5yYXdLZXlEb3duKCIke2tleX0iLCAke0pTT04uc3RyaW5n
aWZ5KG1vZGlmaWVycyl9KTtgLCByZXNvbHZlKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
c3RhdGljIHJhd0tleVVwKGtleSwgbW9kaWZpZXJzPVtdKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkpIHsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLnJhd0tleVVwKGtleSwgbW9kaWZpZXJzKTsKKyAgICAgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZSgocmVzb2x2ZSkgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgdWlD
b250cm9sbGVyLnJhd0tleVVwKCIke2tleX0iLCAke0pTT04uc3RyaW5naWZ5KG1vZGlmaWVycyl9
KTtgLCByZXNvbHZlKTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgc3RhdGljIGtleURvd24o
a2V5LCBtb2RpZmllcnM9W10pCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkg
fHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkgewo=
</data>
<flag name="commit-queue"
          id="463718"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440071</attachid>
            <date>2021-10-04 10:08:09 -0700</date>
            <delta_ts>2021-10-05 15:55:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-6.txt</filename>
            <type>text/plain</type>
            <size>81986</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzUwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEwLTA0ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkgb24g
dGhlIG9sZCBGcmFtZVZpZXcgYWZ0ZXIgY2hhbmdpbmcgRnJhbWUgZm9jdXMuCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorCisgICAgICAgIENhbGwgdXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKSB3aGVuIHRoZSB3aW5kb3cgdmlzaWJpbGl0eSAvIGFjdGl2ZSBzdGF0
ZSBjaGFuZ2VzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVNj
cm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAg
ICAgICBQbHVtYmluZyB0byBnZXQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSB0
byB0aGUgU2Nyb2xsQ29udHJvbGxlciwgd2hlcmUgd2UgY2FuIHRlbGwgCisgICAgICAgIHRoZSBr
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRvIGhhbmRsZSBrZXlVcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0xMC0wNCAgS2F0ZSBD
aGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
IG1hY2NhdGFseXN0IGJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDI4MzUwMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5LDcgKzM1OSw4IEBAIHZvaWQg
Rm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRnJhbWUoRnIKICAgICBtX2ZvY3VzZWRGcmFtZSA9
IG5ld0ZyYW1lOwogCiAgICAgLy8gTm93IHRoYXQgdGhlIGZyYW1lIGlzIHVwZGF0ZWQsIGZpcmUg
ZXZlbnRzIGFuZCB1cGRhdGUgdGhlIHNlbGVjdGlvbiBmb2N1c2VkIHN0YXRlcyBvZiBib3RoIGZy
YW1lcy4KLSAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUtPnZpZXcoKSkgeworICAgIGlmIChh
dXRvKiBvbGRGcmFtZVZpZXcgPSBvbGRGcmFtZSA/IG9sZEZyYW1lLT52aWV3KCkgOiBudWxscHRy
KSB7CisgICAgICAgIG9sZEZyYW1lVmlldy0+c3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKICAgICAg
ICAgb2xkRnJhbWUtPnNlbGVjdGlvbigpLnNldEZvY3VzZWQoZmFsc2UpOwogICAgICAgICBvbGRG
cmFtZS0+ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5ibHVyRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpObykpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjgzNTAz
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM1
NSwxMyArMjM1NSwzMyBAQCB2b2lkIFBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFj
CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
cykKICAgICAgICAgb2JzZXJ2ZXIuYWN0aXZpdHlTdGF0ZURpZENoYW5nZShvbGRBY3Rpdml0eVN0
YXRlLCBtX2FjdGl2aXR5U3RhdGUpOwogCi0gICAgaWYgKHdhc1Zpc2libGVBbmRBY3RpdmUgIT0g
aXNWaXNpYmxlQW5kQWN0aXZlKCkpCisgICAgaWYgKHdhc1Zpc2libGVBbmRBY3RpdmUgIT0gaXNW
aXNpYmxlQW5kQWN0aXZlKCkpIHsKICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
Ojp1cGRhdGVOb3dQbGF5aW5nSW5mb0lmTmVjZXNzYXJ5KCk7CisgICAgICAgIHN0b3BTY3JvbGxB
bmltYXRpb25zKCk7CisgICAgfQogCiAgICAgaWYgKG1fcGVyZm9ybWFuY2VNb25pdG9yKQogICAg
ICAgICBtX3BlcmZvcm1hbmNlTW9uaXRvci0+YWN0aXZpdHlTdGF0ZUNoYW5nZWQob2xkQWN0aXZp
dHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZSk7CiB9CiAKK3ZvaWQgUGFnZTo6c3RvcFNjcm9sbEFuaW1h
dGlvbnMoKQoreworICAgIGZvciAoYXV0byogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgYXV0byogZnJh
bWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBmcmFtZVZpZXctPnN0b3BTY3JvbGxBbmltYXRpb25z
KCk7CisKKyAgICAgICAgY29uc3QgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+KiBzY3JvbGxhYmxl
QXJlYXMgPSBmcmFtZVZpZXctPnNjcm9sbGFibGVBcmVhcygpOworICAgICAgICBpZiAoIXNjcm9s
bGFibGVBcmVhcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZvciAoYXV0byYg
c2Nyb2xsYWJsZUFyZWEgOiAqc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICAgICAgc2Nyb2xsYWJs
ZUFyZWEtPnN0b3BTY3JvbGxBbmltYXRpb25zKCk7CisgICAgfQorfQorCiBib29sIFBhZ2U6Omlz
VmlzaWJsZUFuZEFjdGl2ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5j
b250YWlucyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpICYmIG1fYWN0aXZpdHlTdGF0ZS5jb250
YWlucyhBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAko
cmV2aXNpb24gMjgzNTAzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg4Nyw2ICs4ODcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SXNWaXNpYmxl
SW50ZXJuYWwoYm9vbCk7CiAgICAgdm9pZCBzZXRJc1Zpc3VhbGx5SWRsZUludGVybmFsKGJvb2wp
OwogCisgICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOworCiAgICAgZW51bSBTaG91bGRI
aWdobGlnaHRNYXRjaGVzIHsgRG9Ob3RIaWdobGlnaHRNYXRjaGVzLCBIaWdobGlnaHRNYXRjaGVz
IH07CiAgICAgZW51bSBTaG91bGRNYXJrTWF0Y2hlcyB7IERvTm90TWFya01hdGNoZXMsIE1hcmtN
YXRjaGVzIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHAJKHJldmlzaW9uIDI4MzUwMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMwLDYgKzIzMCwxMSBAQCBib29sIFNj
cm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9
CiAKK3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkKK3sKKyAgICBt
X3Njcm9sbENvbnRyb2xsZXIuc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKK30KKwogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCiBib29sIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmgJKHJldmlzaW9uIDI4MzUwMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25h
cChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdm9p
ZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOworICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2UpIHsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwCShyZXZpc2lvbiAyODM1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNSw2ICsyMjUsMTEgQEAgYm9v
bCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudEZvcgogICAgIHJldHVybiBoYW5kbGVk
RXZlbnQ7CiB9CiAKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkK
K3sKKyAgICBzY3JvbGxBbmltYXRvcigpLnN0b3BTY3JvbGxBbmltYXRpb25zKCk7Cit9CisKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlVG91Y2hF
dmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgJKHJldmlzaW9uIDI4MzUwMykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwMSw2ICsxMDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNuYXBBZnRlckxheW91dCgp
OwogICAgIHZvaWQgZG9Qb3N0VGh1bWJNb3ZlU25hcHBpbmcoU2Nyb2xsYmFyT3JpZW50YXRpb24p
OwogCisgICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOworCiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9y
bVRvdWNoRXZlbnQmKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgzNTAz
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxMiBAQCB2b2lkIFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjpzdG9wS2V5CiAgICAgc2V0SXNBbmltYXRpbmdLZXlib2FyZFNjcm9sbGlu
ZyhmYWxzZSk7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BTY3Jv
bGxBbmltYXRpb25zKCkKK3sKKyAgICBpZiAobV9pc0FuaW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5n
KQorICAgICAgICBtX2NsaWVudC5rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yKCktPmhhbmRsZUtl
eVVwRXZlbnQoKTsKK30KKwogYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RhcnRB
bmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oRmxvYXRQb2ludCBzdGFydE9mZnNldCwgRmxvYXRQ
b2ludCBkZXN0aW5hdGlvbk9mZnNldCkKIHsKICAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlci5oCShyZXZpc2lvbiAyODM1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyAr
MTQyLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBiZWdpbktleWJvYXJkU2Nyb2xsaW5nKCk7CiAg
ICAgdm9pZCBzdG9wS2V5Ym9hcmRTY3JvbGxpbmcoKTsKLSAgICAKKworICAgIHZvaWQgc3RvcFNj
cm9sbEFuaW1hdGlvbnMoKTsKKwogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgcGVyaW9kaWNhbGx5
IGJ5IHRoZSBjbGllbnQuIFN0YXJ0ZWQgYnkgc3RhcnRBbmltYXRpb25DYWxsYmFjaygpLCBzdG9w
cGVkIGJ5IHN0b3BBbmltYXRpb25DYWxsYmFjaygpLgogICAgIHZvaWQgYW5pbWF0aW9uQ2FsbGJh
Y2soTW9ub3RvbmljVGltZSk7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzUwMykKKysrIFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEwLTA0ICBCZXRoIERha2luICA8
YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+CisKKyAg
ICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0b3Agd2hl
biBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIHB1bGxzIHRoZSBjb2RlIHRvIGV4dHJhY3QgbW9kaWZpZXIga2V5
IGluZm9ybWF0aW9uIGlzIHB1bGxlZCBpbnRvIGEgbGl0dGxlIGNsYXNzIAorICAgICAgICBjYWxs
ZWQgTW9kaWZpZXJLZXlFeHRyYWN0b3IgaW4gVGVzdFJ1bm5lclNoYXJlZC4gVGhhdCBjb2RlIGlz
IG5vdyBzaGFyZWQgYmV0d2VlbiBEUlQgYW5kIFdLVFIgCisgICAgICAgIGZvciB0aGUgZXhpc3Rp
bmcgaW1wbGVtZW50YXRpb25zIG9mIGtleURvd24uIFRoZSBwYXRjaCBhbHNvIGFkZHMgc3VwcG9y
dCBmb3IgcmF3S2V5RG93biBhbmQgCisgICAgICAgIHJhd0tleVVwIHRvIERSVCBhbmQgV0tUUiwg
YW5kIGJvdGggb2YgdGhvc2UgYWxzbyBuZWVkIHRvIHVzZSBNb2RpZmllcktleUV4dHJhY3Rvci4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIubW06CisgICAgICAgICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgaW5pdGlhbGl6
ZV0pOgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGlzU2VsZWN0b3JFeGNsdWRl
ZEZyb21XZWJTY3JpcHQ6XSk6CisgICAgICAgICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgd2Vi
U2NyaXB0TmFtZUZvclNlbGVjdG9yOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9s
bGVyIGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICgtW0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmF3S2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlv
bjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciByYXdLZXlEb3duV3JhcHBl
cjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5n
Q29udHJvbGxlciByYXdLZXlVcDp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAg
ICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciByYXdLZXlVcFdyYXBwZXI6d2l0aE1vZGlmaWVy
czp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2Rp
ZmllcktleUV4dHJhY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL2Nv
Y29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bTW9kaWZpZXJL
ZXlFeHRyYWN0b3IgaW5pdFdpdGhLZXk6bW9kaWZpZXJzOmtleUxvY2F0aW9uOl0pOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNl
bmRpbmdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6Y3JlYXRlUmF3S2V5RG93bk1lc3Nh
Z2VCb2R5KToKKyAgICAgICAgKFdUUjo6Y3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keSk6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleURvd24pOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94
eUlPUy5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcDoK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5OjprZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93
bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcDoKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dwZS9F
dmVudFNlbmRlclByb3h5V1BFLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6
cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToK
KwogMjAyMS0xMC0wNCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgU2VuZCBFV1MgZXhjZXB0aW9uIGVtYWlscyB0byBib3Qgd2F0Y2hlcnMgaW5zdGVhZCBv
ZiBBYWthc2gKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjgzNTAz
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw3IEBACiAJCTdDRkY5QkMy
MjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJDMTI1MzNCQzE2MDAwODAwOUYgLyogVGVz
dENvbW1hbmQuY3BwICovOyB9OwogCQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi87IH07CiAJCTg0NjVFMkM3MEZGQThERjIwMDNC
ODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg0NjVFMkM2MEZGQThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBT
dXBwb3J0LmNwcCAqLzsgfTsKKwkJOTNCMDQwQjgyNzA3QzMwRjAwNzZFOTYwIC8qIE1vZGlmaWVy
S2V5RXh0cmFjdG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNCMDQwQjcyNzA3QzMwRjAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1t
ICovOyB9OwogCQk5M0M3ODgyNjI1MEM2RDNBMDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M3ODgy
NDI1MEM2RDM5MDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCTkzQzc4
ODJFMjUwQzcxNzIwMEMwQUEyNCAvKiBKU0Jhc2ljcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M3ODgyOTI1MEM3MTM0MDBDMEFBMjQgLyogSlNC
YXNpY3MuY3BwICovOyB9OwogCQlBMTE1OEQ1ODE4OTI3NDBDMDA4OEMxN0IgLyogRHVtcFJlbmRl
clRyZWVCcm93c2VyVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExMTU4RDU2MTg5MjczRUIwMDg4QzE3QiAvKiBEdW1wUmVuZGVyVHJlZUJyb3dz
ZXJWaWV3Lm1tICovOyB9OwpAQCAtMzQ3LDYgKzM0OCw4IEBACiAJCTg0NjVFMkM2MEZGQThERjIw
MDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQaXhlbER1bXBTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTMzNTQzNUYwM0Q3NTUwMjAwODYzNUNFIC8qIFdlYktpdC5mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZy
YW1ld29yazsgcGF0aCA9IFdlYktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTkzNDA5OTU0MDg1NDBDQUYwMDdGM0JDOCAvKiBEdW1wUmVuZGVyVHJl
ZSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gRHVtcFJl
bmRlclRyZWU7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTkzQjA0MEI2
MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNb2RpZmllcktleUV4dHJhY3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5M0IwNDBCNzI3MDdDMzBGMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlF
eHRyYWN0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNb2Rp
ZmllcktleUV4dHJhY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNzg4
MjQyNTBDNkQzOTAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmdGVzdEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzQzc4ODI1MjUwQzZEMzkwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVu
Y3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZnRlc3RGdW5jdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNzg4MjkyNTBDNzEzNDAwQzBB
QTI0IC8qIEpTQmFzaWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzaWNzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0MCw2ICs5NDMsOCBAQAogCQkJCUY0NEE1MzFD
MjFCODlBNDUwMERCQjk5QyAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tICovLAogCQkJCUY0
QzM1Nzg5MjBFODQ0MjcwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCiAJ
CQkJRjRDMzU3ODgyMEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0g
Ki8sCisJCQkJOTNCMDQwQjYyNzA3QzMwRjAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9y
LmggKi8sCisJCQkJOTNCMDQwQjcyNzA3QzMwRjAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFj
dG9yLm1tICovLAogCQkJCUY0MDEwQjdBMjREQTIwMEUwMEE4NzZFMiAvKiBQb3NlQXNDbGFzcy5o
ICovLAogCQkJCUY0MDEwQjc5MjREQTIwMEUwMEE4NzZFMiAvKiBQb3NlQXNDbGFzcy5tbSAqLywK
IAkJCSk7CkBAIC0xMjUxLDYgKzEyNTYsNyBAQAogCQkJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBB
OCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTI5Q0ZCQTExMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUJCN0M1QzFDNTA1Mjc4MDAyQzUyNUIgLyogQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJJT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQk5M0IwNDBCODI3MDdD
MzBGMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0b3IubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyOUNGQkEyRTEyMjczQTEwMDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzBFMjRFMTBFMkQ5NDUxMDAxQjZCQzIgLyogQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTVBMTVGMDE2RTE1Q0Qw
MDBGN0M1NjEgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSBpbiBTb3VyY2VzICovLApJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIubW0JKHJldmlzaW9uIDI4MzUwMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9F
dmVudFNlbmRpbmdDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5oIgogI2ltcG9ydCAiRHVtcFJl
bmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlUGFz
dGVib2FyZC5oIgorI2ltcG9ydCAiTW9kaWZpZXJLZXlFeHRyYWN0b3IuaCIKICNpbXBvcnQgIldl
YkNvcmVUZXN0U3VwcG9ydC5oIgogI2ltcG9ydCA8V2ViS2l0L0RPTVByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgpAQCAtODEsMTMgKzgyLDYgQEAgZW51bSBNb3Vz
ZUJ1dHRvbiB7CiAgICAgTm9Nb3VzZUJ1dHRvbiA9IC0yCiB9OwogCi1zdHJ1Y3QgS2V5TWFwcGlu
Z0VudHJ5IHsKLSAgICBpbnQgbWFjS2V5Q29kZTsKLSAgICBpbnQgbWFjTnVtcGFkS2V5Q29kZTsK
LSAgICB1bmljaGFyIGNoYXJhY3RlcjsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFtZTsKLX07
Ci0KIE5TUG9pbnQgbGFzdE1vdXNlUG9zaXRpb247CiBOU1BvaW50IGxhc3RDbGlja1Bvc2l0aW9u
OwogaW50IGxhc3RDbGlja0J1dHRvbiA9IE5vTW91c2VCdXR0b247CkBAIC0yMDIsNiArMTk2LDgg
QEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIEAiZm9jdXMiLAogICAgICAgICBAImlucHV0
IiwKICAgICAgICAgQCJrZXlkb3duIiwKKyAgICAgICAgQCJyYXdrZXlkb3duIiwKKyAgICAgICAg
QCJyYXdrZXl1cCIsCiAgICAgICAgIEAia2V5cHJlc3MiLAogICAgICAgICBAImtleXVwIiwKICAg
ICAgICAgQCJsb2FkIiwKQEAgLTI0NSw2ICsyNDEsOCBAQCArIChCT09MKWlzU2VsZWN0b3JFeGNs
dWRlZEZyb21XZWJTY3JpcHQ6CiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9y
KGVuYWJsZURPTVVJRXZlbnRMb2dnaW5nOikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBA
c2VsZWN0b3IoZmlyZUtleWJvYXJkRXZlbnRzVG9FbGVtZW50OikKICAgICAgICAgICAgIHx8IGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3Ioa2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjop
CisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tleURvd246d2l0aE1v
ZGlmaWVyczp3aXRoTG9jYXRpb246KQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxl
Y3RvcihyYXdLZXlVcDp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopCiAgICAgICAgICAgICB8
fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGxlYXBGb3J3YXJkOikKICAgICAgICAgICAgIHx8IGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3IobW91c2VEb3duOndpdGhNb2RpZmllcnM6KQogICAgICAgICAg
ICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcihtb3VzZU1vdmVUb1g6WTopCkBAIC0zMDYsNiAr
MzA0LDEwIEBAICsgKE5TU3RyaW5nICopd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOigKICAgICAg
ICAgcmV0dXJuIEAiZmlyZUtleWJvYXJkRXZlbnRzVG9FbGVtZW50IjsKICAgICBpZiAoYVNlbGVj
dG9yID09IEBzZWxlY3RvcihrZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikpCiAg
ICAgICAgIHJldHVybiBAImtleURvd24iOworICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9y
KHJhd0tleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkKKyAgICAgICAgcmV0dXJu
IEAicmF3S2V5RG93biI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IocmF3S2V5VXA6
d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkKKyAgICAgICAgcmV0dXJuIEAicmF3S2V5VXAi
OwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5
RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQogICAgICAgICByZXR1cm4gQCJzY2hl
ZHVsZUFzeW5jaHJvbm91c0tleURvd24iOwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9y
KGxlYXBGb3J3YXJkOikpCkBAIC05NzIsMjA0ICs5NzQsMjMgQEAgKyAodm9pZCljbGVhclNhdmVk
RXZlbnRzCiAKIC0gKHZvaWQpa2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlm
aWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQg
bG9uZylsb2NhdGlvbgogewotICAgIE5TU3RyaW5nICpldmVudENoYXJhY3RlciA9IGNoYXJhY3Rl
cjsKLSAgICB1bnNpZ25lZCBzaG9ydCBrZXlDb2RlID0gMDsKLSAgICBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29k
ZSA9IDB4N0I7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJp
Z2h0QXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVu
Y3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdDOwotICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKLSAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OwotICAgICAgICBrZXlDb2RlID0gMHg3RTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TRG93bkFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDdEOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdl
VXAiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsK
LSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzQ7Ci0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VEb3duIl0pIHsKLSAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAg
ICAga2V5Q29kZSA9IDB4Nzk7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImhvbWUiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rp
b25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDczOwotICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkgewotICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAg
a2V5Q29kZSA9IDB4Nzc7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImluc2VydCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0
aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3MjsKLSAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsKLSAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0g
ICAgICAgIGtleUNvZGUgPSAweDc1OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJlc2NhcGUiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgxQjsK
LSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4MzU7Ci0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInByaW50U2NyZWVuIl0pIHsKLSAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
LSAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkg
Y29kZSBmb3IgUHJpbnRTY3JlZW4uCi0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0ZXJBIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IDB4MDQzMDsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8g
U2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNzaWFuIGxheW91dC4KLSAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSkgewotICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gMHhGRkUzOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0g
MHgzQjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNo
aWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMTsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4Mzg7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
MHhGRkU3OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzQTsKLSAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKLSAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNDsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAg
a2V5Q29kZSA9IDB4M0U7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAInJpZ2h0U2hpZnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOwot
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzQzsKLSAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQiXSkgewotICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gMHhGRkU4OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgz
RDsKLSAgICB9Ci0KLSAgICAvLyBDb21wYXJlIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVu
Y3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJG
MjQiKS4KLSAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUs
IHNldCBpdHMga2V5IGNvZGUuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsr
KSB7Ci0gICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgewotICAgICAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7Ci0gICAgICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAg
ICAgICAgc3dpdGNoIChpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3
QTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2RlID0gMHg2MzsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA2OiBr
ZXlDb2RlID0gMHg2MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0g
MHg2MjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMzoga2V5
Q29kZSA9IDB4Njk7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAw
eDZCOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjA6IGtl
eUNvZGUgPSAweDVBOyBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQot
ICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlzLgotICAgIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDMw
OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiICJdKQotICAgICAg
ICBrZXlDb2RlID0gMHgzMTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAIlxyIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDI0OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKLSAgICAgICAga2V5Q29kZSA9IDB4NEM7Ci0gICAg
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkKLSAgICAgICAga2V5
Q29kZSA9IDB4MzM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJh
Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDAwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiYiJdKQotICAgICAgICBrZXlDb2RlID0gMHgwQjsKLSAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4
MDI7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCi0gICAg
ICAgIGtleUNvZGUgPSAweDBFOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiXHgxYiJdKQotICAgICAgICBrZXlDb2RlID0gMHgxQjsKLQotICAgIEtleU1hcHBpbmdF
bnRyeSB0YWJsZVtdID0gewotICAgICAgICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAotICAgICAg
ICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9
LAotICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9
LAotICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0Qywg
MywgQCJlbnRlciIgfSwKLSAgICAgICAgezB4MUIsIDB4NEUsICctJywgbmlsfSwKLSAgICAgICAg
ezB4MTgsIDB4NTEsICc9JywgbmlsfSwKLSAgICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwK
LSAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwKLSAgICAgICAgezB4MTMsIDB4NTQsICcy
JywgbmlsfSwKLSAgICAgICAgezB4MTQsIDB4NTUsICczJywgbmlsfSwKLSAgICAgICAgezB4MTUs
IDB4NTYsICc0JywgbmlsfSwKLSAgICAgICAgezB4MTcsIDB4NTcsICc1JywgbmlsfSwKLSAgICAg
ICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKLSAgICAgICAgezB4MUEsIDB4NTksICc3Jywgbmls
fSwKLSAgICAgICAgezB4MUMsIDB4NUIsICc4JywgbmlsfSwKLSAgICAgICAgezB4MTksIDB4NUMs
ICc5JywgbmlsfSwKLSAgICB9OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJS
QVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7Ci0gICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFj
dGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFy
YWN0ZXIgbGVuZ3RoOjFdOwotICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFi
bGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKLSAgICAgICAgICAgIGlmIChsb2NhdGlvbiA9PSBET01f
S0VZX0xPQ0FUSU9OX05VTVBBRCkKLSAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0u
bWFjTnVtcGFkS2V5Q29kZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBrZXlD
b2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKLSAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
Y3VycmVudENoYXJhY3RlclN0cmluZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50
Q2hhcmFjdGVyOwotCi0gICAgaW50IG1vZGlmaWVyRmxhZ3MgPSAwOwotCi0gICAgaWYgKFtjaGFy
YWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAn
QScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykgewotI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmll
ckZsYWdTaGlmdDsKLSNlbHNlCi0gICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnRGbGFn
TWFza0xlZnRTaGlmdEtleTsKLSNlbmRpZgotICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107Ci0gICAgfQotCi0gICAgbW9kaWZp
ZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKTsKLQotICAgIGlmIChsb2Nh
dGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8
PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKKyAgICBNb2RpZmllcktleUV4dHJhY3Rv
ciAqbW9kaWZpZXJLZXlFeHRyYWN0b3IgPSBbW01vZGlmaWVyS2V5RXh0cmFjdG9yIGFsbG9jXSBp
bml0V2l0aEtleTpjaGFyYWN0ZXIgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmll
cnMpIGtleUxvY2F0aW9uOmxvY2F0aW9uXTsKIAogICAgIFtbW21haW5GcmFtZSBmcmFtZVZpZXdd
IGRvY3VtZW50Vmlld10gbGF5b3V0XTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50
VHlwZUtleURvd24KICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50
KDUsIDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxh
Z3MKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRy
YWN0b3ItPm1vZGlmaWVyRmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpb
c2VsZiBjdXJyZW50RXZlbnRUaW1lXQogICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVt
YmVyOltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0
XQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgotICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpt
b2RpZmllcktleUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBl
YXQ6Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV0pOworICAgICAg
ICAgICAgICAgICAgICAgICAga2V5Q29kZTptb2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV0p
OwogI2Vsc2UKLSAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0
V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRF
dmVudFRpbWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50Rmxh
Z3MpbW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5h
Z2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJL
ZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworICAgIGF1dG8g
ZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldl
YkV2ZW50S2V5RG93biB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVy
czptb2RpZmllcktleUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdzKW1vZGlmaWVyS2V5RXh0cmFjdG9yLT5tb2RpZmll
ckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5p
bCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJh
Y3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CiAjZW5kaWYKIAogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQpAQCAtMTE4MywxNiArMTAwNCwxNiBAQCAtICh2b2lkKWtleURvd246
KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtl
eVVwCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQot
ICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCisgICAg
ICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5t
b2RpZmllckZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6W3NlbGYgY3Vy
cmVudEV2ZW50VGltZV0KICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051bWJlcjpbW1tt
YWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6bW9kaWZpZXJL
ZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycwogICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0g
ICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGtleUNvZGU6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmtleUNvZGVdKTsKICNlbHNl
Ci0gICAgZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRU
eXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJh
Y3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJGbGFn
cyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5
Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIg
Y2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworICAgIGV2ZW50ID0gYWRvcHROUyhbW1dl
YkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFt
cDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9y
LT5ldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlF
eHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50
RmxhZ3MpbW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8g
d2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBj
aGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6
MF0gPT0gJ1x0JyldKTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0x
MjA5LDYgKzEwMzAsNzYgQEAgLSAodm9pZClrZXlEb3duV3JhcHBlcjooTlNTdHJpbmcgKiljaGFy
YQogICAgIFtzZWxmIGtleURvd246Y2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdp
dGhMb2NhdGlvbjpsb2NhdGlvbl07CiB9CiAKKy0gKHZvaWQpcmF3S2V5RG93bjooTlNTdHJpbmcg
KiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdp
dGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAgIE1vZGlmaWVyS2V5RXh0
cmFjdG9yICptb2RpZmllcktleUV4dHJhY3RvciA9IFtbTW9kaWZpZXJLZXlFeHRyYWN0b3IgYWxs
b2NdIGluaXRXaXRoS2V5OmNoYXJhY3RlciBtb2RpZmllcnM6YnVpbGRNb2RpZmllckZsYWdzKG1v
ZGlmaWVycykga2V5TG9jYXRpb246bG9jYXRpb25dOworCisgICAgW1tbbWFpbkZyYW1lIGZyYW1l
Vmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOworCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5T
RXZlbnRUeXBlS2V5RG93bgorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAg
ICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5tb2RpZmllckZsYWdzCisg
ICAgICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQorICAgICAgICB3aW5kb3dO
dW1iZXI6W1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gd2luZG93TnVtYmVyXQorICAgICAg
ICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hh
cmFjdGVyczptb2RpZmllcktleUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5jaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6
bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmtleUNvZGVdKTsKKyNlbHNlCisgICAgYXV0byBldmVudCA9
IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRL
ZXlEb3duIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOm1vZGlm
aWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2Rp
ZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3Mg
aXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNv
ZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNo
YXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnQuZ2V0KCldOworI2Vu
ZGlmCisgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBr
ZXlEb3duOmV2ZW50LmdldCgpXTsKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNB
cHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOworI2VuZGlmCit9CisKKy0gKHZvaWQpcmF3S2V5RG93
bldyYXBwZXI6KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9i
amVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sK
KyAgICBbc2VsZiByYXdLZXlEb3duOmNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOm1vZGlmaWVycyB3
aXRoTG9jYXRpb246bG9jYXRpb25dOworfQorCistICh2b2lkKXJhd0tleVVwOihOU1N0cmluZyAq
KWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0
aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCit7CisgICAgTW9kaWZpZXJLZXlFeHRy
YWN0b3IgKm1vZGlmaWVyS2V5RXh0cmFjdG9yID0gW1tNb2RpZmllcktleUV4dHJhY3RvciBhbGxv
Y10gaW5pdFdpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1vZGlmaWVyRmxhZ3MobW9k
aWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl07CisKKyAgICBbW1ttYWluRnJhbWUgZnJhbWVW
aWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNF
dmVudFR5cGVLZXlVcAorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAgICAg
ICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5tb2RpZmllckZsYWdzCisgICAg
ICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQorICAgICAgICB3aW5kb3dOdW1i
ZXI6W1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gd2luZG93TnVtYmVyXQorICAgICAgICBj
b250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFj
dGVyczptb2RpZmllcktleUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgY2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5jaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnMKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6bW9k
aWZpZXJLZXlFeHRyYWN0b3ItPmtleUNvZGVdKTsKKyNlbHNlCisgICAgYXV0byBldmVudCA9IGFk
b3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlV
cCB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczptb2RpZmllcktl
eUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1v
ZGlmaWVyS2V5RXh0cmFjdG9yLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgbW9kaWZpZXJz
OihXZWJFdmVudEZsYWdzKW1vZGlmaWVyS2V5RXh0cmFjdG9yLT5tb2RpZmllckZsYWdzIGlzUmVw
ZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltj
aGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0
ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CisjZW5kaWYKKworI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50LmdldCgpXTsKKyNlbmRpZgor
ICAgIFtbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6
ZXZlbnQuZ2V0KCldOworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0
Q3VycmVudEV2ZW50Om5pbF07CisjZW5kaWYKK30KKworLSAodm9pZClyYXdLZXlVcFdyYXBwZXI6
KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1v
ZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sKKyAgICBbc2Vs
ZiByYXdLZXlVcDpjaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczptb2RpZmllcnMgd2l0aExvY2F0aW9u
OmxvY2F0aW9uXTsKK30KKwogLSAodm9pZClzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd246KE5T
U3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlm
aWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KIHsKICAgICBOU0ludm9j
YXRpb24gKmludm9jYXRpb24gPSBbTlNJbnZvY2F0aW9uIGludm9jYXRpb25XaXRoTWV0aG9kU2ln
bmF0dXJlOltFdmVudFNlbmRpbmdDb250cm9sbGVyIGluc3RhbmNlTWV0aG9kU2lnbmF0dXJlRm9y
U2VsZWN0b3I6QHNlbGVjdG9yKGtleURvd25XcmFwcGVyOndpdGhNb2RpZmllcnM6d2l0aExvY2F0
aW9uOildXTsKSW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlF
eHRyYWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01v
ZGlmaWVyS2V5RXh0cmFjdG9yLmgJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9jb2NvYS9Nb2RpZmllcktleUV4dHJhY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKE1BQykK
Kworc3RydWN0IEtleU1hcHBpbmdFbnRyeSB7CisgICAgaW50IG1hY0tleUNvZGU7CisgICAgaW50
IG1hY051bXBhZEtleUNvZGU7CisgICAgdW5pY2hhciBjaGFyYWN0ZXI7CisgICAgTlNTdHJpbmcq
IGNoYXJhY3Rlck5hbWU7Cit9OworCitAaW50ZXJmYWNlIE1vZGlmaWVyS2V5RXh0cmFjdG9yIDog
TlNPYmplY3QgeworQHB1YmxpYworICAgIE5TU3RyaW5nICpldmVudENoYXJhY3RlcjsKKyAgICB1
bnNpZ25lZCBzaG9ydCBrZXlDb2RlOworICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnM7CisgICAgaW50IG1vZGlmaWVyRmxhZ3M7Cit9CisKKy0gKGlkKWluaXRXaXRoS2V5
OihOU1N0cmluZyAqKWtleSBtb2RpZmllcnM6KGludCltb2RpZmllcnMga2V5TG9jYXRpb246KHVu
c2lnbmVkKWtleUxvY2F0aW9uOworQGVuZAorCisjZW5kaWYgLy8gI2lmIFBMQVRGT1JNKE1BQykK
SW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlFeHRyYWN0b3Iu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktl
eUV4dHJhY3Rvci5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0UnVubmVyU2hhcmVkL2Nv
Y29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2RpZmllcktl
eUV4dHJhY3Rvci5oIgorCisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0TGVnYWN5Lmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorCitAaW1wbGVtZW50YXRpb24g
TW9kaWZpZXJLZXlFeHRyYWN0b3IKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoS2V5OihOU1N0
cmluZyAqKWNoYXJhY3RlciBtb2RpZmllcnM6KGludCltb2RpZmllcnMga2V5TG9jYXRpb246KHVu
c2lnbmVkKWtleUxvY2F0aW9uCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAo
IXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBldmVudENoYXJhY3RlciA9IFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOmNoYXJhY3Rlcl07CisgICAga2V5Q29kZSA9IDA7
CisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdCOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBr
ZXlDb2RlID0gMHg3QzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAidXBBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5j
dGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0U7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHg3RDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAicGFnZVVwIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TUGFnZVVwRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAw
eDc0OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93
biJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc5OworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IE5TSG9tZUZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHg3MzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ZW5kIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc3OworICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNJbnNlcnRGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5
Q29kZSA9IDB4NzI7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImRlbGV0ZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9u
S2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NTsKKyAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3JlZW4iXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFs
IGtleSBjb2RlIGZvciBQcmludFNjcmVlbi4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gMHgwNDMwOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgz
OyAvLyBTaGFyZXMga2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0LgorICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTM7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDNCOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJs
ZWZ0U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUxOworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzODsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSAweEZGRTc7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNBOworICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU0OworICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAg
ICAgICBrZXlDb2RlID0gMHgzRTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicmlnaHRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZG
RTI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNDOworICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweEZGRTg7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUg
PSAweDNEOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2Nh
cGUiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgxQjsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4MzU7CisgICAgfQorCisgICAgLy8gQ29tcGFyZSB0aGUgaW5w
dXQgc3RyaW5nIHdpdGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00g
c3BlYyAoaS5lLiAiRjEiLC4uLiwiRjI0IikuCisgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBp
cyBhIGZ1bmN0aW9uLWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPD0gMjQ7IGkrKykgeworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKKyAgICAg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOworICAg
ICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgY2Fz
ZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUg
PSAweDc4OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNjoga2V5
Q29kZSA9IDB4NjE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2Mjsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0OyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4NjU7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAx
MDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9
IDB4Njc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAxNDoga2V5Q29kZSA9IDB4NkI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNTog
a2V5Q29kZSA9IDB4NzE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4
NkE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyMDoga2V5
Q29kZSA9IDB4NUE7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCisgICAgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzA7
CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0pCisgICAgICAg
IGtleUNvZGUgPSAweDMxOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiXHIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MjQ7CisgICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQorICAgICAgICBrZXlDb2RlID0gMHg0QzsKKyAgICBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQorICAgICAgICBrZXlD
b2RlID0gMHgzMzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImEi
XSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBCOworICAgIGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQorICAgICAgICBrZXlDb2RlID0gMHgw
MjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkKKyAgICAg
ICAga2V5Q29kZSA9IDB4MEU7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJceDFiIl0pCisgICAgICAgIGtleUNvZGUgPSAweDFCOworICAgIGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiOiJdKQorICAgICAgICBrZXlDb2RlID0gMHgyOTsKKyAg
ICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjsiXSkKKyAgICAgICAga2V5
Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIs
Il0pCisgICAgICAgIGtleUNvZGUgPSAweDJCOworCisgICAgS2V5TWFwcGluZ0VudHJ5IHRhYmxl
W10gPSB7CisgICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5pbH0sCisgICAgICAgIHswLCAgICAw
eDQzLCAnKicsIG5pbH0sCisgICAgICAgIHswLCAgICAweDQ1LCAnKycsIG5pbH0sCisgICAgICAg
IHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIn0sCisgICAgICAg
IHsweDJDLCAweDRCLCAnLycsIG5pbH0sCisgICAgICAgIHswLCAgICAweDRDLCAzLCBAImVudGVy
IiB9LAorICAgICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAorICAgICAgICB7MHgxOCwgMHg1
MSwgJz0nLCBuaWx9LAorICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBuaWx9LAorICAgICAgICB7
MHgxMiwgMHg1MywgJzEnLCBuaWx9LAorICAgICAgICB7MHgxMywgMHg1NCwgJzInLCBuaWx9LAor
ICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAorICAgICAgICB7MHgxNSwgMHg1NiwgJzQn
LCBuaWx9LAorICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAorICAgICAgICB7MHgxNiwg
MHg1OCwgJzYnLCBuaWx9LAorICAgICAgICB7MHgxQSwgMHg1OSwgJzcnLCBuaWx9LAorICAgICAg
ICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAorICAgICAgICB7MHgxOSwgMHg1QywgJzknLCBuaWx9
LAorICAgIH07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgo
dGFibGUpOyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmcg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNoYXJhY3RlciBsZW5n
dGg6MV07CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpjdXJyZW50Q2hh
cmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0YWJsZVtpXS5jaGFy
YWN0ZXJOYW1lXSkgeworICAgICAgICAgICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypET01f
S0VZX0xPQ0FUSU9OX05VTVBBRCovKQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtp
XS5tYWNOdW1wYWRLZXlDb2RlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGtl
eUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFN0cmluZzpldmVudENoYXJhY3Rlcl07CisKKyAgICBtb2RpZmllckZsYWdz
ID0gMDsKKworICAgIGlmIChbY2hhcmFjdGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hhcmFjdGVyIGNo
YXJhY3RlckF0SW5kZXg6MF0gPj0gJ0EnICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDow
XSA8PSAnWicpIHsKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFn
U2hpZnQ7CisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIg
bG93ZXJjYXNlU3RyaW5nXTsKKyAgICB9CisKKyAgICBtb2RpZmllckZsYWdzIHw9IG1vZGlmaWVy
czsKKworICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1Q
QUQqLykKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJp
Y1BhZDsKKyAgICAKKyAgICByZXR1cm4gc2VsZjsKK30KKworQGVuZAorCisjZW5kaWYgLy8gaWYg
UExBVEZPUk0oTUFDKSAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQ
cm94eS5oCShyZXZpc2lvbiAyODM1MDMpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50
U2VuZGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBsZWFwRm9yd2FyZChpbnQgbWlsbGlzZWNvbmRzKTsKIAogICAgIHZvaWQga2V5RG93
bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsK
KyAgICB2b2lkIHJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1
bnNpZ25lZCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdL
RXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHVuc2lnbmVkIG1vdXNlQnV0dG9uc0N1cnJlbnRseURvd24oKSBjb25zdCB7IHJldHVy
biBtX21vdXNlQnV0dG9uc0N1cnJlbnRseURvd247IH0KQEAgLTEwNCw2ICsxMDYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgdXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbihpbnQgYnV0dG9uKTsKIAog
ICAgIHZvaWQgc2VuZE1vdXNlRG93blRvU3RhcnRQcmVzc3VyZUV2ZW50cygpOworCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgZW51bSBjbGFzcyBQcmVzc3VyZUNoYW5nZURpcmVjdGlvbiB7IElu
Y3JlYXNpbmcsIERlY3JlYXNpbmcgfTsKICAgICBSZXRhaW5QdHI8TlNFdmVudD4gYmVnaW5QcmVz
c3VyZUV2ZW50KGludCBzdGFnZSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgzNTAzKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTYsNiArMTU5NiwxNiBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlS2V5RG93bk1lCiAgICAgbV9ldmVudFNl
bmRlclByb3h5LT5rZXlEb3duKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0
VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAi
TG9jYXRpb24iKSk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlE
b3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwg
Ym9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tleURvd24o
c3RyaW5nVmFsdWUoZGljdGlvbmFyeSwgIktleSIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAi
TW9kaWZpZXJzIiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJMb2NhdGlvbiIpKTsKK30KKwor
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cykKK3sK
KyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tleVVwKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnks
ICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1
ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRp
ZFJlY2VpdmVMaXZlRG9jdW1lbnRzTGlzdChXS0FycmF5UmVmIGxpdmVEb2N1bWVudExpc3QpCiB7
CiAgICAgYXV0byBudW1Eb2N1bWVudHMgPSBXS0FycmF5R2V0U2l6ZShsaXZlRG9jdW1lbnRMaXN0
KTsKQEAgLTE2NTMsNiArMTY2MywxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZl
TWVzc2FnZUZyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tleURvd24i
KSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKGRpY3Rpb25hcnksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VO
YW1lLCAiUmF3S2V5VXAiKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlU2Nyb2xsQnkiKSkgewogICAgICAgICAgICAgbV9ldmVu
dFNlbmRlclByb3h5LT5tb3VzZVNjcm9sbEJ5KGRvdWJsZVZhbHVlKGRpY3Rpb25hcnksICJYIiks
IGRvdWJsZVZhbHVlKGRpY3Rpb25hcnksICJZIikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTcwMiw2ICsxNzIyLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJv
bm8KICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAg
ICAgfQogCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3Nh
Z2VOYW1lLCAiUmF3S2V5RG93biIpKSB7CisgICAgICAgICAgICBkaWRSZWNlaXZlUmF3S2V5RG93
bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoZGljdGlvbmFyeSwgdHJ1ZSk7CisgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tl
eVVwIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoZGljdGlvbmFyeSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93biIpKSB7CiAgICAgICAg
ICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNlRG93bih1aW50NjRWYWx1ZShkaWN0aW9uYXJ5
LCAiQnV0dG9uIiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJNb2RpZmllcnMiKSwgc3RyaW5n
VmFsdWUoZGljdGlvbmFyeSwgIlBvaW50ZXJUeXBlIikpOwogICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjgzNTAzKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNiArNDQxLDggQEAgcHJp
dmF0ZToKICAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IGdldEluamVjdGVkQnVuZGxlSW5pdGlh
bGl6YXRpb25Vc2VyRGF0YSgpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlS2V5RG93bk1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwg
Ym9vbCBzeW5jaHJvbm91cyk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5RG93bk1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwg
Ym9vbCBzeW5jaHJvbm91cyk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnksIGJv
b2wgc3luY2hyb25vdXMpOwogCiAgICAgLy8gV0tDb250ZXh0Q2xpZW50CiAgICAgc3RhdGljIHZv
aWQgbmV0d29ya1Byb2Nlc3NEaWRDcmFzaChXS0NvbnRleHRSZWYsIGNvbnN0IHZvaWQqKTsKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgzNTAzKQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDExICszMDEsNDEgQEAgc3RhdGljIFdLUmV0
YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZQogICAgIHJldHVybiBib2R5OwogfQogCitzdGF0
aWMgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRlUmF3S2V5RG93bk1l
c3NhZ2VCb2R5KEpTU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGlu
dCBsb2NhdGlvbikKK3sKKyAgICBhdXRvIGJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25h
cnlDcmVhdGUoKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIlN1Yk1lc3NhZ2UiLCAiUmF3S2V5RG93
biIpOworICAgIHNldFZhbHVlKGJvZHksICJLZXkiLCBrZXkpOworICAgIHNldFZhbHVlKGJvZHks
ICJNb2RpZmllcnMiLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKG1vZGlmaWVycykpKTsKKyAgICBz
ZXRWYWx1ZShib2R5LCAiTG9jYXRpb24iLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKGxvY2F0aW9u
KSkpOworICAgIHJldHVybiBib2R5OworfQorCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tNdXRhYmxl
RGljdGlvbmFyeVJlZj4gY3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keShKU1N0cmluZ1JlZiBrZXks
IFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBpbnQgbG9jYXRpb24pCit7CisgICAgYXV0byBi
b2R5ID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworICAgIHNldFZhbHVl
KGJvZHksICJTdWJNZXNzYWdlIiwgIlJhd0tleVVwIik7CisgICAgc2V0VmFsdWUoYm9keSwgIktl
eSIsIGtleSk7CisgICAgc2V0VmFsdWUoYm9keSwgIk1vZGlmaWVycyIsIGFkb3B0V0soV0tVSW50
NjRDcmVhdGUobW9kaWZpZXJzKSkpOworICAgIHNldFZhbHVlKGJvZHksICJMb2NhdGlvbiIsIGFk
b3B0V0soV0tVSW50NjRDcmVhdGUobG9jYXRpb24pKSk7CisgICAgcmV0dXJuIGJvZHk7Cit9CisK
IHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6a2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpT
VmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKQogewogICAgIHBvc3RTeW5jaHJv
bm91c1BhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGNyZWF0ZUtleURvd25NZXNzYWdlQm9keShr
ZXksIHBhcnNlTW9kaWZpZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRpb24pKTsKIH0KIAor
dm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlEb3duKEpTU3RyaW5nUmVmIGtleSwg
SlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pCit7CisgICAgcG9zdFN5bmNo
cm9ub3VzUGFnZU1lc3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3S2V5RG93bk1lc3NhZ2VC
b2R5KGtleSwgcGFyc2VNb2RpZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOwor
fQorCit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleVVwKEpTU3RyaW5nUmVmIGtl
eSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pCit7CisgICAgcG9zdFN5
bmNocm9ub3VzUGFnZU1lc3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlUmF3S2V5VXBNZXNzYWdl
Qm9keShrZXksIHBhcnNlTW9kaWZpZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRpb24pKTsK
K30KKwogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0tl
eURvd24oSlNTdHJpbmdSZWYga2V5KQogewogICAgIHBvc3RQYWdlTWVzc2FnZSgiRXZlbnRTZW5k
ZXIiLCBjcmVhdGVLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCAwLCAwKSk7CkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMjgzNTAzKQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogICAgIHZvaWQgY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjayk7CiAKICAgICB2b2lkIGtl
eURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2Nh
dGlvbik7CisgICAgdm9pZCByYXdLZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBt
b2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pOworICAgIHZvaWQgcmF3S2V5VXAoSlNTdHJpbmdS
ZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbik7CiAgICAgdm9p
ZCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oSlNTdHJpbmdSZWYga2V5KTsKIAogICAgIHZv
aWQgdGV4dFpvb21JbigpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiAyODM1MDMpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBAIGludGVyZmFjZSBFdmVudFNlbmRpbmdDb250
cm9sbGVyIHsKICAgICB1bmRlZmluZWQgbGVhcEZvcndhcmQobG9uZyBtaWxsaXNlY29uZHMpOwog
CiAgICAgdW5kZWZpbmVkIGtleURvd24oRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1vZGlmaWVyQXJy
YXksIGxvbmcgbG9jYXRpb24pOworICAgIHVuZGVmaW5lZCByYXdLZXlEb3duKERPTVN0cmluZyBr
ZXksIG9iamVjdCBtb2RpZmllckFycmF5LCBsb25nIGxvY2F0aW9uKTsKKyAgICB1bmRlZmluZWQg
cmF3S2V5VXAoRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1vZGlmaWVyQXJyYXksIGxvbmcgbG9jYXRp
b24pOwogICAgIHVuZGVmaW5lZCBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oRE9NU3RyaW5n
IGtleSk7CiAKICAgICAvLyBab29tIGZ1bmN0aW9ucy4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5k
ZXJQcm94eUlPUy5tbQkocmV2aXNpb24gMjgzNTAzKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNzksNiArNzksMTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3Ry
aW5nUgogewogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdS
ZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24p
Cit7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5
LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9
CisKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3JvbGxCeShpbnQgeCwgaW50IHkpCiB7
CiB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjgz
NTAzKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQAogCQk4
MDM0QzY2MjE0ODc2MzY0MDBBQzMyRTkgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MDM0QzY2MTE0
ODc2MzY0MDBBQzMyRTkgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0gKi87IH07CiAJ
CTgwOTczMzhBMTQ4NzRBNUEwMDgxNTZEOSAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgw
OTczMzg5MTQ4NzRBNUEwMDgxNTZEOSAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ci5tbSAqLzsgfTsKIAkJOTM3NjQxN0EyMTBENzM3MjAwQTNEQUFFIC8qIFdlYktpdFRlc3RSdW5u
ZXJXaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5Mzc2NDE3NjIxMEQ3MzYwMDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbSAq
LzsgfTsKKwkJOTNCMDQwQjUyNzA3QzAyRTAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9y
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMDQw
QjMyNzA3QzAyRTAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1tICovOyB9OwogCQk5
M0M3ODgyMzI1MEM2QzJFMDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M3ODgxRjI1MEM2OUU0MDBD
MEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCTkzQzc4ODMxMjUwQzcxOUYw
MEMwQUEyNCAvKiBKU0Jhc2ljcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0M3ODgzMDI1MEM3MTk5MDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwICov
OyB9OwogCQk5M0M3ODgzMjI1MEM3MUI3MDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4MzAyNTBDNzE5OTAw
QzBBQTI0IC8qIEpTQmFzaWNzLmNwcCAqLzsgfTsKQEAgLTM3MCw2ICszNzEsOCBAQAogCQk5MzM4
RDFCRTI1MEJEOUREMDBFODI3RjYgLyogRGljdGlvbmFyeUZ1bmN0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaWN0aW9uYXJ5RnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzNzY0MTc2MjEwRDczNjAwMEEzREFBRSAvKiBXZWJLaXRUZXN0UnVubmVyV2luZG93Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5lcldp
bmRvdy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM3NjQxNzcyMTBENzM2MTAw
QTNEQUFFIC8qIFdlYktpdFRlc3RSdW5uZXJXaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0IwNDBCMjI3MDdDMDJEMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTW9kaWZpZXJLZXlFeHRyYWN0
b3IuaDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlFeHRyYWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMDQwQjMyNzA3QzAyRTAwNzZF
OTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gTW9kaWZpZXJLZXlFeHRyYWN0b3IubW07IHBhdGggPSAuLi9UZXN0UnVu
bmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0M3ODgxRjI1MEM2OUU0MDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9u
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBSZWZ0ZXN0RnVuY3Rp
b25zLmNwcDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvUmVmdGVzdEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzc4ODIwMjUwQzY5RTQwMEMwQUEyNCAv
KiBSZWZ0ZXN0RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJl
ZnRlc3RGdW5jdGlvbnMuaDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvUmVmdGVzdEZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0M3ODgyRjI1MEM3MTk5MDBD
MEFBMjQgLyogSlNCYXNpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNCYXNpY3MuaDsgcGF0aCA9IC4u
L1Rlc3RSdW5uZXJTaGFyZWQvQmluZGluZ3MvSlNCYXNpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTk1NSw2ICs5NTgsOCBAQAogCQkJCUY0NEE1MzE2MjFCODk5REEwMERCQjk5
QyAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tICovLAogCQkJCUY0QzM1NzhCMjBFODQ0NDAw
MEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCiAJCQkJRjRDMzU3OEEyMEU4
NDQ0MDAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkJOTNCMDQw
QjIyNzA3QzAyRDAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLmggKi8sCisJCQkJOTNC
MDQwQjMyNzA3QzAyRTAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1tICovLAogCQkJ
CTJFMkE3NjVCMjM3MEM4QTAwMDhGOUZGRSAvKiBQbGF0Zm9ybVZpZXdIZWxwZXJzLmggKi8sCiAJ
CQkJMkUyQTc2NUMyMzcwQzhBMDAwOEY5RkZFIC8qIFBsYXRmb3JtVmlld0hlbHBlcnMubW0gKi8s
CiAJCQkJRjQwMTBCN0QyNERBMjA0ODAwQTg3NkUyIC8qIFBvc2VBc0NsYXNzLmggKi8sCkBAIC0x
MjQ2LDYgKzEyNTEsNyBAQAogCQkJCUExODUxMDNGMUI5QUUxMjkwMDc0NEFFQiAvKiBHZW9sb2Nh
dGlvblByb3ZpZGVyTW9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNDRBNTMxODIxQjg5OUU1
MDBEQkI5OUMgLyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTMxREE4QTNEMUU3MjA1Q0MwMEUxREYyRiAvKiBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk5M0IwNDBCNTI3MDdDMDJFMDA3NkU5NjAgLyogTW9kaWZp
ZXJLZXlFeHRyYWN0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0M3ODgzMjI1MEM3MUI3MDBD
MEFBMjQgLyogSlNCYXNpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3M0I1NTExQkE3ODk2
ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMThFNzE4MUQ2QkM0NTYwMDI3RTU0NyAvKiBKU1dyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclBy
b3h5R3RrLmNwcAkocmV2aXNpb24gMjgzNTAzKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUs
MTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgIHdlYmtp
dFdlYlZpZXdCYXNlU3ludGhlc2l6ZUtleUV2ZW50KHRvV2ViS2l0R0xpYkFQSShtX3Rlc3RDb250
cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSksIEtleUV2ZW50VHlwZTo6SW5z
ZXJ0LCBnZGtLZXlTeW0sIG1vZGlmaWVycywgU2hvdWxkVHJhbnNsYXRlS2V5Ym9hcmRTdGF0ZTo6
Tm8pOwogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYg
a2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBX
S0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisK
IHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVu
dE1vZGlmaWVycyB3a01vZGlmaWVycywgV0tTdHJpbmdSZWYgcG9pbnRlclR5cGUpCiB7CiAgICAg
dW5zaWduZWQgZ2RrQnV0dG9uID0gZXZlbnRTZW5kZXJCdXR0b25Ub0dES0J1dHRvbihidXR0b24p
OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5
Lm1tCShyZXZpc2lvbiAyODM1MDMpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVu
dFNlbmRlclByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0
ICJFdmVudFNlbmRlclByb3h5LmgiCiAKICNpbXBvcnQgIkNvcmVHcmFwaGljc1Rlc3RTUEkuaCIK
KyNpbXBvcnQgIk1vZGlmaWVyS2V5RXh0cmFjdG9yLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZp
ZXcuaCIKICNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2ltcG9ydCAiVGVzdENvbnRyb2xs
ZXIuaCIKQEAgLTIzOCwxMyArMjM5LDYgQEAgZW51bSBNb3VzZUJ1dHRvbiB7CiAgICAgTm9Nb3Vz
ZUJ1dHRvbiA9IC0yCiB9OwogCi1zdHJ1Y3QgS2V5TWFwcGluZ0VudHJ5IHsKLSAgICBpbnQgbWFj
S2V5Q29kZTsKLSAgICBpbnQgbWFjTnVtcGFkS2V5Q29kZTsKLSAgICB1bmljaGFyIGNoYXJhY3Rl
cjsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFtZTsKLX07Ci0KIHN0YXRpYyBOU0V2ZW50VHlw
ZSBldmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihpbnQgYnV0dG9uLCBNb3VzZUFjdGlv
biBhY3Rpb24pCiB7CiAgICAgc3dpdGNoIChidXR0b24pIHsKQEAgLTYzMiwyMDMgKzYyNiwxOCBA
QCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJkKGludCBtCiAKIHZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9k
aWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKIHsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVy
ID0gdG9XVEZTdHJpbmcoa2V5KTsKLQotICAgIE5TU3RyaW5nICpldmVudENoYXJhY3RlciA9IGNo
YXJhY3RlcjsKLSAgICB1bnNpZ25lZCBzaG9ydCBrZXlDb2RlID0gMDsKLSAgICBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAg
a2V5Q29kZSA9IDB4N0I7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAInJpZ2h0QXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNSaWdodEFy
cm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdDOwot
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93Il0pIHsK
LSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3RTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtl
eUNvZGUgPSAweDdEOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJwYWdlVXAiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlVXBGdW5jdGlv
bktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzQ7Ci0gICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VEb3duIl0pIHsKLSAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
LSAgICAgICAga2V5Q29kZSA9IDB4Nzk7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImhvbWUiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNIb21l
RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDczOwotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAg
ICAgICAga2V5Q29kZSA9IDB4Nzc7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImluc2VydCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0luc2Vy
dEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3MjsKLSAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsKLSAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc1OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtl
eUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFBy
aW50U2NyZWVuLgotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJj
eXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0
MzA7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkg
d2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCi0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IDB4RkZFMzsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0I7Ci0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7Ci0g
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAg
IGtleUNvZGUgPSAweDM4OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJsZWZ0QWx0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKLSAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0E7Ci0gICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7Ci0gICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSAweEZGRTQ7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAw
eDNFOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNo
aWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0M7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4RkZFODsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0Q7Ci0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7Ci0gICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2Rl
ID0gMHgzNTsKLSAgICB9Ci0KLSAgICAvLyBDb21wYXJlIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0
aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhlIERPTSBzcGVjIChpLmUuICJGMSIs
Li4uLCJGMjQiKS4KLSAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5
IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSAy
NDsgaSsrKSB7Ci0gICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgewotICAgICAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7Ci0gICAgICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwot
ICAgICAgICAgICAgc3dpdGNoIChpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiBrZXlDb2Rl
ID0gMHg3QTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3ODsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2RlID0gMHg2MzsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA3OiBrZXlD
b2RlID0gMHg2MjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2
NDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAx
Mzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTQ6IGtleUNv
ZGUgPSAweDZCOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3
MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
MjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQotICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlzLgotICAg
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCi0gICAgICAgIGtleUNvZGUg
PSAweDMwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiICJdKQot
ICAgICAgICBrZXlDb2RlID0gMHgzMTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAIlxyIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDI0OwotICAgIGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKLSAgICAgICAga2V5Q29kZSA9IDB4NEM7
Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkKLSAgICAg
ICAga2V5Q29kZSA9IDB4MzM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJhIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDAwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQotICAgICAgICBrZXlDb2RlID0gMHgwQjsKLSAgICBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkKLSAgICAgICAga2V5Q29k
ZSA9IDB4MDI7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0p
Ci0gICAgICAgIGtleUNvZGUgPSAweDBFOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiXHgxYiJdKQotICAgICAgICBrZXlDb2RlID0gMHgxQjsKLSAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjoiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4
Mjk7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI7Il0pCi0gICAg
ICAgIGtleUNvZGUgPSAweDI5OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiLCJdKQotICAgICAgICBrZXlDb2RlID0gMHgyQjsKLQotICAgIEtleU1hcHBpbmdFbnRy
eSB0YWJsZVtdID0gewotICAgICAgICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAotICAgICAgICB7
MCwgICAgMHg0MywgJyonLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAot
ICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAot
ICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0QywgMywg
QCJlbnRlciIgfSwKLSAgICAgICAgezB4MUIsIDB4NEUsICctJywgbmlsfSwKLSAgICAgICAgezB4
MTgsIDB4NTEsICc9JywgbmlsfSwKLSAgICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKLSAg
ICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwKLSAgICAgICAgezB4MTMsIDB4NTQsICcyJywg
bmlsfSwKLSAgICAgICAgezB4MTQsIDB4NTUsICczJywgbmlsfSwKLSAgICAgICAgezB4MTUsIDB4
NTYsICc0JywgbmlsfSwKLSAgICAgICAgezB4MTcsIDB4NTcsICc1JywgbmlsfSwKLSAgICAgICAg
ezB4MTYsIDB4NTgsICc2JywgbmlsfSwKLSAgICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwK
LSAgICAgICAgezB4MUMsIDB4NUIsICc4JywgbmlsfSwKLSAgICAgICAgezB4MTksIDB4NUMsICc5
JywgbmlsfSwKLSAgICB9OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlf
TEVOR1RIKHRhYmxlKTsgKytpKSB7Ci0gICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVy
U3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0
ZXIgbGVuZ3RoOjFdOwotICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3Vy
cmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVb
aV0uY2hhcmFjdGVyTmFtZV0pIHsKLSAgICAgICAgICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAz
IC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKLSAgICAgICAgICAgICAgICBrZXlDb2RlID0g
dGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKLSAgICAgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cyA9IGV2ZW50Q2hhcmFjdGVyOwotCi0gICAgaW50IG1vZGlmaWVyRmxhZ3MgPSAwOwotCi0gICAg
aWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRl
eDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykgewot
ICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKLSAgICAg
ICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJp
bmddOwotICAgIH0KLQotICAgIG1vZGlmaWVyRmxhZ3MgfD0gYnVpbGRNb2RpZmllckZsYWdzKG1v
ZGlmaWVycyk7Ci0KLSAgICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJ
T05fTlVNUEFEKi8pCi0gICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxh
Z051bWVyaWNQYWQ7CisgICAgTW9kaWZpZXJLZXlFeHRyYWN0b3IgKm1vZGlmaWVyS2V5RXh0cmFj
dG9yID0gW1tNb2RpZmllcktleUV4dHJhY3RvciBhbGxvY10gaW5pdFdpdGhLZXk6dG9XVEZTdHJp
bmcoa2V5KSBtb2RpZmllcnM6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycykga2V5TG9jYXRp
b246a2V5TG9jYXRpb25dOwogCiAgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVu
dFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgotICAgICAgICAgICAgICAgICAgICAgICAgbG9j
YXRpb246TlNNYWtlUG9pbnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVy
RmxhZ3M6bW9kaWZpZXJGbGFncwotICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmFi
c29sdXRlVGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCkt
PnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQotICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV07CisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50
KDUsIDUpCisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlm
aWVyRmxhZ3MKKyAgICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShjdXJy
ZW50RXZlbnRUaW1lKCkpCisgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNv
bnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0
ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAgICBjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTptb2Rp
ZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV07CiAKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVu
dDpldmVudF07CiAgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9y
bVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlEb3duOmV2ZW50XTsKQEAgLTgzNiwxNCArNjQ1
LDU0IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKIAogICAgIGV2
ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCiAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQotICAgICAgICAgICAg
ICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCisgICAgICAgICAgICAgICAg
ICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5tb2RpZmllckZsYWdz
CiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRU
aW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051
bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3
aW5kb3dOdW1iZXJdCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNz
Q29udGV4dCBjdXJyZW50Q29udGV4dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rl
cnM6ZXZlbnRDaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVy
CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9k
aWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwogICAgICAgICAg
ICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlD
b2RlOmtleUNvZGVdOworICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTptb2RpZmllcktl
eUV4dHJhY3Rvci0+a2V5Q29kZV07CisKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVu
dF07CisgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRv
dygpIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudF07CisgICAgW05TQXBwIF9zZXRDdXJyZW50
RXZlbnQ6bmlsXTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3Ry
aW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0
aW9uKQoreworICAgIE1vZGlmaWVyS2V5RXh0cmFjdG9yICptb2RpZmllcktleUV4dHJhY3RvciA9
IFtbTW9kaWZpZXJLZXlFeHRyYWN0b3IgYWxsb2NdIGluaXRXaXRoS2V5OnRvV1RGU3RyaW5nKGtl
eSkgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIGtleUxvY2F0aW9uOmtl
eUxvY2F0aW9uXTsKKworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRo
VHlwZTpOU0V2ZW50VHlwZUtleURvd24KKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwg
NSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleUV4dHJhY3Rvci0+bW9kaWZpZXJG
bGFncworICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRF
dmVudFRpbWUoKSkKKyAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWlu
V2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KKyAgICAgICAgY29udGV4
dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAgIGNoYXJhY3RlcnM6
bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyCisgICAgICAgIGNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOm1vZGlmaWVy
S2V5RXh0cmFjdG9yLT5rZXlDb2RlXTsKKworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2
ZW50XTsKKyAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2lu
ZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnRdOworICAgIFtOU0FwcCBfc2V0Q3Vy
cmVudEV2ZW50Om5pbF07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tT
dHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9j
YXRpb24pCit7CisgICAgTW9kaWZpZXJLZXlFeHRyYWN0b3IgKm1vZGlmaWVyS2V5RXh0cmFjdG9y
ID0gW1tNb2RpZmllcktleUV4dHJhY3RvciBhbGxvY10gaW5pdFdpdGhLZXk6dG9XVEZTdHJpbmco
a2V5KSBtb2RpZmllcnM6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycykga2V5TG9jYXRpb246
a2V5TG9jYXRpb25dOworCisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdp
dGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwg
NSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleUV4dHJhY3Rvci0+bW9kaWZpZXJG
bGFncworICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRF
dmVudFRpbWUoKSkKKyAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWlu
V2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KKyAgICAgICAgY29udGV4
dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAgIGNoYXJhY3RlcnM6
bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyCisgICAgICAgIGNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOm1vZGlmaWVy
S2V5RXh0cmFjdG9yLT5rZXlDb2RlXTsKIAogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2
ZW50XTsKICAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2lu
ZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50XTsKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwCShyZXZpc2lvbiAy
ODM1MDMpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDYgKzMxNCwxNCBAQCB2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgICAgIFNldEtleWJvYXJkU3RhdGUoa2V5U3Rh
dGUpOwogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tTdHJpbmdSZWYg
a2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBX
S0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBFdmVudFNlbmRlclByb3h5OjphZGRUb3Vj
aFBvaW50KGludCwgaW50KQogewpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZl
bnRTZW5kZXJQcm94eVdQRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAJKHJldmlzaW9uIDI4MzUwMykKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjcsNiArMzI3LDE0IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihX
S1N0cmluZ1IKICAgICBmcmVlKGVudHJpZXMpOwogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OnJhd0tleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywg
dW5zaWduZWQga2V5TG9jYXRpb24pCit7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3
S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWdu
ZWQga2V5TG9jYXRpb24pCit7Cit9CisKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6YWRkVG91Y2hQ
b2ludChpbnQgeCwgaW50IHkpCiB7CiAgICAgc3RydWN0IHdwZV9pbnB1dF90b3VjaF9ldmVudF9y
YXcgcmF3RXZlbnQgeyB3cGVfaW5wdXRfdG91Y2hfZXZlbnRfdHlwZV9kb3duLCBzZWNUb01zVGlt
ZXN0YW1wKG1fdGltZSksIHN0YXRpY19jYXN0PGludD4obV90b3VjaEV2ZW50cy5zaXplKCkpLCBz
dGF0aWNfY2FzdDxpbnQzMl90Pih4KSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oeSkgfTsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI4MzUwMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDIxLTEwLTA0ICBCZXRoIERha2luICA8YmRha2luQGFw
cGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+CisKKyAgICAgICAgbWFj
T1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0b3Agd2hlbiBmb2N1cyBj
aGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB1
c2VGbGV4aWJsZVZpZXdwb3J0IGFuZCBFdmVudEhhbmRsZXJEcml2ZW5TbW9vdGhLZXlib2FyZFNj
cm9sbGluZ0VuYWJsZWQga2V5cyBhcmUgV0syIG9ubHkgCisgICAgICAgIHJpZ2h0IG5vdywgc28g
c2tpcCB0aGUgbmV3IHRlc3QgaW4gZ2VuZXJhbC4KKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25z
OgorCisgICAgICAgIE5ldyB0ZXN0IHRoYXQgdmVyaWZpZXMgdGhpcyBidWcgaXMgcmVzb2x2ZWQu
CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJk
LXNjcm9sbGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5n
L3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbDogQWRkZWQuCisK
KyAgICAgICAgRG8gcnVuIHRoZSB0ZXN0IGZvciBtYWMtd2syLiByYXdLZXlEb3duIC8gcmF3S2V5
VXAgYXJlIGN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQgCisgICAgICAgIGVsc2V3aGVyZS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKKyAgICAgICAgTmV3
IHN1cHBvcnQgZm9yIHJhd0tleURvd24gaW4gb3JkZXIgdG8gc2ltdWxhdGUgaG9sZGluZyB0aGUg
a2V5IGRvd24uCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdp
bmRvdy5VSUhlbHBlci5yYXdLZXlEb3duKToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5yYXdL
ZXlVcCk6CisKIDIwMjEtMTAtMDQgIEF5dW1pIEtvamltYSAgPGF5dW1pX2tvamltYUBhcHBsZS5j
b20+CiAKICAgICAgICAgQ2xlYW5pbmcgdXAgZXhwZWN0YXRpb25zIGZvciBpT1MgMTUuCkluZGV4
OiBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI4MzUwMykKKysrIExheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAgZmFzdC9mb3Jtcy9l
bnRlcmtleWhpbnQtYXR0cmlidXRlLXZhbHVlcwogZmFzdC9zY3JvbGxpbmcva2V5Ym9hcmQtc2Ny
b2xsaW5nLWRpc3RhbmNlLWRvd25BcnJvdy5odG1sIFsgU2tpcCBdCiBmYXN0L3Njcm9sbGluZy9r
ZXlib2FyZC1zY3JvbGxpbmctZGlzdGFuY2UtcGFnZURvd24uaHRtbCBbIFNraXAgXQogZmFzdC9z
Y3JvbGxpbmcva2V5Ym9hcmQtc2Nyb2xsaW5nLWxhc3QtdGltZXN0YW1wLmh0bWwgWyBTa2lwIF0K
K2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcu
aHRtbCBbIFNraXAgXQogCiAjIEhpZ2hsaWdodGluZyBtYXJrZWQgdGV4dCByYW5nZXMgZnJvbSBs
YXlvdXQgdGVzdHMgaXMgb25seSBzdXBwb3J0ZWQgaW4gV2ViS2l0Mi4KIGVkaXRpbmcvaW5wdXQv
Y29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sIFsgU2tpcCBdCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZv
Y3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hp
bGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYgQEAKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCitTVUNDRVNTOiBCbHVlIGZyYW1lIHN0b3BwZWQgc2NvbGxpbmcgYmVmb3JlIHJlZCBmcmFt
ZQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hp
bGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1s
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmct
cGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VG
bGV4aWJsZVZpZXdwb3J0PXRydWUgRXZlbnRIYW5kbGVyRHJpdmVuU21vb3RoS2V5Ym9hcmRTY3Jv
bGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS41LCB1c2VyLXNjYWxhYmxlPW5vIj4K
KyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxSZWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBsZXQgcmVkT2Zmc2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3JlZC1mcmFtZScpLmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldy5zY3JvbGxZOwor
ICAgICAgICAgICAgbGV0IGJsdWVPZmZzZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmx1
ZS1mcmFtZScpLmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldy5zY3JvbGxZOworICAgICAgICAg
ICAgaWYgKHJlZE9mZnNldCA+IDE5MDApIHsKKyAgICAgICAgICAgICAgICBpZiAoYmx1ZU9mZnNl
dCA+IDE5MDApCisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJGQUlMOiBCbHVlIGZyYW1lIHNj
cm9sbGVkIGFzIGZhciBhcyB0aGUgcmVkIGZyYW1lLiIpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgZGVidWcoIlNVQ0NFU1M6IEJsdWUgZnJhbWUgc3RvcHBlZCBz
Y29sbGluZyBiZWZvcmUgcmVkIGZyYW1lIik7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBhc3luYyBm
dW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVz
dFJ1bm5lciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIGxldCBibHVlRnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYmx1ZS1mcmFtZScpOworICAgICAgICAgICAgbGV0IHJlZEZyYW1lID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3JlZC1mcmFtZScpOworICAgICAgICAgICAgbGV0IHJlZERvY3VtZW50ID0g
cmVkRnJhbWUuY29udGVudERvY3VtZW50OworCisgICAgICAgICAgICByZWREb2N1bWVudC5hZGRF
dmVudExpc3RlbmVyKCJzY3JvbGwiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2Ny
b2xsUmVkKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYmx1ZUZyYW1lLmZvY3Vz
KCk7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5yYXdLZXlEb3duKCJkb3duQXJyb3ciKTsK
KyAgICAgICAgICAgIHJlZEZyYW1lLmZvY3VzKCk7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBl
ci5yYXdLZXlEb3duKCJkb3duQXJyb3ciKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAg
IDxzdHlsZT4KKyAgICAjcGxhY2Vob2xkZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICAgIGhlaWdodDogNTAwMHB4OworICAgIH0KKyAgICBpZnJhbWUgeworICAgICAgICB3aWR0aDog
MTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOiAwOyIgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxp
ZnJhbWUgaWQ9ImJsdWUtZnJhbWUiIHNyY2RvYz0iPGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBo
ZWlnaHQ6IDIwMDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsnPjwvZGl2PiI+PC9pZnJhbWU+
CisgICAgPGlmcmFtZSBpZD0icmVkLWZyYW1lIiBzcmNkb2M9IjxkaXYgc3R5bGU9J3dpZHRoOiAx
MDBweDsgaGVpZ2h0OiAyMDAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvZGl2PiI+PC9p
ZnJhbWU+CisgICAgPGRpdiBpZD0icGxhY2Vob2xkZXIiPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjgzNTAzKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw2ICs0Miw4IEBAIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1saXYKIGZh
c3QvbWVkaWEvbXEtcHJlZmVycy1jb250cmFzdC1saXZlLXVwZGF0ZS5odG1sIFsgUGFzcyBdCiBm
YXN0L21lZGlhL21xLXByZWZlcnMtY29udHJhc3QuaHRtbCBbIFBhc3MgXQogCitmYXN0L3Njcm9s
bGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwgWyBQYXNz
IF0KKwogaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkgWyBQYXNzIF0KIAogIyBBUFBMRV9QQVlfSU5T
VEFMTE1FTlRTIHdhcyBmaXJzdCBhdmFpbGFibGUgaW4gQ2F0YWxpbmEuCkluZGV4OiBMYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Jl
c291cmNlcy91aS1oZWxwZXIuanMJKHJldmlzaW9uIDI4MzUwMykKKysrIExheW91dFRlc3RzL3Jl
c291cmNlcy91aS1oZWxwZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTM0NCw2ICszNDQsMzAgQEAg
d2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogICAgICAgICB9CiAgICAgfQogCisg
ICAgc3RhdGljIHJhd0tleURvd24oa2V5LCBtb2RpZmllcnM9W10pCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkgeworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIucmF3S2V5RG93bihrZXksIG1vZGlmaWVycyk7CisgICAgICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3Jp
cHQoYHVpQ29udHJvbGxlci5yYXdLZXlEb3duKCIke2tleX0iLCAke0pTT04uc3RyaW5naWZ5KG1v
ZGlmaWVycyl9KTtgLCByZXNvbHZlKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc3RhdGlj
IHJhd0tleVVwKGtleSwgbW9kaWZpZXJzPVtdKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlz
V2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkpIHsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLnJhd0tleVVwKGtleSwgbW9kaWZpZXJzKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVz
b2x2ZSkgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgdWlDb250cm9s
bGVyLnJhd0tleVVwKCIke2tleX0iLCAke0pTT04uc3RyaW5naWZ5KG1vZGlmaWVycyl9KTtgLCBy
ZXNvbHZlKTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgc3RhdGljIGtleURvd24oa2V5LCBt
b2RpZmllcnM9W10pCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRo
aXMuaXNJT1NGYW1pbHkoKSkgewo=
</data>
<flag name="commit-queue"
          id="463933"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440286</attachid>
            <date>2021-10-05 15:55:19 -0700</date>
            <delta_ts>2021-10-05 16:18:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-7.txt</filename>
            <type>text/plain</type>
            <size>82055</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzU4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEwLTA1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkgb24g
dGhlIG9sZCBGcmFtZVZpZXcgYWZ0ZXIgY2hhbmdpbmcgRnJhbWUgZm9jdXMuCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorCisgICAgICAgIENhbGwgdXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKSB3aGVuIHRoZSB3aW5kb3cgdmlzaWJpbGl0eSAvIGFjdGl2ZSBzdGF0
ZSBjaGFuZ2VzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVNj
cm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAg
ICAgICBQbHVtYmluZyB0byBnZXQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSB0
byB0aGUgU2Nyb2xsQ29udHJvbGxlciwgd2hlcmUgd2UgY2FuIHRlbGwgCisgICAgICAgIHRoZSBr
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRvIGhhbmRsZSBrZXlVcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0xMC0wNSAgQXl1bWkg
S29qaW1hICA8YXl1bWlfa29qaW1hQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
ZXZlcnRpbmcgcjI4MzMzOS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDI4MzU4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5LDcgKzM1OSw4IEBAIHZvaWQgRm9jdXND
b250cm9sbGVyOjpzZXRGb2N1c2VkRnJhbWUoRnIKICAgICBtX2ZvY3VzZWRGcmFtZSA9IG5ld0Zy
YW1lOwogCiAgICAgLy8gTm93IHRoYXQgdGhlIGZyYW1lIGlzIHVwZGF0ZWQsIGZpcmUgZXZlbnRz
IGFuZCB1cGRhdGUgdGhlIHNlbGVjdGlvbiBmb2N1c2VkIHN0YXRlcyBvZiBib3RoIGZyYW1lcy4K
LSAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUtPnZpZXcoKSkgeworICAgIGlmIChhdXRvKiBv
bGRGcmFtZVZpZXcgPSBvbGRGcmFtZSA/IG9sZEZyYW1lLT52aWV3KCkgOiBudWxscHRyKSB7Cisg
ICAgICAgIG9sZEZyYW1lVmlldy0+c3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKICAgICAgICAgb2xk
RnJhbWUtPnNlbGVjdGlvbigpLnNldEZvY3VzZWQoZmFsc2UpOwogICAgICAgICBvbGRGcmFtZS0+
ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5ibHVyRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpO
bykpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjgzNTgyKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM1OCwxMyAr
MjM1OCwzMyBAQCB2b2lkIFBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjCiAgICAg
Zm9yIChhdXRvJiBvYnNlcnZlciA6IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVycykKICAg
ICAgICAgb2JzZXJ2ZXIuYWN0aXZpdHlTdGF0ZURpZENoYW5nZShvbGRBY3Rpdml0eVN0YXRlLCBt
X2FjdGl2aXR5U3RhdGUpOwogCi0gICAgaWYgKHdhc1Zpc2libGVBbmRBY3RpdmUgIT0gaXNWaXNp
YmxlQW5kQWN0aXZlKCkpCisgICAgaWYgKHdhc1Zpc2libGVBbmRBY3RpdmUgIT0gaXNWaXNpYmxl
QW5kQWN0aXZlKCkpIHsKICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRh
dGVOb3dQbGF5aW5nSW5mb0lmTmVjZXNzYXJ5KCk7CisgICAgICAgIHN0b3BTY3JvbGxBbmltYXRp
b25zKCk7CisgICAgfQogCiAgICAgaWYgKG1fcGVyZm9ybWFuY2VNb25pdG9yKQogICAgICAgICBt
X3BlcmZvcm1hbmNlTW9uaXRvci0+YWN0aXZpdHlTdGF0ZUNoYW5nZWQob2xkQWN0aXZpdHlTdGF0
ZSwgYWN0aXZpdHlTdGF0ZSk7CiB9CiAKK3ZvaWQgUGFnZTo6c3RvcFNjcm9sbEFuaW1hdGlvbnMo
KQoreworICAgIGZvciAoYXV0byogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgYXV0byogZnJhbWVWaWV3
ID0gZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBmcmFtZVZpZXctPnN0b3BTY3JvbGxBbmltYXRpb25zKCk7CisK
KyAgICAgICAgY29uc3QgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+KiBzY3JvbGxhYmxlQXJlYXMg
PSBmcmFtZVZpZXctPnNjcm9sbGFibGVBcmVhcygpOworICAgICAgICBpZiAoIXNjcm9sbGFibGVB
cmVhcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZvciAoYXV0byYgc2Nyb2xs
YWJsZUFyZWEgOiAqc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEt
PnN0b3BTY3JvbGxBbmltYXRpb25zKCk7CisgICAgfQorfQorCiBib29sIFBhZ2U6OmlzVmlzaWJs
ZUFuZEFjdGl2ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlu
cyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpICYmIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhB
Y3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNp
b24gMjgzNTgyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg5Nyw2ICs4OTcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SXNWaXNpYmxlSW50ZXJu
YWwoYm9vbCk7CiAgICAgdm9pZCBzZXRJc1Zpc3VhbGx5SWRsZUludGVybmFsKGJvb2wpOwogCisg
ICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOworCiAgICAgZW51bSBTaG91bGRIaWdobGln
aHRNYXRjaGVzIHsgRG9Ob3RIaWdobGlnaHRNYXRjaGVzLCBIaWdobGlnaHRNYXRjaGVzIH07CiAg
ICAgZW51bSBTaG91bGRNYXJrTWF0Y2hlcyB7IERvTm90TWFya01hdGNoZXMsIE1hcmtNYXRjaGVz
IH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAJ
KHJldmlzaW9uIDI4MzU4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDYgKzIzNSwxMSBAQCBib29sIFNjcm9sbEFu
aW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvCiAjZW5kaWYKIH0KIAordm9pZCBTY3JvbGxBbmlt
YXRvcjo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQoreworICAgIG1fc2Nyb2xsQ29udHJvbGxlci5z
dG9wU2Nyb2xsQW5pbWF0aW9ucygpOworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJv
b2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2
ZW50JikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAko
cmV2aXNpb24gMjgzNTgyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2b2lkIHN0b3BTY3JvbGxBbmltYXRp
b25zKCk7CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgeyB9CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAJKHJldmlzaW9u
IDI4MzU4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjEzLDYgKzIxMywxMSBAQCBib29sIFNjcm9sbGFibGVBcmVhOjpo
YW5kbGVXaGVlbEV2ZW50Rm9yCiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKIH0KIAordm9pZCBT
Y3JvbGxhYmxlQXJlYTo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQoreworICAgIHNjcm9sbEFuaW1h
dG9yKCkuc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKK30KKwogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiBib29sIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hFdmVudCYgdG91Y2hFdmVudCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaAkocmV2aXNpb24gMjgzNTgyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlc25hcEFmdGVyTGF5b3V0KCk7CiAgICAgdm9pZCBkb1Bvc3RU
aHVtYk1vdmVTbmFwcGluZyhTY3JvbGxiYXJPcmllbnRhdGlvbik7CiAKKyAgICB2b2lkIHN0b3BT
Y3JvbGxBbmltYXRpb25zKCk7CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODM1ODIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg5LDYgKzg5LDEyIEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BL
ZXkKICAgICBzZXRJc0FuaW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5nKGZhbHNlKTsKIH0KIAordm9p
ZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQorewor
ICAgIGlmIChtX2lzQW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmcpCisgICAgICAgIG1fY2xpZW50
LmtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoKS0+aGFuZGxlS2V5VXBFdmVudCgpOworfQorCiBi
b29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0
aW5hdGlvbihGbG9hdFBvaW50IHN0YXJ0T2Zmc2V0LCBGbG9hdFBvaW50IGRlc3RpbmF0aW9uT2Zm
c2V0KQogewogICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgJKHJldmlz
aW9uIDI4MzU4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGJlZ2luS2V5Ym9hcmRTY3JvbGxpbmcoKTsKICAgICB2b2lkIHN0b3BLZXlib2Fy
ZFNjcm9sbGluZygpOwotICAgIAorCisgICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwor
CiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCBwZXJpb2RpY2FsbHkgYnkgdGhlIGNsaWVudC4gU3Rh
cnRlZCBieSBzdGFydEFuaW1hdGlvbkNhbGxiYWNrKCksIHN0b3BwZWQgYnkgc3RvcEFuaW1hdGlv
bkNhbGxiYWNrKCkuCiAgICAgdm9pZCBhbmltYXRpb25DYWxsYmFjayhNb25vdG9uaWNUaW1lKTsK
IApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNjAgQEAKKzIwMjEtMTAtMDUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPiBh
bmQgRGFuYSBFc3RyYSA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBtYWNPUyBrZXktZHJp
dmVuIHNtb290aCBzY3JvbGxpbmcgZG9lcyBub3Qgc3RvcCB3aGVuIGZvY3VzIGNoYW5nZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODMwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
cHVsbHMgdGhlIGNvZGUgdG8gZXh0cmFjdCBtb2RpZmllciBrZXkgaW5mb3JtYXRpb24gaXMgcHVs
bGVkIGludG8gYSBsaXR0bGUgY2xhc3MgCisgICAgICAgIGNhbGxlZCBNb2RpZmllcktleUV4dHJh
Y3RvciBpbiBUZXN0UnVubmVyU2hhcmVkLiBUaGF0IGNvZGUgaXMgbm93IHNoYXJlZCBiZXR3ZWVu
IERSVCBhbmQgV0tUUiAKKyAgICAgICAgZm9yIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMg
b2Yga2V5RG93bi4gVGhlIHBhdGNoIGFsc28gYWRkcyBzdXBwb3J0IGZvciByYXdLZXlEb3duIGFu
ZCAKKyAgICAgICAgcmF3S2V5VXAgdG8gRFJUIGFuZCBXS1RSLCBhbmQgYm90aCBvZiB0aG9zZSBh
bHNvIG5lZWQgdG8gdXNlIE1vZGlmaWVyS2V5RXh0cmFjdG9yLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAg
ICAgKCtbRXZlbnRTZW5kaW5nQ29udHJvbGxlciBpbml0aWFsaXplXSk6CisgICAgICAgICgrW0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIgaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDpdKToK
KyAgICAgICAgKCtbRXZlbnRTZW5kaW5nQ29udHJvbGxlciB3ZWJTY3JpcHROYW1lRm9yU2VsZWN0
b3I6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIga2V5RG93bjp3aXRoTW9k
aWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxl
ciByYXdLZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtF
dmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tleURvd25XcmFwcGVyOndpdGhNb2RpZmllcnM6d2l0
aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tleVVw
OndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdD
b250cm9sbGVyIHJhd0tleVVwV3JhcHBlcjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToK
KyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLmg6
IEFkZGVkLgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlFeHRy
YWN0b3IubW06IEFkZGVkLgorICAgICAgICAoLVtNb2RpZmllcktleUV4dHJhY3RvciBpbml0V2l0
aEtleTptb2RpZmllcnM6a2V5TG9jYXRpb246XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpjcmVhdGVSYXdLZXlEb3duTWVzc2FnZUJvZHkpOgorICAgICAgICAo
V1RSOjpjcmVhdGVSYXdLZXlVcE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
aW5nQ29udHJvbGxlcjo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJh
d0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0
VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94
eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVy
UHJveHkubW06CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
d2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5
VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUu
Y3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAg
ICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorCiAyMDIxLTEwLTA1ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVGVzdFdl
YktpdEFQSS5Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5EYWVtb25CYXNpY0Z1bmN0aW9uYWxpdHkg
aXMgdGltaW5nIG91dApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
ODM1ODIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDcgQEAKIAkJN0NG
RjlCQzIyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkMxMjUzM0JDMTYwMDA4MDA5RiAv
KiBUZXN0Q29tbWFuZC5jcHAgKi87IH07CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLzsgfTsKIAkJODQ2NUUyQzcwRkZBOERG
MjAwM0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ2NUUyQzYwRkZBOERGMjAwM0I4MzQyIC8qIFBpeGVs
RHVtcFN1cHBvcnQuY3BwICovOyB9OworCQk5M0IwNDBCODI3MDdDMzBGMDA3NkU5NjAgLyogTW9k
aWZpZXJLZXlFeHRyYWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0IwNDBCNzI3MDdDMzBGMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0
b3IubW0gKi87IH07CiAJCTkzQzc4ODI2MjUwQzZEM0EwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rp
b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
Qzc4ODI0MjUwQzZEMzkwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJ
OTNDNzg4MkUyNTBDNzE3MjAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODI5MjUwQzcxMzQwMEMwQUEyNCAv
KiBKU0Jhc2ljcy5jcHAgKi87IH07CiAJCUExMTU4RDU4MTg5Mjc0MEMwMDg4QzE3QiAvKiBEdW1w
UmVuZGVyVHJlZUJyb3dzZXJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTExNThENTYxODkyNzNFQjAwODhDMTdCIC8qIER1bXBSZW5kZXJUcmVl
QnJvd3NlclZpZXcubW0gKi87IH07CkBAIC0zNDcsNiArMzQ4LDggQEAKIAkJODQ2NUUyQzYwRkZB
OERGMjAwM0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBpeGVsRHVtcFN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzM1NDM1RjAzRDc1NTAyMDA4NjM1Q0UgLyogV2ViS2l0LmZyYW1ld29y
ayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBw
ZXIuZnJhbWV3b3JrOyBwYXRoID0gV2ViS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJOTM0MDk5NTQwODU0MENBRjAwN0YzQkM4IC8qIER1bXBSZW5k
ZXJUcmVlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBE
dW1wUmVuZGVyVHJlZTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTNC
MDQwQjYyNzA3QzMwRjAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmaWVyS2V5RXh0cmFjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjA0MEI3MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmll
cktleUV4dHJhY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0M3ODgyNDI1MEM2RDM5MDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZ0ZXN0RnVuY3Rpb25zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNzg4MjUyNTBDNkQzOTAwQzBBQTI0IC8qIFJlZnRl
c3RGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmdGVzdEZ1
bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0M3ODgyOTI1MEM3MTM0
MDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNpY3MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQwLDYgKzk0Myw4IEBACiAJCQkJRjQ0
QTUzMUMyMUI4OUE0NTAwREJCOTlDIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJ
CQkJRjRDMzU3ODkyMEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAq
LywKIAkJCQlGNEMzNTc4ODIwRTg0NDI3MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ci5tbSAqLywKKwkJCQk5M0IwNDBCNjI3MDdDMzBGMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRy
YWN0b3IuaCAqLywKKwkJCQk5M0IwNDBCNzI3MDdDMzBGMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlF
eHRyYWN0b3IubW0gKi8sCiAJCQkJRjQwMTBCN0EyNERBMjAwRTAwQTg3NkUyIC8qIFBvc2VBc0Ns
YXNzLmggKi8sCiAJCQkJRjQwMTBCNzkyNERBMjAwRTAwQTg3NkUyIC8qIFBvc2VBc0NsYXNzLm1t
ICovLAogCQkJKTsKQEAgLTEyNTEsNiArMTI1Niw3IEBACiAJCQkJODAwNDVBRUUxNDc3MThFNzAw
ODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMjlDRkJBMTExMjI3MzZFNjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5QkI3QzVDMUM1MDUyNzgwMDJDNTI1QiAvKiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTkzQjA0MEI4
MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTI5Q0ZCQTJFMTIyNzNBMTAwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMEUyNEUxMEUyRDk0NTEwMDFCNkJDMiAvKiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBNUExNUYwMTZF
MTVDRDAwMEY3QzU2MSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJE
dW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRy
ZWVQYXN0ZWJvYXJkLmgiCisjaW1wb3J0ICJNb2RpZmllcktleUV4dHJhY3Rvci5oIgogI2ltcG9y
dCAiV2ViQ29yZVRlc3RTdXBwb3J0LmgiCiAjaW1wb3J0IDxXZWJLaXQvRE9NUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+CkBAIC04MSwxMyArODIsNiBAQCBlbnVt
IE1vdXNlQnV0dG9uIHsKICAgICBOb01vdXNlQnV0dG9uID0gLTIKIH07CiAKLXN0cnVjdCBLZXlN
YXBwaW5nRW50cnkgewotICAgIGludCBtYWNLZXlDb2RlOwotICAgIGludCBtYWNOdW1wYWRLZXlD
b2RlOwotICAgIHVuaWNoYXIgY2hhcmFjdGVyOwotICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXJOYW1l
OwotfTsKLQogTlNQb2ludCBsYXN0TW91c2VQb3NpdGlvbjsKIE5TUG9pbnQgbGFzdENsaWNrUG9z
aXRpb247CiBpbnQgbGFzdENsaWNrQnV0dG9uID0gTm9Nb3VzZUJ1dHRvbjsKQEAgLTIwMiw2ICsx
OTYsOCBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgQCJmb2N1cyIsCiAgICAgICAgIEAi
aW5wdXQiLAogICAgICAgICBAImtleWRvd24iLAorICAgICAgICBAInJhd2tleWRvd24iLAorICAg
ICAgICBAInJhd2tleXVwIiwKICAgICAgICAgQCJrZXlwcmVzcyIsCiAgICAgICAgIEAia2V5dXAi
LAogICAgICAgICBAImxvYWQiLApAQCAtMjQ1LDYgKzI0MSw4IEBAICsgKEJPT0wpaXNTZWxlY3Rv
ckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDoKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IoZW5hYmxlRE9NVUlFdmVudExvZ2dpbmc6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9y
ID09IEBzZWxlY3RvcihmaXJlS2V5Ym9hcmRFdmVudHNUb0VsZW1lbnQ6KQogICAgICAgICAgICAg
fHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihrZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0
aW9uOikKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IocmF3S2V5RG93bjp3
aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0g
QHNlbGVjdG9yKHJhd0tleVVwOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikKICAgICAgICAg
ICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IobGVhcEZvcndhcmQ6KQogICAgICAgICAgICAg
fHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcihtb3VzZURvd246d2l0aE1vZGlmaWVyczopCiAgICAg
ICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKG1vdXNlTW92ZVRvWDpZOikKQEAgLTMw
Niw2ICszMDQsMTAgQEAgKyAoTlNTdHJpbmcgKil3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6KAog
ICAgICAgICByZXR1cm4gQCJmaXJlS2V5Ym9hcmRFdmVudHNUb0VsZW1lbnQiOwogICAgIGlmIChh
U2VsZWN0b3IgPT0gQHNlbGVjdG9yKGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246
KSkKICAgICAgICAgcmV0dXJuIEAia2V5RG93biI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IocmF3S2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQorICAgICAgICBy
ZXR1cm4gQCJyYXdLZXlEb3duIjsKKyAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihyYXdL
ZXlVcDp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQorICAgICAgICByZXR1cm4gQCJyYXdL
ZXlVcCI7CiAgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2NoZWR1bGVBc3luY2hyb25v
dXNLZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikpCiAgICAgICAgIHJldHVybiBA
InNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93biI7CiAgICAgaWYgKGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IobGVhcEZvcndhcmQ6KSkKQEAgLTk3MiwyMDQgKzk3NCwyMyBAQCArICh2b2lkKWNsZWFy
U2F2ZWRFdmVudHMKIAogLSAodm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRo
TW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9uOih1bnNp
Z25lZCBsb25nKWxvY2F0aW9uCiB7Ci0gICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyID0gY2hh
cmFjdGVyOwotICAgIHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOwotICAgIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBr
ZXlDb2RlID0gMHg3QjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAicmlnaHRBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0QXJy
b3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0M7Ci0g
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkgewot
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdFOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4N0Q7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InBhZ2VVcCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9u
S2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NDsKLSAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgewotICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwot
ICAgICAgICBrZXlDb2RlID0gMHg3OTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiaG9tZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hvbWVG
dW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzM7Ci0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7Ci0gICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHg3NzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiaW5zZXJ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5zZXJ0
RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDcyOwotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgewotICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzU7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAw
eDFCOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzNTsKLSAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3JlZW4iXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OwotICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOwotICAgICAgICBrZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFs
IGtleSBjb2RlIGZvciBQcmludFNjcmVlbi4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgewotICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gMHgwNDMwOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgz
OyAvLyBTaGFyZXMga2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0LgotICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7Ci0gICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTM7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNv
ZGUgPSAweDNCOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJs
ZWZ0U2hpZnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUxOwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzODsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSAweEZGRTc7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNBOwotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkg
ewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU0OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHgzRTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicmlnaHRTaGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZG
RTI7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNDOwotICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweEZGRTg7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDNEOwotICAgIH0KLQotICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRo
ZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwu
Li4sIkYyNCIpLgotICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkg
bmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDI0
OyBpKyspIHsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7Ci0gICAgICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKLSAgICAgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6IGtleUNvZGUg
PSAweDdBOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4OyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IDY6IGtleUNvZGUgPSAweDYxOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDc6IGtleUNv
ZGUgPSAweDYyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAweDY1OyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEz
OiBrZXlDb2RlID0gMHg2OTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29k
ZSA9IDB4NkI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAweDcx
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2RlID0gMHg2QTsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAy
MDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCi0gICAg
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKLSAgICAgICAga2V5Q29kZSA9
IDB4MzA7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0pCi0g
ICAgICAgIGtleUNvZGUgPSAweDMxOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiXHIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MjQ7Ci0gICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQotICAgICAgICBrZXlDb2RlID0gMHg0QzsK
LSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQotICAgICAg
ICBrZXlDb2RlID0gMHgzMzsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImEiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDA7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBCOwotICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQotICAgICAgICBrZXlDb2Rl
ID0gMHgwMjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkK
LSAgICAgICAga2V5Q29kZSA9IDB4MEU7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJceDFiIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDFCOwotCi0gICAgS2V5TWFw
cGluZ0VudHJ5IHRhYmxlW10gPSB7Ci0gICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5pbH0sCi0g
ICAgICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0sCi0gICAgICAgIHswLCAgICAweDQ1LCAnKycs
IG5pbH0sCi0gICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNs
ZWFyIn0sCi0gICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCi0gICAgICAgIHswLCAgICAw
eDRDLCAzLCBAImVudGVyIiB9LAotICAgICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAotICAg
ICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAotICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBu
aWx9LAotICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAotICAgICAgICB7MHgxMywgMHg1
NCwgJzInLCBuaWx9LAotICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAotICAgICAgICB7
MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAotICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAot
ICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAotICAgICAgICB7MHgxQSwgMHg1OSwgJzcn
LCBuaWx9LAotICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAotICAgICAgICB7MHgxOSwg
MHg1QywgJzknLCBuaWx9LAotICAgIH07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdU
Rl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsKLSAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRD
aGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ld
LmNoYXJhY3RlciBsZW5ndGg6MV07Ci0gICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
Zzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgewotICAgICAgICAgICAgaWYgKGxvY2F0aW9uID09
IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQotICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJs
ZVtpXS5tYWNOdW1wYWRLZXlDb2RlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOwotICAgICAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0g
ZXZlbnRDaGFyYWN0ZXI7Ci0KLSAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7Ci0KLSAgICBpZiAo
W2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBd
ID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7Ci0jaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1v
ZGlmaWVyRmxhZ1NoaWZ0OwotI2Vsc2UKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBXZWJFdmVu
dEZsYWdNYXNrTGVmdFNoaWZ0S2V5OwotI2VuZGlmCi0gICAgICAgIGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKLSAgICB9Ci0KLSAgICBt
b2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpOwotCi0gICAgaWYg
KGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQotICAgICAgICBtb2RpZmllckZs
YWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworICAgIE1vZGlmaWVyS2V5RXh0
cmFjdG9yICptb2RpZmllcktleUV4dHJhY3RvciA9IFtbTW9kaWZpZXJLZXlFeHRyYWN0b3IgYWxs
b2NdIGluaXRXaXRoS2V5OmNoYXJhY3RlciBtb2RpZmllcnM6YnVpbGRNb2RpZmllckZsYWdzKG1v
ZGlmaWVycykga2V5TG9jYXRpb246bG9jYXRpb25dOwogCiAgICAgW1tbbWFpbkZyYW1lIGZyYW1l
Vmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5T
RXZlbnRUeXBlS2V5RG93bgogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtl
UG9pbnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZp
ZXJGbGFncworICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktl
eUV4dHJhY3Rvci0+bW9kaWZpZXJGbGFncwogICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0
YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCiAgICAgICAgICAgICAgICAgICAgICAgICB3aW5k
b3dOdW1iZXI6W1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gd2luZG93TnVtYmVyXQogICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENv
bnRleHRdCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVy
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0
ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9y
LT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKICAgICAgICAgICAgICAgICAgICAgICAgIGlz
QVJlcGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5rZXlD
b2RlXSk7CiAjZWxzZQotICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2Nd
IGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6W3NlbGYgY3Vy
cmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZl
bnRGbGFncyltb2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1
dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBp
c1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CisgICAg
YXV0byBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5
cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFy
YWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1v
ZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhp
bnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5Oihb
Y2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKICNlbmRpZgogCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMTgzLDE2ICsxMDA0LDE2IEBAIC0gKHZvaWQpa2V5
RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2kKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRU
eXBlS2V5VXAKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUs
IDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0
b3ItPm1vZGlmaWVyRmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpbc2Vs
ZiBjdXJyZW50RXZlbnRUaW1lXQogICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVy
OltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQot
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgotICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycworICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczptb2Rp
ZmllcktleUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6
Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV0pOworICAgICAgICAg
ICAgICAgICAgICAgICAga2V5Q29kZTptb2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV0pOwog
I2Vsc2UKLSAgICBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlF
dmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0g
Y2hhcmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmll
ckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5p
bCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJh
Y3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CisgICAgZXZlbnQgPSBhZG9wdE5T
KFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGlt
ZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlFeHRy
YWN0b3ItPmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmll
cktleUV4dHJhY3Rvci0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2Vi
RXZlbnRGbGFncyltb2RpZmllcktleUV4dHJhY3Rvci0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGlu
ZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFj
dGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJ
bmRleDowXSA9PSAnXHQnKV0pOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
QEAgLTEyMDksNiArMTAzMCw3NiBAQCAtICh2b2lkKWtleURvd25XcmFwcGVyOihOU1N0cmluZyAq
KWNoYXJhCiAgICAgW3NlbGYga2V5RG93bjpjaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczptb2RpZmll
cnMgd2l0aExvY2F0aW9uOmxvY2F0aW9uXTsKIH0KIAorLSAodm9pZClyYXdLZXlEb3duOihOU1N0
cmluZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmll
cnMgd2l0aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCit7CisgICAgTW9kaWZpZXJL
ZXlFeHRyYWN0b3IgKm1vZGlmaWVyS2V5RXh0cmFjdG9yID0gW1tNb2RpZmllcktleUV4dHJhY3Rv
ciBhbGxvY10gaW5pdFdpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1vZGlmaWVyRmxh
Z3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl07CisKKyAgICBbW1ttYWluRnJhbWUg
ZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CisKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5
cGU6TlNFdmVudFR5cGVLZXlEb3duCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUp
CisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxh
Z3MKKyAgICAgICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdp
bmRvd051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisg
ICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAg
ICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAg
ICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5
Q29kZTptb2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2
ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJF
dmVudEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6
bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
IG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllcktleUV4dHJhY3Rvci0+bW9kaWZpZXJG
bGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwg
a2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0
ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworI2VuZGlmCisKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07
CisjZW5kaWYKKyAgICBbW1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25k
ZXJdIGtleURvd246ZXZlbnQuZ2V0KCldOworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CisjZW5kaWYKK30KKworLSAodm9pZClyYXdL
ZXlEb3duV3JhcHBlcjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2Ny
aXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlv
bgoreworICAgIFtzZWxmIHJhd0tleURvd246Y2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6bW9kaWZp
ZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07Cit9CisKKy0gKHZvaWQpcmF3S2V5VXA6KE5TU3Ry
aW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVy
cyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sKKyAgICBNb2RpZmllcktl
eUV4dHJhY3RvciAqbW9kaWZpZXJLZXlFeHRyYWN0b3IgPSBbW01vZGlmaWVyS2V5RXh0cmFjdG9y
IGFsbG9jXSBpbml0V2l0aEtleTpjaGFyYWN0ZXIgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFn
cyhtb2RpZmllcnMpIGtleUxvY2F0aW9uOmxvY2F0aW9uXTsKKworICAgIFtbW21haW5GcmFtZSBm
cmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKKworI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlw
ZTpOU0V2ZW50VHlwZUtleVVwCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisg
ICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3MK
KyAgICAgICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdpbmRv
d051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisgICAg
ICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBj
aGFyYWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAgICBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29k
ZTptb2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2ZW50
ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVu
dEtleVVwIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOm1vZGlm
aWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2Rp
ZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3Mg
aXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNv
ZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNo
YXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnQuZ2V0KCldOworI2Vu
ZGlmCisgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBr
ZXlVcDpldmVudC5nZXQoKV07CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgW05TQXBw
IF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKKyNlbmRpZgorfQorCistICh2b2lkKXJhd0tleVVwV3Jh
cHBlcjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0
ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAg
IFtzZWxmIHJhd0tleVVwOmNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOm1vZGlmaWVycyB3aXRoTG9j
YXRpb246bG9jYXRpb25dOworfQorCiAtICh2b2lkKXNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93
bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICop
bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgogewogICAgIE5T
SW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFtOU0ludm9jYXRpb24gaW52b2NhdGlvbldpdGhNZXRo
b2RTaWduYXR1cmU6W0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgaW5zdGFuY2VNZXRob2RTaWduYXR1
cmVGb3JTZWxlY3RvcjpAc2VsZWN0b3Ioa2V5RG93bldyYXBwZXI6d2l0aE1vZGlmaWVyczp3aXRo
TG9jYXRpb246KV1dOwpJbmRleDogVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmll
cktleUV4dHJhY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29j
b2EvTW9kaWZpZXJLZXlFeHRyYWN0b3IuaAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0UnVu
bmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCitzdHJ1Y3QgS2V5TWFw
cGluZ0VudHJ5IHsKKyAgICBpbnQgbWFjS2V5Q29kZTsKKyAgICBpbnQgbWFjTnVtcGFkS2V5Q29k
ZTsKKyAgICB1bmljaGFyIGNoYXJhY3RlcjsKKyAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFtZTsK
K307CisKK0BpbnRlcmZhY2UgTW9kaWZpZXJLZXlFeHRyYWN0b3IgOiBOU09iamVjdCB7CitAcHVi
bGljCisgICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyOworICAgIHVuc2lnbmVkIHNob3J0IGtl
eUNvZGU7CisgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczsKKyAgICBp
bnQgbW9kaWZpZXJGbGFnczsKK30KKworLSAoaWQpaW5pdFdpdGhLZXk6KE5TU3RyaW5nICopa2V5
IG1vZGlmaWVyczooaW50KW1vZGlmaWVycyBrZXlMb2NhdGlvbjoodW5zaWduZWQpa2V5TG9jYXRp
b247CitAZW5kCkluZGV4OiBUb29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5
RXh0cmFjdG9yLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2Ev
TW9kaWZpZXJLZXlFeHRyYWN0b3IubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9jb2NvYS9Nb2RpZmllcktleUV4dHJhY3Rvci5tbQkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDIzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
TW9kaWZpZXJLZXlFeHRyYWN0b3IuaCIKKworI2ltcG9ydCA8V2ViS2l0L1dlYktpdExlZ2FjeS5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworQGltcGxlbWVudGF0aW9uIE1vZGlmaWVyS2V5
RXh0cmFjdG9yCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEtleTooTlNTdHJpbmcgKiljaGFy
YWN0ZXIgbW9kaWZpZXJzOihpbnQpbW9kaWZpZXJzIGtleUxvY2F0aW9uOih1bnNpZ25lZClrZXlM
b2NhdGlvbgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgZXZlbnRDaGFyYWN0ZXIgPSBbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFN0cmluZzpjaGFyYWN0ZXJdOworICAgIGtleUNvZGUgPSAwOworICAgIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAg
ICAgICBrZXlDb2RlID0gMHg3QjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicmlnaHRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1Jp
Z2h0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
N0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ci
XSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdFOworICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4N0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAInBhZ2VVcCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1
bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NDsKKyAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHg3OTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiaG9tZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U0hvbWVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzM7
CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7Cisg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OworICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBrZXlDb2RlID0gMHg3NzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiaW5zZXJ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
SW5zZXJ0RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDcy
OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKKyAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzU7CisgICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAInByaW50U2NyZWVuIl0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBm
b3IgUHJpbnRTY3JlZW4uCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImN5cmlsbGljU21hbGxMZXR0ZXJBIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4MDQzMDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVz
IGtleSB3aXRoICJGIiBvbiBSdXNzaWFuIGxheW91dC4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gMHhGRkUzOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQjsK
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMTsKKyAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAga2V5Q29kZSA9IDB4Mzg7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImxlZnRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3
OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQTsKKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKKyAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29k
ZSA9IDB4M0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJp
Z2h0U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gMHhGRkU4OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRDsKKyAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDM1OworICAgIH0KKworICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3
aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4g
IkYxIiwuLi4sIkYyNCIpLgorICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlv
bi1rZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBp
IDw9IDI0OyBpKyspIHsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7CisgICAgICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKKyAgICAgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgMToga2V5Q29k
ZSA9IDB4N0E7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA1OiBr
ZXlDb2RlID0gMHg2MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDY6IGtleUNvZGUgPSAweDYx
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNzoga2V5Q29kZSA9IDB4NjI7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDk6IGtleUNvZGUgPSAweDY1OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUg
PSAweDZEOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMTM6IGtleUNvZGUgPSAweDY5OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6
IGtleUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAw
eDcxOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAweDZBOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTk6IGtl
eUNvZGUgPSAweDUwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVB
OyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1F
OiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlzLgorICAgIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAIlx0Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMwOworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiICJdKQorICAgICAgICBrZXlDb2RlID0g
MHgzMTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCisg
ICAgICAgIGtleUNvZGUgPSAweDI0OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiXG4iXSkKKyAgICAgICAga2V5Q29kZSA9IDB4NEM7CisgICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzM7
CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCisgICAgICAg
IGtleUNvZGUgPSAweDAwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiYiJdKQorICAgICAgICBrZXlDb2RlID0gMHgwQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDI7CisgICAgZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCisgICAgICAgIGtleUNvZGUg
PSAweDBFOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJd
KQorICAgICAgICBrZXlDb2RlID0gMHgxQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAIjoiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI7Il0pCisgICAgICAgIGtleUNvZGUgPSAweDI5
OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiLCJdKQorICAgICAg
ICBrZXlDb2RlID0gMHgyQjsKKworICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0geworICAg
ICAgICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0MywgJyonLCBu
aWx9LAorICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0
NywgTlNDbGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAorICAgICAgICB7MHgyQywgMHg0
QiwgJy8nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAg
ICAgezB4MUIsIDB4NEUsICctJywgbmlsfSwKKyAgICAgICAgezB4MTgsIDB4NTEsICc9Jywgbmls
fSwKKyAgICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKKyAgICAgICAgezB4MTIsIDB4NTMs
ICcxJywgbmlsfSwKKyAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKKyAgICAgICAgezB4
MTQsIDB4NTUsICczJywgbmlsfSwKKyAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKKyAg
ICAgICAgezB4MTcsIDB4NTcsICc1JywgbmlsfSwKKyAgICAgICAgezB4MTYsIDB4NTgsICc2Jywg
bmlsfSwKKyAgICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKKyAgICAgICAgezB4MUMsIDB4
NUIsICc4JywgbmlsfSwKKyAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKKyAgICB9Owor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytp
KSB7CisgICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAg
ICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmlu
Z10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0p
IHsKKyAgICAgICAgICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElP
Tl9OVU1QQUQqLykKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFk
S2V5Q29kZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFi
bGVbaV0ubWFjS2V5Q29kZTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENo
YXJhY3RlclN0cmluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisg
ICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdp
dGhTdHJpbmc6ZXZlbnRDaGFyYWN0ZXJdOworCisgICAgbW9kaWZpZXJGbGFncyA9IDA7CisKKyAg
ICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJ
bmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykg
eworICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0g
TlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworICNlbHNlCisgICAgICAgICBtb2RpZmllckZsYWdz
IHw9IFdlYkV2ZW50RmxhZ01hc2tMZWZ0U2hpZnRLZXk7CisgI2VuZGlmCisgICAgICAgICBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107Cisg
ICAgIH0KKworICAgIG1vZGlmaWVyRmxhZ3MgfD0gbW9kaWZpZXJzOworCisgICAgaWYgKGtleUxv
Y2F0aW9uID09IDB4MDMgLypET01fS0VZX0xPQ0FUSU9OX05VTVBBRCovKQorICAgICAgICBtb2Rp
ZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworICAgIAorICAgIHJl
dHVybiBzZWxmOworfQorCitAZW5kCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50
U2VuZGVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50
U2VuZGVyUHJveHkuaAkocmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9FdmVudFNlbmRlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDggQEAgcHVi
bGljOgogICAgIHZvaWQgbGVhcEZvcndhcmQoaW50IG1pbGxpc2Vjb25kcyk7CiAKICAgICB2b2lk
IGtleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2Nh
dGlvbik7CisgICAgdm9pZCByYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlm
aWVycywgdW5zaWduZWQgbG9jYXRpb24pOworICAgIHZvaWQgcmF3S2V5VXAoV0tTdHJpbmdSZWYg
a2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB1bnNpZ25lZCBtb3VzZUJ1dHRvbnNDdXJyZW50bHlEb3duKCkgY29uc3Qg
eyByZXR1cm4gbV9tb3VzZUJ1dHRvbnNDdXJyZW50bHlEb3duOyB9CkBAIC0xMDQsNiArMTA2LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNsaWNrQ291bnRGb3JCdXR0b24oaW50IGJ1dHRv
bik7CiAKICAgICB2b2lkIHNlbmRNb3VzZURvd25Ub1N0YXJ0UHJlc3N1cmVFdmVudHMoKTsKKwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVudW0gY2xhc3MgUHJlc3N1cmVDaGFuZ2VEaXJlY3Rp
b24geyBJbmNyZWFzaW5nLCBEZWNyZWFzaW5nIH07CiAgICAgUmV0YWluUHRyPE5TRXZlbnQ+IGJl
Z2luUHJlc3N1cmVFdmVudChpbnQgc3RhZ2UpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI4MzU4MikKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTk2LDYgKzE1
OTYsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUtleURvd25NZQogICAgIG1f
ZXZlbnRTZW5kZXJQcm94eS0+a2V5RG93bihzdHJpbmdWYWx1ZShkaWN0aW9uYXJ5LCAiS2V5Iiks
IHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJNb2RpZmllcnMiKSwgdWludDY0VmFsdWUoZGljdGlv
bmFyeSwgIkxvY2F0aW9uIikpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZl
UmF3S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIGRpY3Rp
b25hcnksIGJvb2wgc3luY2hyb25vdXMpCit7CisgICAgbV9ldmVudFNlbmRlclByb3h5LT5yYXdL
ZXlEb3duKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlv
bmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7
Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIGJvb2wgc3luY2hyb25v
dXMpCit7CisgICAgbV9ldmVudFNlbmRlclByb3h5LT5yYXdLZXlVcChzdHJpbmdWYWx1ZShkaWN0
aW9uYXJ5LCAiS2V5IiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJNb2RpZmllcnMiKSwgdWlu
dDY0VmFsdWUoZGljdGlvbmFyeSwgIkxvY2F0aW9uIikpOworfQorCiB2b2lkIFRlc3RDb250cm9s
bGVyOjpkaWRSZWNlaXZlTGl2ZURvY3VtZW50c0xpc3QoV0tBcnJheVJlZiBsaXZlRG9jdW1lbnRM
aXN0KQogewogICAgIGF1dG8gbnVtRG9jdW1lbnRzID0gV0tBcnJheUdldFNpemUobGl2ZURvY3Vt
ZW50TGlzdCk7CkBAIC0xNjUzLDYgKzE2NjMsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlk
UmVjZWl2ZU1lc3NhZ2VGcgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJSYXdL
ZXlEb3duIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJN
ZXNzYWdlTmFtZSwgIlJhd0tleVVwIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlV
cE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoZGljdGlvbmFyeSwgZmFsc2UpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3VzZVNjcm9sbEJ5IikpIHsKICAgICAgICAgICAg
IG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VTY3JvbGxCeShkb3VibGVWYWx1ZShkaWN0aW9uYXJ5
LCAiWCIpLCBkb3VibGVWYWx1ZShkaWN0aW9uYXJ5LCAiWSIpKTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTE3MDIsNiArMTcyMiwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZl
U3luY2hyb25vCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7
CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhz
dWJNZXNzYWdlTmFtZSwgIlJhd0tleURvd24iKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJh
d0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKGRpY3Rpb25hcnksIHRydWUpOworICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUs
ICJSYXdLZXlVcCIpKSB7CisgICAgICAgICAgICBkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKGRpY3Rpb25hcnksIHRydWUpOworICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICB9CisKICAgICAgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3VzZURvd24iKSkgewog
ICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3VzZURvd24odWludDY0VmFsdWUoZGlj
dGlvbmFyeSwgIkJ1dHRvbiIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiks
IHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJQb2ludGVyVHlwZSIpKTsKICAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDI4MzU4MikKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDYgKzQ0MSw4
IEBAIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBnZXRJbmplY3RlZEJ1bmRs
ZUluaXRpYWxpemF0aW9uVXNlckRhdGEoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUtleURvd25N
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rp
b25hcnksIGJvb2wgc3luY2hyb25vdXMpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0tleURvd25N
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rp
b25hcnksIGJvb2wgc3luY2hyb25vdXMpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJhd0tleVVwTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9u
YXJ5LCBib29sIHN5bmNocm9ub3VzKTsKIAogICAgIC8vIFdLQ29udGV4dENsaWVudAogICAgIHN0
YXRpYyB2b2lkIG5ldHdvcmtQcm9jZXNzRGlkQ3Jhc2goV0tDb250ZXh0UmVmLCBjb25zdCB2b2lk
Kik7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI4MzU4
MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMSwxMSArMzAxLDQxIEBAIHN0YXRp
YyBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmUKICAgICByZXR1cm4gYm9keTsKIH0K
IAorc3RhdGljIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNyZWF0ZVJhd0tl
eURvd25NZXNzYWdlQm9keShKU1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZp
ZXJzLCBpbnQgbG9jYXRpb24pCit7CisgICAgYXV0byBib2R5ID0gYWRvcHRXSyhXS011dGFibGVE
aWN0aW9uYXJ5Q3JlYXRlKCkpOworICAgIHNldFZhbHVlKGJvZHksICJTdWJNZXNzYWdlIiwgIlJh
d0tleURvd24iKTsKKyAgICBzZXRWYWx1ZShib2R5LCAiS2V5Iiwga2V5KTsKKyAgICBzZXRWYWx1
ZShib2R5LCAiTW9kaWZpZXJzIiwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShtb2RpZmllcnMpKSk7
CisgICAgc2V0VmFsdWUoYm9keSwgIkxvY2F0aW9uIiwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShs
b2NhdGlvbikpKTsKKyAgICByZXR1cm4gYm9keTsKK30KKworc3RhdGljIFdLUmV0YWluUHRyPFdL
TXV0YWJsZURpY3Rpb25hcnlSZWY+IGNyZWF0ZVJhd0tleVVwTWVzc2FnZUJvZHkoSlNTdHJpbmdS
ZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgaW50IGxvY2F0aW9uKQoreworICAg
IGF1dG8gYm9keSA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKyAgICBz
ZXRWYWx1ZShib2R5LCAiU3ViTWVzc2FnZSIsICJSYXdLZXlVcCIpOworICAgIHNldFZhbHVlKGJv
ZHksICJLZXkiLCBrZXkpOworICAgIHNldFZhbHVlKGJvZHksICJNb2RpZmllcnMiLCBhZG9wdFdL
KFdLVUludDY0Q3JlYXRlKG1vZGlmaWVycykpKTsKKyAgICBzZXRWYWx1ZShib2R5LCAiTG9jYXRp
b24iLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKGxvY2F0aW9uKSkpOworICAgIHJldHVybiBib2R5
OworfQorCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmtleURvd24oSlNTdHJpbmdSZWYg
a2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbikKIHsKICAgICBwb3N0
U3luY2hyb25vdXNQYWdlTWVzc2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVLZXlEb3duTWVzc2Fn
ZUJvZHkoa2V5LCBwYXJzZU1vZGlmaWVyQXJyYXkobW9kaWZpZXJBcnJheSksIGxvY2F0aW9uKSk7
CiB9CiAKK3ZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6cmF3S2V5RG93bihKU1N0cmluZ1Jl
ZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKQoreworICAgIHBv
c3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGNyZWF0ZVJhd0tleURvd25N
ZXNzYWdlQm9keShrZXksIHBhcnNlTW9kaWZpZXJBcnJheShtb2RpZmllckFycmF5KSwgbG9jYXRp
b24pKTsKK30KKwordm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlVcChKU1N0cmlu
Z1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKQoreworICAg
IHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGNyZWF0ZVJhd0tleVVw
TWVzc2FnZUJvZHkoa2V5LCBwYXJzZU1vZGlmaWVyQXJyYXkobW9kaWZpZXJBcnJheSksIGxvY2F0
aW9uKSk7Cit9CisKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6c2NoZWR1bGVBc3luY2hy
b25vdXNLZXlEb3duKEpTU3RyaW5nUmVmIGtleSkKIHsKICAgICBwb3N0UGFnZU1lc3NhZ2UoIkV2
ZW50U2VuZGVyIiwgY3JlYXRlS2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgMCwgMCkpOwpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgJKHJldmlzaW9uIDI4MzU4MikKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spOwogCiAgICAg
dm9pZCBrZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBp
bnQgbG9jYXRpb24pOworICAgIHZvaWQgcmF3S2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFs
dWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKTsKKyAgICB2b2lkIHJhd0tleVVwKEpT
U3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pOwog
ICAgIHZvaWQgc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKEpTU3RyaW5nUmVmIGtleSk7CiAK
ICAgICB2b2lkIHRleHRab29tSW4oKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLmlkbAkocmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQCBpbnRlcmZhY2UgRXZlbnRTZW5k
aW5nQ29udHJvbGxlciB7CiAgICAgdW5kZWZpbmVkIGxlYXBGb3J3YXJkKGxvbmcgbWlsbGlzZWNv
bmRzKTsKIAogICAgIHVuZGVmaW5lZCBrZXlEb3duKERPTVN0cmluZyBrZXksIG9iamVjdCBtb2Rp
ZmllckFycmF5LCBsb25nIGxvY2F0aW9uKTsKKyAgICB1bmRlZmluZWQgcmF3S2V5RG93bihET01T
dHJpbmcga2V5LCBvYmplY3QgbW9kaWZpZXJBcnJheSwgbG9uZyBsb2NhdGlvbik7CisgICAgdW5k
ZWZpbmVkIHJhd0tleVVwKERPTVN0cmluZyBrZXksIG9iamVjdCBtb2RpZmllckFycmF5LCBsb25n
IGxvY2F0aW9uKTsKICAgICB1bmRlZmluZWQgc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKERP
TVN0cmluZyBrZXkpOwogCiAgICAgLy8gWm9vbSBmdW5jdGlvbnMuCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2
ZW50U2VuZGVyUHJveHlJT1MubW0JKHJldmlzaW9uIDI4MzU4MikKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTc5LDYgKzc5LDE0IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93
bihXS1N0cmluZ1IKIHsKIH0KIAordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdL
U3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxv
Y2F0aW9uKQoreworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5n
UmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9u
KQoreworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkoaW50IHgsIGlu
dCB5KQogewogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDI4MzU4MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcg
QEAKIAkJODAzNEM2NjIxNDg3NjM2NDAwQUMzMkU5IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODAz
NEM2NjExNDg3NjM2NDAwQUMzMkU5IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tICov
OyB9OwogCQk4MDk3MzM4QTE0ODc0QTVBMDA4MTU2RDkgLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MDk3MzM4OTE0ODc0QTVBMDA4MTU2RDkgLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIubW0gKi87IH07CiAJCTkzNzY0MTdBMjEwRDczNzIwMEEzREFBRSAvKiBXZWJLaXRU
ZXN0UnVubmVyV2luZG93Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM3NjQxNzYyMTBENzM2MDAwQTNEQUFFIC8qIFdlYktpdFRlc3RSdW5uZXJXaW5k
b3cubW0gKi87IH07CisJCTkzQjA0MEI1MjcwN0MwMkUwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4
dHJhY3Rvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQjA0MEIzMjcwN0MwMkUwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSAqLzsg
fTsKIAkJOTNDNzg4MjMyNTBDNkMyRTAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4MUYyNTBD
NjlFNDAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwICovOyB9OwogCQk5M0M3ODgzMTI1
MEM3MTlGMDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4MzAyNTBDNzE5OTAwQzBBQTI0IC8qIEpTQmFzaWNz
LmNwcCAqLzsgfTsKIAkJOTNDNzg4MzIyNTBDNzFCNzAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODMwMjUw
QzcxOTkwMEMwQUEyNCAvKiBKU0Jhc2ljcy5jcHAgKi87IH07CkBAIC0zNzAsNiArMzcxLDggQEAK
IAkJOTMzOEQxQkUyNTBCRDlERDAwRTgyN0Y2IC8qIERpY3Rpb25hcnlGdW5jdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGljdGlvbmFyeUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5Mzc2NDE3NjIxMEQ3MzYwMDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1bm5lcldpbmRv
dy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdFRlc3RS
dW5uZXJXaW5kb3cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNzY0MTc3MjEw
RDczNjEwMEEzREFBRSAvKiBXZWJLaXRUZXN0UnVubmVyV2luZG93LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJXaW5kb3cuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMDQwQjIyNzA3QzAyRDAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5
RXh0cmFjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vZGlmaWVyS2V5
RXh0cmFjdG9yLmg7IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5
RXh0cmFjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjA0MEIzMjcwN0Mw
MkUwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1tOyBwYXRoID0gLi4v
VGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleUV4dHJhY3Rvci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNzg4MUYyNTBDNjlFNDAwQzBBQTI0IC8qIFJlZnRlc3RG
dW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVmdGVz
dEZ1bmN0aW9ucy5jcHA7IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL1JlZnRlc3RGdW5jdGlv
bnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0M3ODgyMDI1MEM2OUU0MDBD
MEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBSZWZ0ZXN0RnVuY3Rpb25zLmg7IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL1JlZnRl
c3RGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNzg4MkYyNTBD
NzE5OTAwQzBBQTI0IC8qIEpTQmFzaWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTQmFzaWNzLmg7IHBh
dGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL0JpbmRpbmdzL0pTQmFzaWNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC05NTUsNiArOTU4LDggQEAKIAkJCQlGNDRBNTMxNjIxQjg5OURB
MDBEQkI5OUMgLyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5tbSAqLywKIAkJCQlGNEMzNTc4QjIw
RTg0NDQwMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oICovLAogCQkJCUY0QzM1
NzhBMjBFODQ0NDAwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovLAorCQkJ
CTkzQjA0MEIyMjcwN0MwMkQwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5oICovLAor
CQkJCTkzQjA0MEIzMjcwN0MwMkUwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSAq
LywKIAkJCQkyRTJBNzY1QjIzNzBDOEEwMDA4RjlGRkUgLyogUGxhdGZvcm1WaWV3SGVscGVycy5o
ICovLAogCQkJCTJFMkE3NjVDMjM3MEM4QTAwMDhGOUZGRSAvKiBQbGF0Zm9ybVZpZXdIZWxwZXJz
Lm1tICovLAogCQkJCUY0MDEwQjdEMjREQTIwNDgwMEE4NzZFMiAvKiBQb3NlQXNDbGFzcy5oICov
LApAQCAtMTI0Niw2ICsxMjUxLDcgQEAKIAkJCQlBMTg1MTAzRjFCOUFFMTI5MDA3NDRBRUIgLyog
R2VvbG9jYXRpb25Qcm92aWRlck1vY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ0QTUzMTgy
MUI4OTlFNTAwREJCOTlDIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gaW4gU291cmNlcyAq
LywKIAkJCQkzMURBOEEzRDFFNzIwNUNDMDBFMURGMkYgLyogSU9TTGF5b3V0VGVzdENvbW11bmlj
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTNCMDQwQjUyNzA3QzAyRTAwNzZFOTYwIC8q
IE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNDNzg4MzIyNTBD
NzFCNzAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzNCNTUx
MUJBNzg5NjgwMDRCM0VGNCAvKiBKU1VJU2NyaXB0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjE4RTcxODFENkJDNDU2MDAyN0U1NDcgLyogSlNXcmFwcGVyLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94
eUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRT
ZW5kZXJQcm94eUd0ay5jcHAJKHJldmlzaW9uIDI4MzU4MikKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUs
NiArMjQ1LDE0IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAg
ICB3ZWJraXRXZWJWaWV3QmFzZVN5bnRoZXNpemVLZXlFdmVudCh0b1dlYktpdEdMaWJBUEkobV90
ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkpLCBLZXlFdmVudFR5
cGU6Okluc2VydCwgZ2RrS2V5U3ltLCBtb2RpZmllcnMsIFNob3VsZFRyYW5zbGF0ZUtleWJvYXJk
U3RhdGU6Ok5vKTsKIH0KIAordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3Ry
aW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0
aW9uKQoreworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVm
IGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQor
eworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bih1bnNpZ25lZCBidXR0b24s
IFdLRXZlbnRNb2RpZmllcnMgd2tNb2RpZmllcnMsIFdLU3RyaW5nUmVmIHBvaW50ZXJUeXBlKQog
ewogICAgIHVuc2lnbmVkIGdka0J1dHRvbiA9IGV2ZW50U2VuZGVyQnV0dG9uVG9HREtCdXR0b24o
YnV0dG9uKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJv
eHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5k
ZXJQcm94eS5tbQkocmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvRXZlbnRTZW5kZXJQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
I2ltcG9ydCAiRXZlbnRTZW5kZXJQcm94eS5oIgogCiAjaW1wb3J0ICJDb3JlR3JhcGhpY3NUZXN0
U1BJLmgiCisjaW1wb3J0ICJNb2RpZmllcktleUV4dHJhY3Rvci5oIgogI2ltcG9ydCAiUGxhdGZv
cm1XZWJWaWV3LmgiCiAjaW1wb3J0ICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbXBvcnQgIlRlc3RD
b250cm9sbGVyLmgiCkBAIC0yMzgsMTMgKzIzOSw2IEBAIGVudW0gTW91c2VCdXR0b24gewogICAg
IE5vTW91c2VCdXR0b24gPSAtMgogfTsKIAotc3RydWN0IEtleU1hcHBpbmdFbnRyeSB7Ci0gICAg
aW50IG1hY0tleUNvZGU7Ci0gICAgaW50IG1hY051bXBhZEtleUNvZGU7Ci0gICAgdW5pY2hhciBj
aGFyYWN0ZXI7Ci0gICAgTlNTdHJpbmcqIGNoYXJhY3Rlck5hbWU7Ci19OwotCiBzdGF0aWMgTlNF
dmVudFR5cGUgZXZlbnRUeXBlRm9yTW91c2VCdXR0b25BbmRBY3Rpb24oaW50IGJ1dHRvbiwgTW91
c2VBY3Rpb24gYWN0aW9uKQogewogICAgIHN3aXRjaCAoYnV0dG9uKSB7CkBAIC02MzIsMjAzICs2
MjYsMTggQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZChpbnQgbQogCiB2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZp
ZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCiB7Ci0gICAgTlNTdHJpbmcqIGNo
YXJhY3RlciA9IHRvV1RGU3RyaW5nKGtleSk7Ci0KLSAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0
ZXIgPSBjaGFyYWN0ZXI7Ci0gICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7Ci0gICAgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKLSAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0g
ICAgICAgIGtleUNvZGUgPSAweDdCOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJyaWdodEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
UmlnaHRBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0g
MHg3QzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJv
dyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsK
LSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0U7Ci0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHg3RDsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicGFnZVVwIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZVVw
RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc0OwotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7Ci0g
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7Ci0gICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc5OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TSG9tZUZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3
MzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsK
LSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc3OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
TlNJbnNlcnRGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4
NzI7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJd
KSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OwotICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NTsKLSAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3JlZW4iXSkgewotICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFsIGtleSBjb2Rl
IGZvciBQcmludFNjcmVlbi4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gMHgwNDMwOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzOyAvLyBTaGFy
ZXMga2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0LgotICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7Ci0gICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSAweEZGRTM7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNC
OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0U2hpZnQi
XSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUxOwotICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwot
ICAgICAgICBrZXlDb2RlID0gMHgzODsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZG
RTc7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNBOwotICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU0OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlD
b2RlID0gMHgzRTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
cmlnaHRTaGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTI7Ci0gICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNDOwotICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSAweEZGRTg7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNEOwot
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgewot
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgxQjsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAg
a2V5Q29kZSA9IDB4MzU7Ci0gICAgfQotCi0gICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3RyaW5n
IHdpdGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAoaS5l
LiAiRjEiLC4uLiwiRjI0IikuCi0gICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0
aW9uLWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgotICAgIGZvciAodW5zaWduZWQgaSA9IDE7
IGkgPD0gMjQ7IGkrKykgewotICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKLSAgICAgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOwotICAgICAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKLSAgICAgICAgICAgIHN3aXRjaCAoaSkgewotICAgICAgICAgICAgICAgIGNhc2UgMTog
a2V5Q29kZSA9IDB4N0E7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjoga2V5Q29kZSA9
IDB4Nzg7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgNToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
Nzoga2V5Q29kZSA9IDB4NjI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgODoga2V5Q29k
ZSA9IDB4NjQ7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4NjU7
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAweDZEOyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIDExOiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgMTM6IGtleUNvZGUgPSAweDY5OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE0
OiBrZXlDb2RlID0gMHg2QjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNToga2V5Q29k
ZSA9IDB4NzE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAweDZB
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE3OiBrZXlDb2RlID0gMHg0MDsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgMTk6IGtleUNvZGUgPSAweDUwOyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDIwOiBrZXlDb2RlID0gMHg1QTsgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1vc3Qga2V5
cy4KLSAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQotICAgICAgICBr
ZXlDb2RlID0gMHgzMDsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
IiAiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzE7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJcciJdKQotICAgICAgICBrZXlDb2RlID0gMHgyNDsKLSAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCi0gICAgICAgIGtleUNvZGUg
PSAweDRDOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4Il0p
Ci0gICAgICAgIGtleUNvZGUgPSAweDMzOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiYSJdKQotICAgICAgICBrZXlDb2RlID0gMHgwMDsKLSAgICBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MEI7
Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCi0gICAgICAg
IGtleUNvZGUgPSAweDAyOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiZSJdKQotICAgICAgICBrZXlDb2RlID0gMHgwRTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAIlx4MWIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MUI7Ci0gICAg
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI6Il0pCi0gICAgICAgIGtleUNv
ZGUgPSAweDI5OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiOyJd
KQotICAgICAgICBrZXlDb2RlID0gMHgyOTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAIiwiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MkI7Ci0KLSAgICBLZXlNYXBw
aW5nRW50cnkgdGFibGVbXSA9IHsKLSAgICAgICAgezB4MkYsIDB4NDEsICcuJywgbmlsfSwKLSAg
ICAgICAgezAsICAgIDB4NDMsICcqJywgbmlsfSwKLSAgICAgICAgezAsICAgIDB4NDUsICcrJywg
bmlsfSwKLSAgICAgICAgezAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXksIEAiY2xl
YXIifSwKLSAgICAgICAgezB4MkMsIDB4NEIsICcvJywgbmlsfSwKLSAgICAgICAgezAsICAgIDB4
NEMsIDMsIEAiZW50ZXIiIH0sCi0gICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5pbH0sCi0gICAg
ICAgIHsweDE4LCAweDUxLCAnPScsIG5pbH0sCi0gICAgICAgIHsweDFELCAweDUyLCAnMCcsIG5p
bH0sCi0gICAgICAgIHsweDEyLCAweDUzLCAnMScsIG5pbH0sCi0gICAgICAgIHsweDEzLCAweDU0
LCAnMicsIG5pbH0sCi0gICAgICAgIHsweDE0LCAweDU1LCAnMycsIG5pbH0sCi0gICAgICAgIHsw
eDE1LCAweDU2LCAnNCcsIG5pbH0sCi0gICAgICAgIHsweDE3LCAweDU3LCAnNScsIG5pbH0sCi0g
ICAgICAgIHsweDE2LCAweDU4LCAnNicsIG5pbH0sCi0gICAgICAgIHsweDFBLCAweDU5LCAnNycs
IG5pbH0sCi0gICAgICAgIHsweDFDLCAweDVCLCAnOCcsIG5pbH0sCi0gICAgICAgIHsweDE5LCAw
eDVDLCAnOScsIG5pbH0sCi0gICAgfTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RG
X0FSUkFZX0xFTkdUSCh0YWJsZSk7ICsraSkgewotICAgICAgICBOU1N0cmluZyogY3VycmVudENo
YXJhY3RlclN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomdGFibGVbaV0u
Y2hhcmFjdGVyIGxlbmd0aDoxXTsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOmN1cnJlbnRDaGFyYWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OnRhYmxlW2ldLmNoYXJhY3Rlck5hbWVdKSB7Ci0gICAgICAgICAgICBpZiAoa2V5TG9jYXRpb24g
PT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCi0gICAgICAgICAgICAgICAga2V5
Q29kZSA9IHRhYmxlW2ldLm1hY051bXBhZEtleUNvZGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7Ci0gICAgICAgICAgICBl
dmVudENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmc7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgIH0KLQotICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnMgPSBldmVudENoYXJhY3RlcjsKLQotICAgIGludCBtb2RpZmllckZsYWdzID0gMDsK
LQotICAgIGlmIChbY2hhcmFjdGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hhcmFjdGVyIGNoYXJhY3Rl
ckF0SW5kZXg6MF0gPj0gJ0EnICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA8PSAn
WicpIHsKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQ7
Ci0gICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJj
YXNlU3RyaW5nXTsKLSAgICB9Ci0KLSAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJG
bGFncyhtb2RpZmllcnMpOwotCi0gICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypET01fS0VZ
X0xPQ0FUSU9OX05VTVBBRCovKQotICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2Rp
ZmllckZsYWdOdW1lcmljUGFkOworICAgIE1vZGlmaWVyS2V5RXh0cmFjdG9yICptb2RpZmllcktl
eUV4dHJhY3RvciA9IFtbTW9kaWZpZXJLZXlFeHRyYWN0b3IgYWxsb2NdIGluaXRXaXRoS2V5OnRv
V1RGU3RyaW5nKGtleSkgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIGtl
eUxvY2F0aW9uOmtleUxvY2F0aW9uXTsKIAogICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQg
a2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleURvd24KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBt
b2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVudEV2ZW50VGltZSgpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2Vi
VmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQotICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgotICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVycwotICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0gICAgICAg
ICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdOworICAgICAgICBsb2NhdGlvbjpOU01h
a2VQb2ludCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5RXh0cmFjdG9y
LT5tb2RpZmllckZsYWdzCisgICAgICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVudFRp
bWUoY3VycmVudEV2ZW50VGltZSgpKQorICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRy
b2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQorICAg
ICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAg
Y2hhcmFjdGVyczptb2RpZmllcktleUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAg
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5jaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNv
ZGU6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmtleUNvZGVdOwogCiAgICAgW05TQXBwIF9zZXRDdXJy
ZW50RXZlbnQ6ZXZlbnRdOwogICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1XaW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5RG93bjpldmVudF07CkBAIC04MzYs
MTQgKzY0NSw1NCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAK
ICAgICBldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcAog
ICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncworICAgICAgICAg
ICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleUV4dHJhY3Rvci0+bW9kaWZp
ZXJGbGFncwogICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZv
ckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB3
aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2lu
ZG93KCkgd2luZG93TnVtYmVyXQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNH
cmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCi0gICAgICAgICAgICAgICAgICAgICAgICBj
aGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENo
YXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAg
ICAga2V5Q29kZTprZXlDb2RlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6bW9k
aWZpZXJLZXlFeHRyYWN0b3ItPmtleUNvZGVdOworCisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZl
bnQ6ZXZlbnRdOworICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZv
cm1XaW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnRdOworICAgIFtOU0FwcCBfc2V0
Q3VycmVudEV2ZW50Om5pbF07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93
bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBr
ZXlMb2NhdGlvbikKK3sKKyAgICBNb2RpZmllcktleUV4dHJhY3RvciAqbW9kaWZpZXJLZXlFeHRy
YWN0b3IgPSBbW01vZGlmaWVyS2V5RXh0cmFjdG9yIGFsbG9jXSBpbml0V2l0aEtleTp0b1dURlN0
cmluZyhrZXkpIG1vZGlmaWVyczpidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKSBrZXlMb2Nh
dGlvbjprZXlMb2NhdGlvbl07CisKKyAgICBOU0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IGtleUV2
ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBv
aW50KDUsIDUpCisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1v
ZGlmaWVyRmxhZ3MKKyAgICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShj
dXJyZW50RXZlbnRUaW1lKCkpCisgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxl
ci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAg
IGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFy
YWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAgICBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTpt
b2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV07CisKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRF
dmVudDpldmVudF07CisgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0
Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlEb3duOmV2ZW50XTsKKyAgICBbTlNBcHAg
X3NldEN1cnJlbnRFdmVudDpuaWxdOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tl
eVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVk
IGtleUxvY2F0aW9uKQoreworICAgIE1vZGlmaWVyS2V5RXh0cmFjdG9yICptb2RpZmllcktleUV4
dHJhY3RvciA9IFtbTW9kaWZpZXJLZXlFeHRyYWN0b3IgYWxsb2NdIGluaXRXaXRoS2V5OnRvV1RG
U3RyaW5nKGtleSkgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIGtleUxv
Y2F0aW9uOmtleUxvY2F0aW9uXTsKKworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5
RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBv
aW50KDUsIDUpCisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1v
ZGlmaWVyRmxhZ3MKKyAgICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShj
dXJyZW50RXZlbnRUaW1lKCkpCisgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxl
ci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAg
IGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFy
YWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAgICBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTpt
b2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV07CiAKICAgICBbTlNBcHAgX3NldEN1cnJlbnRF
dmVudDpldmVudF07CiAgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0
Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudF07CkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcAkocmV2
aXNpb24gMjgzNTgyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQ
cm94eVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw2ICszMTQsMTQgQEAgdm9pZCBFdmVu
dFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgICAgICBTZXRLZXlib2FyZFN0YXRl
KGtleVN0YXRlKTsKIH0KIAordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3Ry
aW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0
aW9uKQoreworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVm
IGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQor
eworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
YWRkVG91Y2hQb2ludChpbnQsIGludCkKIHsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
d3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCShyZXZpc2lvbiAyODM1ODIpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzI3LDYgKzMyNywxNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Omtl
eURvd24oV0tTdHJpbmdSCiAgICAgZnJlZShlbnRyaWVzKTsKIH0KIAordm9pZCBFdmVudFNlbmRl
clByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2Rp
ZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJv
eHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMs
IHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmFk
ZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQogewogICAgIHN0cnVjdCB3cGVfaW5wdXRfdG91Y2hf
ZXZlbnRfcmF3IHJhd0V2ZW50IHsgd3BlX2lucHV0X3RvdWNoX2V2ZW50X3R5cGVfZG93biwgc2Vj
VG9Nc1RpbWVzdGFtcChtX3RpbWUpLCBzdGF0aWNfY2FzdDxpbnQ+KG1fdG91Y2hFdmVudHMuc2l6
ZSgpKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oeCksIHN0YXRpY19jYXN0PGludDMyX3Q+KHkpIH07
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyODM1ODIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0xMC0wNSAgQmV0aCBEYWtpbiAgPGJk
YWtpbkBhcHBsZS5jb20+IGFuZCBEYW5hIEVzdHJhIDxkZXN0cmFAYXBwbGUuY29tPgorCisgICAg
ICAgIG1hY09TIGtleS1kcml2ZW4gc21vb3RoIHNjcm9sbGluZyBkb2VzIG5vdCBzdG9wIHdoZW4g
Zm9jdXMgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI4MzAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgdXNlRmxleGlibGVWaWV3cG9ydCBhbmQgRXZlbnRIYW5kbGVyRHJpdmVuU21vb3RoS2V5
Ym9hcmRTY3JvbGxpbmdFbmFibGVkIGtleXMgYXJlIFdLMiBvbmx5IAorICAgICAgICByaWdodCBu
b3csIHNvIHNraXAgdGhlIG5ldyB0ZXN0IGluIGdlbmVyYWwuCisgICAgICAgICogVGVzdEV4cGVj
dGF0aW9uczoKKworICAgICAgICBOZXcgdGVzdCB0aGF0IHZlcmlmaWVzIHRoaXMgYnVnIGlzIHJl
c29sdmVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1r
ZXlib2FyZC1zY3JvbGxpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Nj
cm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWw6IEFk
ZGVkLgorCisgICAgICAgIERvIHJ1biB0aGUgdGVzdCBmb3IgbWFjLXdrMi4gcmF3S2V5RG93biAv
IHJhd0tleVVwIGFyZSBjdXJyZW50bHkgbm90IGltcGxlbWVudGVkIAorICAgICAgICBlbHNld2hl
cmUuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCisgICAg
ICAgIE5ldyBzdXBwb3J0IGZvciByYXdLZXlEb3duIGluIG9yZGVyIHRvIHNpbXVsYXRlIGhvbGRp
bmcgdGhlIGtleSBkb3duLgorICAgICAgICAqIHJlc291cmNlcy91aS1oZWxwZXIuanM6CisgICAg
ICAgICh3aW5kb3cuVUlIZWxwZXIucmF3S2V5RG93bik6CisgICAgICAgICh3aW5kb3cuVUlIZWxw
ZXIucmF3S2V5VXApOgorCiAyMDIxLTEwLTA1ICBBeXVtaSBLb2ppbWEgIDxheXVtaV9rb2ppbWFA
YXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIF0gZmFzdC9ldmVudHMvaW9zL3JvdGF0aW9uL3Jl
c2l6ZS1pZnJhbWUtYWZ0ZXItb3JpZW50YXRpb24tY2hhbmdlLmh0bWwgaXMgY3Jhc2hpbmcvIGZh
aWxpbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI4MzU4MikKKysrIExheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAg
ZmFzdC9mb3Jtcy9lbnRlcmtleWhpbnQtYXR0cmlidXRlLXZhbHVlcwogZmFzdC9zY3JvbGxpbmcv
a2V5Ym9hcmQtc2Nyb2xsaW5nLWRpc3RhbmNlLWRvd25BcnJvdy5odG1sIFsgU2tpcCBdCiBmYXN0
L3Njcm9sbGluZy9rZXlib2FyZC1zY3JvbGxpbmctZGlzdGFuY2UtcGFnZURvd24uaHRtbCBbIFNr
aXAgXQogZmFzdC9zY3JvbGxpbmcva2V5Ym9hcmQtc2Nyb2xsaW5nLWxhc3QtdGltZXN0YW1wLmh0
bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2Fy
ZC1zY3JvbGxpbmcuaHRtbCBbIFNraXAgXQogCiAjIEhpZ2hsaWdodGluZyBtYXJrZWQgdGV4dCBy
YW5nZXMgZnJvbSBsYXlvdXQgdGVzdHMgaXMgb25seSBzdXBwb3J0ZWQgaW4gV2ViS2l0Mi4KIGVk
aXRpbmcvaW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sIFsgU2tpcCBdCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQt
c2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3Vz
aW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDYgQEAKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCitTVUNDRVNTOiBCbHVlIGZyYW1lIHN0b3BwZWQgc2NvbGxpbmcgYmVm
b3JlIHJlZCBmcmFtZQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3Vz
aW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNj
cm9sbGluZy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgRXZlbnRIYW5kbGVyRHJpdmVuU21vb3Ro
S2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS41LCB1c2VyLXNj
YWxhYmxlPW5vIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxSZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQgcmVkT2Zmc2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZC1mcmFtZScpLmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmll
dy5zY3JvbGxZOworICAgICAgICAgICAgbGV0IGJsdWVPZmZzZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYmx1ZS1mcmFtZScpLmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldy5zY3JvbGxZ
OworICAgICAgICAgICAgaWYgKHJlZE9mZnNldCA+IDE5MDApIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYmx1ZU9mZnNldCA+IDE5MDApCisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJGQUlMOiBC
bHVlIGZyYW1lIHNjcm9sbGVkIGFzIGZhciBhcyB0aGUgcmVkIGZyYW1lLiIpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIlNVQ0NFU1M6IEJsdWUgZnJh
bWUgc3RvcHBlZCBzY29sbGluZyBiZWZvcmUgcmVkIGZyYW1lIik7CisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGxldCBibHVlRnJhbWUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYmx1ZS1mcmFtZScpOworICAgICAgICAgICAgbGV0IHJlZEZyYW1lID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZC1mcmFtZScpOworICAgICAgICAgICAgbGV0IHJl
ZERvY3VtZW50ID0gcmVkRnJhbWUuY29udGVudERvY3VtZW50OworCisgICAgICAgICAgICByZWRE
b2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgc2Nyb2xsUmVkKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYmx1
ZUZyYW1lLmZvY3VzKCk7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5yYXdLZXlEb3duKCJk
b3duQXJyb3ciKTsKKyAgICAgICAgICAgIHJlZEZyYW1lLmZvY3VzKCk7CisgICAgICAgICAgICBh
d2FpdCBVSUhlbHBlci5yYXdLZXlEb3duKCJkb3duQXJyb3ciKTsKKyAgICAgICAgfQorICAgIDwv
c2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAjcGxhY2Vob2xkZXIgeworICAgICAgICB3aWR0aDog
MTAwcHg7CisgICAgICAgIGhlaWdodDogNTAwMHB4OworICAgIH0KKyAgICBpZnJhbWUgeworICAg
ICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorICAgIDwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOiAwOyIgb25sb2FkPSJydW5UZXN0
KCkiPgorICAgIDxpZnJhbWUgaWQ9ImJsdWUtZnJhbWUiIHNyY2RvYz0iPGRpdiBzdHlsZT0nd2lk
dGg6IDEwMHB4OyBoZWlnaHQ6IDIwMDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsnPjwvZGl2
PiI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBpZD0icmVkLWZyYW1lIiBzcmNkb2M9IjxkaXYgc3R5
bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAyMDAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJlZDsn
PjwvZGl2PiI+PC9pZnJhbWU+CisgICAgPGRpdiBpZD0icGxhY2Vob2xkZXIiPgorICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjgzNTgyKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1v
dGlvbi1saXYKIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1jb250cmFzdC1saXZlLXVwZGF0ZS5odG1s
IFsgUGFzcyBdCiBmYXN0L21lZGlhL21xLXByZWZlcnMtY29udHJhc3QuaHRtbCBbIFBhc3MgXQog
CitmYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5n
Lmh0bWwgWyBQYXNzIF0KKwogaHR0cC90ZXN0cy9zc2wvYXBwbGVwYXkgWyBQYXNzIF0KIAogIyBB
UFBMRV9QQVlfSU5TVEFMTE1FTlRTIHdhcyBmaXJzdCBhdmFpbGFibGUgaW4gQ2F0YWxpbmEuCklu
ZGV4OiBMYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMJKHJldmlzaW9uIDI4MzU4MikKKysrIExh
eW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTM0NCw2
ICszNDQsMzAgQEAgd2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogICAgICAgICB9
CiAgICAgfQogCisgICAgc3RhdGljIHJhd0tleURvd24oa2V5LCBtb2RpZmllcnM9W10pCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkg
eworICAgICAgICAgICAgZXZlbnRTZW5kZXIucmF3S2V5RG93bihrZXksIG1vZGlmaWVycyk7Cisg
ICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIucnVuVUlTY3JpcHQoYHVpQ29udHJvbGxlci5yYXdLZXlEb3duKCIke2tleX0iLCAke0pTT04u
c3RyaW5naWZ5KG1vZGlmaWVycyl9KTtgLCByZXNvbHZlKTsKKyAgICAgICAgfSk7CisgICAgfQor
CisgICAgc3RhdGljIHJhd0tleVVwKGtleSwgbW9kaWZpZXJzPVtdKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkpIHsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLnJhd0tleVVwKGtleSwgbW9kaWZpZXJzKTsKKyAgICAgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcg
UHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlw
dChgdWlDb250cm9sbGVyLnJhd0tleVVwKCIke2tleX0iLCAke0pTT04uc3RyaW5naWZ5KG1vZGlm
aWVycyl9KTtgLCByZXNvbHZlKTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgc3RhdGljIGtl
eURvd24oa2V5LCBtb2RpZmllcnM9W10pCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaXNXZWJL
aXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkgewo=
</data>
<flag name="commit-queue"
          id="464165"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440287</attachid>
            <date>2021-10-05 16:03:36 -0700</date>
            <delta_ts>2021-10-11 17:24:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-8.txt</filename>
            <type>text/plain</type>
            <size>82050</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzU4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEwLTA1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkgb24g
dGhlIG9sZCBGcmFtZVZpZXcgYWZ0ZXIgY2hhbmdpbmcgRnJhbWUgZm9jdXMuCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorCisgICAgICAgIENhbGwgdXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKSB3aGVuIHRoZSB3aW5kb3cgdmlzaWJpbGl0eSAvIGFjdGl2ZSBzdGF0
ZSBjaGFuZ2VzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVNj
cm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAg
ICAgICBQbHVtYmluZyB0byBnZXQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSB0
byB0aGUgU2Nyb2xsQ29udHJvbGxlciwgd2hlcmUgd2UgY2FuIHRlbGwgCisgICAgICAgIHRoZSBr
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRvIGhhbmRsZSBrZXlVcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0xMC0wNSAgQXl1bWkg
S29qaW1hICA8YXl1bWlfa29qaW1hQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
ZXZlcnRpbmcgcjI4MzMzOS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDI4MzU4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5LDcgKzM1OSw4IEBAIHZvaWQgRm9jdXND
b250cm9sbGVyOjpzZXRGb2N1c2VkRnJhbWUoRnIKICAgICBtX2ZvY3VzZWRGcmFtZSA9IG5ld0Zy
YW1lOwogCiAgICAgLy8gTm93IHRoYXQgdGhlIGZyYW1lIGlzIHVwZGF0ZWQsIGZpcmUgZXZlbnRz
IGFuZCB1cGRhdGUgdGhlIHNlbGVjdGlvbiBmb2N1c2VkIHN0YXRlcyBvZiBib3RoIGZyYW1lcy4K
LSAgICBpZiAob2xkRnJhbWUgJiYgb2xkRnJhbWUtPnZpZXcoKSkgeworICAgIGlmIChhdXRvKiBv
bGRGcmFtZVZpZXcgPSBvbGRGcmFtZSA/IG9sZEZyYW1lLT52aWV3KCkgOiBudWxscHRyKSB7Cisg
ICAgICAgIG9sZEZyYW1lVmlldy0+c3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKICAgICAgICAgb2xk
RnJhbWUtPnNlbGVjdGlvbigpLnNldEZvY3VzZWQoZmFsc2UpOwogICAgICAgICBvbGRGcmFtZS0+
ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5ibHVyRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpO
bykpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjgzNTgyKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM1OCwxMyAr
MjM1OCwzMyBAQCB2b2lkIFBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjCiAgICAg
Zm9yIChhdXRvJiBvYnNlcnZlciA6IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVycykKICAg
ICAgICAgb2JzZXJ2ZXIuYWN0aXZpdHlTdGF0ZURpZENoYW5nZShvbGRBY3Rpdml0eVN0YXRlLCBt
X2FjdGl2aXR5U3RhdGUpOwogCi0gICAgaWYgKHdhc1Zpc2libGVBbmRBY3RpdmUgIT0gaXNWaXNp
YmxlQW5kQWN0aXZlKCkpCisgICAgaWYgKHdhc1Zpc2libGVBbmRBY3RpdmUgIT0gaXNWaXNpYmxl
QW5kQWN0aXZlKCkpIHsKICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRh
dGVOb3dQbGF5aW5nSW5mb0lmTmVjZXNzYXJ5KCk7CisgICAgICAgIHN0b3BTY3JvbGxBbmltYXRp
b25zKCk7CisgICAgfQogCiAgICAgaWYgKG1fcGVyZm9ybWFuY2VNb25pdG9yKQogICAgICAgICBt
X3BlcmZvcm1hbmNlTW9uaXRvci0+YWN0aXZpdHlTdGF0ZUNoYW5nZWQob2xkQWN0aXZpdHlTdGF0
ZSwgYWN0aXZpdHlTdGF0ZSk7CiB9CiAKK3ZvaWQgUGFnZTo6c3RvcFNjcm9sbEFuaW1hdGlvbnMo
KQoreworICAgIGZvciAoYXV0byogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgYXV0byogZnJhbWVWaWV3
ID0gZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBmcmFtZVZpZXctPnN0b3BTY3JvbGxBbmltYXRpb25zKCk7CisK
KyAgICAgICAgY29uc3QgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+KiBzY3JvbGxhYmxlQXJlYXMg
PSBmcmFtZVZpZXctPnNjcm9sbGFibGVBcmVhcygpOworICAgICAgICBpZiAoIXNjcm9sbGFibGVB
cmVhcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZvciAoYXV0byYgc2Nyb2xs
YWJsZUFyZWEgOiAqc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEt
PnN0b3BTY3JvbGxBbmltYXRpb25zKCk7CisgICAgfQorfQorCiBib29sIFBhZ2U6OmlzVmlzaWJs
ZUFuZEFjdGl2ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlu
cyhBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpICYmIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhB
Y3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNp
b24gMjgzNTgyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg5Nyw2ICs4OTcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SXNWaXNpYmxlSW50ZXJu
YWwoYm9vbCk7CiAgICAgdm9pZCBzZXRJc1Zpc3VhbGx5SWRsZUludGVybmFsKGJvb2wpOwogCisg
ICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOworCiAgICAgZW51bSBTaG91bGRIaWdobGln
aHRNYXRjaGVzIHsgRG9Ob3RIaWdobGlnaHRNYXRjaGVzLCBIaWdobGlnaHRNYXRjaGVzIH07CiAg
ICAgZW51bSBTaG91bGRNYXJrTWF0Y2hlcyB7IERvTm90TWFya01hdGNoZXMsIE1hcmtNYXRjaGVz
IH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAJ
KHJldmlzaW9uIDI4MzU4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDYgKzIzNSwxMSBAQCBib29sIFNjcm9sbEFu
aW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvCiAjZW5kaWYKIH0KIAordm9pZCBTY3JvbGxBbmlt
YXRvcjo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQoreworICAgIG1fc2Nyb2xsQ29udHJvbGxlci5z
dG9wU2Nyb2xsQW5pbWF0aW9ucygpOworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJv
b2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2
ZW50JikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAko
cmV2aXNpb24gMjgzNTgyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2b2lkIHN0b3BTY3JvbGxBbmltYXRp
b25zKCk7CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgeyB9CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAJKHJldmlzaW9u
IDI4MzU4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjEzLDYgKzIxMywxMSBAQCBib29sIFNjcm9sbGFibGVBcmVhOjpo
YW5kbGVXaGVlbEV2ZW50Rm9yCiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKIH0KIAordm9pZCBT
Y3JvbGxhYmxlQXJlYTo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQoreworICAgIHNjcm9sbEFuaW1h
dG9yKCkuc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKK30KKwogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiBib29sIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hFdmVudCYgdG91Y2hFdmVudCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaAkocmV2aXNpb24gMjgzNTgyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlc25hcEFmdGVyTGF5b3V0KCk7CiAgICAgdm9pZCBkb1Bvc3RU
aHVtYk1vdmVTbmFwcGluZyhTY3JvbGxiYXJPcmllbnRhdGlvbik7CiAKKyAgICB2b2lkIHN0b3BT
Y3JvbGxBbmltYXRpb25zKCk7CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODM1ODIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg5LDYgKzg5LDEyIEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BL
ZXkKICAgICBzZXRJc0FuaW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5nKGZhbHNlKTsKIH0KIAordm9p
ZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQorewor
ICAgIGlmIChtX2lzQW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmcpCisgICAgICAgIG1fY2xpZW50
LmtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoKS0+aGFuZGxlS2V5VXBFdmVudCgpOworfQorCiBi
b29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0
aW5hdGlvbihGbG9hdFBvaW50IHN0YXJ0T2Zmc2V0LCBGbG9hdFBvaW50IGRlc3RpbmF0aW9uT2Zm
c2V0KQogewogICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgJKHJldmlz
aW9uIDI4MzU4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGJlZ2luS2V5Ym9hcmRTY3JvbGxpbmcoKTsKICAgICB2b2lkIHN0b3BLZXlib2Fy
ZFNjcm9sbGluZygpOwotICAgIAorCisgICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwor
CiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCBwZXJpb2RpY2FsbHkgYnkgdGhlIGNsaWVudC4gU3Rh
cnRlZCBieSBzdGFydEFuaW1hdGlvbkNhbGxiYWNrKCksIHN0b3BwZWQgYnkgc3RvcEFuaW1hdGlv
bkNhbGxiYWNrKCkuCiAgICAgdm9pZCBhbmltYXRpb25DYWxsYmFjayhNb25vdG9uaWNUaW1lKTsK
IApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNjAgQEAKKzIwMjEtMTAtMDUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPiBh
bmQgRGFuYSBFc3RyYSA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBtYWNPUyBrZXktZHJp
dmVuIHNtb290aCBzY3JvbGxpbmcgZG9lcyBub3Qgc3RvcCB3aGVuIGZvY3VzIGNoYW5nZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODMwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
cHVsbHMgdGhlIGNvZGUgdG8gZXh0cmFjdCBtb2RpZmllciBrZXkgaW5mb3JtYXRpb24gaXMgcHVs
bGVkIGludG8gYSBsaXR0bGUgY2xhc3MgCisgICAgICAgIGNhbGxlZCBNb2RpZmllcktleUV4dHJh
Y3RvciBpbiBUZXN0UnVubmVyU2hhcmVkLiBUaGF0IGNvZGUgaXMgbm93IHNoYXJlZCBiZXR3ZWVu
IERSVCBhbmQgV0tUUiAKKyAgICAgICAgZm9yIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMg
b2Yga2V5RG93bi4gVGhlIHBhdGNoIGFsc28gYWRkcyBzdXBwb3J0IGZvciByYXdLZXlEb3duIGFu
ZCAKKyAgICAgICAgcmF3S2V5VXAgdG8gRFJUIGFuZCBXS1RSLCBhbmQgYm90aCBvZiB0aG9zZSBh
bHNvIG5lZWQgdG8gdXNlIE1vZGlmaWVyS2V5RXh0cmFjdG9yLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAg
ICAgKCtbRXZlbnRTZW5kaW5nQ29udHJvbGxlciBpbml0aWFsaXplXSk6CisgICAgICAgICgrW0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIgaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDpdKToK
KyAgICAgICAgKCtbRXZlbnRTZW5kaW5nQ29udHJvbGxlciB3ZWJTY3JpcHROYW1lRm9yU2VsZWN0
b3I6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIga2V5RG93bjp3aXRoTW9k
aWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxl
ciByYXdLZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtF
dmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tleURvd25XcmFwcGVyOndpdGhNb2RpZmllcnM6d2l0
aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tleVVw
OndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdD
b250cm9sbGVyIHJhd0tleVVwV3JhcHBlcjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToK
KyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLmg6
IEFkZGVkLgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlFeHRy
YWN0b3IubW06IEFkZGVkLgorICAgICAgICAoLVtNb2RpZmllcktleUV4dHJhY3RvciBpbml0V2l0
aEtleTptb2RpZmllcnM6a2V5TG9jYXRpb246XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpjcmVhdGVSYXdLZXlEb3duTWVzc2FnZUJvZHkpOgorICAgICAgICAo
V1RSOjpjcmVhdGVSYXdLZXlVcE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
aW5nQ29udHJvbGxlcjo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJh
d0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0
VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94
eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVy
UHJveHkubW06CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
d2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5
VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUu
Y3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAg
ICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorCiAyMDIxLTEwLTA1ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVGVzdFdl
YktpdEFQSS5Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5EYWVtb25CYXNpY0Z1bmN0aW9uYWxpdHkg
aXMgdGltaW5nIG91dApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
ODM1ODIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDcgQEAKIAkJN0NG
RjlCQzIyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkMxMjUzM0JDMTYwMDA4MDA5RiAv
KiBUZXN0Q29tbWFuZC5jcHAgKi87IH07CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLzsgfTsKIAkJODQ2NUUyQzcwRkZBOERG
MjAwM0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ2NUUyQzYwRkZBOERGMjAwM0I4MzQyIC8qIFBpeGVs
RHVtcFN1cHBvcnQuY3BwICovOyB9OworCQk5M0IwNDBCODI3MDdDMzBGMDA3NkU5NjAgLyogTW9k
aWZpZXJLZXlFeHRyYWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0IwNDBCNzI3MDdDMzBGMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0
b3IubW0gKi87IH07CiAJCTkzQzc4ODI2MjUwQzZEM0EwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rp
b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
Qzc4ODI0MjUwQzZEMzkwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJ
OTNDNzg4MkUyNTBDNzE3MjAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODI5MjUwQzcxMzQwMEMwQUEyNCAv
KiBKU0Jhc2ljcy5jcHAgKi87IH07CiAJCUExMTU4RDU4MTg5Mjc0MEMwMDg4QzE3QiAvKiBEdW1w
UmVuZGVyVHJlZUJyb3dzZXJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTExNThENTYxODkyNzNFQjAwODhDMTdCIC8qIER1bXBSZW5kZXJUcmVl
QnJvd3NlclZpZXcubW0gKi87IH07CkBAIC0zNDcsNiArMzQ4LDggQEAKIAkJODQ2NUUyQzYwRkZB
OERGMjAwM0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBpeGVsRHVtcFN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzM1NDM1RjAzRDc1NTAyMDA4NjM1Q0UgLyogV2ViS2l0LmZyYW1ld29y
ayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBw
ZXIuZnJhbWV3b3JrOyBwYXRoID0gV2ViS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJOTM0MDk5NTQwODU0MENBRjAwN0YzQkM4IC8qIER1bXBSZW5k
ZXJUcmVlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBE
dW1wUmVuZGVyVHJlZTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTNC
MDQwQjYyNzA3QzMwRjAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmaWVyS2V5RXh0cmFjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjA0MEI3MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmll
cktleUV4dHJhY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0M3ODgyNDI1MEM2RDM5MDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZ0ZXN0RnVuY3Rpb25zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNzg4MjUyNTBDNkQzOTAwQzBBQTI0IC8qIFJlZnRl
c3RGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmdGVzdEZ1
bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0M3ODgyOTI1MEM3MTM0
MDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNpY3MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQwLDYgKzk0Myw4IEBACiAJCQkJRjQ0
QTUzMUMyMUI4OUE0NTAwREJCOTlDIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJ
CQkJRjRDMzU3ODkyMEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAq
LywKIAkJCQlGNEMzNTc4ODIwRTg0NDI3MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ci5tbSAqLywKKwkJCQk5M0IwNDBCNjI3MDdDMzBGMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRy
YWN0b3IuaCAqLywKKwkJCQk5M0IwNDBCNzI3MDdDMzBGMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlF
eHRyYWN0b3IubW0gKi8sCiAJCQkJRjQwMTBCN0EyNERBMjAwRTAwQTg3NkUyIC8qIFBvc2VBc0Ns
YXNzLmggKi8sCiAJCQkJRjQwMTBCNzkyNERBMjAwRTAwQTg3NkUyIC8qIFBvc2VBc0NsYXNzLm1t
ICovLAogCQkJKTsKQEAgLTEyNTEsNiArMTI1Niw3IEBACiAJCQkJODAwNDVBRUUxNDc3MThFNzAw
ODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMjlDRkJBMTExMjI3MzZFNjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5QkI3QzVDMUM1MDUyNzgwMDJDNTI1QiAvKiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklPUy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTkzQjA0MEI4
MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTI5Q0ZCQTJFMTIyNzNBMTAwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMEUyNEUxMEUyRDk0NTEwMDFCNkJDMiAvKiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBNUExNUYwMTZF
MTVDRDAwMEY3QzU2MSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJE
dW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRy
ZWVQYXN0ZWJvYXJkLmgiCisjaW1wb3J0ICJNb2RpZmllcktleUV4dHJhY3Rvci5oIgogI2ltcG9y
dCAiV2ViQ29yZVRlc3RTdXBwb3J0LmgiCiAjaW1wb3J0IDxXZWJLaXQvRE9NUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+CkBAIC04MSwxMyArODIsNiBAQCBlbnVt
IE1vdXNlQnV0dG9uIHsKICAgICBOb01vdXNlQnV0dG9uID0gLTIKIH07CiAKLXN0cnVjdCBLZXlN
YXBwaW5nRW50cnkgewotICAgIGludCBtYWNLZXlDb2RlOwotICAgIGludCBtYWNOdW1wYWRLZXlD
b2RlOwotICAgIHVuaWNoYXIgY2hhcmFjdGVyOwotICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXJOYW1l
OwotfTsKLQogTlNQb2ludCBsYXN0TW91c2VQb3NpdGlvbjsKIE5TUG9pbnQgbGFzdENsaWNrUG9z
aXRpb247CiBpbnQgbGFzdENsaWNrQnV0dG9uID0gTm9Nb3VzZUJ1dHRvbjsKQEAgLTIwMiw2ICsx
OTYsOCBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgQCJmb2N1cyIsCiAgICAgICAgIEAi
aW5wdXQiLAogICAgICAgICBAImtleWRvd24iLAorICAgICAgICBAInJhd2tleWRvd24iLAorICAg
ICAgICBAInJhd2tleXVwIiwKICAgICAgICAgQCJrZXlwcmVzcyIsCiAgICAgICAgIEAia2V5dXAi
LAogICAgICAgICBAImxvYWQiLApAQCAtMjQ1LDYgKzI0MSw4IEBAICsgKEJPT0wpaXNTZWxlY3Rv
ckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDoKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IoZW5hYmxlRE9NVUlFdmVudExvZ2dpbmc6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9y
ID09IEBzZWxlY3RvcihmaXJlS2V5Ym9hcmRFdmVudHNUb0VsZW1lbnQ6KQogICAgICAgICAgICAg
fHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihrZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0
aW9uOikKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IocmF3S2V5RG93bjp3
aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0g
QHNlbGVjdG9yKHJhd0tleVVwOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikKICAgICAgICAg
ICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IobGVhcEZvcndhcmQ6KQogICAgICAgICAgICAg
fHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcihtb3VzZURvd246d2l0aE1vZGlmaWVyczopCiAgICAg
ICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKG1vdXNlTW92ZVRvWDpZOikKQEAgLTMw
Niw2ICszMDQsMTAgQEAgKyAoTlNTdHJpbmcgKil3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6KAog
ICAgICAgICByZXR1cm4gQCJmaXJlS2V5Ym9hcmRFdmVudHNUb0VsZW1lbnQiOwogICAgIGlmIChh
U2VsZWN0b3IgPT0gQHNlbGVjdG9yKGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246
KSkKICAgICAgICAgcmV0dXJuIEAia2V5RG93biI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IocmF3S2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQorICAgICAgICBy
ZXR1cm4gQCJyYXdLZXlEb3duIjsKKyAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihyYXdL
ZXlVcDp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQorICAgICAgICByZXR1cm4gQCJyYXdL
ZXlVcCI7CiAgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2NoZWR1bGVBc3luY2hyb25v
dXNLZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikpCiAgICAgICAgIHJldHVybiBA
InNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93biI7CiAgICAgaWYgKGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IobGVhcEZvcndhcmQ6KSkKQEAgLTk3MiwyMDQgKzk3NCwyMyBAQCArICh2b2lkKWNsZWFy
U2F2ZWRFdmVudHMKIAogLSAodm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRo
TW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9uOih1bnNp
Z25lZCBsb25nKWxvY2F0aW9uCiB7Ci0gICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyID0gY2hh
cmFjdGVyOwotICAgIHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOwotICAgIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBr
ZXlDb2RlID0gMHg3QjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAicmlnaHRBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0QXJy
b3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0M7Ci0g
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkgewot
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdFOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4N0Q7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InBhZ2VVcCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9u
S2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NDsKLSAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgewotICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwot
ICAgICAgICBrZXlDb2RlID0gMHg3OTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiaG9tZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hvbWVG
dW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzM7Ci0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7Ci0gICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHg3NzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiaW5zZXJ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5zZXJ0
RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDcyOwotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgewotICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzU7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAw
eDFCOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzNTsKLSAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3JlZW4iXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OwotICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOwotICAgICAgICBrZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFs
IGtleSBjb2RlIGZvciBQcmludFNjcmVlbi4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgewotICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gMHgwNDMwOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgz
OyAvLyBTaGFyZXMga2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0LgotICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7Ci0gICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTM7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNv
ZGUgPSAweDNCOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJs
ZWZ0U2hpZnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUxOwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzODsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSAweEZGRTc7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNBOwotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkg
ewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU0OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHgzRTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicmlnaHRTaGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZG
RTI7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNDOwotICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweEZGRTg7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDNEOwotICAgIH0KLQotICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRo
ZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwu
Li4sIkYyNCIpLgotICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkg
bmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDI0
OyBpKyspIHsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7Ci0gICAgICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKLSAgICAgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6IGtleUNvZGUg
PSAweDdBOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4OyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IDY6IGtleUNvZGUgPSAweDYxOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDc6IGtleUNv
ZGUgPSAweDYyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAweDY1OyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEz
OiBrZXlDb2RlID0gMHg2OTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29k
ZSA9IDB4NkI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAweDcx
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2RlID0gMHg2QTsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAy
MDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCi0gICAg
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKLSAgICAgICAga2V5Q29kZSA9
IDB4MzA7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0pCi0g
ICAgICAgIGtleUNvZGUgPSAweDMxOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiXHIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MjQ7Ci0gICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQotICAgICAgICBrZXlDb2RlID0gMHg0QzsK
LSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQotICAgICAg
ICBrZXlDb2RlID0gMHgzMzsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImEiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDA7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBCOwotICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQotICAgICAgICBrZXlDb2Rl
ID0gMHgwMjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkK
LSAgICAgICAga2V5Q29kZSA9IDB4MEU7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJceDFiIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDFCOwotCi0gICAgS2V5TWFw
cGluZ0VudHJ5IHRhYmxlW10gPSB7Ci0gICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5pbH0sCi0g
ICAgICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0sCi0gICAgICAgIHswLCAgICAweDQ1LCAnKycs
IG5pbH0sCi0gICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNs
ZWFyIn0sCi0gICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCi0gICAgICAgIHswLCAgICAw
eDRDLCAzLCBAImVudGVyIiB9LAotICAgICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAotICAg
ICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAotICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBu
aWx9LAotICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAotICAgICAgICB7MHgxMywgMHg1
NCwgJzInLCBuaWx9LAotICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAotICAgICAgICB7
MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAotICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAot
ICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAotICAgICAgICB7MHgxQSwgMHg1OSwgJzcn
LCBuaWx9LAotICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAotICAgICAgICB7MHgxOSwg
MHg1QywgJzknLCBuaWx9LAotICAgIH07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdU
Rl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsKLSAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRD
aGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ld
LmNoYXJhY3RlciBsZW5ndGg6MV07Ci0gICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
Zzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgewotICAgICAgICAgICAgaWYgKGxvY2F0aW9uID09
IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQotICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJs
ZVtpXS5tYWNOdW1wYWRLZXlDb2RlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOwotICAgICAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0g
ZXZlbnRDaGFyYWN0ZXI7Ci0KLSAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7Ci0KLSAgICBpZiAo
W2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBd
ID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7Ci0jaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1v
ZGlmaWVyRmxhZ1NoaWZ0OwotI2Vsc2UKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBXZWJFdmVu
dEZsYWdNYXNrTGVmdFNoaWZ0S2V5OwotI2VuZGlmCi0gICAgICAgIGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKLSAgICB9Ci0KLSAgICBt
b2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpOwotCi0gICAgaWYg
KGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQotICAgICAgICBtb2RpZmllckZs
YWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworICAgIE1vZGlmaWVyS2V5RXh0
cmFjdG9yICptb2RpZmllcktleUV4dHJhY3RvciA9IFtbTW9kaWZpZXJLZXlFeHRyYWN0b3IgYWxs
b2NdIGluaXRXaXRoS2V5OmNoYXJhY3RlciBtb2RpZmllcnM6YnVpbGRNb2RpZmllckZsYWdzKG1v
ZGlmaWVycykga2V5TG9jYXRpb246bG9jYXRpb25dOwogCiAgICAgW1tbbWFpbkZyYW1lIGZyYW1l
Vmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5T
RXZlbnRUeXBlS2V5RG93bgogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtl
UG9pbnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZp
ZXJGbGFncworICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktl
eUV4dHJhY3Rvci0+bW9kaWZpZXJGbGFncwogICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0
YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCiAgICAgICAgICAgICAgICAgICAgICAgICB3aW5k
b3dOdW1iZXI6W1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gd2luZG93TnVtYmVyXQogICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENv
bnRleHRdCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVy
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0
ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9y
LT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKICAgICAgICAgICAgICAgICAgICAgICAgIGlz
QVJlcGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5rZXlD
b2RlXSk7CiAjZWxzZQotICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2Nd
IGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6W3NlbGYgY3Vy
cmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZl
bnRGbGFncyltb2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1
dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBp
c1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CisgICAg
YXV0byBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5
cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFy
YWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1v
ZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhp
bnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5Oihb
Y2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKICNlbmRpZgogCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMTgzLDE2ICsxMDA0LDE2IEBAIC0gKHZvaWQpa2V5
RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2kKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRU
eXBlS2V5VXAKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUs
IDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0
b3ItPm1vZGlmaWVyRmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpbc2Vs
ZiBjdXJyZW50RXZlbnRUaW1lXQogICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVy
OltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQot
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgotICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycworICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczptb2Rp
ZmllcktleUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6
Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV0pOworICAgICAgICAg
ICAgICAgICAgICAgICAga2V5Q29kZTptb2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV0pOwog
I2Vsc2UKLSAgICBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlF
dmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0g
Y2hhcmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmll
ckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5p
bCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJh
Y3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CisgICAgZXZlbnQgPSBhZG9wdE5T
KFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGlt
ZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlFeHRy
YWN0b3ItPmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmll
cktleUV4dHJhY3Rvci0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2Vi
RXZlbnRGbGFncyltb2RpZmllcktleUV4dHJhY3Rvci0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGlu
ZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFj
dGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJ
bmRleDowXSA9PSAnXHQnKV0pOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
QEAgLTEyMDksNiArMTAzMCw3NiBAQCAtICh2b2lkKWtleURvd25XcmFwcGVyOihOU1N0cmluZyAq
KWNoYXJhCiAgICAgW3NlbGYga2V5RG93bjpjaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczptb2RpZmll
cnMgd2l0aExvY2F0aW9uOmxvY2F0aW9uXTsKIH0KIAorLSAodm9pZClyYXdLZXlEb3duOihOU1N0
cmluZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmll
cnMgd2l0aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCit7CisgICAgTW9kaWZpZXJL
ZXlFeHRyYWN0b3IgKm1vZGlmaWVyS2V5RXh0cmFjdG9yID0gW1tNb2RpZmllcktleUV4dHJhY3Rv
ciBhbGxvY10gaW5pdFdpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1vZGlmaWVyRmxh
Z3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl07CisKKyAgICBbW1ttYWluRnJhbWUg
ZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CisKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5
cGU6TlNFdmVudFR5cGVLZXlEb3duCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUp
CisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxh
Z3MKKyAgICAgICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdp
bmRvd051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisg
ICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAg
ICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAg
ICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5
Q29kZTptb2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2
ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJF
dmVudEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6
bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
IG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllcktleUV4dHJhY3Rvci0+bW9kaWZpZXJG
bGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwg
a2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0
ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworI2VuZGlmCisKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07
CisjZW5kaWYKKyAgICBbW1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25k
ZXJdIGtleURvd246ZXZlbnQuZ2V0KCldOworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CisjZW5kaWYKK30KKworLSAodm9pZClyYXdL
ZXlEb3duV3JhcHBlcjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2Ny
aXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlv
bgoreworICAgIFtzZWxmIHJhd0tleURvd246Y2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6bW9kaWZp
ZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07Cit9CisKKy0gKHZvaWQpcmF3S2V5VXA6KE5TU3Ry
aW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVy
cyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KK3sKKyAgICBNb2RpZmllcktl
eUV4dHJhY3RvciAqbW9kaWZpZXJLZXlFeHRyYWN0b3IgPSBbW01vZGlmaWVyS2V5RXh0cmFjdG9y
IGFsbG9jXSBpbml0V2l0aEtleTpjaGFyYWN0ZXIgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFn
cyhtb2RpZmllcnMpIGtleUxvY2F0aW9uOmxvY2F0aW9uXTsKKworICAgIFtbW21haW5GcmFtZSBm
cmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKKworI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlw
ZTpOU0V2ZW50VHlwZUtleVVwCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisg
ICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3MK
KyAgICAgICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdpbmRv
d051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisgICAg
ICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBj
aGFyYWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAgICBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29k
ZTptb2RpZmllcktleUV4dHJhY3Rvci0+a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2ZW50
ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVu
dEtleVVwIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOm1vZGlm
aWVyS2V5RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2Rp
ZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3Mg
aXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNv
ZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNo
YXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnQuZ2V0KCldOworI2Vu
ZGlmCisgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBr
ZXlVcDpldmVudC5nZXQoKV07CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgW05TQXBw
IF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKKyNlbmRpZgorfQorCistICh2b2lkKXJhd0tleVVwV3Jh
cHBlcjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0
ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAg
IFtzZWxmIHJhd0tleVVwOmNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOm1vZGlmaWVycyB3aXRoTG9j
YXRpb246bG9jYXRpb25dOworfQorCiAtICh2b2lkKXNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93
bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICop
bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgogewogICAgIE5T
SW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFtOU0ludm9jYXRpb24gaW52b2NhdGlvbldpdGhNZXRo
b2RTaWduYXR1cmU6W0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgaW5zdGFuY2VNZXRob2RTaWduYXR1
cmVGb3JTZWxlY3RvcjpAc2VsZWN0b3Ioa2V5RG93bldyYXBwZXI6d2l0aE1vZGlmaWVyczp3aXRo
TG9jYXRpb246KV1dOwpJbmRleDogVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmll
cktleUV4dHJhY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29j
b2EvTW9kaWZpZXJLZXlFeHRyYWN0b3IuaAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0UnVu
bmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCitzdHJ1Y3QgS2V5TWFw
cGluZ0VudHJ5IHsKKyAgICBpbnQgbWFjS2V5Q29kZTsKKyAgICBpbnQgbWFjTnVtcGFkS2V5Q29k
ZTsKKyAgICB1bmljaGFyIGNoYXJhY3RlcjsKKyAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFtZTsK
K307CisKK0BpbnRlcmZhY2UgTW9kaWZpZXJLZXlFeHRyYWN0b3IgOiBOU09iamVjdCB7CitAcHVi
bGljCisgICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyOworICAgIHVuc2lnbmVkIHNob3J0IGtl
eUNvZGU7CisgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczsKKyAgICBp
bnQgbW9kaWZpZXJGbGFnczsKK30KKworLSAoaWQpaW5pdFdpdGhLZXk6KE5TU3RyaW5nICopa2V5
IG1vZGlmaWVyczooaW50KW1vZGlmaWVycyBrZXlMb2NhdGlvbjoodW5zaWduZWQpa2V5TG9jYXRp
b247CitAZW5kCkluZGV4OiBUb29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5
RXh0cmFjdG9yLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2Ev
TW9kaWZpZXJLZXlFeHRyYWN0b3IubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9jb2NvYS9Nb2RpZmllcktleUV4dHJhY3Rvci5tbQkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDIzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
TW9kaWZpZXJLZXlFeHRyYWN0b3IuaCIKKworI2ltcG9ydCA8V2ViS2l0L1dlYktpdExlZ2FjeS5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworQGltcGxlbWVudGF0aW9uIE1vZGlmaWVyS2V5
RXh0cmFjdG9yCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEtleTooTlNTdHJpbmcgKiljaGFy
YWN0ZXIgbW9kaWZpZXJzOihpbnQpbW9kaWZpZXJzIGtleUxvY2F0aW9uOih1bnNpZ25lZClrZXlM
b2NhdGlvbgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgZXZlbnRDaGFyYWN0ZXIgPSBbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFN0cmluZzpjaGFyYWN0ZXJdOworICAgIGtleUNvZGUgPSAwOworICAgIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAg
ICAgICBrZXlDb2RlID0gMHg3QjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicmlnaHRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1Jp
Z2h0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
N0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ci
XSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdFOworICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4N0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAInBhZ2VVcCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1
bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NDsKKyAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHg3OTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiaG9tZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U0hvbWVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzM7
CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7Cisg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OworICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBrZXlDb2RlID0gMHg3NzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiaW5zZXJ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
SW5zZXJ0RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDcy
OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKKyAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzU7CisgICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAInByaW50U2NyZWVuIl0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBm
b3IgUHJpbnRTY3JlZW4uCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImN5cmlsbGljU21hbGxMZXR0ZXJBIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4MDQzMDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVz
IGtleSB3aXRoICJGIiBvbiBSdXNzaWFuIGxheW91dC4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gMHhGRkUzOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQjsK
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMTsKKyAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAga2V5Q29kZSA9IDB4Mzg7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImxlZnRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3
OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQTsKKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKKyAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29k
ZSA9IDB4M0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJp
Z2h0U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gMHhGRkU4OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRDsKKyAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDM1OworICAgIH0KKworICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3
aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4g
IkYxIiwuLi4sIkYyNCIpLgorICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlv
bi1rZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBp
IDw9IDI0OyBpKyspIHsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7CisgICAgICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKKyAgICAgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgMToga2V5Q29k
ZSA9IDB4N0E7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA1OiBr
ZXlDb2RlID0gMHg2MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDY6IGtleUNvZGUgPSAweDYx
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNzoga2V5Q29kZSA9IDB4NjI7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDk6IGtleUNvZGUgPSAweDY1OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUg
PSAweDZEOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMTM6IGtleUNvZGUgPSAweDY5OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6
IGtleUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAw
eDcxOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAweDZBOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTk6IGtl
eUNvZGUgPSAweDUwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVB
OyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1F
OiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlzLgorICAgIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAIlx0Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMwOworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiICJdKQorICAgICAgICBrZXlDb2RlID0g
MHgzMTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCisg
ICAgICAgIGtleUNvZGUgPSAweDI0OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiXG4iXSkKKyAgICAgICAga2V5Q29kZSA9IDB4NEM7CisgICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzM7
CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCisgICAgICAg
IGtleUNvZGUgPSAweDAwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiYiJdKQorICAgICAgICBrZXlDb2RlID0gMHgwQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImQiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MDI7CisgICAgZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCisgICAgICAgIGtleUNvZGUg
PSAweDBFOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJd
KQorICAgICAgICBrZXlDb2RlID0gMHgxQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAIjoiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI7Il0pCisgICAgICAgIGtleUNvZGUgPSAweDI5
OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiLCJdKQorICAgICAg
ICBrZXlDb2RlID0gMHgyQjsKKworICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0geworICAg
ICAgICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0MywgJyonLCBu
aWx9LAorICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0
NywgTlNDbGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAorICAgICAgICB7MHgyQywgMHg0
QiwgJy8nLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAg
ICAgezB4MUIsIDB4NEUsICctJywgbmlsfSwKKyAgICAgICAgezB4MTgsIDB4NTEsICc9Jywgbmls
fSwKKyAgICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKKyAgICAgICAgezB4MTIsIDB4NTMs
ICcxJywgbmlsfSwKKyAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKKyAgICAgICAgezB4
MTQsIDB4NTUsICczJywgbmlsfSwKKyAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKKyAg
ICAgICAgezB4MTcsIDB4NTcsICc1JywgbmlsfSwKKyAgICAgICAgezB4MTYsIDB4NTgsICc2Jywg
bmlsfSwKKyAgICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKKyAgICAgICAgezB4MUMsIDB4
NUIsICc4JywgbmlsfSwKKyAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKKyAgICB9Owor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytp
KSB7CisgICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAg
ICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmlu
Z10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0p
IHsKKyAgICAgICAgICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElP
Tl9OVU1QQUQqLykKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFk
S2V5Q29kZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFi
bGVbaV0ubWFjS2V5Q29kZTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENo
YXJhY3RlclN0cmluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisg
ICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdp
dGhTdHJpbmc6ZXZlbnRDaGFyYWN0ZXJdOworCisgICAgbW9kaWZpZXJGbGFncyA9IDA7CisKKyAg
ICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdElu
ZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7
CisgI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5T
RXZlbnRNb2RpZmllckZsYWdTaGlmdDsKKyAjZWxzZQorICAgICAgICBtb2RpZmllckZsYWdzIHw9
IFdlYkV2ZW50RmxhZ01hc2tMZWZ0U2hpZnRLZXk7CisgI2VuZGlmCisgICAgICAgIGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICB9
CisKKyAgICBtb2RpZmllckZsYWdzIHw9IG1vZGlmaWVyczsKKworICAgIGlmIChrZXlMb2NhdGlv
biA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKKyAgICAgICAgbW9kaWZpZXJG
bGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKKyAgICAKKyAgICByZXR1cm4g
c2VsZjsKK30KKworQGVuZApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgJKHJldmlzaW9uIDI4MzU4MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZl
bnRTZW5kZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGxlYXBGb3J3YXJkKGludCBtaWxsaXNlY29uZHMpOwogCiAgICAgdm9pZCBrZXlE
b3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycywgdW5zaWduZWQgbG9jYXRpb24p
OworICAgIHZvaWQgcmF3S2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMs
IHVuc2lnbmVkIGxvY2F0aW9uKTsKKyAgICB2b2lkIHJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwg
V0tFdmVudE1vZGlmaWVycywgdW5zaWduZWQgbG9jYXRpb24pOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdW5zaWduZWQgbW91c2VCdXR0b25zQ3VycmVudGx5RG93bigpIGNvbnN0IHsgcmV0
dXJuIG1fbW91c2VCdXR0b25zQ3VycmVudGx5RG93bjsgfQpAQCAtMTA0LDYgKzEwNiw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKGludCBidXR0b24pOwog
CiAgICAgdm9pZCBzZW5kTW91c2VEb3duVG9TdGFydFByZXNzdXJlRXZlbnRzKCk7CisKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBlbnVtIGNsYXNzIFByZXNzdXJlQ2hhbmdlRGlyZWN0aW9uIHsg
SW5jcmVhc2luZywgRGVjcmVhc2luZyB9OwogICAgIFJldGFpblB0cjxOU0V2ZW50PiBiZWdpblBy
ZXNzdXJlRXZlbnQoaW50IHN0YWdlKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODM1ODIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5Niw2ICsxNTk2LDE2
IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVLZXlEb3duTWUKICAgICBtX2V2ZW50
U2VuZGVyUHJveHktPmtleURvd24oc3RyaW5nVmFsdWUoZGljdGlvbmFyeSwgIktleSIpLCB1aW50
NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnks
ICJMb2NhdGlvbiIpKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tl
eURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
LCBib29sIHN5bmNocm9ub3VzKQoreworICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+cmF3S2V5RG93
bihzdHJpbmdWYWx1ZShkaWN0aW9uYXJ5LCAiS2V5IiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnks
ICJNb2RpZmllcnMiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwgIkxvY2F0aW9uIikpOworfQor
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKFdLRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5LCBib29sIHN5bmNocm9ub3VzKQor
eworICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+cmF3S2V5VXAoc3RyaW5nVmFsdWUoZGljdGlvbmFy
eSwgIktleSIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiksIHVpbnQ2NFZh
bHVlKGRpY3Rpb25hcnksICJMb2NhdGlvbiIpKTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6
ZGlkUmVjZWl2ZUxpdmVEb2N1bWVudHNMaXN0KFdLQXJyYXlSZWYgbGl2ZURvY3VtZW50TGlzdCkK
IHsKICAgICBhdXRvIG51bURvY3VtZW50cyA9IFdLQXJyYXlHZXRTaXplKGxpdmVEb2N1bWVudExp
c3QpOwpAQCAtMTY1Myw2ICsxNjYzLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlRnIKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5RG93
biIpKSB7CisgICAgICAgICAgICBkaWRSZWNlaXZlUmF3S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoZGljdGlvbmFyeSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2Fn
ZU5hbWUsICJSYXdLZXlVcCIpKSB7CisgICAgICAgICAgICBkaWRSZWNlaXZlUmF3S2V5VXBNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKGRpY3Rpb25hcnksIGZhbHNlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VTY3JvbGxCeSIpKSB7CiAgICAgICAgICAgICBtX2V2
ZW50U2VuZGVyUHJveHktPm1vdXNlU2Nyb2xsQnkoZG91YmxlVmFsdWUoZGljdGlvbmFyeSwgIlgi
KSwgZG91YmxlVmFsdWUoZGljdGlvbmFyeSwgIlkiKSk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xNzAyLDYgKzE3MjIsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNo
cm9ubwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAg
ICAgICB9CiAKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVz
c2FnZU5hbWUsICJSYXdLZXlEb3duIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlE
b3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCB0cnVlKTsKKyAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3
S2V5VXAiKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VEb3duIikpIHsKICAgICAg
ICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VEb3duKHVpbnQ2NFZhbHVlKGRpY3Rpb25h
cnksICJCdXR0b24iKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCBzdHJp
bmdWYWx1ZShkaWN0aW9uYXJ5LCAiUG9pbnRlclR5cGUiKSk7CiAgICAgICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyODM1ODIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0MSw2ICs0NDEsOCBAQCBw
cml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0
aWFsaXphdGlvblVzZXJEYXRhKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVLZXlEb3duTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5
LCBib29sIHN5bmNocm9ub3VzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5
LCBib29sIHN5bmNocm9ub3VzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwg
Ym9vbCBzeW5jaHJvbm91cyk7CiAKICAgICAvLyBXS0NvbnRleHRDbGllbnQKICAgICBzdGF0aWMg
dm9pZCBuZXR3b3JrUHJvY2Vzc0RpZENyYXNoKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCopOwpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODM1ODIpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsMTEgKzMwMSw0MSBAQCBzdGF0aWMgV0tS
ZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlCiAgICAgcmV0dXJuIGJvZHk7CiB9CiAKK3N0
YXRpYyBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVSYXdLZXlEb3du
TWVzc2FnZUJvZHkoSlNTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywg
aW50IGxvY2F0aW9uKQoreworICAgIGF1dG8gYm9keSA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlv
bmFyeUNyZWF0ZSgpKTsKKyAgICBzZXRWYWx1ZShib2R5LCAiU3ViTWVzc2FnZSIsICJSYXdLZXlE
b3duIik7CisgICAgc2V0VmFsdWUoYm9keSwgIktleSIsIGtleSk7CisgICAgc2V0VmFsdWUoYm9k
eSwgIk1vZGlmaWVycyIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobW9kaWZpZXJzKSkpOworICAg
IHNldFZhbHVlKGJvZHksICJMb2NhdGlvbiIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobG9jYXRp
b24pKSk7CisgICAgcmV0dXJuIGJvZHk7Cit9CisKK3N0YXRpYyBXS1JldGFpblB0cjxXS011dGFi
bGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVSYXdLZXlVcE1lc3NhZ2VCb2R5KEpTU3RyaW5nUmVmIGtl
eSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGludCBsb2NhdGlvbikKK3sKKyAgICBhdXRv
IGJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisgICAgc2V0VmFs
dWUoYm9keSwgIlN1Yk1lc3NhZ2UiLCAiUmF3S2V5VXAiKTsKKyAgICBzZXRWYWx1ZShib2R5LCAi
S2V5Iiwga2V5KTsKKyAgICBzZXRWYWx1ZShib2R5LCAiTW9kaWZpZXJzIiwgYWRvcHRXSyhXS1VJ
bnQ2NENyZWF0ZShtb2RpZmllcnMpKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIkxvY2F0aW9uIiwg
YWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShsb2NhdGlvbikpKTsKKyAgICByZXR1cm4gYm9keTsKK30K
Kwogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjprZXlEb3duKEpTU3RyaW5nUmVmIGtleSwg
SlNWYWx1ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pCiB7CiAgICAgcG9zdFN5bmNo
cm9ub3VzUGFnZU1lc3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlS2V5RG93bk1lc3NhZ2VCb2R5
KGtleSwgcGFyc2VNb2RpZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOwogfQog
Cit2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleURvd24oSlNTdHJpbmdSZWYga2V5
LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbikKK3sKKyAgICBwb3N0U3lu
Y2hyb25vdXNQYWdlTWVzc2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVSYXdLZXlEb3duTWVzc2Fn
ZUJvZHkoa2V5LCBwYXJzZU1vZGlmaWVyQXJyYXkobW9kaWZpZXJBcnJheSksIGxvY2F0aW9uKSk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6cmF3S2V5VXAoSlNTdHJpbmdSZWYg
a2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbikKK3sKKyAgICBwb3N0
U3luY2hyb25vdXNQYWdlTWVzc2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVSYXdLZXlVcE1lc3Nh
Z2VCb2R5KGtleSwgcGFyc2VNb2RpZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikp
OworfQorCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNjaGVkdWxlQXN5bmNocm9ub3Vz
S2V5RG93bihKU1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgcG9zdFBhZ2VNZXNzYWdlKCJFdmVudFNl
bmRlciIsIGNyZWF0ZUtleURvd25NZXNzYWdlQm9keShrZXksIDAsIDApKTsKSW5kZXg6IFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5oCShyZXZpc2lvbiAyODM1ODIpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKIAogICAgIHZvaWQg
a2V5RG93bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxv
Y2F0aW9uKTsKKyAgICB2b2lkIHJhd0tleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVm
IG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlVcChKU1N0cmlu
Z1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKTsKICAgICB2
b2lkIHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihKU1N0cmluZ1JlZiBrZXkpOwogCiAgICAg
dm9pZCB0ZXh0Wm9vbUluKCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5pZGwJKHJldmlzaW9uIDI4MzU4MikKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDggQEAgaW50ZXJmYWNlIEV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIgewogICAgIHVuZGVmaW5lZCBsZWFwRm9yd2FyZChsb25nIG1pbGxpc2Vjb25kcyk7
CiAKICAgICB1bmRlZmluZWQga2V5RG93bihET01TdHJpbmcga2V5LCBvYmplY3QgbW9kaWZpZXJB
cnJheSwgbG9uZyBsb2NhdGlvbik7CisgICAgdW5kZWZpbmVkIHJhd0tleURvd24oRE9NU3RyaW5n
IGtleSwgb2JqZWN0IG1vZGlmaWVyQXJyYXksIGxvbmcgbG9jYXRpb24pOworICAgIHVuZGVmaW5l
ZCByYXdLZXlVcChET01TdHJpbmcga2V5LCBvYmplY3QgbW9kaWZpZXJBcnJheSwgbG9uZyBsb2Nh
dGlvbik7CiAgICAgdW5kZWZpbmVkIHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihET01TdHJp
bmcga2V5KTsKIAogICAgIC8vIFpvb20gZnVuY3Rpb25zLgpJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNl
bmRlclByb3h5SU9TLm1tCShyZXZpc2lvbiAyODM1ODIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC03OSw2ICs3OSwxNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tT
dHJpbmdSCiB7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmlu
Z1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlv
bikKK3sKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcChXS1N0cmluZ1JlZiBr
ZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sK
K30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSkK
IHsKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
ODM1ODIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBACiAJ
CTgwMzRDNjYyMTQ4NzYzNjQwMEFDMzJFOSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwMzRDNjYx
MTQ4NzYzNjQwMEFDMzJFOSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSAqLzsgfTsK
IAkJODA5NzMzOEExNDg3NEE1QTAwODE1NkQ5IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODA5NzMzODkxNDg3NEE1QTAwODE1NkQ5IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLm1tICovOyB9OwogCQk5Mzc2NDE3QTIxMEQ3MzcyMDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1
bm5lcldpbmRvdy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzNzY0MTc2MjEwRDczNjAwMEEzREFBRSAvKiBXZWJLaXRUZXN0UnVubmVyV2luZG93Lm1t
ICovOyB9OworCQk5M0IwNDBCNTI3MDdDMDJFMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0
b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Iw
NDBCMzI3MDdDMDJFMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0b3IubW0gKi87IH07CiAJ
CTkzQzc4ODIzMjUwQzZDMkUwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODFGMjUwQzY5RTQw
MEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJOTNDNzg4MzEyNTBDNzE5
RjAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQzc4ODMwMjUwQzcxOTkwMEMwQUEyNCAvKiBKU0Jhc2ljcy5jcHAg
Ki87IH07CiAJCTkzQzc4ODMyMjUwQzcxQjcwMEMwQUEyNCAvKiBKU0Jhc2ljcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M3ODgzMDI1MEM3MTk5
MDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwICovOyB9OwpAQCAtMzcwLDYgKzM3MSw4IEBACiAJCTkz
MzhEMUJFMjUwQkQ5REQwMEU4MjdGNiAvKiBEaWN0aW9uYXJ5RnVuY3Rpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERpY3Rpb25hcnlGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTM3NjQxNzYyMTBENzM2MDAwQTNEQUFFIC8qIFdlYktpdFRlc3RSdW5uZXJXaW5kb3cubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJLaXRUZXN0UnVubmVy
V2luZG93Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Mzc2NDE3NzIxMEQ3MzYx
MDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJLaXRUZXN0UnVubmVyV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzQjA0MEIyMjcwN0MwMkQwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJh
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNb2RpZmllcktleUV4dHJh
Y3Rvci5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleUV4dHJh
Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IwNDBCMzI3MDdDMDJFMDA3
NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBNb2RpZmllcktleUV4dHJhY3Rvci5tbTsgcGF0aCA9IC4uL1Rlc3RS
dW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlFeHRyYWN0b3IubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzQzc4ODFGMjUwQzY5RTQwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rp
b25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlZnRlc3RGdW5j
dGlvbnMuY3BwOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9SZWZ0ZXN0RnVuY3Rpb25zLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNzg4MjAyNTBDNjlFNDAwQzBBQTI0
IC8qIFJlZnRlc3RGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
UmVmdGVzdEZ1bmN0aW9ucy5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9SZWZ0ZXN0RnVu
Y3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzc4ODJGMjUwQzcxOTkw
MEMwQUEyNCAvKiBKU0Jhc2ljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0Jhc2ljcy5oOyBwYXRoID0g
Li4vVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU0Jhc2ljcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtOTU1LDYgKzk1OCw4IEBACiAJCQkJRjQ0QTUzMTYyMUI4OTlEQTAwREJC
OTlDIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJCQkJRjRDMzU3OEIyMEU4NDQ0
MDAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLywKIAkJCQlGNEMzNTc4QTIw
RTg0NDQwMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLywKKwkJCQk5M0Iw
NDBCMjI3MDdDMDJEMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0b3IuaCAqLywKKwkJCQk5
M0IwNDBCMzI3MDdDMDJFMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0b3IubW0gKi8sCiAJ
CQkJMkUyQTc2NUIyMzcwQzhBMDAwOEY5RkZFIC8qIFBsYXRmb3JtVmlld0hlbHBlcnMuaCAqLywK
IAkJCQkyRTJBNzY1QzIzNzBDOEEwMDA4RjlGRkUgLyogUGxhdGZvcm1WaWV3SGVscGVycy5tbSAq
LywKIAkJCQlGNDAxMEI3RDI0REEyMDQ4MDBBODc2RTIgLyogUG9zZUFzQ2xhc3MuaCAqLywKQEAg
LTEyNDYsNiArMTI1MSw3IEBACiAJCQkJQTE4NTEwM0YxQjlBRTEyOTAwNzQ0QUVCIC8qIEdlb2xv
Y2F0aW9uUHJvdmlkZXJNb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY0NEE1MzE4MjFCODk5
RTUwMERCQjk5QyAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzFEQThBM0QxRTcyMDVDQzAwRTFERjJGIC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzQjA0MEI1MjcwN0MwMkUwMDc2RTk2MCAvKiBNb2Rp
ZmllcktleUV4dHJhY3Rvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzQzc4ODMyMjUwQzcxQjcw
MEMwQUEyNCAvKiBKU0Jhc2ljcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjczQjU1MTFCQTc4
OTY4MDA0QjNFRjQgLyogSlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYxOEU3MTgxRDZCQzQ1NjAwMjdFNTQ3IC8qIEpTV3JhcHBlci5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVy
UHJveHlHdGsuY3BwCShyZXZpc2lvbiAyODM1ODIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0
NSwxNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgd2Vi
a2l0V2ViVmlld0Jhc2VTeW50aGVzaXplS2V5RXZlbnQodG9XZWJLaXRHTGliQVBJKG1fdGVzdENv
bnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpKSwgS2V5RXZlbnRUeXBlOjpJ
bnNlcnQsIGdka0tleVN5bSwgbW9kaWZpZXJzLCBTaG91bGRUcmFuc2xhdGVLZXlib2FyZFN0YXRl
OjpObyk7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1Jl
ZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikK
K3sKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcChXS1N0cmluZ1JlZiBrZXks
IFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30K
Kwogdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uLCBXS0V2
ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzLCBXS1N0cmluZ1JlZiBwb2ludGVyVHlwZSkKIHsKICAg
ICB1bnNpZ25lZCBnZGtCdXR0b24gPSBldmVudFNlbmRlckJ1dHRvblRvR0RLQnV0dG9uKGJ1dHRv
bik7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJv
eHkubW0JKHJldmlzaW9uIDI4MzU4MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2
ZW50U2VuZGVyUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBv
cnQgIkV2ZW50U2VuZGVyUHJveHkuaCIKIAogI2ltcG9ydCAiQ29yZUdyYXBoaWNzVGVzdFNQSS5o
IgorI2ltcG9ydCAiTW9kaWZpZXJLZXlFeHRyYWN0b3IuaCIKICNpbXBvcnQgIlBsYXRmb3JtV2Vi
Vmlldy5oIgogI2ltcG9ydCAiU3RyaW5nRnVuY3Rpb25zLmgiCiAjaW1wb3J0ICJUZXN0Q29udHJv
bGxlci5oIgpAQCAtMjM4LDEzICsyMzksNiBAQCBlbnVtIE1vdXNlQnV0dG9uIHsKICAgICBOb01v
dXNlQnV0dG9uID0gLTIKIH07CiAKLXN0cnVjdCBLZXlNYXBwaW5nRW50cnkgewotICAgIGludCBt
YWNLZXlDb2RlOwotICAgIGludCBtYWNOdW1wYWRLZXlDb2RlOwotICAgIHVuaWNoYXIgY2hhcmFj
dGVyOwotICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXJOYW1lOwotfTsKLQogc3RhdGljIE5TRXZlbnRU
eXBlIGV2ZW50VHlwZUZvck1vdXNlQnV0dG9uQW5kQWN0aW9uKGludCBidXR0b24sIE1vdXNlQWN0
aW9uIGFjdGlvbikKIHsKICAgICBzd2l0Y2ggKGJ1dHRvbikgewpAQCAtNjMyLDIwMyArNjI2LDE4
IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bGVhcEZvcndhcmQoaW50IG0KIAogdm9pZCBFdmVu
dFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQogewotICAgIE5TU3RyaW5nKiBjaGFyYWN0
ZXIgPSB0b1dURlN0cmluZyhrZXkpOwotCi0gICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyID0g
Y2hhcmFjdGVyOwotICAgIHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOwotICAgIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAg
ICBrZXlDb2RlID0gMHg3QjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAicmlnaHRBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0
QXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0M7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkg
ewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7Ci0gICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdFOwotICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAg
a2V5Q29kZSA9IDB4N0Q7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAInBhZ2VVcCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0
aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NDsKLSAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OwotICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OwotICAgICAgICBrZXlDb2RlID0gMHg3OTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiaG9tZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hv
bWVGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzM7Ci0g
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7Ci0gICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwot
ICAgICAgICBrZXlDb2RlID0gMHg3NzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiaW5zZXJ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5z
ZXJ0RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDcyOwot
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgewot
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKLSAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzU7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAInByaW50U2NyZWVuIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAg
a2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3Ig
UHJpbnRTY3JlZW4uCi0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImN5cmlsbGljU21hbGxMZXR0ZXJBIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4
MDQzMDsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtl
eSB3aXRoICJGIiBvbiBSdXNzaWFuIGxheW91dC4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSkgewotICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gMHhGRkUzOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzQjsKLSAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsK
LSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMTsKLSAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAg
ICAga2V5Q29kZSA9IDB4Mzg7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImxlZnRBbHQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3Owot
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzQTsKLSAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKLSAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4RkZFNDsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9
IDB4M0U7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0
U2hpZnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOwotICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzQzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gMHhGRkU4OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzRDsKLSAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKLSAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNv
ZGUgPSAweDM1OwotICAgIH0KLQotICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRo
IHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYx
IiwuLi4sIkYyNCIpLgotICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1r
ZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9
IDI0OyBpKyspIHsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7Ci0gICAgICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKLSAgICAgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
Ci0gICAgICAgICAgICBzd2l0Y2ggKGkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6IGtleUNv
ZGUgPSAweDdBOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVhazsKLSAgICAgICAg
ICAgICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIDY6IGtleUNvZGUgPSAweDYxOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDc6IGtl
eUNvZGUgPSAweDYyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAw
eDY0OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAweDY1OyBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IDEzOiBrZXlDb2RlID0gMHg2OTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNDoga2V5
Q29kZSA9IDB4NkI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAw
eDcxOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2RlID0gMHg2QTsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSAyMDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCi0g
ICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKLSAgICAgICAga2V5Q29k
ZSA9IDB4MzA7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0p
Ci0gICAgICAgIGtleUNvZGUgPSAweDMxOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiXHIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MjQ7Ci0gICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQotICAgICAgICBrZXlDb2RlID0gMHg0
QzsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQotICAg
ICAgICBrZXlDb2RlID0gMHgzMzsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImEiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDA7Ci0gICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBCOwotICAg
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQotICAgICAgICBrZXlD
b2RlID0gMHgwMjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUi
XSkKLSAgICAgICAga2V5Q29kZSA9IDB4MEU7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJceDFiIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDFCOwotICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiOiJdKQotICAgICAgICBrZXlDb2RlID0g
MHgyOTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjsiXSkKLSAg
ICAgICAga2V5Q29kZSA9IDB4Mjk7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCIsIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDJCOwotCi0gICAgS2V5TWFwcGluZ0Vu
dHJ5IHRhYmxlW10gPSB7Ci0gICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5pbH0sCi0gICAgICAg
IHswLCAgICAweDQzLCAnKicsIG5pbH0sCi0gICAgICAgIHswLCAgICAweDQ1LCAnKycsIG5pbH0s
Ci0gICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIn0s
Ci0gICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCi0gICAgICAgIHswLCAgICAweDRDLCAz
LCBAImVudGVyIiB9LAotICAgICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAotICAgICAgICB7
MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAotICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBuaWx9LAot
ICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAotICAgICAgICB7MHgxMywgMHg1NCwgJzIn
LCBuaWx9LAotICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAotICAgICAgICB7MHgxNSwg
MHg1NiwgJzQnLCBuaWx9LAotICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAotICAgICAg
ICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAotICAgICAgICB7MHgxQSwgMHg1OSwgJzcnLCBuaWx9
LAotICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAotICAgICAgICB7MHgxOSwgMHg1Qywg
JzknLCBuaWx9LAotICAgIH07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJB
WV9MRU5HVEgodGFibGUpOyArK2kpIHsKLSAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFyYWN0
ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNoYXJh
Y3RlciBsZW5ndGg6MV07Ci0gICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpj
dXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0YWJs
ZVtpXS5jaGFyYWN0ZXJOYW1lXSkgewotICAgICAgICAgICAgaWYgKGtleUxvY2F0aW9uID09IDB4
MDMgLypET01fS0VZX0xPQ0FUSU9OX05VTVBBRCovKQotICAgICAgICAgICAgICAgIGtleUNvZGUg
PSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlDb2RlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOwotICAgICAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzID0gZXZlbnRDaGFyYWN0ZXI7Ci0KLSAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7Ci0KLSAg
ICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdElu
ZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7
Ci0gICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OwotICAg
ICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0
cmluZ107Ci0gICAgfQotCi0gICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxhZ3Mo
bW9kaWZpZXJzKTsKLQotICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NB
VElPTl9OVU1QQUQqLykKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJG
bGFnTnVtZXJpY1BhZDsKKyAgICBNb2RpZmllcktleUV4dHJhY3RvciAqbW9kaWZpZXJLZXlFeHRy
YWN0b3IgPSBbW01vZGlmaWVyS2V5RXh0cmFjdG9yIGFsbG9jXSBpbml0V2l0aEtleTp0b1dURlN0
cmluZyhrZXkpIG1vZGlmaWVyczpidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKSBrZXlMb2Nh
dGlvbjprZXlMb2NhdGlvbl07CiAKICAgICBOU0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IGtleUV2
ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duCi0gICAgICAgICAgICAgICAgICAgICAgICBs
b2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZp
ZXJGbGFnczptb2RpZmllckZsYWdzCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6
YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXco
KS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnMKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTwotICAgICAgICAgICAg
ICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9p
bnQoNSwgNSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleUV4dHJhY3Rvci0+bW9k
aWZpZXJGbGFncworICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1
cnJlbnRFdmVudFRpbWUoKSkKKyAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVy
LT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KKyAgICAgICAg
Y29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAgIGNoYXJh
Y3RlcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyCisgICAgICAgIGNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOm1v
ZGlmaWVyS2V5RXh0cmFjdG9yLT5rZXlDb2RlXTsKIAogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2
ZW50OmV2ZW50XTsKICAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRm
b3JtV2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnRdOwpAQCAtODM2LDE0ICs2
NDUsNTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogCiAgICAg
ZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxh
Z3MKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVu
dFRpbWUoY3VycmVudEV2ZW50VGltZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93
TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygp
IHdpbmRvd051bWJlcl0KICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhp
Y3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFj
dGVyczpldmVudENoYXJhY3RlcgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhcmFjdGVyczptb2RpZmllcktleUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0
ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpt
b2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtl
eUNvZGU6a2V5Q29kZV07CisgICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOm1vZGlmaWVy
S2V5RXh0cmFjdG9yLT5rZXlDb2RlXTsKKworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2
ZW50XTsKKyAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2lu
ZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50XTsKKyAgICBbTlNBcHAgX3NldEN1cnJl
bnRFdmVudDpuaWxdOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24oV0tT
dHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9j
YXRpb24pCit7CisgICAgTW9kaWZpZXJLZXlFeHRyYWN0b3IgKm1vZGlmaWVyS2V5RXh0cmFjdG9y
ID0gW1tNb2RpZmllcktleUV4dHJhY3RvciBhbGxvY10gaW5pdFdpdGhLZXk6dG9XVEZTdHJpbmco
a2V5KSBtb2RpZmllcnM6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycykga2V5TG9jYXRpb246
a2V5TG9jYXRpb25dOworCisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdp
dGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1
LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5tb2RpZmll
ckZsYWdzCisgICAgICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVu
dEV2ZW50VGltZSgpKQorICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQorICAgICAgICBjb250
ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFjdGVy
czptb2RpZmllcktleUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5jaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnMKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6bW9kaWZp
ZXJLZXlFeHRyYWN0b3ItPmtleUNvZGVdOworCisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6
ZXZlbnRdOworICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1X
aW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5RG93bjpldmVudF07CisgICAgW05TQXBwIF9zZXRD
dXJyZW50RXZlbnQ6bmlsXTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcChX
S1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlM
b2NhdGlvbikKK3sKKyAgICBNb2RpZmllcktleUV4dHJhY3RvciAqbW9kaWZpZXJLZXlFeHRyYWN0
b3IgPSBbW01vZGlmaWVyS2V5RXh0cmFjdG9yIGFsbG9jXSBpbml0V2l0aEtleTp0b1dURlN0cmlu
ZyhrZXkpIG1vZGlmaWVyczpidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKSBrZXlMb2NhdGlv
bjprZXlMb2NhdGlvbl07CisKKyAgICBOU0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50
V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcAorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1
LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5tb2RpZmll
ckZsYWdzCisgICAgICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVu
dEV2ZW50VGltZSgpKQorICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQorICAgICAgICBjb250
ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFjdGVy
czptb2RpZmllcktleUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5jaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnMKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6bW9kaWZp
ZXJLZXlFeHRyYWN0b3ItPmtleUNvZGVdOwogCiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6
ZXZlbnRdOwogICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1X
aW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnRdOwpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAJKHJldmlzaW9u
IDI4MzU4MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlX
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNiArMzE0LDE0IEBAIHZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICAgICAgU2V0S2V5Ym9hcmRTdGF0ZShrZXlT
dGF0ZSk7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1Jl
ZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikK
K3sKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcChXS1N0cmluZ1JlZiBrZXks
IFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30K
KwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmFkZFRv
dWNoUG9pbnQoaW50LCBpbnQpCiB7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9F
dmVudFNlbmRlclByb3h5V1BFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAkocmV2aXNpb24gMjgzNTgyKQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNyw2ICszMjcsMTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3du
KFdLU3RyaW5nUgogICAgIGZyZWUoZW50cmllcyk7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJz
LCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojpy
YXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNp
Z25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5OjphZGRUb3Vj
aFBvaW50KGludCB4LCBpbnQgeSkKIHsKICAgICBzdHJ1Y3Qgd3BlX2lucHV0X3RvdWNoX2V2ZW50
X3JhdyByYXdFdmVudCB7IHdwZV9pbnB1dF90b3VjaF9ldmVudF90eXBlX2Rvd24sIHNlY1RvTXNU
aW1lc3RhbXAobV90aW1lKSwgc3RhdGljX2Nhc3Q8aW50PihtX3RvdWNoRXZlbnRzLnNpemUoKSks
IHN0YXRpY19jYXN0PGludDMyX3Q+KHgpLCBzdGF0aWNfY2FzdDxpbnQzMl90Pih5KSB9OwpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjgzNTgyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTAtMDUgIEJldGggRGFraW4gIDxiZGFraW5A
YXBwbGUuY29tPiBhbmQgRGFuYSBFc3RyYSA8ZGVzdHJhQGFwcGxlLmNvbT4KKworICAgICAgICBt
YWNPUyBrZXktZHJpdmVuIHNtb290aCBzY3JvbGxpbmcgZG9lcyBub3Qgc3RvcCB3aGVuIGZvY3Vz
IGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyODMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IHVzZUZsZXhpYmxlVmlld3BvcnQgYW5kIEV2ZW50SGFuZGxlckRyaXZlblNtb290aEtleWJvYXJk
U2Nyb2xsaW5nRW5hYmxlZCBrZXlzIGFyZSBXSzIgb25seSAKKyAgICAgICAgcmlnaHQgbm93LCBz
byBza2lwIHRoZSBuZXcgdGVzdCBpbiBnZW5lcmFsLgorICAgICAgICAqIFRlc3RFeHBlY3RhdGlv
bnM6CisKKyAgICAgICAgTmV3IHRlc3QgdGhhdCB2ZXJpZmllcyB0aGlzIGJ1ZyBpcyByZXNvbHZl
ZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9h
cmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxp
bmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1sOiBBZGRlZC4K
KworICAgICAgICBEbyBydW4gdGhlIHRlc3QgZm9yIG1hYy13azIuIHJhd0tleURvd24gLyByYXdL
ZXlVcCBhcmUgY3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCAKKyAgICAgICAgZWxzZXdoZXJlLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKworICAgICAgICBO
ZXcgc3VwcG9ydCBmb3IgcmF3S2V5RG93biBpbiBvcmRlciB0byBzaW11bGF0ZSBob2xkaW5nIHRo
ZSBrZXkgZG93bi4KKyAgICAgICAgKiByZXNvdXJjZXMvdWktaGVscGVyLmpzOgorICAgICAgICAo
d2luZG93LlVJSGVscGVyLnJhd0tleURvd24pOgorICAgICAgICAod2luZG93LlVJSGVscGVyLnJh
d0tleVVwKToKKwogMjAyMS0xMC0wNSAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29qaW1hQGFwcGxl
LmNvbT4KIAogICAgICAgICBbIGlPUyBdIGZhc3QvZXZlbnRzL2lvcy9yb3RhdGlvbi9yZXNpemUt
aWZyYW1lLWFmdGVyLW9yaWVudGF0aW9uLWNoYW5nZS5odG1sIGlzIGNyYXNoaW5nLyBmYWlsaW5n
LgpJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyODM1ODIpCisrKyBMYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIGZhc3Qv
Zm9ybXMvZW50ZXJrZXloaW50LWF0dHJpYnV0ZS12YWx1ZXMKIGZhc3Qvc2Nyb2xsaW5nL2tleWJv
YXJkLXNjcm9sbGluZy1kaXN0YW5jZS1kb3duQXJyb3cuaHRtbCBbIFNraXAgXQogZmFzdC9zY3Jv
bGxpbmcva2V5Ym9hcmQtc2Nyb2xsaW5nLWRpc3RhbmNlLXBhZ2VEb3duLmh0bWwgWyBTa2lwIF0K
IGZhc3Qvc2Nyb2xsaW5nL2tleWJvYXJkLXNjcm9sbGluZy1sYXN0LXRpbWVzdGFtcC5odG1sIFsg
U2tpcCBdCitmYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Ny
b2xsaW5nLmh0bWwgWyBTa2lwIF0KIAogIyBIaWdobGlnaHRpbmcgbWFya2VkIHRleHQgcmFuZ2Vz
IGZyb20gbGF5b3V0IHRlc3RzIGlzIG9ubHkgc3VwcG9ydGVkIGluIFdlYktpdDIuCiBlZGl0aW5n
L2lucHV0L2NvbXBvc2l0aW9uLWhpZ2hsaWdodHMuaHRtbCBbIFNraXAgXQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9s
bGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3RlZC50eHQJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1w
YWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw2IEBACisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorU1VDQ0VTUzogQmx1ZSBmcmFtZSBzdG9wcGVkIHNjb2xsaW5nIGJlZm9yZSBy
ZWQgZnJhbWUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1w
YWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxp
bmcuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZv
Y3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIEV2ZW50SGFuZGxlckRyaXZlblNtb290aEtleWJv
YXJkU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxtZXRh
IG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuNSwgdXNlci1zY2FsYWJs
ZT1ubyI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
UmVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgbGV0IHJlZE9mZnNldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZWQtZnJhbWUnKS5jb250ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXcuc2Ny
b2xsWTsKKyAgICAgICAgICAgIGxldCBibHVlT2Zmc2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2JsdWUtZnJhbWUnKS5jb250ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXcuc2Nyb2xsWTsKKyAg
ICAgICAgICAgIGlmIChyZWRPZmZzZXQgPiAxOTAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGJs
dWVPZmZzZXQgPiAxOTAwKQorICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiRkFJTDogQmx1ZSBm
cmFtZSBzY3JvbGxlZCBhcyBmYXIgYXMgdGhlIHJlZCBmcmFtZS4iKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJTVUNDRVNTOiBCbHVlIGZyYW1lIHN0
b3BwZWQgc2NvbGxpbmcgYmVmb3JlIHJlZCBmcmFtZSIpOworICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
YXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghd2lu
ZG93LnRlc3RSdW5uZXIgfHwgIXRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBsZXQgYmx1ZUZyYW1lID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2JsdWUtZnJhbWUnKTsKKyAgICAgICAgICAgIGxldCByZWRGcmFtZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZWQtZnJhbWUnKTsKKyAgICAgICAgICAgIGxldCByZWREb2N1
bWVudCA9IHJlZEZyYW1lLmNvbnRlbnREb2N1bWVudDsKKworICAgICAgICAgICAgcmVkRG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIHNjcm9sbFJlZCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGJsdWVGcmFt
ZS5mb2N1cygpOworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIucmF3S2V5RG93bigiZG93bkFy
cm93Iik7CisgICAgICAgICAgICByZWRGcmFtZS5mb2N1cygpOworICAgICAgICAgICAgYXdhaXQg
VUlIZWxwZXIucmF3S2V5RG93bigiZG93bkFycm93Iik7CisgICAgICAgIH0KKyAgICA8L3Njcmlw
dD4KKyAgICA8c3R5bGU+CisgICAgI3BsYWNlaG9sZGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4
OworICAgICAgICBoZWlnaHQ6IDUwMDBweDsKKyAgICB9CisgICAgaWZyYW1lIHsKKyAgICAgICAg
d2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKyAgICA8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdpbjogMDsiIG9ubG9hZD0icnVuVGVzdCgpIj4K
KyAgICA8aWZyYW1lIGlkPSJibHVlLWZyYW1lIiBzcmNkb2M9IjxkaXYgc3R5bGU9J3dpZHRoOiAx
MDBweDsgaGVpZ2h0OiAyMDAwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7Jz48L2Rpdj4iPjwv
aWZyYW1lPgorICAgIDxpZnJhbWUgaWQ9InJlZC1mcmFtZSIgc3JjZG9jPSI8ZGl2IHN0eWxlPSd3
aWR0aDogMTAwcHg7IGhlaWdodDogMjAwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48L2Rp
dj4iPjwvaWZyYW1lPgorICAgIDxkaXYgaWQ9InBsYWNlaG9sZGVyIj4KKyAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI4MzU4MikKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5
KQpAQCAtNDIsNiArNDIsOCBAQCBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24t
bGl2CiBmYXN0L21lZGlhL21xLXByZWZlcnMtY29udHJhc3QtbGl2ZS11cGRhdGUuaHRtbCBbIFBh
c3MgXQogZmFzdC9tZWRpYS9tcS1wcmVmZXJzLWNvbnRyYXN0Lmh0bWwgWyBQYXNzIF0KIAorZmFz
dC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1s
IFsgUGFzcyBdCisKIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5IFsgUGFzcyBdCiAKICMgQVBQTEVf
UEFZX0lOU1RBTExNRU5UUyB3YXMgZmlyc3QgYXZhaWxhYmxlIGluIENhdGFsaW5hLgpJbmRleDog
TGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCShyZXZpc2lvbiAyODM1ODIpCisrKyBMYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsNiArMzQ0
LDMwIEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICAgICAgfQogICAg
IH0KIAorICAgIHN0YXRpYyByYXdLZXlEb3duKGtleSwgbW9kaWZpZXJzPVtdKQorICAgIHsKKyAg
ICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkpIHsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLnJhd0tleURvd24oa2V5LCBtb2RpZmllcnMpOworICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1
blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIucmF3S2V5RG93bigiJHtrZXl9IiwgJHtKU09OLnN0cmlu
Z2lmeShtb2RpZmllcnMpfSk7YCwgcmVzb2x2ZSk7CisgICAgICAgIH0pOworICAgIH0KKworICAg
IHN0YXRpYyByYXdLZXlVcChrZXksIG1vZGlmaWVycz1bXSkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5yYXdLZXlVcChrZXksIG1vZGlmaWVycyk7CisgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFByb21p
c2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVp
Q29udHJvbGxlci5yYXdLZXlVcCgiJHtrZXl9IiwgJHtKU09OLnN0cmluZ2lmeShtb2RpZmllcnMp
fSk7YCwgcmVzb2x2ZSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIHN0YXRpYyBrZXlEb3du
KGtleSwgbW9kaWZpZXJzPVtdKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0Migp
IHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkpIHsK
</data>
<flag name="commit-queue"
          id="464167"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440864</attachid>
            <date>2021-10-11 17:24:13 -0700</date>
            <delta_ts>2021-10-11 20:28:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>36251</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzkwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEwLTExICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkgb24g
dGhlIG9sZCBGcmFtZVZpZXcgYWZ0ZXIgY2hhbmdpbmcgRnJhbWUgZm9jdXMuCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorCisgICAgICAgIENhbGwgdXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKSB3aGVuIHRoZSB3aW5kb3cgdmlzaWJpbGl0eSAvIGFjdGl2ZSBzdGF0
ZSBjaGFuZ2VzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVNj
cm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAg
ICAgICBQbHVtYmluZyB0byBnZXQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSB0
byB0aGUgU2Nyb2xsQ29udHJvbGxlciwgd2hlcmUgd2UgY2FuIHRlbGwgCisgICAgICAgIHRoZSBr
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRvIGhhbmRsZSBrZXlVcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0xMC0xMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByZXBhcmUg
dG8gc3dpdGNoIGZyb20gV1RGOjpWYXJpYW50IHRvIHN0ZDo6dmFyaWFudApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgzOTA2KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTksNyArMzU5LDggQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRGcmFtZShGcgog
ICAgIG1fZm9jdXNlZEZyYW1lID0gbmV3RnJhbWU7CiAKICAgICAvLyBOb3cgdGhhdCB0aGUgZnJh
bWUgaXMgdXBkYXRlZCwgZmlyZSBldmVudHMgYW5kIHVwZGF0ZSB0aGUgc2VsZWN0aW9uIGZvY3Vz
ZWQgc3RhdGVzIG9mIGJvdGggZnJhbWVzLgotICAgIGlmIChvbGRGcmFtZSAmJiBvbGRGcmFtZS0+
dmlldygpKSB7CisgICAgaWYgKGF1dG8qIG9sZEZyYW1lVmlldyA9IG9sZEZyYW1lID8gb2xkRnJh
bWUtPnZpZXcoKSA6IG51bGxwdHIpIHsKKyAgICAgICAgb2xkRnJhbWVWaWV3LT5zdG9wU2Nyb2xs
QW5pbWF0aW9ucygpOwogICAgICAgICBvbGRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0Rm9jdXNlZChm
YWxzZSk7CiAgICAgICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCShyZXZpc2lvbiAyODM5MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzU4LDEzICsyMzU4LDMzIEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZp
dHlTdGF0ZShPcHRpb25TZXQ8QWMKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9hY3Rpdml0
eVN0YXRlQ2hhbmdlT2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci5hY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKG9sZEFjdGl2aXR5U3RhdGUsIG1fYWN0aXZpdHlTdGF0ZSk7CiAKLSAgICBpZiAod2Fz
VmlzaWJsZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkKKyAgICBpZiAod2FzVmlz
aWJsZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkgewogICAgICAgICBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3NhcnkoKTsK
KyAgICAgICAgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKyAgICB9CiAKICAgICBpZiAobV9wZXJm
b3JtYW5jZU1vbml0b3IpCiAgICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5hY3Rpdml0eVN0
YXRlQ2hhbmdlZChvbGRBY3Rpdml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlKTsKIH0KIAordm9pZCBQ
YWdlOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucygpCit7CisgICAgZm9yIChhdXRvKiBmcmFtZSA9ICZt
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkg
eworICAgICAgICBhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOworICAgICAgICBpZiAo
IWZyYW1lVmlldykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZyYW1lVmlldy0+
c3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKworICAgICAgICBjb25zdCBIYXNoU2V0PFNjcm9sbGFi
bGVBcmVhKj4qIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFyZWFzKCk7
CisgICAgICAgIGlmICghc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgZm9yIChhdXRvJiBzY3JvbGxhYmxlQXJlYSA6ICpzY3JvbGxhYmxlQXJlYXMpCisg
ICAgICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKyAgICB9
Cit9CisKIGJvb2wgUGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgJiYg
bV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODM5MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODk3LDYgKzg5Nyw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRJc1Zpc2libGVJbnRlcm5hbChib29sKTsKICAgICB2b2lkIHNldElzVmlzdWFs
bHlJZGxlSW50ZXJuYWwoYm9vbCk7CiAKKyAgICB2b2lkIHN0b3BTY3JvbGxBbmltYXRpb25zKCk7
CisKICAgICBlbnVtIFNob3VsZEhpZ2hsaWdodE1hdGNoZXMgeyBEb05vdEhpZ2hsaWdodE1hdGNo
ZXMsIEhpZ2hsaWdodE1hdGNoZXMgfTsKICAgICBlbnVtIFNob3VsZE1hcmtNYXRjaGVzIHsgRG9O
b3RNYXJrTWF0Y2hlcywgTWFya01hdGNoZXMgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAkocmV2aXNpb24gMjgzOTA2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQs
NiArMjM0LDExIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY28KICNl
bmRpZgogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucygpCit7
CisgICAgbV9zY3JvbGxDb250cm9sbGVyLnN0b3BTY3JvbGxBbmltYXRpb25zKCk7Cit9CisKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlVG91Y2hF
dmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCShyZXZpc2lvbiAyODM5MDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4
NSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KIAor
ICAgIHZvaWQgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKyAgICAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlKSB7IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmNwcAkocmV2aXNpb24gMjgzOTA2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNiArMjE5LDEx
IEBAIGJvb2wgU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3IKICAgICByZXR1cm4g
aGFuZGxlZEV2ZW50OwogfQogCit2b2lkIFNjcm9sbGFibGVBcmVhOjpzdG9wU2Nyb2xsQW5pbWF0
aW9ucygpCit7CisgICAgc2Nyb2xsQW5pbWF0b3IoKS5zdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwor
fQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJvb2wgU2Nyb2xsYWJsZUFyZWE6OmhhbmRs
ZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiB0b3VjaEV2ZW50KQogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCShyZXZpc2lvbiAyODM5
MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVzbmFwQWZ0ZXJM
YXlvdXQoKTsKICAgICB2b2lkIGRvUG9zdFRodW1iTW92ZVNuYXBwaW5nKFNjcm9sbGJhck9yaWVu
dGF0aW9uKTsKIAorICAgIHZvaWQgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKwogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3Qg
UGxhdGZvcm1Ub3VjaEV2ZW50Jik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDI4MzkwNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsMTIgQEAgdm9pZCBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcEtleQogICAgIHNldElzQW5pbWF0aW5nS2V5Ym9hcmRT
Y3JvbGxpbmcoZmFsc2UpOwogfQogCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpz
dG9wU2Nyb2xsQW5pbWF0aW9ucygpCit7CisgICAgaWYgKG1faXNBbmltYXRpbmdLZXlib2FyZFNj
cm9sbGluZykKKyAgICAgICAgbV9jbGllbnQua2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcigpLT5o
YW5kbGVLZXlVcEV2ZW50KCk7Cit9CisKIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OnN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKEZsb2F0UG9pbnQgc3RhcnRPZmZzZXQs
IEZsb2F0UG9pbnQgZGVzdGluYXRpb25PZmZzZXQpCiB7CiAgICAgaWYgKG1fY3VycmVudEFuaW1h
dGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMjgzOTA2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQxLDcgKzE0MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5LZXlib2FyZFNjcm9sbGlu
ZygpOwogICAgIHZvaWQgc3RvcEtleWJvYXJkU2Nyb2xsaW5nKCk7Ci0gICAgCisKKyAgICB2b2lk
IHN0b3BTY3JvbGxBbmltYXRpb25zKCk7CisKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHBlcmlv
ZGljYWxseSBieSB0aGUgY2xpZW50LiBTdGFydGVkIGJ5IHN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2so
KSwgc3RvcHBlZCBieSBzdG9wQW5pbWF0aW9uQ2FsbGJhY2soKS4KICAgICB2b2lkIGFuaW1hdGlv
bkNhbGxiYWNrKE1vbm90b25pY1RpbWUpOwogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODM5NTMpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MSBAQAorMjAyMS0xMC0xMSAgQmV0aCBE
YWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+IGFuZCBEYW5hIEVzdHJhIDxkZXN0cmFAYXBwbGUuY29t
PgorCisgICAgICAgIG1hY09TIGtleS1kcml2ZW4gc21vb3RoIHNjcm9sbGluZyBkb2VzIG5vdCBz
dG9wIHdoZW4gZm9jdXMgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI4MzAyCisKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcmF3S2V5VXAgYW5k
IHJhd0tleURvd24gdG8gdGhlIG1hY09TIHZlcnNpb25zIG9mIFdLVFIgYW5kIERSVC4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAg
ICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGluaXRpYWxpemVdKToKKyAgICAgICAgKCtb
RXZlbnRTZW5kaW5nQ29udHJvbGxlciBpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0Ol0p
OgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIHdlYlNjcmlwdE5hbWVGb3JTZWxl
Y3RvcjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciByYXdLZXlEb3duOndp
dGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250
cm9sbGVyIHJhd0tleURvd25XcmFwcGVyOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgor
ICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tleVVwOndpdGhNb2RpZmllcnM6
d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tl
eVVwV3JhcHBlcjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OmNyZWF0ZVJhd0tleURvd25NZXNzYWdlQm9keSk6
CisgICAgICAgIChXVFI6OmNyZWF0ZVJhd0tleVVwTWVzc2FnZUJvZHkpOgorICAgICAgICAoV1RS
OjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW06
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24pOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpk
aWRSZWNlaXZlUmF3S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGVyUHJveHk6OnJhd0tleURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpy
YXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94
eS5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcDoKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRl
clByb3h5V1BFLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93
bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKwogMjAyMS0x
MC0xMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2J1
aWxkLWltYWdlZGlmZl0gQnVpbGQgdW5pdmVyc2FsIGJpbmFyaWVzIGJ5IGRlZmF1bHQKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVy
Lm1tCShyZXZpc2lvbiAyODM5MDYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5Niw4IEBAICsg
KHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBAImZvY3VzIiwKICAgICAgICAgQCJpbnB1dCIsCiAg
ICAgICAgIEAia2V5ZG93biIsCisgICAgICAgIEAicmF3a2V5ZG93biIsCisgICAgICAgIEAicmF3
a2V5dXAiLAogICAgICAgICBAImtleXByZXNzIiwKICAgICAgICAgQCJrZXl1cCIsCiAgICAgICAg
IEAibG9hZCIsCkBAIC0yMzksNiArMjQxLDggQEAgKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRG
cm9tV2ViU2NyaXB0OgogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihlbmFi
bGVET01VSUV2ZW50TG9nZ2luZzopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVj
dG9yKGZpcmVLZXlib2FyZEV2ZW50c1RvRWxlbWVudDopCiAgICAgICAgICAgICB8fCBhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KQorICAg
ICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihyYXdLZXlEb3duOndpdGhNb2RpZmll
cnM6d2l0aExvY2F0aW9uOikKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
cmF3S2V5VXA6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KQogICAgICAgICAgICAgfHwgYVNl
bGVjdG9yID09IEBzZWxlY3RvcihsZWFwRm9yd2FyZDopCiAgICAgICAgICAgICB8fCBhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKG1vdXNlRG93bjp3aXRoTW9kaWZpZXJzOikKICAgICAgICAgICAgIHx8
IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IobW91c2VNb3ZlVG9YOlk6KQpAQCAtMzAwLDYgKzMwNCwx
MCBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjooCiAgICAgICAgIHJl
dHVybiBAImZpcmVLZXlib2FyZEV2ZW50c1RvRWxlbWVudCI7CiAgICAgaWYgKGFTZWxlY3RvciA9
PSBAc2VsZWN0b3Ioa2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQogICAgICAg
ICByZXR1cm4gQCJrZXlEb3duIjsKKyAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihyYXdL
ZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikpCisgICAgICAgIHJldHVybiBAInJh
d0tleURvd24iOworICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tleVVwOndpdGhN
b2RpZmllcnM6d2l0aExvY2F0aW9uOikpCisgICAgICAgIHJldHVybiBAInJhd0tleVVwIjsKICAg
ICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd246
d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkKICAgICAgICAgcmV0dXJuIEAic2NoZWR1bGVB
c3luY2hyb25vdXNLZXlEb3duIjsKICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihsZWFw
Rm9yd2FyZDopKQpAQCAtMTAyMiw2ICsxMDMwLDc3IEBAIC0gKHZvaWQpa2V5RG93bldyYXBwZXI6
KE5TU3RyaW5nICopY2hhcmEKICAgICBbc2VsZiBrZXlEb3duOmNoYXJhY3RlciB3aXRoTW9kaWZp
ZXJzOm1vZGlmaWVycyB3aXRoTG9jYXRpb246bG9jYXRpb25dOwogfQogCisKKy0gKHZvaWQpcmF3
S2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2Jq
ZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgorewor
ICAgIFJldGFpblB0cjxNb2RpZmllcktleXM+IG1vZGlmaWVyS2V5cyA9IFtNb2RpZmllcktleXMg
bW9kaWZpZXJLZXlzV2l0aEtleTpjaGFyYWN0ZXIgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFn
cyhtb2RpZmllcnMpIGtleUxvY2F0aW9uOmxvY2F0aW9uXTsKKworICAgIFtbW21haW5GcmFtZSBm
cmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKKworI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlw
ZTpOU0V2ZW50VHlwZUtleURvd24KKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkK
KyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MKKyAgICAg
ICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdpbmRvd051bWJl
cjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNv
bnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0
ZXJzOm1vZGlmaWVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIuZ2V0KCkKKyAgICAgICAgY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzLmdldCgpCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOm1vZGlmaWVy
S2V5cy0+a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2
ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1w
OltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENo
YXJhY3Rlci5nZXQoKSBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5j
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdz
KW1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3
aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5k
ZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0p
OworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1
cnJlbnRFdmVudDpldmVudC5nZXQoKV07CisjZW5kaWYKKyAgICBbW1tbbWFpbkZyYW1lIHdlYlZp
ZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnQuZ2V0KCldOworI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07Cisj
ZW5kaWYKK30KKworLSAodm9pZClyYXdLZXlEb3duV3JhcHBlcjooTlNTdHJpbmcgKiljaGFyYWN0
ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlv
bjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAgIFtzZWxmIHJhd0tleURvd246Y2hhcmFj
dGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07Cit9CisK
Ky0gKHZvaWQpcmF3S2V5VXA6KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdl
YlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9j
YXRpb24KK3sKKyAgICBSZXRhaW5QdHI8TW9kaWZpZXJLZXlzPiBtb2RpZmllcktleXMgPSBbTW9k
aWZpZXJLZXlzIG1vZGlmaWVyS2V5c1dpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1v
ZGlmaWVyRmxhZ3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl07CisKKyAgICBbW1tt
YWluRnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CisKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2
ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcAorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2lu
dCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFn
cworICAgICAgICB0aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KKyAgICAgICAgd2lu
ZG93TnVtYmVyOltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KKyAg
ICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAg
IGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQorICAgICAgICBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnMuZ2V0KCkKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6
bW9kaWZpZXJLZXlzLT5rZXlDb2RlXSk7CisjZWxzZQorICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5T
KFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGlt
ZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5l
dmVudENoYXJhY3Rlci5nZXQoKSBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJL
ZXlzLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkgbW9kaWZpZXJzOihXZWJFdmVu
dEZsYWdzKW1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxh
Z3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3Rl
ckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAn
XHQnKV0pOworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAg
X3NldEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07CisjZW5kaWYKKyAgICBbW1tbbWFpbkZyYW1l
IHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50LmdldCgpXTsKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxd
OworI2VuZGlmCit9CisKKy0gKHZvaWQpcmF3S2V5VXBXcmFwcGVyOihOU1N0cmluZyAqKWNoYXJh
Y3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0
aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCit7CisgICAgW3NlbGYgcmF3S2V5VXA6Y2hhcmFj
dGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07Cit9CisK
IC0gKHZvaWQpc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3Rl
ciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9u
Oih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCiB7CiAgICAgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9u
ID0gW05TSW52b2NhdGlvbiBpbnZvY2F0aW9uV2l0aE1ldGhvZFNpZ25hdHVyZTpbRXZlbnRTZW5k
aW5nQ29udHJvbGxlciBpbnN0YW5jZU1ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yOkBzZWxlY3Rv
cihrZXlEb3duV3JhcHBlcjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopXV07CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAkocmV2aXNpb24gMjgzOTA2
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDYgKzcwLDggQEAgcHVibGljOgogICAgIHZvaWQgbGVhcEZvcndhcmQoaW50
IG1pbGxpc2Vjb25kcyk7CiAKICAgICB2b2lkIGtleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2
ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlEb3duKFdL
U3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycywgdW5zaWduZWQgbG9jYXRpb24pOworICAg
IHZvaWQgcmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25l
ZCBsb2NhdGlvbik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB1bnNpZ25lZCBtb3VzZUJ1
dHRvbnNDdXJyZW50bHlEb3duKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZUJ1dHRvbnNDdXJyZW50
bHlEb3duOyB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMjgzOTA2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTYsNiArMTU5NiwxNiBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjpkaWRSZWNlaXZlS2V5RG93bk1lCiAgICAgbV9ldmVudFNlbmRlclByb3h5LT5r
ZXlEb3duKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlv
bmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7
CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJv
bm91cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tleURvd24oc3RyaW5nVmFsdWUo
ZGljdGlvbmFyeSwgIktleSIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiks
IHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJMb2NhdGlvbiIpKTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0Rp
Y3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2ZW50
U2VuZGVyUHJveHktPnJhd0tleVVwKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWlu
dDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5
LCAiTG9jYXRpb24iKSk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVMaXZl
RG9jdW1lbnRzTGlzdChXS0FycmF5UmVmIGxpdmVEb2N1bWVudExpc3QpCiB7CiAgICAgYXV0byBu
dW1Eb2N1bWVudHMgPSBXS0FycmF5R2V0U2l6ZShsaXZlRG9jdW1lbnRMaXN0KTsKQEAgLTE2NTMs
NiArMTY2MywxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZyCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tleURvd24iKSkgeworICAgICAg
ICAgICAgZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKGRpY3Rp
b25hcnksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5
VXAiKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShkaWN0aW9uYXJ5LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1
Yk1lc3NhZ2VOYW1lLCAiTW91c2VTY3JvbGxCeSIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2Vu
ZGVyUHJveHktPm1vdXNlU2Nyb2xsQnkoZG91YmxlVmFsdWUoZGljdGlvbmFyeSwgIlgiKSwgZG91
YmxlVmFsdWUoZGljdGlvbmFyeSwgIlkiKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzEy
LDYgKzE3MzIsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ubwog
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9
CiAKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5h
bWUsICJSYXdLZXlEb3duIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlEb3duTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCB0cnVlKTsKKyAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5VXAi
KSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShkaWN0aW9uYXJ5LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihudWxscHRyKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VNb3ZlVG8iKSkgewogICAgICAgICAg
ICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3VzZU1vdmVUbyhkb3VibGVWYWx1ZShkaWN0aW9uYXJ5
LCAiWCIpLCBkb3VibGVWYWx1ZShkaWN0aW9uYXJ5LCAiWSIpLCBzdHJpbmdWYWx1ZShkaWN0aW9u
YXJ5LCAiUG9pbnRlclR5cGUiKSk7CiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIobnVsbHB0cik7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CShyZXZpc2lvbiAyODM5MDYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0MSw2ICs0NDEsOCBAQCBwcml2YXRlOgogICAgIFdL
UmV0YWluUHRyPFdLVHlwZVJlZj4gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBib29sIHN5bmNocm9u
b3VzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBib29sIHN5bmNocm9u
b3VzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91
cyk7CiAKICAgICAvLyBXS0NvbnRleHRDbGllbnQKICAgICBzdGF0aWMgdm9pZCBuZXR3b3JrUHJv
Y2Vzc0RpZENyYXNoKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCopOwpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODM5MDYpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDEsMTEgKzMwMSw0MSBAQCBzdGF0aWMgV0tSZXRhaW5QdHI8V0tNdXRh
YmxlRGljdGlvbmFyeVJlCiAgICAgcmV0dXJuIGJvZHk7CiB9CiAKK3N0YXRpYyBXS1JldGFpblB0
cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVSYXdLZXlEb3duTWVzc2FnZUJvZHkoSlNT
dHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgaW50IGxvY2F0aW9uKQor
eworICAgIGF1dG8gYm9keSA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsK
KyAgICBzZXRWYWx1ZShib2R5LCAiU3ViTWVzc2FnZSIsICJSYXdLZXlEb3duIik7CisgICAgc2V0
VmFsdWUoYm9keSwgIktleSIsIGtleSk7CisgICAgc2V0VmFsdWUoYm9keSwgIk1vZGlmaWVycyIs
IGFkb3B0V0soV0tVSW50NjRDcmVhdGUobW9kaWZpZXJzKSkpOworICAgIHNldFZhbHVlKGJvZHks
ICJMb2NhdGlvbiIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobG9jYXRpb24pKSk7CisgICAgcmV0
dXJuIGJvZHk7Cit9CisKK3N0YXRpYyBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVm
PiBjcmVhdGVSYXdLZXlVcE1lc3NhZ2VCb2R5KEpTU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlm
aWVycyBtb2RpZmllcnMsIGludCBsb2NhdGlvbikKK3sKKyAgICBhdXRvIGJvZHkgPSBhZG9wdFdL
KFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIlN1Yk1l
c3NhZ2UiLCAiUmF3S2V5VXAiKTsKKyAgICBzZXRWYWx1ZShib2R5LCAiS2V5Iiwga2V5KTsKKyAg
ICBzZXRWYWx1ZShib2R5LCAiTW9kaWZpZXJzIiwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShtb2Rp
ZmllcnMpKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIkxvY2F0aW9uIiwgYWRvcHRXSyhXS1VJbnQ2
NENyZWF0ZShsb2NhdGlvbikpKTsKKyAgICByZXR1cm4gYm9keTsKK30KKwogdm9pZCBFdmVudFNl
bmRpbmdDb250cm9sbGVyOjprZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2Rp
ZmllckFycmF5LCBpbnQgbG9jYXRpb24pCiB7CiAgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3Nh
Z2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlS2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgcGFyc2VNb2Rp
ZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOwogfQogCit2b2lkIEV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXI6OnJhd0tleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1v
ZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbikKK3sKKyAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVz
c2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVSYXdLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCBwYXJz
ZU1vZGlmaWVyQXJyYXkobW9kaWZpZXJBcnJheSksIGxvY2F0aW9uKSk7Cit9CisKK3ZvaWQgRXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6cmF3S2V5VXAoSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVm
IG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbikKK3sKKyAgICBwb3N0U3luY2hyb25vdXNQYWdl
TWVzc2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVSYXdLZXlVcE1lc3NhZ2VCb2R5KGtleSwgcGFy
c2VNb2RpZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOworfQorCiB2b2lkIEV2
ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihKU1N0cmlu
Z1JlZiBrZXkpCiB7CiAgICAgcG9zdFBhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGNyZWF0ZUtl
eURvd25NZXNzYWdlQm9keShrZXksIDAsIDApKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5oCShyZXZpc2lvbiAyODM5MDYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjgs
NiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
SlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKIAogICAgIHZvaWQga2V5RG93bihKU1N0cmlu
Z1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKTsKKyAgICB2
b2lkIHJhd0tleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXks
IGludCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlVcChKU1N0cmluZ1JlZiBrZXksIEpTVmFs
dWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKTsKICAgICB2b2lkIHNjaGVkdWxlQXN5
bmNocm9ub3VzS2V5RG93bihKU1N0cmluZ1JlZiBrZXkpOwogCiAgICAgdm9pZCB0ZXh0Wm9vbUlu
KCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5p
ZGwJKHJldmlzaW9uIDI4MzkwNikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDYgKzQ2LDggQEAgaW50ZXJmYWNlIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIgewogICAg
IHVuZGVmaW5lZCBsZWFwRm9yd2FyZChsb25nIG1pbGxpc2Vjb25kcyk7CiAKICAgICB1bmRlZmlu
ZWQga2V5RG93bihET01TdHJpbmcga2V5LCBvYmplY3QgbW9kaWZpZXJBcnJheSwgbG9uZyBsb2Nh
dGlvbik7CisgICAgdW5kZWZpbmVkIHJhd0tleURvd24oRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1v
ZGlmaWVyQXJyYXksIGxvbmcgbG9jYXRpb24pOworICAgIHVuZGVmaW5lZCByYXdLZXlVcChET01T
dHJpbmcga2V5LCBvYmplY3QgbW9kaWZpZXJBcnJheSwgbG9uZyBsb2NhdGlvbik7CiAgICAgdW5k
ZWZpbmVkIHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihET01TdHJpbmcga2V5KTsKIAogICAg
IC8vIFpvb20gZnVuY3Rpb25zLgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1t
CShyZXZpc2lvbiAyODM5MDYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3
OSwxNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiB7CiB9CiAK
K3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZl
bnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2Rp
ZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwogdm9pZCBFdmVu
dFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSkKIHsKIH0KSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3Bw
CShyZXZpc2lvbiAyODM5MDYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNl
bmRlclByb3h5R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSwxNCBAQCB2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgd2Via2l0V2ViVmlld0Jh
c2VTeW50aGVzaXplS2V5RXZlbnQodG9XZWJLaXRHTGliQVBJKG1fdGVzdENvbnRyb2xsZXItPm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpKSwgS2V5RXZlbnRUeXBlOjpJbnNlcnQsIGdka0tl
eVN5bSwgbW9kaWZpZXJzLCBTaG91bGRUcmFuc2xhdGVLZXlib2FyZFN0YXRlOjpObyk7CiB9CiAK
K3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZl
bnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2Rp
ZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwogdm9pZCBFdmVu
dFNlbmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJz
IHdrTW9kaWZpZXJzLCBXS1N0cmluZ1JlZiBwb2ludGVyVHlwZSkKIHsKICAgICB1bnNpZ25lZCBn
ZGtCdXR0b24gPSBldmVudFNlbmRlckJ1dHRvblRvR0RLQnV0dG9uKGJ1dHRvbik7CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0JKHJldmlz
aW9uIDI4MzkwNikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJv
eHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTY1OSw2ICs2NTksNDYgQEAgdm9pZCBFdmVudFNlbmRl
clByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5p
bF07CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBr
ZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sK
KyAgICBSZXRhaW5QdHI8TW9kaWZpZXJLZXlzPiBtb2RpZmllcktleXMgPSBbTW9kaWZpZXJLZXlz
IG1vZGlmaWVyS2V5c1dpdGhLZXk6dG9XVEZTdHJpbmcoa2V5KSBtb2RpZmllcnM6YnVpbGRNb2Rp
ZmllckZsYWdzKG1vZGlmaWVycykga2V5TG9jYXRpb246a2V5TG9jYXRpb25dOworCisgICAgTlNF
dmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93
bgorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAgICAgICBtb2RpZmllckZs
YWdzOm1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncworICAgICAgICB0aW1lc3RhbXA6YWJzb2x1
dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKKyAgICAgICAgd2luZG93TnVt
YmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdp
bmRvd051bWJlcl0KKyAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENv
bnRleHRdCisgICAgICAgIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5n
ZXQoKQorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5j
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisg
ICAgICAgIGtleUNvZGU6bW9kaWZpZXJLZXlzLT5rZXlDb2RlXTsKKworICAgIFtOU0FwcCBfc2V0
Q3VycmVudEV2ZW50OmV2ZW50XTsKKyAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3
KCktPnBsYXRmb3JtV2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnRdOworICAg
IFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywg
dW5zaWduZWQga2V5TG9jYXRpb24pCit7CisgICAgUmV0YWluUHRyPE1vZGlmaWVyS2V5cz4gbW9k
aWZpZXJLZXlzID0gW01vZGlmaWVyS2V5cyBtb2RpZmllcktleXNXaXRoS2V5OnRvV1RGU3RyaW5n
KGtleSkgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIGtleUxvY2F0aW9u
OmtleUxvY2F0aW9uXTsKKworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRX
aXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUs
IDUpCisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzCisg
ICAgICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVudEV2ZW50VGlt
ZSgpKQorICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3
KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQorICAgICAgICBjb250ZXh0OltOU0dy
YXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFjdGVyczptb2RpZmll
cktleXMtPmV2ZW50Q2hhcmFjdGVyLmdldCgpCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVyczptb2RpZmllcktleXMtPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy5nZXQoKQor
ICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTptb2RpZmllcktleXMtPmtleUNv
ZGVdOworICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVu
dDpldmVudF07CisgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9y
bVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudF07CisgICAgW05TQXBwIF9zZXRD
dXJyZW50RXZlbnQ6bmlsXTsKK30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9s
bEJ5KGludCB4LCBpbnQgeSkKIHsKICAgICBhdXRvIGNnU2Nyb2xsRXZlbnQgPSBhZG9wdENGKENH
RXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50MigwLCBrQ0dTY3JvbGxFdmVudFVuaXRMaW5lLCAy
LCB5LCB4LCAwKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRl
clByb3h5V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9F
dmVudFNlbmRlclByb3h5V2luLmNwcAkocmV2aXNpb24gMjgzOTA2KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxNCw2ICszMTQsMTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5n
UgogICAgICAgICBTZXRLZXlib2FyZFN0YXRlKGtleVN0YXRlKTsKIH0KIAordm9pZCBFdmVudFNl
bmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmll
cnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6YWRkVG91Y2hQb2ludChpbnQsIGludCkKIHsKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlX
UEUuY3BwCShyZXZpc2lvbiAyODM5MDYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9F
dmVudFNlbmRlclByb3h5V1BFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMyNywxNCBA
QCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgZnJlZShlbnRy
aWVzKTsKIH0KIAordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVm
IGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQor
eworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwg
V0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQor
CiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQogewog
ICAgIHN0cnVjdCB3cGVfaW5wdXRfdG91Y2hfZXZlbnRfcmF3IHJhd0V2ZW50IHsgd3BlX2lucHV0
X3RvdWNoX2V2ZW50X3R5cGVfZG93biwgc2VjVG9Nc1RpbWVzdGFtcChtX3RpbWUpLCBzdGF0aWNf
Y2FzdDxpbnQ+KG1fdG91Y2hFdmVudHMuc2l6ZSgpKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oeCks
IHN0YXRpY19jYXN0PGludDMyX3Q+KHkpIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODM5MDYpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAor
MjAyMS0xMC0xMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+IGFuZCBEYW5hIEVzdHJh
IDxkZXN0cmFAYXBwbGUuY29tPgorCisgICAgICAgIG1hY09TIGtleS1kcml2ZW4gc21vb3RoIHNj
cm9sbGluZyBkb2VzIG5vdCBzdG9wIHdoZW4gZm9jdXMgY2hhbmdlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MzAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgdXNlRmxleGlibGVWaWV3cG9ydCBhbmQg
RXZlbnRIYW5kbGVyRHJpdmVuU21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkIGtleXMgYXJl
IFdLMiBvbmx5IAorICAgICAgICByaWdodCBub3csIHNvIHNraXAgdGhlIG5ldyB0ZXN0IGluIGdl
bmVyYWwuCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKworICAgICAgICBOZXcgdGVzdCB0
aGF0IHZlcmlmaWVzIHRoaXMgYnVnIGlzIHJlc29sdmVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xs
aW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmctZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUt
a2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWw6IEFkZGVkLgorCisgICAgICAgIERvIHJ1biB0aGUgdGVz
dCBmb3IgbWFjLXdrMi4gcmF3S2V5RG93biAvIHJhd0tleVVwIGFyZSBjdXJyZW50bHkgbm90IGlt
cGxlbWVudGVkIAorICAgICAgICBlbHNld2hlcmUuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zOgorCisgICAgICAgIE5ldyBzdXBwb3J0IGZvciByYXdLZXlEb3du
IGluIG9yZGVyIHRvIHNpbXVsYXRlIGhvbGRpbmcgdGhlIGtleSBkb3duLgorICAgICAgICAqIHJl
c291cmNlcy91aS1oZWxwZXIuanM6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIucmF3S2V5RG93
bik6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIucmF3S2V5VXApOgorCiAyMDIxLTEwLTExICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgaW5saW5l
IGJveCBkZWNvcmF0aW9uIHBhaW50aW5nIHF1aXJrCkluZGV4OiBMYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHJl
dmlzaW9uIDI4MzkwNikKKysrIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcg
Y29weSkKQEAgLTk3LDYgKzk3LDcgQEAgZmFzdC9mb3Jtcy9lbnRlcmtleWhpbnQtYXR0cmlidXRl
LXZhbHVlcwogZmFzdC9zY3JvbGxpbmcva2V5Ym9hcmQtc2Nyb2xsaW5nLWRpc3RhbmNlLWRvd25B
cnJvdy5odG1sIFsgU2tpcCBdCiBmYXN0L3Njcm9sbGluZy9rZXlib2FyZC1zY3JvbGxpbmctZGlz
dGFuY2UtcGFnZURvd24uaHRtbCBbIFNraXAgXQogZmFzdC9zY3JvbGxpbmcva2V5Ym9hcmQtc2Ny
b2xsaW5nLWxhc3QtdGltZXN0YW1wLmh0bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3VuZm9j
dXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbCBbIFNraXAgXQogCiAjIEhp
Z2hsaWdodGluZyBtYXJrZWQgdGV4dCByYW5nZXMgZnJvbSBsYXlvdXQgdGVzdHMgaXMgb25seSBz
dXBwb3J0ZWQgaW4gV2ViS2l0Mi4KIGVkaXRpbmcvaW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0
cy5odG1sIFsgU2tpcCBdCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3Vz
aW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5
Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5n
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitTVUNDRVNTOiBCbHVlIGZy
YW1lIHN0b3BwZWQgc2NvbGxpbmcgYmVmb3JlIHJlZCBmcmFtZQorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5n
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2lu
Zy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1z
Y3JvbGxpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUg
aHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUg
RXZlbnRIYW5kbGVyRHJpdmVuU21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAt
LT4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9Imlu
aXRpYWwtc2NhbGU9MS41LCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAgICA8c2NyaXB0PgorICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxSZWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBsZXQgcmVkT2Zmc2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZC1mcmFtZScpLmNv
bnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldy5zY3JvbGxZOworICAgICAgICAgICAgbGV0IGJsdWVP
ZmZzZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmx1ZS1mcmFtZScpLmNvbnRlbnREb2N1
bWVudC5kZWZhdWx0Vmlldy5zY3JvbGxZOworICAgICAgICAgICAgaWYgKHJlZE9mZnNldCA+IDE5
MDApIHsKKyAgICAgICAgICAgICAgICBpZiAoYmx1ZU9mZnNldCA+IDE5MDApCisgICAgICAgICAg
ICAgICAgICAgIGRlYnVnKCJGQUlMOiBCbHVlIGZyYW1lIHNjcm9sbGVkIGFzIGZhciBhcyB0aGUg
cmVkIGZyYW1lLiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ZGVidWcoIlNVQ0NFU1M6IEJsdWUgZnJhbWUgc3RvcHBlZCBzY29sbGluZyBiZWZvcmUgcmVkIGZy
YW1lIik7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGxl
dCBibHVlRnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmx1ZS1mcmFtZScpOworICAg
ICAgICAgICAgbGV0IHJlZEZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZC1mcmFt
ZScpOworICAgICAgICAgICAgbGV0IHJlZERvY3VtZW50ID0gcmVkRnJhbWUuY29udGVudERvY3Vt
ZW50OworCisgICAgICAgICAgICByZWREb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwi
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2Nyb2xsUmVkKCk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgYmx1ZUZyYW1lLmZvY3VzKCk7CisgICAgICAgICAgICBhd2Fp
dCBVSUhlbHBlci5yYXdLZXlEb3duKCJkb3duQXJyb3ciKTsKKyAgICAgICAgICAgIHJlZEZyYW1l
LmZvY3VzKCk7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5yYXdLZXlEb3duKCJkb3duQXJy
b3ciKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAjcGxhY2Vo
b2xkZXIgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogNTAwMHB4Owor
ICAgIH0KKyAgICBpZnJhbWUgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFy
Z2luOiAwOyIgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxpZnJhbWUgaWQ9ImJsdWUtZnJhbWUi
IHNyY2RvYz0iPGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDIwMDBweDsgYmFja2dy
b3VuZC1jb2xvcjogYmx1ZTsnPjwvZGl2PiI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBpZD0icmVk
LWZyYW1lIiBzcmNkb2M9IjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAyMDAwcHg7
IGJhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvZGl2PiI+PC9pZnJhbWU+CisgICAgPGRpdiBpZD0i
cGxhY2Vob2xkZXIiPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0
aW9ucwkocmV2aXNpb24gMjgzOTA2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIGZhc3QvbWVk
aWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1saXYKIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1j
b250cmFzdC1saXZlLXVwZGF0ZS5odG1sIFsgUGFzcyBdCiBmYXN0L21lZGlhL21xLXByZWZlcnMt
Y29udHJhc3QuaHRtbCBbIFBhc3MgXQogCitmYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Ut
d2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwgWyBQYXNzIF0KKwogaHR0cC90ZXN0cy9zc2wv
YXBwbGVwYXkgWyBQYXNzIF0KIAogIyBBUFBMRV9QQVlfSU5TVEFMTE1FTlRTIHdhcyBmaXJzdCBh
dmFpbGFibGUgaW4gQ2F0YWxpbmEuCkluZGV4OiBMYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVs
cGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMJ
KHJldmlzaW9uIDI4MzkwNikKKysrIExheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTM0NCw2ICszNDQsMzAgQEAgd2luZG93LlVJSGVscGVyID0gY2xh
c3MgVUlIZWxwZXIgewogICAgICAgICB9CiAgICAgfQogCisgICAgc3RhdGljIHJhd0tleURvd24o
a2V5LCBtb2RpZmllcnM9W10pCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkg
fHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkgeworICAgICAgICAgICAgZXZlbnRTZW5kZXIucmF3S2V5
RG93bihrZXksIG1vZGlmaWVycyk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+
IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29udHJvbGxlci5yYXdL
ZXlEb3duKCIke2tleX0iLCAke0pTT04uc3RyaW5naWZ5KG1vZGlmaWVycyl9KTtgLCByZXNvbHZl
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc3RhdGljIHJhd0tleVVwKGtleSwgbW9kaWZp
ZXJzPVtdKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlz
SU9TRmFtaWx5KCkpIHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLnJhd0tleVVwKGtleSwgbW9k
aWZpZXJzKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgdWlDb250cm9sbGVyLnJhd0tleVVwKCIke2tleX0i
LCAke0pTT04uc3RyaW5naWZ5KG1vZGlmaWVycyl9KTtgLCByZXNvbHZlKTsKKyAgICAgICAgfSk7
CisgICAgfQorCiAgICAgc3RhdGljIGtleURvd24oa2V5LCBtb2RpZmllcnM9W10pCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440879</attachid>
            <date>2021-10-11 20:28:36 -0700</date>
            <delta_ts>2021-10-15 21:28:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>36228</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzkwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEwLTExICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkgb24g
dGhlIG9sZCBGcmFtZVZpZXcgYWZ0ZXIgY2hhbmdpbmcgRnJhbWUgZm9jdXMuCisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpzZXRGb2N1c2VkRnJhbWUpOgorCisgICAgICAgIENhbGwgdXBkYXRlU2Nyb2xsQW5pbWF0
aW9uSWZOZWNlc3NhcnkoKSB3aGVuIHRoZSB3aW5kb3cgdmlzaWJpbGl0eSAvIGFjdGl2ZSBzdGF0
ZSBjaGFuZ2VzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVNj
cm9sbEFuaW1hdGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAg
ICAgICBQbHVtYmluZyB0byBnZXQgdXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSB0
byB0aGUgU2Nyb2xsQ29udHJvbGxlciwgd2hlcmUgd2UgY2FuIHRlbGwgCisgICAgICAgIHRoZSBr
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRvIGhhbmRsZSBrZXlVcC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6dXBkYXRlU2Nyb2xsQW5pbWF0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxBbmlt
YXRpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxBbmltYXRpb25JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKwogMjAyMS0xMC0xMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByZXBhcmUg
dG8gc3dpdGNoIGZyb20gV1RGOjpWYXJpYW50IHRvIHN0ZDo6dmFyaWFudApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjgzOTA2KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTksNyArMzU5LDggQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRGcmFtZShGcgog
ICAgIG1fZm9jdXNlZEZyYW1lID0gbmV3RnJhbWU7CiAKICAgICAvLyBOb3cgdGhhdCB0aGUgZnJh
bWUgaXMgdXBkYXRlZCwgZmlyZSBldmVudHMgYW5kIHVwZGF0ZSB0aGUgc2VsZWN0aW9uIGZvY3Vz
ZWQgc3RhdGVzIG9mIGJvdGggZnJhbWVzLgotICAgIGlmIChvbGRGcmFtZSAmJiBvbGRGcmFtZS0+
dmlldygpKSB7CisgICAgaWYgKGF1dG8qIG9sZEZyYW1lVmlldyA9IG9sZEZyYW1lID8gb2xkRnJh
bWUtPnZpZXcoKSA6IG51bGxwdHIpIHsKKyAgICAgICAgb2xkRnJhbWVWaWV3LT5zdG9wU2Nyb2xs
QW5pbWF0aW9ucygpOwogICAgICAgICBvbGRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0Rm9jdXNlZChm
YWxzZSk7CiAgICAgICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCShyZXZpc2lvbiAyODM5MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzU4LDEzICsyMzU4LDMzIEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZp
dHlTdGF0ZShPcHRpb25TZXQ8QWMKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9hY3Rpdml0
eVN0YXRlQ2hhbmdlT2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci5hY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKG9sZEFjdGl2aXR5U3RhdGUsIG1fYWN0aXZpdHlTdGF0ZSk7CiAKLSAgICBpZiAod2Fz
VmlzaWJsZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkKKyAgICBpZiAod2FzVmlz
aWJsZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkgewogICAgICAgICBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3NhcnkoKTsK
KyAgICAgICAgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKyAgICB9CiAKICAgICBpZiAobV9wZXJm
b3JtYW5jZU1vbml0b3IpCiAgICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5hY3Rpdml0eVN0
YXRlQ2hhbmdlZChvbGRBY3Rpdml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlKTsKIH0KIAordm9pZCBQ
YWdlOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucygpCit7CisgICAgZm9yIChhdXRvKiBmcmFtZSA9ICZt
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkg
eworICAgICAgICBhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOworICAgICAgICBpZiAo
IWZyYW1lVmlldykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZyYW1lVmlldy0+
c3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKworICAgICAgICBjb25zdCBIYXNoU2V0PFNjcm9sbGFi
bGVBcmVhKj4qIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFyZWFzKCk7
CisgICAgICAgIGlmICghc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgZm9yIChhdXRvJiBzY3JvbGxhYmxlQXJlYSA6ICpzY3JvbGxhYmxlQXJlYXMpCisg
ICAgICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKyAgICB9
Cit9CisKIGJvb2wgUGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgJiYg
bV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODM5MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODk3LDYgKzg5Nyw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRJc1Zpc2libGVJbnRlcm5hbChib29sKTsKICAgICB2b2lkIHNldElzVmlzdWFs
bHlJZGxlSW50ZXJuYWwoYm9vbCk7CiAKKyAgICB2b2lkIHN0b3BTY3JvbGxBbmltYXRpb25zKCk7
CisKICAgICBlbnVtIFNob3VsZEhpZ2hsaWdodE1hdGNoZXMgeyBEb05vdEhpZ2hsaWdodE1hdGNo
ZXMsIEhpZ2hsaWdodE1hdGNoZXMgfTsKICAgICBlbnVtIFNob3VsZE1hcmtNYXRjaGVzIHsgRG9O
b3RNYXJrTWF0Y2hlcywgTWFya01hdGNoZXMgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAkocmV2aXNpb24gMjgzOTA2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQs
NiArMjM0LDExIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY28KICNl
bmRpZgogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucygpCit7
CisgICAgbV9zY3JvbGxDb250cm9sbGVyLnN0b3BTY3JvbGxBbmltYXRpb25zKCk7Cit9CisKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlVG91Y2hF
dmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCShyZXZpc2lvbiAyODM5MDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4
NSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KIAor
ICAgIHZvaWQgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKyAgICAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlKSB7IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmNwcAkocmV2aXNpb24gMjgzOTA2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNiArMjE5LDEx
IEBAIGJvb2wgU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3IKICAgICByZXR1cm4g
aGFuZGxlZEV2ZW50OwogfQogCit2b2lkIFNjcm9sbGFibGVBcmVhOjpzdG9wU2Nyb2xsQW5pbWF0
aW9ucygpCit7CisgICAgc2Nyb2xsQW5pbWF0b3IoKS5zdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwor
fQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJvb2wgU2Nyb2xsYWJsZUFyZWE6OmhhbmRs
ZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiB0b3VjaEV2ZW50KQogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCShyZXZpc2lvbiAyODM5
MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVzbmFwQWZ0ZXJM
YXlvdXQoKTsKICAgICB2b2lkIGRvUG9zdFRodW1iTW92ZVNuYXBwaW5nKFNjcm9sbGJhck9yaWVu
dGF0aW9uKTsKIAorICAgIHZvaWQgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKTsKKwogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3Qg
UGxhdGZvcm1Ub3VjaEV2ZW50Jik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDI4MzkwNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsMTIgQEAgdm9pZCBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcEtleQogICAgIHNldElzQW5pbWF0aW5nS2V5Ym9hcmRT
Y3JvbGxpbmcoZmFsc2UpOwogfQogCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpz
dG9wU2Nyb2xsQW5pbWF0aW9ucygpCit7CisgICAgaWYgKG1faXNBbmltYXRpbmdLZXlib2FyZFNj
cm9sbGluZykKKyAgICAgICAgbV9jbGllbnQua2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcigpLT5o
YW5kbGVLZXlVcEV2ZW50KCk7Cit9CisKIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OnN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKEZsb2F0UG9pbnQgc3RhcnRPZmZzZXQs
IEZsb2F0UG9pbnQgZGVzdGluYXRpb25PZmZzZXQpCiB7CiAgICAgaWYgKG1fY3VycmVudEFuaW1h
dGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMjgzOTA2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQxLDcgKzE0MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5LZXlib2FyZFNjcm9sbGlu
ZygpOwogICAgIHZvaWQgc3RvcEtleWJvYXJkU2Nyb2xsaW5nKCk7Ci0gICAgCisKKyAgICB2b2lk
IHN0b3BTY3JvbGxBbmltYXRpb25zKCk7CisKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHBlcmlv
ZGljYWxseSBieSB0aGUgY2xpZW50LiBTdGFydGVkIGJ5IHN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2so
KSwgc3RvcHBlZCBieSBzdG9wQW5pbWF0aW9uQ2FsbGJhY2soKS4KICAgICB2b2lkIGFuaW1hdGlv
bkNhbGxiYWNrKE1vbm90b25pY1RpbWUpOwogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODM5NTMpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MSBAQAorMjAyMS0xMC0xMSAgQmV0aCBE
YWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+IGFuZCBEYW5hIEVzdHJhIDxkZXN0cmFAYXBwbGUuY29t
PgorCisgICAgICAgIG1hY09TIGtleS1kcml2ZW4gc21vb3RoIHNjcm9sbGluZyBkb2VzIG5vdCBz
dG9wIHdoZW4gZm9jdXMgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI4MzAyCisKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcmF3S2V5VXAgYW5k
IHJhd0tleURvd24gdG8gdGhlIG1hY09TIHZlcnNpb25zIG9mIFdLVFIgYW5kIERSVC4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAg
ICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGluaXRpYWxpemVdKToKKyAgICAgICAgKCtb
RXZlbnRTZW5kaW5nQ29udHJvbGxlciBpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0Ol0p
OgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIHdlYlNjcmlwdE5hbWVGb3JTZWxl
Y3RvcjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciByYXdLZXlEb3duOndp
dGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250
cm9sbGVyIHJhd0tleURvd25XcmFwcGVyOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgor
ICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tleVVwOndpdGhNb2RpZmllcnM6
d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tl
eVVwV3JhcHBlcjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OmNyZWF0ZVJhd0tleURvd25NZXNzYWdlQm9keSk6
CisgICAgICAgIChXVFI6OmNyZWF0ZVJhd0tleVVwTWVzc2FnZUJvZHkpOgorICAgICAgICAoV1RS
OjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW06
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24pOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpk
aWRSZWNlaXZlUmF3S2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGVyUHJveHk6OnJhd0tleURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpy
YXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94
eS5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcDoKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRl
clByb3h5V1BFLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93
bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKwogMjAyMS0x
MC0xMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2J1
aWxkLWltYWdlZGlmZl0gQnVpbGQgdW5pdmVyc2FsIGJpbmFyaWVzIGJ5IGRlZmF1bHQKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVy
Lm1tCShyZXZpc2lvbiAyODM5MDYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5Niw4IEBAICsg
KHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBAImZvY3VzIiwKICAgICAgICAgQCJpbnB1dCIsCiAg
ICAgICAgIEAia2V5ZG93biIsCisgICAgICAgIEAicmF3a2V5ZG93biIsCisgICAgICAgIEAicmF3
a2V5dXAiLAogICAgICAgICBAImtleXByZXNzIiwKICAgICAgICAgQCJrZXl1cCIsCiAgICAgICAg
IEAibG9hZCIsCkBAIC0yMzksNiArMjQxLDggQEAgKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRG
cm9tV2ViU2NyaXB0OgogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihlbmFi
bGVET01VSUV2ZW50TG9nZ2luZzopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVj
dG9yKGZpcmVLZXlib2FyZEV2ZW50c1RvRWxlbWVudDopCiAgICAgICAgICAgICB8fCBhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KQorICAg
ICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihyYXdLZXlEb3duOndpdGhNb2RpZmll
cnM6d2l0aExvY2F0aW9uOikKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
cmF3S2V5VXA6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KQogICAgICAgICAgICAgfHwgYVNl
bGVjdG9yID09IEBzZWxlY3RvcihsZWFwRm9yd2FyZDopCiAgICAgICAgICAgICB8fCBhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKG1vdXNlRG93bjp3aXRoTW9kaWZpZXJzOikKICAgICAgICAgICAgIHx8
IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IobW91c2VNb3ZlVG9YOlk6KQpAQCAtMzAwLDYgKzMwNCwx
MCBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjooCiAgICAgICAgIHJl
dHVybiBAImZpcmVLZXlib2FyZEV2ZW50c1RvRWxlbWVudCI7CiAgICAgaWYgKGFTZWxlY3RvciA9
PSBAc2VsZWN0b3Ioa2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQogICAgICAg
ICByZXR1cm4gQCJrZXlEb3duIjsKKyAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihyYXdL
ZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikpCisgICAgICAgIHJldHVybiBAInJh
d0tleURvd24iOworICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tleVVwOndpdGhN
b2RpZmllcnM6d2l0aExvY2F0aW9uOikpCisgICAgICAgIHJldHVybiBAInJhd0tleVVwIjsKICAg
ICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd246
d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkKICAgICAgICAgcmV0dXJuIEAic2NoZWR1bGVB
c3luY2hyb25vdXNLZXlEb3duIjsKICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihsZWFw
Rm9yd2FyZDopKQpAQCAtMTAyMiw2ICsxMDMwLDc3IEBAIC0gKHZvaWQpa2V5RG93bldyYXBwZXI6
KE5TU3RyaW5nICopY2hhcmEKICAgICBbc2VsZiBrZXlEb3duOmNoYXJhY3RlciB3aXRoTW9kaWZp
ZXJzOm1vZGlmaWVycyB3aXRoTG9jYXRpb246bG9jYXRpb25dOwogfQogCisKKy0gKHZvaWQpcmF3
S2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2Jq
ZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgorewor
ICAgIFJldGFpblB0cjxNb2RpZmllcktleXM+IG1vZGlmaWVyS2V5cyA9IFtNb2RpZmllcktleXMg
bW9kaWZpZXJLZXlzV2l0aEtleTpjaGFyYWN0ZXIgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFn
cyhtb2RpZmllcnMpIGtleUxvY2F0aW9uOmxvY2F0aW9uXTsKKworICAgIFtbW21haW5GcmFtZSBm
cmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKKworI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlw
ZTpOU0V2ZW50VHlwZUtleURvd24KKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkK
KyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MKKyAgICAg
ICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdpbmRvd051bWJl
cjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNv
bnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0
ZXJzOm1vZGlmaWVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIuZ2V0KCkKKyAgICAgICAgY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzLmdldCgpCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOm1vZGlmaWVy
S2V5cy0+a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2
ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1w
OltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENo
YXJhY3Rlci5nZXQoKSBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5j
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdz
KW1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3
aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5k
ZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0p
OworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1
cnJlbnRFdmVudDpldmVudC5nZXQoKV07CisjZW5kaWYKKyAgICBbW1tbbWFpbkZyYW1lIHdlYlZp
ZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnQuZ2V0KCldOworI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07Cisj
ZW5kaWYKK30KKworLSAodm9pZClyYXdLZXlEb3duV3JhcHBlcjooTlNTdHJpbmcgKiljaGFyYWN0
ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlv
bjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAgIFtzZWxmIHJhd0tleURvd246Y2hhcmFj
dGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07Cit9CisK
Ky0gKHZvaWQpcmF3S2V5VXA6KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdl
YlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9j
YXRpb24KK3sKKyAgICBSZXRhaW5QdHI8TW9kaWZpZXJLZXlzPiBtb2RpZmllcktleXMgPSBbTW9k
aWZpZXJLZXlzIG1vZGlmaWVyS2V5c1dpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1v
ZGlmaWVyRmxhZ3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl07CisKKyAgICBbW1tt
YWluRnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CisKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2
ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcAorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2lu
dCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFn
cworICAgICAgICB0aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KKyAgICAgICAgd2lu
ZG93TnVtYmVyOltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KKyAg
ICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAg
IGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQorICAgICAgICBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnMuZ2V0KCkKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6
bW9kaWZpZXJLZXlzLT5rZXlDb2RlXSk7CisjZWxzZQorICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5T
KFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGlt
ZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5l
dmVudENoYXJhY3Rlci5nZXQoKSBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJL
ZXlzLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkgbW9kaWZpZXJzOihXZWJFdmVu
dEZsYWdzKW1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxh
Z3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3Rl
ckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAn
XHQnKV0pOworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAg
X3NldEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07CisjZW5kaWYKKyAgICBbW1tbbWFpbkZyYW1l
IHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50LmdldCgpXTsKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxd
OworI2VuZGlmCit9CisKKy0gKHZvaWQpcmF3S2V5VXBXcmFwcGVyOihOU1N0cmluZyAqKWNoYXJh
Y3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0
aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCit7CisgICAgW3NlbGYgcmF3S2V5VXA6Y2hhcmFj
dGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07Cit9CisK
IC0gKHZvaWQpc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3Rl
ciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9u
Oih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCiB7CiAgICAgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9u
ID0gW05TSW52b2NhdGlvbiBpbnZvY2F0aW9uV2l0aE1ldGhvZFNpZ25hdHVyZTpbRXZlbnRTZW5k
aW5nQ29udHJvbGxlciBpbnN0YW5jZU1ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yOkBzZWxlY3Rv
cihrZXlEb3duV3JhcHBlcjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopXV07CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAkocmV2aXNpb24gMjgzOTA2
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDYgKzcwLDggQEAgcHVibGljOgogICAgIHZvaWQgbGVhcEZvcndhcmQoaW50
IG1pbGxpc2Vjb25kcyk7CiAKICAgICB2b2lkIGtleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2
ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlEb3duKFdL
U3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycywgdW5zaWduZWQgbG9jYXRpb24pOworICAg
IHZvaWQgcmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25l
ZCBsb2NhdGlvbik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB1bnNpZ25lZCBtb3VzZUJ1
dHRvbnNDdXJyZW50bHlEb3duKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZUJ1dHRvbnNDdXJyZW50
bHlEb3duOyB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMjgzOTA2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTYsNiArMTU5NiwxNiBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjpkaWRSZWNlaXZlS2V5RG93bk1lCiAgICAgbV9ldmVudFNlbmRlclByb3h5LT5r
ZXlEb3duKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlv
bmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7
CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJv
bm91cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tleURvd24oc3RyaW5nVmFsdWUo
ZGljdGlvbmFyeSwgIktleSIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiks
IHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJMb2NhdGlvbiIpKTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0Rp
Y3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2ZW50
U2VuZGVyUHJveHktPnJhd0tleVVwKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWlu
dDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5
LCAiTG9jYXRpb24iKSk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVMaXZl
RG9jdW1lbnRzTGlzdChXS0FycmF5UmVmIGxpdmVEb2N1bWVudExpc3QpCiB7CiAgICAgYXV0byBu
dW1Eb2N1bWVudHMgPSBXS0FycmF5R2V0U2l6ZShsaXZlRG9jdW1lbnRMaXN0KTsKQEAgLTE2NTMs
NiArMTY2MywxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZyCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tleURvd24iKSkgeworICAgICAg
ICAgICAgZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKGRpY3Rp
b25hcnksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5
VXAiKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShkaWN0aW9uYXJ5LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1
Yk1lc3NhZ2VOYW1lLCAiTW91c2VTY3JvbGxCeSIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2Vu
ZGVyUHJveHktPm1vdXNlU2Nyb2xsQnkoZG91YmxlVmFsdWUoZGljdGlvbmFyeSwgIlgiKSwgZG91
YmxlVmFsdWUoZGljdGlvbmFyeSwgIlkiKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzEy
LDYgKzE3MzIsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ubwog
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9
CiAKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5h
bWUsICJSYXdLZXlEb3duIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlEb3duTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCB0cnVlKTsKKyAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5VXAi
KSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShkaWN0aW9uYXJ5LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihudWxscHRyKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VNb3ZlVG8iKSkgewogICAgICAgICAg
ICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3VzZU1vdmVUbyhkb3VibGVWYWx1ZShkaWN0aW9uYXJ5
LCAiWCIpLCBkb3VibGVWYWx1ZShkaWN0aW9uYXJ5LCAiWSIpLCBzdHJpbmdWYWx1ZShkaWN0aW9u
YXJ5LCAiUG9pbnRlclR5cGUiKSk7CiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIobnVsbHB0cik7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CShyZXZpc2lvbiAyODM5MDYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0MSw2ICs0NDEsOCBAQCBwcml2YXRlOgogICAgIFdL
UmV0YWluUHRyPFdLVHlwZVJlZj4gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBib29sIHN5bmNocm9u
b3VzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBib29sIHN5bmNocm9u
b3VzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91
cyk7CiAKICAgICAvLyBXS0NvbnRleHRDbGllbnQKICAgICBzdGF0aWMgdm9pZCBuZXR3b3JrUHJv
Y2Vzc0RpZENyYXNoKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCopOwpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODM5MDYpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDEsMTEgKzMwMSw0MSBAQCBzdGF0aWMgV0tSZXRhaW5QdHI8V0tNdXRh
YmxlRGljdGlvbmFyeVJlCiAgICAgcmV0dXJuIGJvZHk7CiB9CiAKK3N0YXRpYyBXS1JldGFpblB0
cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVSYXdLZXlEb3duTWVzc2FnZUJvZHkoSlNT
dHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgaW50IGxvY2F0aW9uKQor
eworICAgIGF1dG8gYm9keSA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsK
KyAgICBzZXRWYWx1ZShib2R5LCAiU3ViTWVzc2FnZSIsICJSYXdLZXlEb3duIik7CisgICAgc2V0
VmFsdWUoYm9keSwgIktleSIsIGtleSk7CisgICAgc2V0VmFsdWUoYm9keSwgIk1vZGlmaWVycyIs
IGFkb3B0V0soV0tVSW50NjRDcmVhdGUobW9kaWZpZXJzKSkpOworICAgIHNldFZhbHVlKGJvZHks
ICJMb2NhdGlvbiIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobG9jYXRpb24pKSk7CisgICAgcmV0
dXJuIGJvZHk7Cit9CisKK3N0YXRpYyBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVm
PiBjcmVhdGVSYXdLZXlVcE1lc3NhZ2VCb2R5KEpTU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlm
aWVycyBtb2RpZmllcnMsIGludCBsb2NhdGlvbikKK3sKKyAgICBhdXRvIGJvZHkgPSBhZG9wdFdL
KFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIlN1Yk1l
c3NhZ2UiLCAiUmF3S2V5VXAiKTsKKyAgICBzZXRWYWx1ZShib2R5LCAiS2V5Iiwga2V5KTsKKyAg
ICBzZXRWYWx1ZShib2R5LCAiTW9kaWZpZXJzIiwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShtb2Rp
ZmllcnMpKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIkxvY2F0aW9uIiwgYWRvcHRXSyhXS1VJbnQ2
NENyZWF0ZShsb2NhdGlvbikpKTsKKyAgICByZXR1cm4gYm9keTsKK30KKwogdm9pZCBFdmVudFNl
bmRpbmdDb250cm9sbGVyOjprZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2Rp
ZmllckFycmF5LCBpbnQgbG9jYXRpb24pCiB7CiAgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3Nh
Z2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlS2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgcGFyc2VNb2Rp
ZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOwogfQogCit2b2lkIEV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXI6OnJhd0tleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1v
ZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbikKK3sKKyAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVz
c2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVSYXdLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCBwYXJz
ZU1vZGlmaWVyQXJyYXkobW9kaWZpZXJBcnJheSksIGxvY2F0aW9uKSk7Cit9CisKK3ZvaWQgRXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6cmF3S2V5VXAoSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVm
IG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbikKK3sKKyAgICBwb3N0U3luY2hyb25vdXNQYWdl
TWVzc2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVSYXdLZXlVcE1lc3NhZ2VCb2R5KGtleSwgcGFy
c2VNb2RpZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOworfQorCiB2b2lkIEV2
ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihKU1N0cmlu
Z1JlZiBrZXkpCiB7CiAgICAgcG9zdFBhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGNyZWF0ZUtl
eURvd25NZXNzYWdlQm9keShrZXksIDAsIDApKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5oCShyZXZpc2lvbiAyODM5MDYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjgs
NiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
SlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKIAogICAgIHZvaWQga2V5RG93bihKU1N0cmlu
Z1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKTsKKyAgICB2
b2lkIHJhd0tleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXks
IGludCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlVcChKU1N0cmluZ1JlZiBrZXksIEpTVmFs
dWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKTsKICAgICB2b2lkIHNjaGVkdWxlQXN5
bmNocm9ub3VzS2V5RG93bihKU1N0cmluZ1JlZiBrZXkpOwogCiAgICAgdm9pZCB0ZXh0Wm9vbUlu
KCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5p
ZGwJKHJldmlzaW9uIDI4MzkwNikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDYgKzQ2LDggQEAgaW50ZXJmYWNlIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIgewogICAg
IHVuZGVmaW5lZCBsZWFwRm9yd2FyZChsb25nIG1pbGxpc2Vjb25kcyk7CiAKICAgICB1bmRlZmlu
ZWQga2V5RG93bihET01TdHJpbmcga2V5LCBvYmplY3QgbW9kaWZpZXJBcnJheSwgbG9uZyBsb2Nh
dGlvbik7CisgICAgdW5kZWZpbmVkIHJhd0tleURvd24oRE9NU3RyaW5nIGtleSwgb2JqZWN0IG1v
ZGlmaWVyQXJyYXksIGxvbmcgbG9jYXRpb24pOworICAgIHVuZGVmaW5lZCByYXdLZXlVcChET01T
dHJpbmcga2V5LCBvYmplY3QgbW9kaWZpZXJBcnJheSwgbG9uZyBsb2NhdGlvbik7CiAgICAgdW5k
ZWZpbmVkIHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihET01TdHJpbmcga2V5KTsKIAogICAg
IC8vIFpvb20gZnVuY3Rpb25zLgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1t
CShyZXZpc2lvbiAyODM5MDYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3
OSwxNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiB7CiB9CiAK
K3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZl
bnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2Rp
ZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwogdm9pZCBFdmVu
dFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSkKIHsKIH0KSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3Bw
CShyZXZpc2lvbiAyODM5MDYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNl
bmRlclByb3h5R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSwxNCBAQCB2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgd2Via2l0V2ViVmlld0Jh
c2VTeW50aGVzaXplS2V5RXZlbnQodG9XZWJLaXRHTGliQVBJKG1fdGVzdENvbnRyb2xsZXItPm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpKSwgS2V5RXZlbnRUeXBlOjpJbnNlcnQsIGdka0tl
eVN5bSwgbW9kaWZpZXJzLCBTaG91bGRUcmFuc2xhdGVLZXlib2FyZFN0YXRlOjpObyk7CiB9CiAK
K3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZl
bnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2Rp
ZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwogdm9pZCBFdmVu
dFNlbmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJz
IHdrTW9kaWZpZXJzLCBXS1N0cmluZ1JlZiBwb2ludGVyVHlwZSkKIHsKICAgICB1bnNpZ25lZCBn
ZGtCdXR0b24gPSBldmVudFNlbmRlckJ1dHRvblRvR0RLQnV0dG9uKGJ1dHRvbik7CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0JKHJldmlz
aW9uIDI4MzkwNikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJv
eHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTY1OSw2ICs2NTksNDYgQEAgdm9pZCBFdmVudFNlbmRl
clByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5p
bF07CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBr
ZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sK
KyAgICBSZXRhaW5QdHI8TW9kaWZpZXJLZXlzPiBtb2RpZmllcktleXMgPSBbTW9kaWZpZXJLZXlz
IG1vZGlmaWVyS2V5c1dpdGhLZXk6dG9XVEZTdHJpbmcoa2V5KSBtb2RpZmllcnM6YnVpbGRNb2Rp
ZmllckZsYWdzKG1vZGlmaWVycykga2V5TG9jYXRpb246a2V5TG9jYXRpb25dOworCisgICAgTlNF
dmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93
bgorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAgICAgICBtb2RpZmllckZs
YWdzOm1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncworICAgICAgICB0aW1lc3RhbXA6YWJzb2x1
dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKKyAgICAgICAgd2luZG93TnVt
YmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdp
bmRvd051bWJlcl0KKyAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENv
bnRleHRdCisgICAgICAgIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5n
ZXQoKQorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5j
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisg
ICAgICAgIGtleUNvZGU6bW9kaWZpZXJLZXlzLT5rZXlDb2RlXTsKKworICAgIFtOU0FwcCBfc2V0
Q3VycmVudEV2ZW50OmV2ZW50XTsKKyAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3
KCktPnBsYXRmb3JtV2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnRdOworICAg
IFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6cmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywg
dW5zaWduZWQga2V5TG9jYXRpb24pCit7CisgICAgUmV0YWluUHRyPE1vZGlmaWVyS2V5cz4gbW9k
aWZpZXJLZXlzID0gW01vZGlmaWVyS2V5cyBtb2RpZmllcktleXNXaXRoS2V5OnRvV1RGU3RyaW5n
KGtleSkgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIGtleUxvY2F0aW9u
OmtleUxvY2F0aW9uXTsKKworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRX
aXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUs
IDUpCisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzCisg
ICAgICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVudEV2ZW50VGlt
ZSgpKQorICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3
KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQorICAgICAgICBjb250ZXh0OltOU0dy
YXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFjdGVyczptb2RpZmll
cktleXMtPmV2ZW50Q2hhcmFjdGVyLmdldCgpCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVyczptb2RpZmllcktleXMtPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy5nZXQoKQor
ICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTptb2RpZmllcktleXMtPmtleUNv
ZGVdOworCisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOworICAgIFtbbV90ZXN0
Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSBmaXJzdFJlc3BvbmRl
cl0ga2V5VXA6ZXZlbnRdOworICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07Cit9CisK
IHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3JvbGxCeShpbnQgeCwgaW50IHkpCiB7CiAg
ICAgYXV0byBjZ1Njcm9sbEV2ZW50ID0gYWRvcHRDRihDR0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxF
dmVudDIoMCwga0NHU2Nyb2xsRXZlbnRVbml0TGluZSwgMiwgeSwgeCwgMCkpOwpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAJ
KHJldmlzaW9uIDI4MzkwNikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL0V2ZW50U2Vu
ZGVyUHJveHlXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNiArMzE0LDE0IEBAIHZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICAgICAgU2V0S2V5Ym9hcmRT
dGF0ZShrZXlTdGF0ZSk7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bihX
S1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlM
b2NhdGlvbikKK3sKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcChXS1N0cmlu
Z1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlv
bikKK3sKK30KKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIEV2ZW50U2VuZGVyUHJv
eHk6OmFkZFRvdWNoUG9pbnQoaW50LCBpbnQpCiB7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAkocmV2aXNpb24gMjgzOTA2
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyNyw2ICszMjcsMTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5
OjprZXlEb3duKFdLU3RyaW5nUgogICAgIGZyZWUoZW50cmllcyk7CiB9CiAKK3ZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6cmF3S2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMg
bW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwordm9pZCBFdmVudFNlbmRl
clByb3h5OjpyYXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZp
ZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKK30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5
OjphZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSkKIHsKICAgICBzdHJ1Y3Qgd3BlX2lucHV0X3Rv
dWNoX2V2ZW50X3JhdyByYXdFdmVudCB7IHdwZV9pbnB1dF90b3VjaF9ldmVudF90eXBlX2Rvd24s
IHNlY1RvTXNUaW1lc3RhbXAobV90aW1lKSwgc3RhdGljX2Nhc3Q8aW50PihtX3RvdWNoRXZlbnRz
LnNpemUoKSksIHN0YXRpY19jYXN0PGludDMyX3Q+KHgpLCBzdGF0aWNfY2FzdDxpbnQzMl90Pih5
KSB9OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjgzOTA2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTAtMTEgIEJldGggRGFraW4g
IDxiZGFraW5AYXBwbGUuY29tPiBhbmQgRGFuYSBFc3RyYSA8ZGVzdHJhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBtYWNPUyBrZXktZHJpdmVuIHNtb290aCBzY3JvbGxpbmcgZG9lcyBub3Qgc3RvcCB3
aGVuIGZvY3VzIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyODMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIHVzZUZsZXhpYmxlVmlld3BvcnQgYW5kIEV2ZW50SGFuZGxlckRyaXZlblNtb290
aEtleWJvYXJkU2Nyb2xsaW5nRW5hYmxlZCBrZXlzIGFyZSBXSzIgb25seSAKKyAgICAgICAgcmln
aHQgbm93LCBzbyBza2lwIHRoZSBuZXcgdGVzdCBpbiBnZW5lcmFsLgorICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6CisKKyAgICAgICAgTmV3IHRlc3QgdGhhdCB2ZXJpZmllcyB0aGlzIGJ1ZyBp
cyByZXNvbHZlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hp
bGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1s
OiBBZGRlZC4KKworICAgICAgICBEbyBydW4gdGhlIHRlc3QgZm9yIG1hYy13azIuIHJhd0tleURv
d24gLyByYXdLZXlVcCBhcmUgY3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCAKKyAgICAgICAgZWxz
ZXdoZXJlLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwor
ICAgICAgICBOZXcgc3VwcG9ydCBmb3IgcmF3S2V5RG93biBpbiBvcmRlciB0byBzaW11bGF0ZSBo
b2xkaW5nIHRoZSBrZXkgZG93bi4KKyAgICAgICAgKiByZXNvdXJjZXMvdWktaGVscGVyLmpzOgor
ICAgICAgICAod2luZG93LlVJSGVscGVyLnJhd0tleURvd24pOgorICAgICAgICAod2luZG93LlVJ
SGVscGVyLnJhd0tleVVwKToKKwogMjAyMS0xMC0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGlubGluZSBib3ggZGVjb3JhdGlvbiBwYWludGlu
ZyBxdWlyawpJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyODM5MDYpCisrKyBMYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBA
IGZhc3QvZm9ybXMvZW50ZXJrZXloaW50LWF0dHJpYnV0ZS12YWx1ZXMKIGZhc3Qvc2Nyb2xsaW5n
L2tleWJvYXJkLXNjcm9sbGluZy1kaXN0YW5jZS1kb3duQXJyb3cuaHRtbCBbIFNraXAgXQogZmFz
dC9zY3JvbGxpbmcva2V5Ym9hcmQtc2Nyb2xsaW5nLWRpc3RhbmNlLXBhZ2VEb3duLmh0bWwgWyBT
a2lwIF0KIGZhc3Qvc2Nyb2xsaW5nL2tleWJvYXJkLXNjcm9sbGluZy1sYXN0LXRpbWVzdGFtcC5o
dG1sIFsgU2tpcCBdCitmYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9h
cmQtc2Nyb2xsaW5nLmh0bWwgWyBTa2lwIF0KIAogIyBIaWdobGlnaHRpbmcgbWFya2VkIHRleHQg
cmFuZ2VzIGZyb20gbGF5b3V0IHRlc3RzIGlzIG9ubHkgc3VwcG9ydGVkIGluIFdlYktpdDIuCiBl
ZGl0aW5nL2lucHV0L2NvbXBvc2l0aW9uLWhpZ2hsaWdodHMuaHRtbCBbIFNraXAgXQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJk
LXNjcm9sbGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3Rl
ZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1
c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2IEBACisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorU1VDQ0VTUzogQmx1ZSBmcmFtZSBzdG9wcGVkIHNjb2xsaW5nIGJl
Zm9yZSByZWQgZnJhbWUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1
c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1z
Y3JvbGxpbmcuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3Qt
cnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIEV2ZW50SGFuZGxlckRyaXZlblNtb290
aEtleWJvYXJkU2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
IDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuNSwgdXNlci1z
Y2FsYWJsZT1ubyI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsUmVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgbGV0IHJlZE9mZnNldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZWQtZnJhbWUnKS5jb250ZW50RG9jdW1lbnQuZGVmYXVsdFZp
ZXcuc2Nyb2xsWTsKKyAgICAgICAgICAgIGxldCBibHVlT2Zmc2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2JsdWUtZnJhbWUnKS5jb250ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXcuc2Nyb2xs
WTsKKyAgICAgICAgICAgIGlmIChyZWRPZmZzZXQgPiAxOTAwKSB7CisgICAgICAgICAgICAgICAg
aWYgKGJsdWVPZmZzZXQgPiAxOTAwKQorICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiRkFJTDog
Qmx1ZSBmcmFtZSBzY3JvbGxlZCBhcyBmYXIgYXMgdGhlIHJlZCBmcmFtZS4iKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJTVUNDRVNTOiBCbHVlIGZy
YW1lIHN0b3BwZWQgc2NvbGxpbmcgYmVmb3JlIHJlZCBmcmFtZSIpOworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBsZXQgYmx1ZUZyYW1lID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2JsdWUtZnJhbWUnKTsKKyAgICAgICAgICAgIGxldCByZWRGcmFtZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWQtZnJhbWUnKTsKKyAgICAgICAgICAgIGxldCBy
ZWREb2N1bWVudCA9IHJlZEZyYW1lLmNvbnRlbnREb2N1bWVudDsKKworICAgICAgICAgICAgcmVk
RG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgIHNjcm9sbFJlZCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGJs
dWVGcmFtZS5mb2N1cygpOworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIucmF3S2V5RG93bigi
ZG93bkFycm93Iik7CisgICAgICAgICAgICByZWRGcmFtZS5mb2N1cygpOworICAgICAgICAgICAg
YXdhaXQgVUlIZWxwZXIucmF3S2V5RG93bigiZG93bkFycm93Iik7CisgICAgICAgIH0KKyAgICA8
L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgI3BsYWNlaG9sZGVyIHsKKyAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDUwMDBweDsKKyAgICB9CisgICAgaWZyYW1lIHsKKyAg
ICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKyAgICA8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdpbjogMDsiIG9ubG9hZD0icnVuVGVz
dCgpIj4KKyAgICA8aWZyYW1lIGlkPSJibHVlLWZyYW1lIiBzcmNkb2M9IjxkaXYgc3R5bGU9J3dp
ZHRoOiAxMDBweDsgaGVpZ2h0OiAyMDAwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7Jz48L2Rp
dj4iPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgaWQ9InJlZC1mcmFtZSIgc3JjZG9jPSI8ZGl2IHN0
eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMjAwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7
Jz48L2Rpdj4iPjwvaWZyYW1lPgorICAgIDxkaXYgaWQ9InBsYWNlaG9sZGVyIj4KKyAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI4MzkwNikK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1t
b3Rpb24tbGl2CiBmYXN0L21lZGlhL21xLXByZWZlcnMtY29udHJhc3QtbGl2ZS11cGRhdGUuaHRt
bCBbIFBhc3MgXQogZmFzdC9tZWRpYS9tcS1wcmVmZXJzLWNvbnRyYXN0Lmh0bWwgWyBQYXNzIF0K
IAorZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGlu
Zy5odG1sIFsgUGFzcyBdCisKIGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5IFsgUGFzcyBdCiAKICMg
QVBQTEVfUEFZX0lOU1RBTExNRU5UUyB3YXMgZmlyc3QgYXZhaWxhYmxlIGluIENhdGFsaW5hLgpJ
bmRleDogTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCShyZXZpc2lvbiAyODM5MDYpCisrKyBM
YXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQs
NiArMzQ0LDMwIEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICAgICAg
fQogICAgIH0KIAorICAgIHN0YXRpYyByYXdLZXlEb3duKGtleSwgbW9kaWZpZXJzPVtdKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkp
IHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLnJhd0tleURvd24oa2V5LCBtb2RpZmllcnMpOwor
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIucmF3S2V5RG93bigiJHtrZXl9IiwgJHtKU09O
LnN0cmluZ2lmeShtb2RpZmllcnMpfSk7YCwgcmVzb2x2ZSk7CisgICAgICAgIH0pOworICAgIH0K
KworICAgIHN0YXRpYyByYXdLZXlVcChrZXksIG1vZGlmaWVycz1bXSkKKyAgICB7CisgICAgICAg
IGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5yYXdLZXlVcChrZXksIG1vZGlmaWVycyk7CisgICAgICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3Jp
cHQoYHVpQ29udHJvbGxlci5yYXdLZXlVcCgiJHtrZXl9IiwgJHtKU09OLnN0cmluZ2lmeShtb2Rp
ZmllcnMpfSk7YCwgcmVzb2x2ZSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIHN0YXRpYyBr
ZXlEb3duKGtleSwgbW9kaWZpZXJzPVtdKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmlzV2Vi
S2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkpIHsK
</data>
<flag name="review"
          id="464959"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441472</attachid>
            <date>2021-10-15 21:28:50 -0700</date>
            <delta_ts>2021-10-19 15:52:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>35127</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDMwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIxLTEwLTE1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHN0b3BLZXlib2FyZFNjcm9sbEFuaW1hdGlvbigpIG9uIHRoZSBv
bGQgRnJhbWVWaWV3IGFmdGVyIGNoYW5naW5nIEZyYW1lIGZvY3VzLgorICAgICAgICAqIHBhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6
c2V0Rm9jdXNlZEZyYW1lKToKKworICAgICAgICBDYWxsIHN0b3BLZXlib2FyZFNjcm9sbEFuaW1h
dGlvbigpIHdoZW4gdGhlIHdpbmRvdyB2aXNpYmlsaXR5IC8gYWN0aXZlIHN0YXRlIGNoYW5nZXMu
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldEFj
dGl2aXR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3RvcEtleWJvYXJkU2Nyb2xs
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAgICAgICBQbHVtYmluZyB0
byBnZXQgdG8gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIsIHdoaWNoIGNhbiBpbnZva2Uga2V5
VXAuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3I6OnN0b3BLZXlib2FyZFNjcm9sbEFuaW1hdGlvbik6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c3RvcEtl
eWJvYXJkU2Nyb2xsQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oOgorCiAyMDIxLTEwLTE1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gRW5hYmxlIGlubGluZSBib3hlcyB3aXRoIGJvcmRl
cnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDI4NDMwMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzU5LDcgKzM1OSw4IEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRG
b2N1c2VkRnJhbWUoRnIKICAgICBtX2ZvY3VzZWRGcmFtZSA9IG5ld0ZyYW1lOwogCiAgICAgLy8g
Tm93IHRoYXQgdGhlIGZyYW1lIGlzIHVwZGF0ZWQsIGZpcmUgZXZlbnRzIGFuZCB1cGRhdGUgdGhl
IHNlbGVjdGlvbiBmb2N1c2VkIHN0YXRlcyBvZiBib3RoIGZyYW1lcy4KLSAgICBpZiAob2xkRnJh
bWUgJiYgb2xkRnJhbWUtPnZpZXcoKSkgeworICAgIGlmIChhdXRvKiBvbGRGcmFtZVZpZXcgPSBv
bGRGcmFtZSA/IG9sZEZyYW1lLT52aWV3KCkgOiBudWxscHRyKSB7CisgICAgICAgIG9sZEZyYW1l
Vmlldy0+c3RvcEtleWJvYXJkU2Nyb2xsQW5pbWF0aW9uKCk7CiAgICAgICAgIG9sZEZyYW1lLT5z
ZWxlY3Rpb24oKS5zZXRGb2N1c2VkKGZhbHNlKTsKICAgICAgICAgb2xkRnJhbWUtPmRvY3VtZW50
KCktPmRpc3BhdGNoV2luZG93RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYmx1ckV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDI4NDMwMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNjIsMTMgKzIzNjIsMzYg
QEAgdm9pZCBQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBYwogICAgIGZvciAoYXV0
byYgb2JzZXJ2ZXIgOiBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcnMpCiAgICAgICAgIG9i
c2VydmVyLmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uob2xkQWN0aXZpdHlTdGF0ZSwgbV9hY3Rpdml0
eVN0YXRlKTsKIAotICAgIGlmICh3YXNWaXNpYmxlQW5kQWN0aXZlICE9IGlzVmlzaWJsZUFuZEFj
dGl2ZSgpKQorICAgIGlmICh3YXNWaXNpYmxlQW5kQWN0aXZlICE9IGlzVmlzaWJsZUFuZEFjdGl2
ZSgpKSB7CiAgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlTm93UGxh
eWluZ0luZm9JZk5lY2Vzc2FyeSgpOworICAgICAgICBzdG9wS2V5Ym9hcmRTY3JvbGxBbmltYXRp
b24oKTsKKyAgICB9CiAKICAgICBpZiAobV9wZXJmb3JtYW5jZU1vbml0b3IpCiAgICAgICAgIG1f
cGVyZm9ybWFuY2VNb25pdG9yLT5hY3Rpdml0eVN0YXRlQ2hhbmdlZChvbGRBY3Rpdml0eVN0YXRl
LCBhY3Rpdml0eVN0YXRlKTsKIH0KIAordm9pZCBQYWdlOjpzdG9wS2V5Ym9hcmRTY3JvbGxBbmlt
YXRpb24oKQoreworICAgIGZvciAoYXV0byogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgYXV0byogZnJh
bWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBmcmFtZVZpZXctPnN0b3BLZXlib2FyZFNjcm9sbEFu
aW1hdGlvbigpOworCisgICAgICAgIGNvbnN0IEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPiogc2Ny
b2xsYWJsZUFyZWFzID0gZnJhbWVWaWV3LT5zY3JvbGxhYmxlQXJlYXMoKTsKKyAgICAgICAgaWYg
KCFzY3JvbGxhYmxlQXJlYXMpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3Ig
KGF1dG8mIHNjcm9sbGFibGVBcmVhIDogKnNjcm9sbGFibGVBcmVhcykgeworICAgICAgICAgICAg
Ly8gRmlyc3QgY2FsbCBzdG9wQXN5bmNBbmltYXRlZFNjcm9sbCgpIHRvIHByZXBhcmUgZm9yIHRo
ZSBrZXlib2FyZCBzY3JvbGxlciBydW5uaW5nIG9uIHRoZSBzY3JvbGxpbmcgdGhyZWFkLgorICAg
ICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnN0b3BBc3luY0FuaW1hdGVkU2Nyb2xsKCk7CisgICAg
ICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c3RvcEtleWJvYXJkU2Nyb2xsQW5pbWF0aW9uKCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKIGJvb2wgUGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSkgJiYgbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3RhdGU6Oldp
bmRvd0lzQWN0aXZlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODQzMDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTA1LDYgKzkwNSw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJc1Zpc2libGVJbnRlcm5hbChib29sKTsKICAgICB2
b2lkIHNldElzVmlzdWFsbHlJZGxlSW50ZXJuYWwoYm9vbCk7CiAKKyAgICB2b2lkIHN0b3BLZXli
b2FyZFNjcm9sbEFuaW1hdGlvbigpOworCiAgICAgZW51bSBTaG91bGRIaWdobGlnaHRNYXRjaGVz
IHsgRG9Ob3RIaWdobGlnaHRNYXRjaGVzLCBIaWdobGlnaHRNYXRjaGVzIH07CiAgICAgZW51bSBT
aG91bGRNYXJrTWF0Y2hlcyB7IERvTm90TWFya01hdGNoZXMsIE1hcmtNYXRjaGVzIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAJKHJldmlzaW9u
IDI4NDMwMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM0LDYgKzIzNCwxMSBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpo
YW5kbGVXaGVlbEV2ZW50KGNvCiAjZW5kaWYKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvcjo6c3Rv
cEtleWJvYXJkU2Nyb2xsQW5pbWF0aW9uKCkKK3sKKyAgICBtX3Njcm9sbENvbnRyb2xsZXIuc3Rv
cEtleWJvYXJkU2Nyb2xsaW5nKCk7Cit9CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogYm9v
bCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZl
bnQmKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCShy
ZXZpc2lvbiAyODQzMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZvaWQgc3RvcEtleWJvYXJkU2Nyb2xs
QW5pbWF0aW9uKCk7CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lk
IGhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgeyB9CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAJKHJl
dmlzaW9uIDI4NDMwMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDYgKzIxOSwxMSBAQCBib29sIFNjcm9sbGFibGVB
cmVhOjpoYW5kbGVXaGVlbEV2ZW50Rm9yCiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKIH0KIAor
dm9pZCBTY3JvbGxhYmxlQXJlYTo6c3RvcEtleWJvYXJkU2Nyb2xsQW5pbWF0aW9uKCkKK3sKKyAg
ICBzY3JvbGxBbmltYXRvcigpLnN0b3BLZXlib2FyZFNjcm9sbEFuaW1hdGlvbigpOworfQorCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJvb2wgU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVRvdWNo
RXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiB0b3VjaEV2ZW50KQogewpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCShyZXZpc2lvbiAyODQzMDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVzbmFwQWZ0ZXJMYXlvdXQo
KTsKICAgICB2b2lkIGRvUG9zdFRodW1iTW92ZVNuYXBwaW5nKFNjcm9sbGJhck9yaWVudGF0aW9u
KTsKIAorICAgIHZvaWQgc3RvcEtleWJvYXJkU2Nyb2xsQW5pbWF0aW9uKCk7CisKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0
IFBsYXRmb3JtVG91Y2hFdmVudCYpOwogI2VuZGlmCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODQzMDMpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MCBAQAorMjAyMS0xMC0xNSAgQmV0
aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+IGFuZCBEYW5hIEVzdHJhIDxkZXN0cmFAYXBwbGUu
Y29tPgorCisgICAgICAgIG1hY09TIGtleS1kcml2ZW4gc21vb3RoIHNjcm9sbGluZyBkb2VzIG5v
dCBzdG9wIHdoZW4gZm9jdXMgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MzAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHJhd0tleVVwIGFu
ZCByYXdLZXlEb3duIHRvIHRoZSBtYWNPUyB2ZXJzaW9ucyBvZiBXS1RSIGFuZCBEUlQuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAg
ICAgICAgKCtbRXZlbnRTZW5kaW5nQ29udHJvbGxlciBpbml0aWFsaXplXSk6CisgICAgICAgICgr
W0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDpd
KToKKyAgICAgICAgKCtbRXZlbnRTZW5kaW5nQ29udHJvbGxlciB3ZWJTY3JpcHROYW1lRm9yU2Vs
ZWN0b3I6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmF3S2V5RG93bjp3
aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29u
dHJvbGxlciByYXdLZXlEb3duV3JhcHBlcjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToK
KyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciByYXdLZXlVcDp3aXRoTW9kaWZpZXJz
OndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciByYXdL
ZXlVcFdyYXBwZXI6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpjcmVhdGVSYXdLZXlEb3duTWVzc2FnZUJvZHkp
OgorICAgICAgICAoV1RSOjpjcmVhdGVSYXdLZXlVcE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdU
Ujo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1t
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
ZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNl
bmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6
cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJv
eHkubW06CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24pOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHA6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGVyUHJveHk6OnJhd0tleURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5OjpyYXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5k
ZXJQcm94eVdQRS5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleURv
d24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcCk6CisKIDIwMjEt
MTAtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBVc2UgYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXIgaW5zdGVhZCBvZiBhcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIgd2hlbiBwcmVzZW50IGZvciBoYW5kbGluZyBQQ00gYXR0cmlidXRp
b24KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVy
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdD
b250cm9sbGVyLm1tCShyZXZpc2lvbiAyODQzMDMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5
Niw4IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBAImZvY3VzIiwKICAgICAgICAgQCJp
bnB1dCIsCiAgICAgICAgIEAia2V5ZG93biIsCisgICAgICAgIEAicmF3a2V5ZG93biIsCisgICAg
ICAgIEAicmF3a2V5dXAiLAogICAgICAgICBAImtleXByZXNzIiwKICAgICAgICAgQCJrZXl1cCIs
CiAgICAgICAgIEAibG9hZCIsCkBAIC0yMzksNiArMjQxLDggQEAgKyAoQk9PTClpc1NlbGVjdG9y
RXhjbHVkZWRGcm9tV2ViU2NyaXB0OgogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxl
Y3RvcihlbmFibGVET01VSUV2ZW50TG9nZ2luZzopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3Ig
PT0gQHNlbGVjdG9yKGZpcmVLZXlib2FyZEV2ZW50c1RvRWxlbWVudDopCiAgICAgICAgICAgICB8
fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRp
b246KQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihyYXdLZXlEb3duOndp
dGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikKKyAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBA
c2VsZWN0b3IocmF3S2V5VXA6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KQogICAgICAgICAg
ICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihsZWFwRm9yd2FyZDopCiAgICAgICAgICAgICB8
fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKG1vdXNlRG93bjp3aXRoTW9kaWZpZXJzOikKICAgICAg
ICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IobW91c2VNb3ZlVG9YOlk6KQpAQCAtMzAw
LDYgKzMwNCwxMCBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjooCiAg
ICAgICAgIHJldHVybiBAImZpcmVLZXlib2FyZEV2ZW50c1RvRWxlbWVudCI7CiAgICAgaWYgKGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3Ioa2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjop
KQogICAgICAgICByZXR1cm4gQCJrZXlEb3duIjsKKyAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxl
Y3RvcihyYXdLZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikpCisgICAgICAgIHJl
dHVybiBAInJhd0tleURvd24iOworICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tl
eVVwOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikpCisgICAgICAgIHJldHVybiBAInJhd0tl
eVVwIjsKICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihzY2hlZHVsZUFzeW5jaHJvbm91
c0tleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkKICAgICAgICAgcmV0dXJuIEAi
c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duIjsKICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxl
Y3RvcihsZWFwRm9yd2FyZDopKQpAQCAtMTAyMiw2ICsxMDMwLDc3IEBAIC0gKHZvaWQpa2V5RG93
bldyYXBwZXI6KE5TU3RyaW5nICopY2hhcmEKICAgICBbc2VsZiBrZXlEb3duOmNoYXJhY3RlciB3
aXRoTW9kaWZpZXJzOm1vZGlmaWVycyB3aXRoTG9jYXRpb246bG9jYXRpb25dOwogfQogCisKKy0g
KHZvaWQpcmF3S2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2Vi
U2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2Nh
dGlvbgoreworICAgIFJldGFpblB0cjxNb2RpZmllcktleXM+IG1vZGlmaWVyS2V5cyA9IFtNb2Rp
ZmllcktleXMgbW9kaWZpZXJLZXlzV2l0aEtleTpjaGFyYWN0ZXIgbW9kaWZpZXJzOmJ1aWxkTW9k
aWZpZXJGbGFncyhtb2RpZmllcnMpIGtleUxvY2F0aW9uOmxvY2F0aW9uXTsKKworICAgIFtbW21h
aW5GcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKKworI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZl
bnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleURvd24KKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9p
bnQoNSwgNSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleXMtPm1vZGlmaWVyRmxh
Z3MKKyAgICAgICAgdGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdp
bmRvd051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisg
ICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAg
ICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIuZ2V0KCkKKyAgICAgICAg
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzLmdldCgpCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlDb2Rl
Om1vZGlmaWVyS2V5cy0+a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2ZW50ID0gYWRvcHRO
UyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24g
dGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlz
LT5ldmVudENoYXJhY3Rlci5nZXQoKSBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZp
ZXJLZXlzLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkgbW9kaWZpZXJzOihXZWJF
dmVudEZsYWdzKW1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRo
RmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJh
Y3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9
PSAnXHQnKV0pOworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNB
cHAgX3NldEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07CisjZW5kaWYKKyAgICBbW1tbbWFpbkZy
YW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnQuZ2V0KCld
OworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50
Om5pbF07CisjZW5kaWYKK30KKworLSAodm9pZClyYXdLZXlEb3duV3JhcHBlcjooTlNTdHJpbmcg
KiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdp
dGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAgIFtzZWxmIHJhd0tleURv
d246Y2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlv
bl07Cit9CisKKy0gKHZvaWQpcmF3S2V5VXA6KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2Rp
ZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVk
IGxvbmcpbG9jYXRpb24KK3sKKyAgICBSZXRhaW5QdHI8TW9kaWZpZXJLZXlzPiBtb2RpZmllcktl
eXMgPSBbTW9kaWZpZXJLZXlzIG1vZGlmaWVyS2V5c1dpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVy
czpidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl07CisK
KyAgICBbW1ttYWluRnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CisKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2
ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcAorICAgICAgICBsb2NhdGlvbjpO
U01ha2VQb2ludCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5cy0+bW9k
aWZpZXJGbGFncworICAgICAgICB0aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KKyAg
ICAgICAgd2luZG93TnVtYmVyOltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051
bWJlcl0KKyAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRd
CisgICAgICAgIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQor
ICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAg
IGtleUNvZGU6bW9kaWZpZXJLZXlzLT5rZXlDb2RlXSk7CisjZWxzZQorICAgIGF1dG8gZXZlbnQg
PSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50
S2V5VXAgdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9kaWZp
ZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKSBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6
bW9kaWZpZXJLZXlzLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkgbW9kaWZpZXJz
OihXZWJFdmVudEZsYWdzKW1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpO
TyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVy
IGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRl
eDowXSA9PSAnXHQnKV0pOworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07CisjZW5kaWYKKyAgICBbW1tb
bWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50Lmdl
dCgpXTsKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRF
dmVudDpuaWxdOworI2VuZGlmCit9CisKKy0gKHZvaWQpcmF3S2V5VXBXcmFwcGVyOihOU1N0cmlu
ZyAqKWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMg
d2l0aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCit7CisgICAgW3NlbGYgcmF3S2V5
VXA6Y2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlv
bl07Cit9CisKIC0gKHZvaWQpc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duOihOU1N0cmluZyAq
KWNoYXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0
aExvY2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCiB7CiAgICAgTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uID0gW05TSW52b2NhdGlvbiBpbnZvY2F0aW9uV2l0aE1ldGhvZFNpZ25hdHVyZTpb
RXZlbnRTZW5kaW5nQ29udHJvbGxlciBpbnN0YW5jZU1ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9y
OkBzZWxlY3RvcihrZXlEb3duV3JhcHBlcjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopXV07
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAkocmV2aXNp
b24gMjg0MzAzKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDggQEAgcHVibGljOgogICAgIHZvaWQgbGVhcEZv
cndhcmQoaW50IG1pbGxpc2Vjb25kcyk7CiAKICAgICB2b2lkIGtleURvd24oV0tTdHJpbmdSZWYg
a2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdL
ZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycywgdW5zaWduZWQgbG9jYXRp
b24pOworICAgIHZvaWQgcmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJz
LCB1bnNpZ25lZCBsb2NhdGlvbik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB1bnNpZ25l
ZCBtb3VzZUJ1dHRvbnNDdXJyZW50bHlEb3duKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZUJ1dHRv
bnNDdXJyZW50bHlEb3duOyB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMjg0MzAzKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTYsNiArMTU5NiwxNiBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlS2V5RG93bk1lCiAgICAgbV9ldmVudFNlbmRl
clByb3h5LT5rZXlEb3duKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0VmFs
dWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9j
YXRpb24iKSk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlEb3du
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9v
bCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tleURvd24oc3Ry
aW5nVmFsdWUoZGljdGlvbmFyeSwgIktleSIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9k
aWZpZXJzIiksIHVpbnQ2NFZhbHVlKGRpY3Rpb25hcnksICJMb2NhdGlvbiIpKTsKK30KKwordm9p
ZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAg
ICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tleVVwKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJL
ZXkiKSwgdWludDY0VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShk
aWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJl
Y2VpdmVMaXZlRG9jdW1lbnRzTGlzdChXS0FycmF5UmVmIGxpdmVEb2N1bWVudExpc3QpCiB7CiAg
ICAgYXV0byBudW1Eb2N1bWVudHMgPSBXS0FycmF5R2V0U2l6ZShsaXZlRG9jdW1lbnRMaXN0KTsK
QEAgLTE2NTMsNiArMTY2MywxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVz
c2FnZUZyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tleURvd24iKSkg
eworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKGRpY3Rpb25hcnksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1l
LCAiUmF3S2V5VXAiKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VTY3JvbGxCeSIpKSB7CiAgICAgICAgICAgICBt
X2V2ZW50U2VuZGVyUHJveHktPm1vdXNlU2Nyb2xsQnkoZG91YmxlVmFsdWUoZGljdGlvbmFyeSwg
IlgiKSwgZG91YmxlVmFsdWUoZGljdGlvbmFyeSwgIlkiKSk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xNzEyLDYgKzE3MzIsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5
bmNocm9ubwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwog
ICAgICAgICB9CiAKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3Vi
TWVzc2FnZU5hbWUsICJSYXdLZXlEb3duIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdL
ZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCB0cnVlKTsKKyAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAi
UmF3S2V5VXAiKSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VNb3ZlVG8iKSkgewog
ICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3VzZU1vdmVUbyhkb3VibGVWYWx1ZShk
aWN0aW9uYXJ5LCAiWCIpLCBkb3VibGVWYWx1ZShkaWN0aW9uYXJ5LCAiWSIpLCBzdHJpbmdWYWx1
ZShkaWN0aW9uYXJ5LCAiUG9pbnRlclR5cGUiKSk7CiAgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCShyZXZpc2lvbiAyODQzMDMpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0MSw2ICs0NDEsOCBAQCBwcml2YXRl
OgogICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXph
dGlvblVzZXJEYXRhKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVLZXlEb3duTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBib29s
IHN5bmNocm9ub3VzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBib29s
IHN5bmNocm9ub3VzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUoV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBz
eW5jaHJvbm91cyk7CiAKICAgICAvLyBXS0NvbnRleHRDbGllbnQKICAgICBzdGF0aWMgdm9pZCBu
ZXR3b3JrUHJvY2Vzc0RpZENyYXNoKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCopOwpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODQzMDMpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsMTEgKzMwMSw0MSBAQCBzdGF0aWMgV0tSZXRhaW5Q
dHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlCiAgICAgcmV0dXJuIGJvZHk7CiB9CiAKK3N0YXRpYyBX
S1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVSYXdLZXlEb3duTWVzc2Fn
ZUJvZHkoSlNTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgaW50IGxv
Y2F0aW9uKQoreworICAgIGF1dG8gYm9keSA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNy
ZWF0ZSgpKTsKKyAgICBzZXRWYWx1ZShib2R5LCAiU3ViTWVzc2FnZSIsICJSYXdLZXlEb3duIik7
CisgICAgc2V0VmFsdWUoYm9keSwgIktleSIsIGtleSk7CisgICAgc2V0VmFsdWUoYm9keSwgIk1v
ZGlmaWVycyIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobW9kaWZpZXJzKSkpOworICAgIHNldFZh
bHVlKGJvZHksICJMb2NhdGlvbiIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobG9jYXRpb24pKSk7
CisgICAgcmV0dXJuIGJvZHk7Cit9CisKK3N0YXRpYyBXS1JldGFpblB0cjxXS011dGFibGVEaWN0
aW9uYXJ5UmVmPiBjcmVhdGVSYXdLZXlVcE1lc3NhZ2VCb2R5KEpTU3RyaW5nUmVmIGtleSwgV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGludCBsb2NhdGlvbikKK3sKKyAgICBhdXRvIGJvZHkg
PSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisgICAgc2V0VmFsdWUoYm9k
eSwgIlN1Yk1lc3NhZ2UiLCAiUmF3S2V5VXAiKTsKKyAgICBzZXRWYWx1ZShib2R5LCAiS2V5Iiwg
a2V5KTsKKyAgICBzZXRWYWx1ZShib2R5LCAiTW9kaWZpZXJzIiwgYWRvcHRXSyhXS1VJbnQ2NENy
ZWF0ZShtb2RpZmllcnMpKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIkxvY2F0aW9uIiwgYWRvcHRX
SyhXS1VJbnQ2NENyZWF0ZShsb2NhdGlvbikpKTsKKyAgICByZXR1cm4gYm9keTsKK30KKwogdm9p
ZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjprZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1
ZVJlZiBtb2RpZmllckFycmF5LCBpbnQgbG9jYXRpb24pCiB7CiAgICAgcG9zdFN5bmNocm9ub3Vz
UGFnZU1lc3NhZ2UoIkV2ZW50U2VuZGVyIiwgY3JlYXRlS2V5RG93bk1lc3NhZ2VCb2R5KGtleSwg
cGFyc2VNb2RpZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOwogfQogCit2b2lk
IEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1Zh
bHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbikKK3sKKyAgICBwb3N0U3luY2hyb25v
dXNQYWdlTWVzc2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVSYXdLZXlEb3duTWVzc2FnZUJvZHko
a2V5LCBwYXJzZU1vZGlmaWVyQXJyYXkobW9kaWZpZXJBcnJheSksIGxvY2F0aW9uKSk7Cit9CisK
K3ZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6cmF3S2V5VXAoSlNTdHJpbmdSZWYga2V5LCBK
U1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbikKK3sKKyAgICBwb3N0U3luY2hy
b25vdXNQYWdlTWVzc2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVSYXdLZXlVcE1lc3NhZ2VCb2R5
KGtleSwgcGFyc2VNb2RpZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOworfQor
CiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93
bihKU1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgcG9zdFBhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIs
IGNyZWF0ZUtleURvd25NZXNzYWdlQm9keShrZXksIDAsIDApKTsKSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5oCShyZXZpc2lvbiAyODQzMDMpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKIAogICAgIHZvaWQga2V5RG93
bihKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9u
KTsKKyAgICB2b2lkIHJhd0tleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlm
aWVyQXJyYXksIGludCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlVcChKU1N0cmluZ1JlZiBr
ZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKTsKICAgICB2b2lkIHNj
aGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihKU1N0cmluZ1JlZiBrZXkpOwogCiAgICAgdm9pZCB0
ZXh0Wm9vbUluKCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5pZGwJKHJldmlzaW9uIDI4NDMwMykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDExIEBAIGludGVyZmFjZSBFdmVudFNlbmRpbmdDb250cm9s
bGVyIHsKIAogICAgIHVuZGVmaW5lZCBsZWFwRm9yd2FyZChsb25nIG1pbGxpc2Vjb25kcyk7CiAK
KyAgICAvLyBrZXlEb3duIGlzIHJlYWxseSBrZXlVcEFuZERvd24sIGFuZCBwZXJoYXBzIHNob3Vs
ZCBiZSByZW5hbWVkIHRvIHJlZmxlY3QgdGhhdC4KKyAgICAvLyByYXdLZXlEb3duIGlzIGp1c3Qg
dGhlIGtleURvd24sIGFuZCByYXdLZXlVcCBpcyBqdXN0IHRoZSBrZXlVcAogICAgIHVuZGVmaW5l
ZCBrZXlEb3duKERPTVN0cmluZyBrZXksIG9iamVjdCBtb2RpZmllckFycmF5LCBsb25nIGxvY2F0
aW9uKTsKKyAgICB1bmRlZmluZWQgcmF3S2V5RG93bihET01TdHJpbmcga2V5LCBvYmplY3QgbW9k
aWZpZXJBcnJheSwgbG9uZyBsb2NhdGlvbik7CisgICAgdW5kZWZpbmVkIHJhd0tleVVwKERPTVN0
cmluZyBrZXksIG9iamVjdCBtb2RpZmllckFycmF5LCBsb25nIGxvY2F0aW9uKTsKICAgICB1bmRl
ZmluZWQgc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKERPTVN0cmluZyBrZXkpOwogCiAgICAg
Ly8gWm9vbSBmdW5jdGlvbnMuCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2lvcy9FdmVudFNlbmRlclByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0J
KHJldmlzaW9uIDI4NDMwMykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5
LDE0IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKIHsKIH0KIAor
dm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVu
dE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlm
aWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCiB2b2lkIEV2ZW50
U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkoaW50IHgsIGludCB5KQogewogfQpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAJ
KHJldmlzaW9uIDI4NDMwMykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2Vu
ZGVyUHJveHlHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1LDE0IEBAIHZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICB3ZWJraXRXZWJWaWV3QmFz
ZVN5bnRoZXNpemVLZXlFdmVudCh0b1dlYktpdEdMaWJBUEkobV90ZXN0Q29udHJvbGxlci0+bWFp
bldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkpLCBLZXlFdmVudFR5cGU6Okluc2VydCwgZ2RrS2V5
U3ltLCBtb2RpZmllcnMsIFNob3VsZFRyYW5zbGF0ZUtleWJvYXJkU3RhdGU6Ok5vKTsKIH0KIAor
dm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVu
dE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlm
aWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCiB2b2lkIEV2ZW50
U2VuZGVyUHJveHk6Om1vdXNlRG93bih1bnNpZ25lZCBidXR0b24sIFdLRXZlbnRNb2RpZmllcnMg
d2tNb2RpZmllcnMsIFdLU3RyaW5nUmVmIHBvaW50ZXJUeXBlKQogewogICAgIHVuc2lnbmVkIGdk
a0J1dHRvbiA9IGV2ZW50U2VuZGVyQnV0dG9uVG9HREtCdXR0b24oYnV0dG9uKTsKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQkocmV2aXNp
b24gMjg0MzAzKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94
eS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjU5LDYgKzY1OSw0NiBAQCB2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmls
XTsKIH0KIAordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtl
eSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQorewor
ICAgIFJldGFpblB0cjxNb2RpZmllcktleXM+IG1vZGlmaWVyS2V5cyA9IFtNb2RpZmllcktleXMg
bW9kaWZpZXJLZXlzV2l0aEtleTp0b1dURlN0cmluZyhrZXkpIG1vZGlmaWVyczpidWlsZE1vZGlm
aWVyRmxhZ3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjprZXlMb2NhdGlvbl07CisKKyAgICBOU0V2
ZW50ICpldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3du
CisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAgICAgIG1vZGlmaWVyRmxh
Z3M6bW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzCisgICAgICAgIHRpbWVzdGFtcDphYnNvbHV0
ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVudEV2ZW50VGltZSgpKQorICAgICAgICB3aW5kb3dOdW1i
ZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2lu
ZG93TnVtYmVyXQorICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29u
dGV4dF0KKyAgICAgICAgY2hhcmFjdGVyczptb2RpZmllcktleXMtPmV2ZW50Q2hhcmFjdGVyLmdl
dCgpCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleXMtPmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy5nZXQoKQorICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAg
ICAgICAga2V5Q29kZTptb2RpZmllcktleXMtPmtleUNvZGVdOworCisgICAgW05TQXBwIF9zZXRD
dXJyZW50RXZlbnQ6ZXZlbnRdOworICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXco
KS0+cGxhdGZvcm1XaW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5RG93bjpldmVudF07CisgICAg
W05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5
OjpyYXdLZXlVcChXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1
bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKKyAgICBSZXRhaW5QdHI8TW9kaWZpZXJLZXlzPiBtb2Rp
ZmllcktleXMgPSBbTW9kaWZpZXJLZXlzIG1vZGlmaWVyS2V5c1dpdGhLZXk6dG9XVEZTdHJpbmco
a2V5KSBtb2RpZmllcnM6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycykga2V5TG9jYXRpb246
a2V5TG9jYXRpb25dOworCisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdp
dGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwg
NSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MKKyAg
ICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1l
KCkpCisgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXco
KS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNvbnRleHQ6W05TR3Jh
cGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVy
S2V5cy0+ZXZlbnRDaGFyYWN0ZXIuZ2V0KCkKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmdldCgpCisg
ICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5cy0+a2V5Q29k
ZV07CisKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CisgICAgW1ttX3Rlc3RD
b250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9uZGVy
XSBrZXlVcDpldmVudF07CisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKK30KKwog
dm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSkKIHsKICAg
ICBhdXRvIGNnU2Nyb2xsRXZlbnQgPSBhZG9wdENGKENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2
ZW50MigwLCBrQ0dTY3JvbGxFdmVudFVuaXRMaW5lLCAyLCB5LCB4LCAwKSk7CkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcAko
cmV2aXNpb24gMjg0MzAzKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5k
ZXJQcm94eVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw2ICszMTQsMTQgQEAgdm9pZCBF
dmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgICAgICBTZXRLZXlib2FyZFN0
YXRlKGtleVN0YXRlKTsKIH0KIAordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdL
U3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxv
Y2F0aW9uKQoreworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5n
UmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9u
KQoreworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6YWRkVG91Y2hQb2ludChpbnQsIGludCkKIHsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCShyZXZpc2lvbiAyODQzMDMp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMyNywxNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OmtleURvd24oV0tTdHJpbmdSCiAgICAgZnJlZShlbnRyaWVzKTsKIH0KIAordm9pZCBFdmVudFNl
bmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmll
cnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQogewogICAgIHN0cnVjdCB3cGVfaW5wdXRfdG91
Y2hfZXZlbnRfcmF3IHJhd0V2ZW50IHsgd3BlX2lucHV0X3RvdWNoX2V2ZW50X3R5cGVfZG93biwg
c2VjVG9Nc1RpbWVzdGFtcChtX3RpbWUpLCBzdGF0aWNfY2FzdDxpbnQ+KG1fdG91Y2hFdmVudHMu
c2l6ZSgpKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oeCksIHN0YXRpY19jYXN0PGludDMyX3Q+KHkp
IH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODQzMDMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0xMC0xNSAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+IGFuZCBEYW5hIEVzdHJhIDxkZXN0cmFAYXBwbGUuY29tPgorCisg
ICAgICAgIG1hY09TIGtleS1kcml2ZW4gc21vb3RoIHNjcm9sbGluZyBkb2VzIG5vdCBzdG9wIHdo
ZW4gZm9jdXMgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI4MzAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgdXNlRmxleGlibGVWaWV3cG9ydCBhbmQgRXZlbnRIYW5kbGVyRHJpdmVuU21vb3Ro
S2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkIGtleXMgYXJlIFdLMiBvbmx5IAorICAgICAgICByaWdo
dCBub3csIHNvIHNraXAgdGhlIG5ldyB0ZXN0IGluIGdlbmVyYWwuCisgICAgICAgICogVGVzdEV4
cGVjdGF0aW9uczoKKworICAgICAgICBOZXcgdGVzdCB0aGF0IHZlcmlmaWVzIHRoaXMgYnVnIGlz
IHJlc29sdmVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGls
ZS1rZXlib2FyZC1zY3JvbGxpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWw6
IEFkZGVkLgorCisgICAgICAgIERvIHJ1biB0aGUgdGVzdCBmb3IgbWFjLXdrMi4gcmF3S2V5RG93
biAvIHJhd0tleVVwIGFyZSBjdXJyZW50bHkgbm90IGltcGxlbWVudGVkIAorICAgICAgICBlbHNl
d2hlcmUuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCisg
ICAgICAgIE5ldyBzdXBwb3J0IGZvciByYXdLZXlEb3duIGluIG9yZGVyIHRvIHNpbXVsYXRlIGhv
bGRpbmcgdGhlIGtleSBkb3duLgorICAgICAgICAqIHJlc291cmNlcy91aS1oZWxwZXIuanM6Cisg
ICAgICAgICh3aW5kb3cuVUlIZWxwZXIucmF3S2V5RG93bik6CisgICAgICAgICh3aW5kb3cuVUlI
ZWxwZXIucmF3S2V5VXApOgorCiAyMDIxLTEwLTE1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gRW5hYmxlIGlubGluZSBib3hl
cyB3aXRoIGJvcmRlcnMKSW5kZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjg0MzAzKQor
KysgTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtOTcsNiAr
OTcsNyBAQCBmYXN0L2Zvcm1zL2VudGVya2V5aGludC1hdHRyaWJ1dGUtdmFsdWVzCiBmYXN0L3Nj
cm9sbGluZy9rZXlib2FyZC1zY3JvbGxpbmctZGlzdGFuY2UtZG93bkFycm93Lmh0bWwgWyBTa2lw
IF0KIGZhc3Qvc2Nyb2xsaW5nL2tleWJvYXJkLXNjcm9sbGluZy1kaXN0YW5jZS1wYWdlRG93bi5o
dG1sIFsgU2tpcCBdCiBmYXN0L3Njcm9sbGluZy9rZXlib2FyZC1zY3JvbGxpbmctbGFzdC10aW1l
c3RhbXAuaHRtbCBbIFNraXAgXQorZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxl
LWtleWJvYXJkLXNjcm9sbGluZy5odG1sIFsgU2tpcCBdCiAKICMgSGlnaGxpZ2h0aW5nIG1hcmtl
ZCB0ZXh0IHJhbmdlcyBmcm9tIGxheW91dCB0ZXN0cyBpcyBvbmx5IHN1cHBvcnRlZCBpbiBXZWJL
aXQyLgogZWRpdGluZy9pbnB1dC9jb21wb3NpdGlvbi1oaWdobGlnaHRzLmh0bWwgWyBTa2lwIF0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1r
ZXlib2FyZC1zY3JvbGxpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmct
ZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1NVQ0NFU1M6IEJsdWUgZnJhbWUgc3RvcHBlZCBzY29s
bGluZyBiZWZvcmUgcmVkIGZyYW1lCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5
Ym9hcmQtc2Nyb2xsaW5nLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIEV2ZW50SGFuZGxlckRyaXZlblNtb290aEtleWJvYXJkU2Nyb2xsaW5n
RW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxtZXRhIG5hbWU9InZpZXdw
b3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuNSwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAg
PHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsUmVkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbGV0IHJlZE9mZnNldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyZWQtZnJhbWUnKS5jb250ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXcuc2Nyb2xsWTsKKyAgICAg
ICAgICAgIGxldCBibHVlT2Zmc2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JsdWUtZnJh
bWUnKS5jb250ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXcuc2Nyb2xsWTsKKyAgICAgICAgICAgIGlm
IChyZWRPZmZzZXQgPiAxOTAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGJsdWVPZmZzZXQgPiAx
OTAwKQorICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiRkFJTDogQmx1ZSBmcmFtZSBzY3JvbGxl
ZCBhcyBmYXIgYXMgdGhlIHJlZCBmcmFtZS4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIGRlYnVnKCJTVUNDRVNTOiBCbHVlIGZyYW1lIHN0b3BwZWQgc2NvbGxp
bmcgYmVmb3JlIHJlZCBmcmFtZSIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYXN5bmMgZnVuY3Rp
b24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5u
ZXIgfHwgIXRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICBsZXQgYmx1ZUZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Js
dWUtZnJhbWUnKTsKKyAgICAgICAgICAgIGxldCByZWRGcmFtZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZWQtZnJhbWUnKTsKKyAgICAgICAgICAgIGxldCByZWREb2N1bWVudCA9IHJlZEZy
YW1lLmNvbnRlbnREb2N1bWVudDsKKworICAgICAgICAgICAgcmVkRG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigic2Nyb2xsIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHNjcm9sbFJl
ZCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGJsdWVGcmFtZS5mb2N1cygpOwor
ICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIucmF3S2V5RG93bigiZG93bkFycm93Iik7CisgICAg
ICAgICAgICByZWRGcmFtZS5mb2N1cygpOworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIucmF3
S2V5RG93bigiZG93bkFycm93Iik7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8c3R5
bGU+CisgICAgI3BsYWNlaG9sZGVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBo
ZWlnaHQ6IDUwMDBweDsKKyAgICB9CisgICAgaWZyYW1lIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4
OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHkgc3R5bGU9Im1hcmdpbjogMDsiIG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8aWZyYW1l
IGlkPSJibHVlLWZyYW1lIiBzcmNkb2M9IjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0
OiAyMDAwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7Jz48L2Rpdj4iPjwvaWZyYW1lPgorICAg
IDxpZnJhbWUgaWQ9InJlZC1mcmFtZSIgc3JjZG9jPSI8ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7
IGhlaWdodDogMjAwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48L2Rpdj4iPjwvaWZyYW1l
PgorICAgIDxkaXYgaWQ9InBsYWNlaG9sZGVyIj4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI4NDMwMykKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsOCBAQCBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbGl2CiBmYXN0L21l
ZGlhL21xLXByZWZlcnMtY29udHJhc3QtbGl2ZS11cGRhdGUuaHRtbCBbIFBhc3MgXQogZmFzdC9t
ZWRpYS9tcS1wcmVmZXJzLWNvbnRyYXN0Lmh0bWwgWyBQYXNzIF0KIAorZmFzdC9zY3JvbGxpbmcv
dW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNjcm9sbGluZy5odG1sIFsgUGFzcyBdCisK
IGh0dHAvdGVzdHMvc3NsL2FwcGxlcGF5IFsgUGFzcyBdCiAKICMgQVBQTEVfUEFZX0lOU1RBTExN
RU5UUyB3YXMgZmlyc3QgYXZhaWxhYmxlIGluIENhdGFsaW5hLgpJbmRleDogTGF5b3V0VGVzdHMv
cmVzb3VyY2VzL3VpLWhlbHBlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9yZXNvdXJj
ZXMvdWktaGVscGVyLmpzCShyZXZpc2lvbiAyODQzMDMpCisrKyBMYXlvdXRUZXN0cy9yZXNvdXJj
ZXMvdWktaGVscGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsNiArMzQ0LDMwIEBAIHdpbmRv
dy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICAgICAgfQogICAgIH0KIAorICAgIHN0
YXRpYyByYXdLZXlEb3duKGtleSwgbW9kaWZpZXJzPVtdKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkpIHsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLnJhd0tleURvd24oa2V5LCBtb2RpZmllcnMpOworICAgICAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1
aUNvbnRyb2xsZXIucmF3S2V5RG93bigiJHtrZXl9IiwgJHtKU09OLnN0cmluZ2lmeShtb2RpZmll
cnMpfSk7YCwgcmVzb2x2ZSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHN0YXRpYyByYXdL
ZXlVcChrZXksIG1vZGlmaWVycz1bXSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5pc1dlYktp
dDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7CisgICAgICAgICAgICBldmVudFNlbmRlci5y
YXdLZXlVcChrZXksIG1vZGlmaWVycyk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNv
bHZlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUp
ID0+IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29udHJvbGxlci5y
YXdLZXlVcCgiJHtrZXl9IiwgJHtKU09OLnN0cmluZ2lmeShtb2RpZmllcnMpfSk7YCwgcmVzb2x2
ZSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIHN0YXRpYyBrZXlEb3duKGtleSwgbW9kaWZp
ZXJzPVtdKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlz
SU9TRmFtaWx5KCkpIHsK
</data>
<flag name="review"
          id="465738"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="465848"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441810</attachid>
            <date>2021-10-19 15:52:16 -0700</date>
            <delta_ts>2021-10-20 14:50:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>35176</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDQ5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIxLTEwLTE5ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4gYW5kIERhbmEgRXN0cmEgPGRlc3RyYUBhcHBsZS5jb20+
CisKKyAgICAgICAgbWFjT1Mga2V5LWRyaXZlbiBzbW9vdGggc2Nyb2xsaW5nIGRvZXMgbm90IHN0
b3Agd2hlbiBmb2N1cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIHN0b3BLZXlib2FyZFNjcm9sbEFuaW1hdGlvbigpIG9uIHRoZSBv
bGQgRnJhbWVWaWV3IGFmdGVyIGNoYW5naW5nIEZyYW1lIGZvY3VzLgorICAgICAgICAqIHBhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6
c2V0Rm9jdXNlZEZyYW1lKToKKworICAgICAgICBDYWxsIHN0b3BLZXlib2FyZFNjcm9sbEFuaW1h
dGlvbigpIHdoZW4gdGhlIHdpbmRvdyB2aXNpYmlsaXR5IC8gYWN0aXZlIHN0YXRlIGNoYW5nZXMu
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldEFj
dGl2aXR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3RvcEtleWJvYXJkU2Nyb2xs
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKworICAgICAgICBQbHVtYmluZyB0
byBnZXQgdG8gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIsIHdoaWNoIGNhbiBpbnZva2Uga2V5
VXAuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3I6OnN0b3BLZXlib2FyZFNjcm9sbEFuaW1hdGlvbik6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c3RvcEtl
eWJvYXJkU2Nyb2xsQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oOgorCiAyMDIxLTEwLTE5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjI4NDMzNik6IFsgaU9TIDE1IF0gc3lzdGVtLXByZXZp
ZXcvYmFkZ2UuaHRtbCBpcyBpbWFnZSBmYWlsaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODQ0OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw3ICszNTksOCBA
QCB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEZyYW1lKEZyCiAgICAgbV9mb2N1c2Vk
RnJhbWUgPSBuZXdGcmFtZTsKIAogICAgIC8vIE5vdyB0aGF0IHRoZSBmcmFtZSBpcyB1cGRhdGVk
LCBmaXJlIGV2ZW50cyBhbmQgdXBkYXRlIHRoZSBzZWxlY3Rpb24gZm9jdXNlZCBzdGF0ZXMgb2Yg
Ym90aCBmcmFtZXMuCi0gICAgaWYgKG9sZEZyYW1lICYmIG9sZEZyYW1lLT52aWV3KCkpIHsKKyAg
ICBpZiAoYXV0byogb2xkRnJhbWVWaWV3ID0gb2xkRnJhbWUgPyBvbGRGcmFtZS0+dmlldygpIDog
bnVsbHB0cikgeworICAgICAgICBvbGRGcmFtZVZpZXctPnN0b3BLZXlib2FyZFNjcm9sbEFuaW1h
dGlvbigpOwogICAgICAgICBvbGRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0Rm9jdXNlZChmYWxzZSk7
CiAgICAgICAgIG9sZEZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShy
ZXZpc2lvbiAyODQ0OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzYyLDEzICsyMzYyLDM2IEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0
ZShPcHRpb25TZXQ8QWMKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9hY3Rpdml0eVN0YXRl
Q2hhbmdlT2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KG9sZEFjdGl2aXR5U3RhdGUsIG1fYWN0aXZpdHlTdGF0ZSk7CiAKLSAgICBpZiAod2FzVmlzaWJs
ZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkKKyAgICBpZiAod2FzVmlzaWJsZUFu
ZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkgewogICAgICAgICBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3NhcnkoKTsKKyAgICAg
ICAgc3RvcEtleWJvYXJkU2Nyb2xsQW5pbWF0aW9uKCk7CisgICAgfQogCiAgICAgaWYgKG1fcGVy
Zm9ybWFuY2VNb25pdG9yKQogICAgICAgICBtX3BlcmZvcm1hbmNlTW9uaXRvci0+YWN0aXZpdHlT
dGF0ZUNoYW5nZWQob2xkQWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZSk7CiB9CiAKK3ZvaWQg
UGFnZTo6c3RvcEtleWJvYXJkU2Nyb2xsQW5pbWF0aW9uKCkKK3sKKyAgICBmb3IgKGF1dG8qIGZy
YW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKSB7CisgICAgICAgIGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAg
ICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZnJh
bWVWaWV3LT5zdG9wS2V5Ym9hcmRTY3JvbGxBbmltYXRpb24oKTsKKworICAgICAgICBhdXRvIHNj
cm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFyZWFzKCk7CisgICAgICAgIGlm
ICghc2Nyb2xsYWJsZUFyZWFzKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9y
IChhdXRvJiBzY3JvbGxhYmxlQXJlYSA6ICpzY3JvbGxhYmxlQXJlYXMpIHsKKyAgICAgICAgICAg
IC8vIEZpcnN0IGNhbGwgc3RvcEFzeW5jQW5pbWF0ZWRTY3JvbGwoKSB0byBwcmVwYXJlIGZvciB0
aGUga2V5Ym9hcmQgc2Nyb2xsZXIgcnVubmluZyBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZC4KKyAg
ICAgICAgICAgIHNjcm9sbGFibGVBcmVhLT5zdG9wQXN5bmNBbmltYXRlZFNjcm9sbCgpOworICAg
ICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnN0b3BLZXlib2FyZFNjcm9sbEFuaW1hdGlvbigpOwor
ICAgICAgICB9CisgICAgfQorfQorCiBib29sIFBhZ2U6OmlzVmlzaWJsZUFuZEFjdGl2ZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRl
OjpJc1Zpc2libGUpICYmIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0YXRlOjpX
aW5kb3dJc0FjdGl2ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjg0NDk0KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwNSw2ICs5MDUs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SXNWaXNpYmxlSW50ZXJuYWwoYm9vbCk7CiAgICAg
dm9pZCBzZXRJc1Zpc3VhbGx5SWRsZUludGVybmFsKGJvb2wpOwogCisgICAgdm9pZCBzdG9wS2V5
Ym9hcmRTY3JvbGxBbmltYXRpb24oKTsKKwogICAgIGVudW0gU2hvdWxkSGlnaGxpZ2h0TWF0Y2hl
cyB7IERvTm90SGlnaGxpZ2h0TWF0Y2hlcywgSGlnaGxpZ2h0TWF0Y2hlcyB9OwogICAgIGVudW0g
U2hvdWxkTWFya01hdGNoZXMgeyBEb05vdE1hcmtNYXRjaGVzLCBNYXJrTWF0Y2hlcyB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCShyZXZpc2lv
biAyODQ0OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNCw2ICsyMzQsMTEgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6
aGFuZGxlV2hlZWxFdmVudChjbwogI2VuZGlmCiB9CiAKK3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OnN0
b3BLZXlib2FyZFNjcm9sbEFuaW1hdGlvbigpCit7CisgICAgbV9zY3JvbGxDb250cm9sbGVyLnN0
b3BLZXlib2FyZFNjcm9sbGluZygpOworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJv
b2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2
ZW50JikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAko
cmV2aXNpb24gMjg0NDk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2b2lkIHN0b3BLZXlib2FyZFNjcm9s
bEFuaW1hdGlvbigpOworICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UpIHsgfQogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCShy
ZXZpc2lvbiAyODQ0OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw2ICsyMTksMTEgQEAgYm9vbCBTY3JvbGxhYmxl
QXJlYTo6aGFuZGxlV2hlZWxFdmVudEZvcgogICAgIHJldHVybiBoYW5kbGVkRXZlbnQ7CiB9CiAK
K3ZvaWQgU2Nyb2xsYWJsZUFyZWE6OnN0b3BLZXlib2FyZFNjcm9sbEFuaW1hdGlvbigpCit7Cisg
ICAgc2Nyb2xsQW5pbWF0b3IoKS5zdG9wS2V5Ym9hcmRTY3JvbGxBbmltYXRpb24oKTsKK30KKwog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBib29sIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVUb3Vj
aEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAkocmV2aXNpb24gMjg0NDk0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAkod29ya2luZyBjb3B5
KQpAQCAtMTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc25hcEFmdGVyTGF5b3V0
KCk7CiAgICAgdm9pZCBkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyhTY3JvbGxiYXJPcmllbnRhdGlv
bik7CiAKKyAgICB2b2lkIHN0b3BLZXlib2FyZFNjcm9sbEFuaW1hdGlvbigpOworCiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25z
dCBQbGF0Zm9ybVRvdWNoRXZlbnQmKTsKICNlbmRpZgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjg0NDk0KQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjEtMTAtMTkgIEJl
dGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPiBhbmQgRGFuYSBFc3RyYSA8ZGVzdHJhQGFwcGxl
LmNvbT4KKworICAgICAgICBtYWNPUyBrZXktZHJpdmVuIHNtb290aCBzY3JvbGxpbmcgZG9lcyBu
b3Qgc3RvcCB3aGVuIGZvY3VzIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciByYXdLZXlVcCBh
bmQgcmF3S2V5RG93biB0byB0aGUgbWFjT1MgdmVyc2lvbnMgb2YgV0tUUiBhbmQgRFJULgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06Cisg
ICAgICAgICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgaW5pdGlhbGl6ZV0pOgorICAgICAgICAo
K1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6
XSk6CisgICAgICAgICgrW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNl
bGVjdG9yOl0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJhd0tleURvd246
d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIgcmF3S2V5RG93bldyYXBwZXI6d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6
CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmF3S2V5VXA6d2l0aE1vZGlmaWVy
czp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmF3
S2V5VXBXcmFwcGVyOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOl0pOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGw6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6Y3JlYXRlUmF3S2V5RG93bk1lc3NhZ2VCb2R5
KToKKyAgICAgICAgKFdUUjo6Y3JlYXRlUmF3S2V5VXBNZXNzYWdlQm9keSk6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnJhd0tleURvd24pOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRpbmdDb250cm9sbGVyOjpyYXdLZXlVcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvRXZlbnRTZW5kZXJQcm94eUlPUy5t
bToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OmRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlUmF3S2V5VXBNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6cmF3S2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6
OnJhd0tleVVwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclBy
b3h5Lm1tOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQ
cm94eTo6cmF3S2V5VXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2Vu
ZGVyUHJveHlXUEUuY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyYXdLZXlE
b3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6cmF3S2V5VXApOgorCiAyMDIx
LTEwLTE5ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtF
V1NdIE1vdmUgRVdTIGJvdHMgdG8gaU9TIDE1IC8gd2F0Y2hPUyA4IC8gdHZPUyAxNQpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
bW0JKHJldmlzaW9uIDI4NDQ5NCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNl
bmRpbmdDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDggQEAgKyAo
dm9pZClpbml0aWFsaXplCiAgICAgICAgIEAiZm9jdXMiLAogICAgICAgICBAImlucHV0IiwKICAg
ICAgICAgQCJrZXlkb3duIiwKKyAgICAgICAgQCJyYXdrZXlkb3duIiwKKyAgICAgICAgQCJyYXdr
ZXl1cCIsCiAgICAgICAgIEAia2V5cHJlc3MiLAogICAgICAgICBAImtleXVwIiwKICAgICAgICAg
QCJsb2FkIiwKQEAgLTIzOSw2ICsyNDEsOCBAQCArIChCT09MKWlzU2VsZWN0b3JFeGNsdWRlZEZy
b21XZWJTY3JpcHQ6CiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGVuYWJs
ZURPTVVJRXZlbnRMb2dnaW5nOikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0
b3IoZmlyZUtleWJvYXJkRXZlbnRzVG9FbGVtZW50OikKICAgICAgICAgICAgIHx8IGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3Ioa2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopCisgICAg
ICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tleURvd246d2l0aE1vZGlmaWVy
czp3aXRoTG9jYXRpb246KQorICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcihy
YXdLZXlVcDp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopCiAgICAgICAgICAgICB8fCBhU2Vs
ZWN0b3IgPT0gQHNlbGVjdG9yKGxlYXBGb3J3YXJkOikKICAgICAgICAgICAgIHx8IGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3IobW91c2VEb3duOndpdGhNb2RpZmllcnM6KQogICAgICAgICAgICAgfHwg
YVNlbGVjdG9yID09IEBzZWxlY3Rvcihtb3VzZU1vdmVUb1g6WTopCkBAIC0zMDAsNiArMzA0LDEw
IEBAICsgKE5TU3RyaW5nICopd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOigKICAgICAgICAgcmV0
dXJuIEAiZmlyZUtleWJvYXJkRXZlbnRzVG9FbGVtZW50IjsKICAgICBpZiAoYVNlbGVjdG9yID09
IEBzZWxlY3RvcihrZXlEb3duOndpdGhNb2RpZmllcnM6d2l0aExvY2F0aW9uOikpCiAgICAgICAg
IHJldHVybiBAImtleURvd24iOworICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHJhd0tl
eURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246KSkKKyAgICAgICAgcmV0dXJuIEAicmF3
S2V5RG93biI7CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IocmF3S2V5VXA6d2l0aE1v
ZGlmaWVyczp3aXRoTG9jYXRpb246KSkKKyAgICAgICAgcmV0dXJuIEAicmF3S2V5VXAiOwogICAg
IGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bjp3
aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopKQogICAgICAgICByZXR1cm4gQCJzY2hlZHVsZUFz
eW5jaHJvbm91c0tleURvd24iOwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGxlYXBG
b3J3YXJkOikpCkBAIC0xMDIyLDYgKzEwMzAsNzYgQEAgLSAodm9pZClrZXlEb3duV3JhcHBlcjoo
TlNTdHJpbmcgKiljaGFyYQogICAgIFtzZWxmIGtleURvd246Y2hhcmFjdGVyIHdpdGhNb2RpZmll
cnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07CiB9CiAKKy0gKHZvaWQpcmF3S2V5
RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0
ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAg
IFJldGFpblB0cjxNb2RpZmllcktleXM+IG1vZGlmaWVyS2V5cyA9IFtNb2RpZmllcktleXMgbW9k
aWZpZXJLZXlzV2l0aEtleTpjaGFyYWN0ZXIgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyht
b2RpZmllcnMpIGtleUxvY2F0aW9uOmxvY2F0aW9uXTsKKworICAgIFtbW21haW5GcmFtZSBmcmFt
ZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIGF1dG8gZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpO
U0V2ZW50VHlwZUtleURvd24KKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAg
ICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MKKyAgICAgICAg
dGltZXN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgIHdpbmRvd051bWJlcjpb
W1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNvbnRl
eHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0ZXJz
Om1vZGlmaWVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIuZ2V0KCkKKyAgICAgICAgY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
LmdldCgpCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5
cy0+a2V5Q29kZV0pOworI2Vsc2UKKyAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50
IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOltz
ZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJh
Y3Rlci5nZXQoKSBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdzKW1v
ZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRo
SW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6
MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOwor
I2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1cnJl
bnRFdmVudDpldmVudC5nZXQoKV07CisjZW5kaWYKKyAgICBbW1tbbWFpbkZyYW1lIHdlYlZpZXdd
IHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnQuZ2V0KCldOworI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CisjZW5k
aWYKK30KKworLSAodm9pZClyYXdLZXlEb3duV3JhcHBlcjooTlNTdHJpbmcgKiljaGFyYWN0ZXIg
d2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoo
dW5zaWduZWQgbG9uZylsb2NhdGlvbgoreworICAgIFtzZWxmIHJhd0tleURvd246Y2hhcmFjdGVy
IHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07Cit9CisKKy0g
KHZvaWQpcmF3S2V5VXA6KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpdGhNb2RpZmllcnM6KFdlYlNj
cmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246KHVuc2lnbmVkIGxvbmcpbG9jYXRp
b24KK3sKKyAgICBSZXRhaW5QdHI8TW9kaWZpZXJLZXlzPiBtb2RpZmllcktleXMgPSBbTW9kaWZp
ZXJLZXlzIG1vZGlmaWVyS2V5c1dpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1vZGlm
aWVyRmxhZ3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl07CisKKyAgICBbW1ttYWlu
RnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CisKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2ZW50
V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcAorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1
LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncwor
ICAgICAgICB0aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KKyAgICAgICAgd2luZG93
TnVtYmVyOltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KKyAgICAg
ICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAgIGNo
YXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQorICAgICAgICBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnMuZ2V0KCkKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6bW9k
aWZpZXJLZXlzLT5rZXlDb2RlXSk7CisjZWxzZQorICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtb
V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0
YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVu
dENoYXJhY3Rlci5nZXQoKSBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlz
LT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkgbW9kaWZpZXJzOihXZWJFdmVudEZs
YWdzKW1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6
MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0
SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQn
KV0pOworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3Nl
dEN1cnJlbnRFdmVudDpldmVudC5nZXQoKV07CisjZW5kaWYKKyAgICBbW1tbbWFpbkZyYW1lIHdl
YlZpZXddIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50LmdldCgpXTsKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOwor
I2VuZGlmCit9CisKKy0gKHZvaWQpcmF3S2V5VXBXcmFwcGVyOihOU1N0cmluZyAqKWNoYXJhY3Rl
ciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9u
Oih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCit7CisgICAgW3NlbGYgcmF3S2V5VXA6Y2hhcmFjdGVy
IHdpdGhNb2RpZmllcnM6bW9kaWZpZXJzIHdpdGhMb2NhdGlvbjpsb2NhdGlvbl07Cit9CisKIC0g
KHZvaWQpc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3
aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9uOih1
bnNpZ25lZCBsb25nKWxvY2F0aW9uCiB7CiAgICAgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0g
W05TSW52b2NhdGlvbiBpbnZvY2F0aW9uV2l0aE1ldGhvZFNpZ25hdHVyZTpbRXZlbnRTZW5kaW5n
Q29udHJvbGxlciBpbnN0YW5jZU1ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yOkBzZWxlY3Rvcihr
ZXlEb3duV3JhcHBlcjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjopXV07CkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAkocmV2aXNpb24gMjg0NDk0KQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcwLDYgKzcwLDggQEAgcHVibGljOgogICAgIHZvaWQgbGVhcEZvcndhcmQoaW50IG1p
bGxpc2Vjb25kcyk7CiAKICAgICB2b2lkIGtleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50
TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlEb3duKFdLU3Ry
aW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycywgdW5zaWduZWQgbG9jYXRpb24pOworICAgIHZv
aWQgcmF3S2V5VXAoV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBs
b2NhdGlvbik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB1bnNpZ25lZCBtb3VzZUJ1dHRv
bnNDdXJyZW50bHlEb3duKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZUJ1dHRvbnNDdXJyZW50bHlE
b3duOyB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjg0NDk0KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTcsNiArMTU5NywxNiBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjpkaWRSZWNlaXZlS2V5RG93bk1lCiAgICAgbV9ldmVudFNlbmRlclByb3h5LT5rZXlE
b3duKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0VmFsdWUoZGljdGlvbmFy
eSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTG9jYXRpb24iKSk7CiB9
CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91
cykKK3sKKyAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJhd0tleURvd24oc3RyaW5nVmFsdWUoZGlj
dGlvbmFyeSwgIktleSIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAiTW9kaWZpZXJzIiksIHVp
bnQ2NFZhbHVlKGRpY3Rpb25hcnksICJMb2NhdGlvbiIpKTsKK30KKwordm9pZCBUZXN0Q29udHJv
bGxlcjo6ZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBtX2V2ZW50U2Vu
ZGVyUHJveHktPnJhd0tleVVwKHN0cmluZ1ZhbHVlKGRpY3Rpb25hcnksICJLZXkiKSwgdWludDY0
VmFsdWUoZGljdGlvbmFyeSwgIk1vZGlmaWVycyIpLCB1aW50NjRWYWx1ZShkaWN0aW9uYXJ5LCAi
TG9jYXRpb24iKSk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVMaXZlRG9j
dW1lbnRzTGlzdChXS0FycmF5UmVmIGxpdmVEb2N1bWVudExpc3QpCiB7CiAgICAgYXV0byBudW1E
b2N1bWVudHMgPSBXS0FycmF5R2V0U2l6ZShsaXZlRG9jdW1lbnRMaXN0KTsKQEAgLTE2NTQsNiAr
MTY2NCwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZyCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJhd0tleURvd24iKSkgeworICAgICAgICAg
ICAgZGlkUmVjZWl2ZVJhd0tleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKGRpY3Rpb25h
cnksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5VXAi
KSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShkaWN0aW9uYXJ5LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1l
c3NhZ2VOYW1lLCAiTW91c2VTY3JvbGxCeSIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVy
UHJveHktPm1vdXNlU2Nyb2xsQnkoZG91YmxlVmFsdWUoZGljdGlvbmFyeSwgIlgiKSwgZG91Ymxl
VmFsdWUoZGljdGlvbmFyeSwgIlkiKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzEzLDYg
KzE3MzMsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ubwogICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAK
KyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUs
ICJSYXdLZXlEb3duIikpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShkaWN0aW9uYXJ5LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmF3S2V5VXAiKSkg
eworICAgICAgICAgICAgZGlkUmVjZWl2ZVJhd0tleVVwTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShkaWN0aW9uYXJ5LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihudWxscHRyKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VNb3ZlVG8iKSkgewogICAgICAgICAgICAg
bV9ldmVudFNlbmRlclByb3h5LT5tb3VzZU1vdmVUbyhkb3VibGVWYWx1ZShkaWN0aW9uYXJ5LCAi
WCIpLCBkb3VibGVWYWx1ZShkaWN0aW9uYXJ5LCAiWSIpLCBzdHJpbmdWYWx1ZShkaWN0aW9uYXJ5
LCAiUG9pbnRlclR5cGUiKSk7CiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
bnVsbHB0cik7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShy
ZXZpc2lvbiAyODQ0OTQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0MSw2ICs0NDEsOCBAQCBwcml2YXRlOgogICAgIFdLUmV0
YWluUHRyPFdLVHlwZVJlZj4gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
KCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBib29sIHN5bmNocm9ub3Vz
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdLZXlEb3duTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBib29sIHN5bmNocm9ub3Vz
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSYXdLZXlVcE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUo
V0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYm9vbCBzeW5jaHJvbm91cyk7
CiAKICAgICAvLyBXS0NvbnRleHRDbGllbnQKICAgICBzdGF0aWMgdm9pZCBuZXR3b3JrUHJvY2Vz
c0RpZENyYXNoKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCopOwpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODQ0OTQpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDEsMTEgKzMwMSw0MSBAQCBzdGF0aWMgV0tSZXRhaW5QdHI8V0tNdXRhYmxl
RGljdGlvbmFyeVJlCiAgICAgcmV0dXJuIGJvZHk7CiB9CiAKK3N0YXRpYyBXS1JldGFpblB0cjxX
S011dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVSYXdLZXlEb3duTWVzc2FnZUJvZHkoSlNTdHJp
bmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgaW50IGxvY2F0aW9uKQorewor
ICAgIGF1dG8gYm9keSA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKyAg
ICBzZXRWYWx1ZShib2R5LCAiU3ViTWVzc2FnZSIsICJSYXdLZXlEb3duIik7CisgICAgc2V0VmFs
dWUoYm9keSwgIktleSIsIGtleSk7CisgICAgc2V0VmFsdWUoYm9keSwgIk1vZGlmaWVycyIsIGFk
b3B0V0soV0tVSW50NjRDcmVhdGUobW9kaWZpZXJzKSkpOworICAgIHNldFZhbHVlKGJvZHksICJM
b2NhdGlvbiIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobG9jYXRpb24pKSk7CisgICAgcmV0dXJu
IGJvZHk7Cit9CisKK3N0YXRpYyBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBj
cmVhdGVSYXdLZXlVcE1lc3NhZ2VCb2R5KEpTU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVy
cyBtb2RpZmllcnMsIGludCBsb2NhdGlvbikKK3sKKyAgICBhdXRvIGJvZHkgPSBhZG9wdFdLKFdL
TXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIlN1Yk1lc3Nh
Z2UiLCAiUmF3S2V5VXAiKTsKKyAgICBzZXRWYWx1ZShib2R5LCAiS2V5Iiwga2V5KTsKKyAgICBz
ZXRWYWx1ZShib2R5LCAiTW9kaWZpZXJzIiwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShtb2RpZmll
cnMpKSk7CisgICAgc2V0VmFsdWUoYm9keSwgIkxvY2F0aW9uIiwgYWRvcHRXSyhXS1VJbnQ2NENy
ZWF0ZShsb2NhdGlvbikpKTsKKyAgICByZXR1cm4gYm9keTsKK30KKwogdm9pZCBFdmVudFNlbmRp
bmdDb250cm9sbGVyOjprZXlEb3duKEpTU3RyaW5nUmVmIGtleSwgSlNWYWx1ZVJlZiBtb2RpZmll
ckFycmF5LCBpbnQgbG9jYXRpb24pCiB7CiAgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2Uo
IkV2ZW50U2VuZGVyIiwgY3JlYXRlS2V5RG93bk1lc3NhZ2VCb2R5KGtleSwgcGFyc2VNb2RpZmll
ckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOwogfQogCit2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OnJhd0tleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlm
aWVyQXJyYXksIGludCBsb2NhdGlvbikKK3sKKyAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2Fn
ZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVSYXdLZXlEb3duTWVzc2FnZUJvZHkoa2V5LCBwYXJzZU1v
ZGlmaWVyQXJyYXkobW9kaWZpZXJBcnJheSksIGxvY2F0aW9uKSk7Cit9CisKK3ZvaWQgRXZlbnRT
ZW5kaW5nQ29udHJvbGxlcjo6cmF3S2V5VXAoSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1v
ZGlmaWVyQXJyYXksIGludCBsb2NhdGlvbikKK3sKKyAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVz
c2FnZSgiRXZlbnRTZW5kZXIiLCBjcmVhdGVSYXdLZXlVcE1lc3NhZ2VCb2R5KGtleSwgcGFyc2VN
b2RpZmllckFycmF5KG1vZGlmaWVyQXJyYXkpLCBsb2NhdGlvbikpOworfQorCiB2b2lkIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6OnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bihKU1N0cmluZ1Jl
ZiBrZXkpCiB7CiAgICAgcG9zdFBhZ2VNZXNzYWdlKCJFdmVudFNlbmRlciIsIGNyZWF0ZUtleURv
d25NZXNzYWdlQm9keShrZXksIDAsIDApKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5oCShyZXZpc2lvbiAyODQ0OTQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiAr
NjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoSlNW
YWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKIAogICAgIHZvaWQga2V5RG93bihKU1N0cmluZ1Jl
ZiBrZXksIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKTsKKyAgICB2b2lk
IHJhd0tleURvd24oSlNTdHJpbmdSZWYga2V5LCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXksIGlu
dCBsb2NhdGlvbik7CisgICAgdm9pZCByYXdLZXlVcChKU1N0cmluZ1JlZiBrZXksIEpTVmFsdWVS
ZWYgbW9kaWZpZXJBcnJheSwgaW50IGxvY2F0aW9uKTsKICAgICB2b2lkIHNjaGVkdWxlQXN5bmNo
cm9ub3VzS2V5RG93bihKU1N0cmluZ1JlZiBrZXkpOwogCiAgICAgdm9pZCB0ZXh0Wm9vbUluKCk7
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwJ
KHJldmlzaW9uIDI4NDQ5NCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDcgKzQ1LDExIEBAIGludGVyZmFjZSBFdmVudFNlbmRpbmdDb250cm9sbGVyIHsKIAogICAg
IHVuZGVmaW5lZCBsZWFwRm9yd2FyZChsb25nIG1pbGxpc2Vjb25kcyk7CiAKKyAgICAvLyBrZXlE
b3duIGlzIHJlYWxseSBrZXlVcEFuZERvd24sIGFuZCBwZXJoYXBzIHNob3VsZCBiZSByZW5hbWVk
IHRvIHJlZmxlY3QgdGhhdC4KKyAgICAvLyByYXdLZXlEb3duIGlzIGp1c3QgdGhlIGtleURvd24s
IGFuZCByYXdLZXlVcCBpcyBqdXN0IHRoZSBrZXlVcAogICAgIHVuZGVmaW5lZCBrZXlEb3duKERP
TVN0cmluZyBrZXksIG9iamVjdCBtb2RpZmllckFycmF5LCBsb25nIGxvY2F0aW9uKTsKKyAgICB1
bmRlZmluZWQgcmF3S2V5RG93bihET01TdHJpbmcga2V5LCBvYmplY3QgbW9kaWZpZXJBcnJheSwg
bG9uZyBsb2NhdGlvbik7CisgICAgdW5kZWZpbmVkIHJhd0tleVVwKERPTVN0cmluZyBrZXksIG9i
amVjdCBtb2RpZmllckFycmF5LCBsb25nIGxvY2F0aW9uKTsKICAgICB1bmRlZmluZWQgc2NoZWR1
bGVBc3luY2hyb25vdXNLZXlEb3duKERPTVN0cmluZyBrZXkpOwogCiAgICAgLy8gWm9vbSBmdW5j
dGlvbnMuCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9F
dmVudFNlbmRlclByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50U2VuZGVyUHJveHlJT1MubW0JKHJldmlzaW9uIDI4
NDQ5NCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0V2ZW50
U2VuZGVyUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDE0IEBAIHZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKIHsKIH0KIAordm9pZCBFdmVudFNl
bmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmll
cnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6
Om1vdXNlU2Nyb2xsQnkoaW50IHgsIGludCB5KQogewogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAJKHJldmlzaW9uIDI4
NDQ5NCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1LDE0IEBAIHZvaWQgRXZlbnRTZW5kZXJQ
cm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICB3ZWJraXRXZWJWaWV3QmFzZVN5bnRoZXNpemVL
ZXlFdmVudCh0b1dlYktpdEdMaWJBUEkobV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1WaWV3KCkpLCBLZXlFdmVudFR5cGU6Okluc2VydCwgZ2RrS2V5U3ltLCBtb2RpZmll
cnMsIFNob3VsZFRyYW5zbGF0ZUtleWJvYXJkU3RhdGU6Ok5vKTsKIH0KIAordm9pZCBFdmVudFNl
bmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmll
cnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6
Om1vdXNlRG93bih1bnNpZ25lZCBidXR0b24sIFdLRXZlbnRNb2RpZmllcnMgd2tNb2RpZmllcnMs
IFdLU3RyaW5nUmVmIHBvaW50ZXJUeXBlKQogewogICAgIHVuc2lnbmVkIGdka0J1dHRvbiA9IGV2
ZW50U2VuZGVyQnV0dG9uVG9HREtCdXR0b24oYnV0dG9uKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQkocmV2aXNpb24gMjg0NDk0KQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjU5LDYgKzY1OSw0NiBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURv
d24oV0tTdHJpbmdSCiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKIH0KIAordm9p
ZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1v
ZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworICAgIFJldGFpblB0
cjxNb2RpZmllcktleXM+IG1vZGlmaWVyS2V5cyA9IFtNb2RpZmllcktleXMgbW9kaWZpZXJLZXlz
V2l0aEtleTp0b1dURlN0cmluZyhrZXkpIG1vZGlmaWVyczpidWlsZE1vZGlmaWVyRmxhZ3MobW9k
aWZpZXJzKSBrZXlMb2NhdGlvbjprZXlMb2NhdGlvbl07CisKKyAgICBOU0V2ZW50ICpldmVudCA9
IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duCisgICAgICAgIGxv
Y2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJL
ZXlzLT5tb2RpZmllckZsYWdzCisgICAgICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVu
dFRpbWUoY3VycmVudEV2ZW50VGltZSgpKQorICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENv
bnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQor
ICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAg
ICAgY2hhcmFjdGVyczptb2RpZmllcktleXMtPmV2ZW50Q2hhcmFjdGVyLmdldCgpCisgICAgICAg
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleXMtPmNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycy5nZXQoKQorICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29k
ZTptb2RpZmllcktleXMtPmtleUNvZGVdOworCisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6
ZXZlbnRdOworICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1X
aW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5RG93bjpldmVudF07CisgICAgW05TQXBwIF9zZXRD
dXJyZW50RXZlbnQ6bmlsXTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlVcChX
S1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlM
b2NhdGlvbikKK3sKKyAgICBSZXRhaW5QdHI8TW9kaWZpZXJLZXlzPiBtb2RpZmllcktleXMgPSBb
TW9kaWZpZXJLZXlzIG1vZGlmaWVyS2V5c1dpdGhLZXk6dG9XVEZTdHJpbmcoa2V5KSBtb2RpZmll
cnM6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycykga2V5TG9jYXRpb246a2V5TG9jYXRpb25d
OworCisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZl
bnRUeXBlS2V5VXAKKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAgICAg
bW9kaWZpZXJGbGFnczptb2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgdGltZXN0
YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCisgICAgICAg
IHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1X
aW5kb3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0
IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5cy0+ZXZlbnRD
aGFyYWN0ZXIuZ2V0KCkKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlm
aWVyS2V5cy0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmdldCgpCisgICAgICAgIGlzQVJl
cGVhdDpOTworICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5cy0+a2V5Q29kZV07CisKKyAgICBb
TlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CisgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVu
dF07CisgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKK30KKwogdm9pZCBFdmVudFNl
bmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSkKIHsKICAgICBhdXRvIGNnU2Ny
b2xsRXZlbnQgPSBhZG9wdENGKENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50MigwLCBrQ0dT
Y3JvbGxFdmVudFVuaXRMaW5lLCAyLCB5LCB4LCAwKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcAkocmV2aXNpb24gMjg0
NDk0KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw2ICszMTQsMTQgQEAgdm9pZCBFdmVudFNlbmRlclBy
b3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgICAgICBTZXRLZXlib2FyZFN0YXRlKGtleVN0YXRl
KTsKIH0KIAordm9pZCBFdmVudFNlbmRlclByb3h5OjpyYXdLZXlEb3duKFdLU3RyaW5nUmVmIGtl
eSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQorewor
fQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tleVVwKFdLU3RyaW5nUmVmIGtleSwgV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6YWRkVG91Y2hQ
b2ludChpbnQsIGludCkKIHsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50
U2VuZGVyUHJveHlXUEUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
d3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCShyZXZpc2lvbiAyODQ0OTQpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzI3LDYgKzMyNywxNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tT
dHJpbmdSCiAgICAgZnJlZShlbnRyaWVzKTsKIH0KIAordm9pZCBFdmVudFNlbmRlclByb3h5Ojpy
YXdLZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVu
c2lnbmVkIGtleUxvY2F0aW9uKQoreworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJhd0tl
eVVwKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVk
IGtleUxvY2F0aW9uKQoreworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9p
bnQoaW50IHgsIGludCB5KQogewogICAgIHN0cnVjdCB3cGVfaW5wdXRfdG91Y2hfZXZlbnRfcmF3
IHJhd0V2ZW50IHsgd3BlX2lucHV0X3RvdWNoX2V2ZW50X3R5cGVfZG93biwgc2VjVG9Nc1RpbWVz
dGFtcChtX3RpbWUpLCBzdGF0aWNfY2FzdDxpbnQ+KG1fdG91Y2hFdmVudHMuc2l6ZSgpKSwgc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oeCksIHN0YXRpY19jYXN0PGludDMyX3Q+KHkpIH07CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODQ0OTQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0xMC0xOSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBs
ZS5jb20+IGFuZCBEYW5hIEVzdHJhIDxkZXN0cmFAYXBwbGUuY29tPgorCisgICAgICAgIG1hY09T
IGtleS1kcml2ZW4gc21vb3RoIHNjcm9sbGluZyBkb2VzIG5vdCBzdG9wIHdoZW4gZm9jdXMgY2hh
bmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4
MzAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXZl
bnRIYW5kbGVyRHJpdmVuU21vb3RoS2V5Ym9hcmRTY3JvbGxpbmdFbmFibGVkIGtleXMgYXJlIFdL
MiBvbmx5IHJpZ2h0IG5vdywgc28gc2tpcCB0aGUgbmV3IAorICAgICAgICB0ZXN0IGluIGdlbmVy
YWwuCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKworICAgICAgICBOZXcgdGVzdCB0aGF0
IHZlcmlmaWVzIHRoaXMgYnVnIGlzIHJlc29sdmVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5n
L3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5
Ym9hcmQtc2Nyb2xsaW5nLmh0bWw6IEFkZGVkLgorCisgICAgICAgIERvIHJ1biB0aGUgdGVzdCBm
b3IgbWFjLXdrMi4gcmF3S2V5RG93biAvIHJhd0tleVVwIGFyZSBjdXJyZW50bHkgbm90IGltcGxl
bWVudGVkIAorICAgICAgICBlbHNld2hlcmUuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zOgorCisgICAgICAgIE5ldyBzdXBwb3J0IGZvciByYXdLZXlEb3duIGlu
IG9yZGVyIHRvIHNpbXVsYXRlIGhvbGRpbmcgdGhlIGtleSBkb3duLgorICAgICAgICAqIHJlc291
cmNlcy91aS1oZWxwZXIuanM6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIucmF3S2V5RG93bik6
CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIucmF3S2V5VXApOgorCiAyMDIxLTEwLTE5ICBBeXVt
aSBLb2ppbWEgIDxheXVtaV9rb2ppbWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24o
cjI4MzkzNSAtIHIyODM5MzgpOiBbIG1hY09TIHdrMSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1l
bGVtZW50L2RpYWxvZy1hdXRvZm9jdXMtbXVsdGlwbGUtdGltZXMuaHRtbCBpcyBhIGZsYWt5IGZh
aWx1cmUuCkluZGV4OiBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI4NDQ5NCkKKysrIExheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDcgQEAg
ZmFzdC9mb3Jtcy9lbnRlcmtleWhpbnQtYXR0cmlidXRlLXZhbHVlcwogZmFzdC9zY3JvbGxpbmcv
a2V5Ym9hcmQtc2Nyb2xsaW5nLWRpc3RhbmNlLWRvd25BcnJvdy5odG1sIFsgU2tpcCBdCiBmYXN0
L3Njcm9sbGluZy9rZXlib2FyZC1zY3JvbGxpbmctZGlzdGFuY2UtcGFnZURvd24uaHRtbCBbIFNr
aXAgXQogZmFzdC9zY3JvbGxpbmcva2V5Ym9hcmQtc2Nyb2xsaW5nLWxhc3QtdGltZXN0YW1wLmh0
bWwgWyBTa2lwIF0KK2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2Fy
ZC1zY3JvbGxpbmcuaHRtbCBbIFNraXAgXQogCiAjIEhpZ2hsaWdodGluZyBtYXJrZWQgdGV4dCBy
YW5nZXMgZnJvbSBsYXlvdXQgdGVzdHMgaXMgb25seSBzdXBwb3J0ZWQgaW4gV2ViS2l0Mi4KIGVk
aXRpbmcvaW5wdXQvY29tcG9zaXRpb24taGlnaGxpZ2h0cy5odG1sIFsgU2tpcCBdCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQt
c2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy91bmZvY3VzaW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3Vz
aW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDYgQEAKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCitTVUNDRVNTOiBCbHVlIGZyYW1lIHN0b3BwZWQgc2NvbGxpbmcgYmVm
b3JlIHJlZCBmcmFtZQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy91bmZvY3Vz
aW5nLXBhZ2Utd2hpbGUta2V5Ym9hcmQtc2Nyb2xsaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvdW5mb2N1c2luZy1wYWdlLXdoaWxlLWtleWJvYXJkLXNj
cm9sbGluZy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L3VuZm9jdXNpbmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgWyBFdmVudEhhbmRsZXJEcml2ZW5TbW9vdGhLZXlib2FyZFNjcm9sbGluZ0VuYWJsZWQ9
dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29u
dGVudD0iaW5pdGlhbC1zY2FsZT0xLjUsIHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQ+
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFJlZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGxldCByZWRPZmZzZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVkLWZy
YW1lJykuY29udGVudERvY3VtZW50LmRlZmF1bHRWaWV3LnNjcm9sbFk7CisgICAgICAgICAgICBs
ZXQgYmx1ZU9mZnNldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdibHVlLWZyYW1lJykuY29u
dGVudERvY3VtZW50LmRlZmF1bHRWaWV3LnNjcm9sbFk7CisgICAgICAgICAgICBpZiAocmVkT2Zm
c2V0ID4gMTkwMCkgeworICAgICAgICAgICAgICAgIGlmIChibHVlT2Zmc2V0ID4gMTkwMCkKKyAg
ICAgICAgICAgICAgICAgICAgZGVidWcoIkZBSUw6IEJsdWUgZnJhbWUgc2Nyb2xsZWQgYXMgZmFy
IGFzIHRoZSByZWQgZnJhbWUuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBkZWJ1ZygiU1VDQ0VTUzogQmx1ZSBmcmFtZSBzdG9wcGVkIHNjb2xsaW5nIGJlZm9y
ZSByZWQgZnJhbWUiKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRl
c3QoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF0
ZXN0UnVubmVyLnJ1blVJU2NyaXB0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgbGV0IGJsdWVGcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdibHVlLWZyYW1l
Jyk7CisgICAgICAgICAgICBsZXQgcmVkRnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cmVkLWZyYW1lJyk7CisgICAgICAgICAgICBsZXQgcmVkRG9jdW1lbnQgPSByZWRGcmFtZS5jb250
ZW50RG9jdW1lbnQ7CisKKyAgICAgICAgICAgIHJlZERvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIo
InNjcm9sbCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzY3JvbGxSZWQoKTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBibHVlRnJhbWUuZm9jdXMoKTsKKyAgICAgICAg
ICAgIGF3YWl0IFVJSGVscGVyLnJhd0tleURvd24oImRvd25BcnJvdyIpOworICAgICAgICAgICAg
cmVkRnJhbWUuZm9jdXMoKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLnJhd0tleURvd24o
ImRvd25BcnJvdyIpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAg
ICNwbGFjZWhvbGRlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiA1
MDAwcHg7CisgICAgfQorICAgIGlmcmFtZSB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IHN0
eWxlPSJtYXJnaW46IDA7IiBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPGlmcmFtZSBpZD0iYmx1
ZS1mcmFtZSIgc3JjZG9jPSI8ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDogMjAwMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyc+PC9kaXY+Ij48L2lmcmFtZT4KKyAgICA8aWZyYW1l
IGlkPSJyZWQtZnJhbWUiIHNyY2RvYz0iPGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6
IDIwMDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyc+PC9kaXY+Ij48L2lmcmFtZT4KKyAgICA8
ZGl2IGlkPSJwbGFjZWhvbGRlciI+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyODQ0OTQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAg
ZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWxpdgogZmFzdC9tZWRpYS9tcS1w
cmVmZXJzLWNvbnRyYXN0LWxpdmUtdXBkYXRlLmh0bWwgWyBQYXNzIF0KIGZhc3QvbWVkaWEvbXEt
cHJlZmVycy1jb250cmFzdC5odG1sIFsgUGFzcyBdCiAKK2Zhc3Qvc2Nyb2xsaW5nL3VuZm9jdXNp
bmctcGFnZS13aGlsZS1rZXlib2FyZC1zY3JvbGxpbmcuaHRtbCBbIFBhc3MgXQorCiBodHRwL3Rl
c3RzL3NzbC9hcHBsZXBheSBbIFBhc3MgXQogCiAjIEFQUExFX1BBWV9JTlNUQUxMTUVOVFMgd2Fz
IGZpcnN0IGF2YWlsYWJsZSBpbiBDYXRhbGluYS4KSW5kZXg6IExheW91dFRlc3RzL3Jlc291cmNl
cy91aS1oZWxwZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhl
bHBlci5qcwkocmV2aXNpb24gMjg0NDk0KQorKysgTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhl
bHBlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDYgKzM0NCwzMCBAQCB3aW5kb3cuVUlIZWxw
ZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBzdGF0aWMgcmF3
S2V5RG93bihrZXksIG1vZGlmaWVycz1bXSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5pc1dl
YktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5yYXdLZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVz
b2x2ZSkgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgdWlDb250cm9s
bGVyLnJhd0tleURvd24oIiR7a2V5fSIsICR7SlNPTi5zdHJpbmdpZnkobW9kaWZpZXJzKX0pO2As
IHJlc29sdmUpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzdGF0aWMgcmF3S2V5VXAoa2V5
LCBtb2RpZmllcnM9W10pCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwg
IXRoaXMuaXNJT1NGYW1pbHkoKSkgeworICAgICAgICAgICAgZXZlbnRTZW5kZXIucmF3S2V5VXAo
a2V5LCBtb2RpZmllcnMpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIucmF3S2V5VXAo
IiR7a2V5fSIsICR7SlNPTi5zdHJpbmdpZnkobW9kaWZpZXJzKX0pO2AsIHJlc29sdmUpOworICAg
ICAgICB9KTsKKyAgICB9CisKICAgICBzdGF0aWMga2V5RG93bihrZXksIG1vZGlmaWVycz1bXSkK
ICAgICB7CiAgICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWls
eSgpKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>