<?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>224389</bug_id>
          
          <creation_ts>2021-04-09 13:54:00 -0700</creation_ts>
          <short_desc>Add support for a `media` attribute on `&lt;meta name=&quot;theme-color&quot; content=&quot;...&quot;&gt;`</short_desc>
          <delta_ts>2021-05-10 10:20:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=224509</see_also>
          <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>
          <dependson>220944</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>eoconnor</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</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>1748853</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-04-09 13:54:00 -0700</bug_when>
    <thetext>see &lt;https://github.com/whatwg/html/pull/6569&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748854</commentid>
    <comment_count>1</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-04-09 13:54:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/74991621&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749262</commentid>
    <comment_count>2</comment_count>
      <attachid>425761</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-04-12 10:03:12 -0700</bug_when>
    <thetext>Created attachment 425761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749282</commentid>
    <comment_count>3</comment_count>
      <attachid>425761</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-12 10:50:07 -0700</bug_when>
    <thetext>Comment on attachment 425761
Patch

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

It would be good to have a test for &apos;currentcolor&apos;, since the spec has special rules for that https://html.spec.whatwg.org/#parsed-as-a-css-color-value.

&gt; Source/WebCore/html/HTMLMetaElement.cpp:110
&gt; +            if (equalLettersIgnoringASCIICase(this-&gt;name(), &quot;theme-color&quot;) &amp;&amp; mediaAttributeMatches() &amp;&amp; !contentColor().isValid() &amp;&amp; CSSParser::parseColor(oldValue).isValid())

It seems unfortunate to reparse the old value. Anyway to avoid that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749286</commentid>
    <comment_count>4</comment_count>
      <attachid>425761</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-04-12 10:57:38 -0700</bug_when>
    <thetext>Comment on attachment 425761
Patch

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

(In reply to Sam Weinig from comment #3)
&gt; It would be good to have a test for &apos;currentcolor&apos;, since the spec has special rules for that https://html.spec.whatwg.org/#parsed-as-a-css-color-value.
We currently don&apos;t support `currentcolor` for this (see &lt;rdar://74814749&gt;), but I can work on adding it.

&gt;&gt; Source/WebCore/html/HTMLMetaElement.cpp:110
&gt;&gt; +            if (equalLettersIgnoringASCIICase(this-&gt;name(), &quot;theme-color&quot;) &amp;&amp; mediaAttributeMatches() &amp;&amp; !contentColor().isValid() &amp;&amp; CSSParser::parseColor(oldValue).isValid())
&gt; 
&gt; It seems unfortunate to reparse the old value. Anyway to avoid that?

Yeah I can try restructuring this function a bit so that we check it before `HTMLElement::attributeChanged` (which calls `HTMLMetaElement::parseAttribute`, which clears `m_contentColor`).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749290</commentid>
    <comment_count>5</comment_count>
    <who name="Theresa O&apos;Connor">eoconnor</who>
    <bug_when>2021-04-12 11:15:24 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #3)

&gt; It would be good to have a test for &apos;currentcolor&apos;, since the spec has
&gt; special rules for that
&gt; https://html.spec.whatwg.org/#parsed-as-a-css-color-value.

The spec PR for this doesn&apos;t depend on that algorithm: https://github.com/whatwg/html/pull/6569/files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749292</commentid>
    <comment_count>6</comment_count>
    <who name="Theresa O&apos;Connor">eoconnor</who>
    <bug_when>2021-04-12 11:16:32 -0700</bug_when>
    <thetext>(In reply to Theresa O&apos;Connor from comment #5)
&gt; (In reply to Sam Weinig from comment #3)
&gt; 
&gt; &gt; It would be good to have a test for &apos;currentcolor&apos;, since the spec has
&gt; &gt; special rules for that
&gt; &gt; https://html.spec.whatwg.org/#parsed-as-a-css-color-value.
&gt; 
&gt; The spec PR for this doesn&apos;t depend on that algorithm:
&gt; https://github.com/whatwg/html/pull/6569/files

Whoops, sorry, the existing spec text *does* depend on that. The PR doesn&apos;t change that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749319</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-12 12:19:10 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #4)
&gt; Comment on attachment 425761 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425761&amp;action=review
&gt; 
&gt; (In reply to Sam Weinig from comment #3)
&gt; &gt; It would be good to have a test for &apos;currentcolor&apos;, since the spec has special rules for that https://html.spec.whatwg.org/#parsed-as-a-css-color-value.
&gt; We currently don&apos;t support `currentcolor` for this (see &lt;rdar://74814749&gt;),
&gt; but I can work on adding it.

Please don&apos;t link just to radar links in bugzilla, many of our contributors cannot see them. If there is work that is only in radar, it is probably worth making a bugzilla bug for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749320</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-12 12:19:59 -0700</bug_when>
    <thetext>(In reply to Theresa O&apos;Connor from comment #6)
&gt; (In reply to Theresa O&apos;Connor from comment #5)
&gt; &gt; (In reply to Sam Weinig from comment #3)
&gt; &gt; 
&gt; &gt; &gt; It would be good to have a test for &apos;currentcolor&apos;, since the spec has
&gt; &gt; &gt; special rules for that
&gt; &gt; &gt; https://html.spec.whatwg.org/#parsed-as-a-css-color-value.
&gt; &gt; 
&gt; &gt; The spec PR for this doesn&apos;t depend on that algorithm:
&gt; &gt; https://github.com/whatwg/html/pull/6569/files
&gt; 
&gt; Whoops, sorry, the existing spec text *does* depend on that. The PR doesn&apos;t
&gt; change that.

The tests don&apos;t have to pass, I just think there should be tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749866</commentid>
    <comment_count>9</comment_count>
      <attachid>425913</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-04-13 14:29:16 -0700</bug_when>
    <thetext>Created attachment 425913
Patch

(In reply to Sam Weinig from comment #8)
&gt; (In reply to Theresa O&apos;Connor from comment #6)
&gt; &gt; (In reply to Theresa O&apos;Connor from comment #5)
&gt; &gt; &gt; (In reply to Sam Weinig from comment #3)
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; It would be good to have a test for &apos;currentcolor&apos;, since the spec has special rules for that https://html.spec.whatwg.org/#parsed-as-a-css-color-value.
&gt; &gt; &gt; 
&gt; &gt; &gt; The spec PR for this doesn&apos;t depend on that algorithm: https://github.com/whatwg/html/pull/6569/files
&gt; &gt; 
&gt; &gt; Whoops, sorry, the existing spec text *does* depend on that. The PR doesn&apos;t change that.
&gt; 
&gt; The tests don&apos;t have to pass, I just think there should be tests.

Personally I&apos;d rather add the test when adding the feature.  I&apos;ve created a followup &lt;https://webkit.org/b/224509&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753337</commentid>
    <comment_count>10</comment_count>
      <attachid>426860</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-04-22 16:07:33 -0700</bug_when>
    <thetext>Created attachment 426860
Patch

rebase with some minor adjustments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753339</commentid>
    <comment_count>11</comment_count>
      <attachid>426861</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-04-22 16:09:52 -0700</bug_when>
    <thetext>Created attachment 426861
Patch

oops forgot tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754068</commentid>
    <comment_count>12</comment_count>
      <attachid>426861</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-25 14:02:39 -0700</bug_when>
    <thetext>Comment on attachment 426861
Patch

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

&gt; Source/WebCore/dom/Document.h:746
&gt; +    enum class RecalculateThemeColor : uint8_t { No, IfNeeded, Yes };
&gt; +    const Color&amp; themeColor(RecalculateThemeColor = RecalculateThemeColor::IfNeeded);

These are three separate functions. They should *not* be a single function with an enum argument.

Compute the theme color (should be private), return the theme color (computed and cached as needed, should be public), or return the old stored version (should be private, and maybe need not be a function at all, just access to a data member).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754069</commentid>
    <comment_count>13</comment_count>
      <attachid>426861</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-25 14:09:23 -0700</bug_when>
    <thetext>Comment on attachment 426861
Patch

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

&gt; Source/WebCore/html/HTMLMetaElement.cpp:127
&gt; +    bool wasValidMedia = m_media &amp;&amp; mediaAttributeMatches();
&gt; +    bool wasValidColor = m_contentColor &amp;&amp; contentColor().isValid();
&gt; +
&gt;      HTMLElement::attributeChanged(name, oldValue, newValue, reason);
&gt;  
&gt; -    if (name == nameAttr &amp;&amp; equalLettersIgnoringASCIICase(oldValue, &quot;theme-color&quot;) &amp;&amp; !equalLettersIgnoringASCIICase(newValue, &quot;theme-color&quot;))
&gt; -        document().processMetaElementThemeColor(emptyString());
&gt; +    // Changing a meta tag while it&apos;s not in the tree shouldn&apos;t have any effect on the document.
&gt; +    if (!isConnected())
&gt; +        return;
&gt; +
&gt; +    // An attribute being added (i.e. if the `media` attribute didn&apos;t exist) is handled by `process()`.
&gt; +    if (!wasValidMedia || !wasValidColor)
&gt; +        return;
&gt; +
&gt; +    if (name == nameAttr) {
&gt; +        if (equalLettersIgnoringASCIICase(oldValue, &quot;theme-color&quot;) &amp;&amp; !equalLettersIgnoringASCIICase(newValue, &quot;theme-color&quot;))
&gt; +            document().metaElementThemeColorChanged();
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    if (name == contentAttr) {
&gt; +        if (equalLettersIgnoringASCIICase(this-&gt;name(), &quot;theme-color&quot;) &amp;&amp; !contentColor().isValid())
&gt; +            document().metaElementThemeColorChanged();
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    if (name == mediaAttr) {
&gt; +        if (equalLettersIgnoringASCIICase(this-&gt;name(), &quot;theme-color&quot;) &amp;&amp; !mediaAttributeMatches())
&gt; +            document().metaElementThemeColorChanged();
&gt; +        return;
&gt; +    }

Not really great that this code is finely tuned based on the algorithm for what affects the color. Probably better to instead call metaElementThemeColorChanged and have it notice nothing changed. Too much logic here that replicates rules about the color that are also elsewhere. The important optimization is not telling the client outside WebKit that the color changed when it didn’t. Within WebKIt it’s better not to have logic spread across in multiple places. Just a list of which attributes might affect it should be enough, not the value.

I think the best design might be just to call:

    document().metaElementAttributeChanged();

And call it unconditionally. Leave out all the rest of the logic here. Or maybe put all the notification inside things called by process().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755214</commentid>
    <comment_count>14</comment_count>
      <attachid>426861</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-04-28 16:17:35 -0700</bug_when>
    <thetext>Comment on attachment 426861
Patch

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

&gt;&gt; Source/WebCore/dom/Document.h:746
&gt;&gt; +    const Color&amp; themeColor(RecalculateThemeColor = RecalculateThemeColor::IfNeeded);
&gt; 
&gt; These are three separate functions. They should *not* be a single function with an enum argument.
&gt; 
&gt; Compute the theme color (should be private), return the theme color (computed and cached as needed, should be public), or return the old stored version (should be private, and maybe need not be a function at all, just access to a data member).

Yeah, I&apos;m not really sure what I was thinking when I did this 😅

&gt;&gt; Source/WebCore/html/HTMLMetaElement.cpp:127
&gt;&gt; +    }
&gt; 
&gt; Not really great that this code is finely tuned based on the algorithm for what affects the color. Probably better to instead call metaElementThemeColorChanged and have it notice nothing changed. Too much logic here that replicates rules about the color that are also elsewhere. The important optimization is not telling the client outside WebKit that the color changed when it didn’t. Within WebKIt it’s better not to have logic spread across in multiple places. Just a list of which attributes might affect it should be enough, not the value.
&gt; 
&gt; I think the best design might be just to call:
&gt; 
&gt;     document().metaElementAttributeChanged();
&gt; 
&gt; And call it unconditionally. Leave out all the rest of the logic here. Or maybe put all the notification inside things called by process().

Is there also a performance concern of crawling the entire DOM to find all `HTMLMetaElement`?  That&apos;s mainly what I&apos;m trying to avoid here by not notifying the `Document` if the change wouldn&apos;t affect `m_metaThemeColorElements` held by the `Document` (e.g. if the color was invalid previously and still is invalid).

Perhaps this is a premature &quot;optimization&quot; though and we could just do as you suggest and always notify the `Document` whenever `content`/`media` changes for any `&lt;meta name=&quot;theme-color&quot;&gt;` and have `Document` deal with filtering out cases that don&apos;t need to notify the UIProcess.  I&apos;ll give it a shot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755285</commentid>
    <comment_count>15</comment_count>
      <attachid>427323</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-04-28 19:06:46 -0700</bug_when>
    <thetext>Created attachment 427323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758000</commentid>
    <comment_count>16</comment_count>
      <attachid>427323</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-07 14:24:37 -0700</bug_when>
    <thetext>Comment on attachment 427323
Patch

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

&gt; Source/WebCore/html/HTMLMetaElement.cpp:93
&gt; +    // Changing a meta tag while it&apos;s not in the tree shouldn&apos;t have any effect on the document.

This comment is unnecessary. It&apos;s pretty obvious from the code that&apos;s what&apos;s happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758044</commentid>
    <comment_count>17</comment_count>
      <attachid>428044</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-07 15:34:06 -0700</bug_when>
    <thetext>Created attachment 428044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758532</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-10 10:20:19 -0700</bug_when>
    <thetext>Committed r277270 (237537@main): &lt;https://commits.webkit.org/237537@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428044.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425761</attachid>
            <date>2021-04-12 10:03:12 -0700</date>
            <delta_ts>2021-04-13 14:29:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>224389.diff</filename>
            <type>text/plain</type>
            <size>28850</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwOTI5N2M1MWQwNzEuLmM0M2NjOGUwN2VlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUzIEBACisyMDIxLTA0LTEyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYSBgbWVkaWFgIGF0dHJpYnV0ZSBvbiBgPG1l
dGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9Ii4uLiI+YAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mzg5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83NDk5MTYyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IGBIVE1MTWV0YVRoZW1lQ29sb3JgIEFQSSB0ZXN0cy4KKworICAg
ICAgICAqIGh0bWwvSFRNTE1ldGFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxNZXRh
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1ldGFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlTWVkaWEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhTWF0
Y2hlcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50OjptZWRpYUF0
dHJpYnV0ZU1hdGNoZXMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRhRWxlbWVu
dDo6Y29udGVudENvbG9yKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1l
bnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQ6OnJl
bW92ZWRGcm9tQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Ojpw
cm9jZXNzKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGEgcmVmbGVjdGVkIGBtZWRpYWAgYXR0
cmlidXRlLiBDYWNoZSB0aGUgbW9zdCByZWNlbnRseSBwYXJzZWQgYG1lZGlhYCAod2hpY2gKKyAg
ICAgICAgYmVjb21lcyBhIGBSZWY8TWVkaWFRdWVyeVNldD5gKSBhbmQgYGNvbnRlbnRgICh3aGlj
aCBjYW4gYmVjb21lIGEgYENvbG9yYCkgdG8gYXZvaWQgZG9pbmcKKyAgICAgICAgcmVwZWF0ZWQg
d29yayB3aGVuIGRldGVybWluaW5nIHRoZSBhY3RpdmUgdGhlbWUgY29sb3IgYWZ0ZXIgbWVkaWEg
c3RhdGUgY2hhbmdlcy4gTm90aWZ5IHRoZQorICAgICAgICBgRG9jdW1lbnRgIHdoZW5ldmVyIHRo
ZSBgbmFtZWAgb3IgYGNvbnRlbnRgIG9yIGBtZWRpYWAgYXR0cmlidXRlIGNoYW5nZXMgaWYgdGhl
IG5ldyBvciBvbGQKKyAgICAgICAgdmFsdWUgd2lsbCBiZSBvciB3b3VsZCBoYXZlIGJlZW4gcmVs
YXRlZCB0byBjYWxjdWxhdGluZyB0aGUgdGhlbWUgY29sb3IuCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aGVtZUNvbG9yIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnRoZW1lQ29sb3IpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp0aGVtZUNvbG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV0ZXJt
aW5lQWN0aXZlVGhlbWVDb2xvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojp1cGRhdGVFbGVtZW50c0FmZmVjdGVkQnlNZWRpYVF1ZXJpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NUaGVtZUNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAg
TWFrZSBjYWxjdWxhdGluZyB0aGUgdGhlbWUgY29sb3IgaW50byBhIHR3byBzdGFnZSBwcm9jZXNz
OgorICAgICAgICAgMS4gZmluZCBhbGwgYDxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIj5gIHRoYXQg
aGF2ZSBhIHZhbGlkIENTUyBjb2xvciBgY29udGVudGAgaW4gdHJlZSBvcmRlcgorICAgICAgICAg
Mi4gcmV0dXJuIHRoZSBgSFRNTE1ldGFFbGVtZW50Ojpjb250ZW50Q29sb3JgIG9mIHRoZSBmaXJz
dCBpdGVtIGZyb20gc3RlcCAxIHRoYXQgYEhUTUxNZXRhRWxlbWVudDo6bWVkaWFBdHRyaWJ1dGVN
YXRjaGVzYAorICAgICAgICBUaGlzIGlzIGRvbmUgc28gdGhhdCBgRG9jdW1lbnQ6OnVwZGF0ZUVs
ZW1lbnRzQWZmZWN0ZWRCeU1lZGlhUXVlcmllc2AgZG9lc24ndCBoYXZlIHRvIHJlcGVhdAorICAg
ICAgICBzdGVwIDEgZWFjaCB0aW1lIGl0J3MgcnVuICh3aGljaCBjYW4gYmUgb2Z0ZW4pIGFuZCBp
bnN0ZWFkIG9ubHkgbmVlZHMgdG8gaXRlcmF0ZSBhIChsaWtlbHkKKyAgICAgICAgdmVyeSBzbWFs
bCkgbGlzdCBpbiBzdGVwIDIuIFRoZSBhY3Rpb25zL3NpdHVhdGlvbnMgbGlzdGVkIGFib3ZlIHdv
dWxkIGNsZWFyIHRoZSBjYWNoZWQgZGF0YQorICAgICAgICBmcm9tIGJvdGggc3RlcHMsIG1lYW5p
bmcgdGhhdCB0aGUgbmV4dCBgRG9jdW1lbnQ6OnRoZW1lQ29sb3JgIHdpbGwgZG8gYSBmdWxsIHJl
Y2FsY3VsYXRpb24uCisgICAgICAgIE5vdGlmeSB0aGUgVUlQcm9jZXNzIG9mIGEgY2hhbmdlIGlu
IHRoZW1lIGNvbG9yIGlmIHRoZSByZXN1bHQgb2Ygc3RlcCAyIGlzIGRpZmZlcmVudCBmcm9tIGEK
KyAgICAgICAgcHJldmlvdXNseSBjYWNoZWQgcmVzdWx0IChpZiBzZXQpLgorCisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6dGhl
bWVDb2xvckNoYW5nZWQgY29uc3QpOgorICAgICAgICBSZW1vdmUgdGhlIGBDb2xvciB0aGVtZUNv
bG9yYCBwYXJhbWV0ZXIgc2luY2UgdGhlIGNhbGN1bGF0aW9uIHRoYXQgZGV0ZXJtaW5lcyBpdHMg
dmFsdWUgaXMKKyAgICAgICAgZGVmZXJyZWQgdW50aWwgdGhlIG5leHQgYERvY3VtZW50Ojp0aGVt
ZUNvbG9yYCBpcyBjYWxsZWQuCisKIDIwMjEtMDQtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNzM1NDEpIFdLV2Vi
VmlldyBjYW4ndCBsb2FkIE5TVVJMUmVxdWVzdCBzdWJjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCBkZWVkZTRiN2I5YzAuLjQxYjIyMGE5Yjc3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0xMDEsNiArMTAxLDcgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxNZXRhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1M
UGljdHVyZUVsZW1lbnQuaCIKQEAgLTM4MjUsMTggKzM4MjYsMjIgQEAgdm9pZCBEb2N1bWVudDo6
dXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKQogICAgIH0KIH0KIAotdm9pZCBEb2N1bWVudDo6cHJv
Y2Vzc1RoZW1lQ29sb3IoY29uc3QgU3RyaW5nJiB0aGVtZUNvbG9yU3RyaW5nKQorQ29sb3IgRG9j
dW1lbnQ6OnRoZW1lQ29sb3IoKQogewotICAgIGF1dG8gdGhlbWVDb2xvciA9IENTU1BhcnNlcjo6
cGFyc2VDb2xvcih0aGVtZUNvbG9yU3RyaW5nKTsKLSAgICBpZiAodGhlbWVDb2xvciA9PSBtX3Ro
ZW1lQ29sb3IpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fYWN0aXZlVGhlbWVDb2xvckVs
ZW1lbnQpCisgICAgICAgIG1fYWN0aXZlVGhlbWVDb2xvckVsZW1lbnQgPSBkZXRlcm1pbmVBY3Rp
dmVUaGVtZUNvbG9yRWxlbWVudCgpOworICAgIHJldHVybiBtX2FjdGl2ZVRoZW1lQ29sb3JFbGVt
ZW50ID8gbV9hY3RpdmVUaGVtZUNvbG9yRWxlbWVudC0+Y29udGVudENvbG9yKCkgOiBDb2xvcigp
OworfQogCi0gICAgbV90aGVtZUNvbG9yID0gV1RGTW92ZSh0aGVtZUNvbG9yKTsKK3ZvaWQgRG9j
dW1lbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkKCkKK3sKKyAgICBtX3RoZW1lQ29sb3JFbGVtZW50cyA9
IFdURjo6bnVsbG9wdDsKKyAgICBtX2FjdGl2ZVRoZW1lQ29sb3JFbGVtZW50ID0gbnVsbHB0cjsK
IAogICAgIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKHsgfSk7CiAKICAgICBpZiAoYXV0byogcGFn
ZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkudGhlbWVD
b2xvckNoYW5nZWQobV90aGVtZUNvbG9yKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50
KCkudGhlbWVDb2xvckNoYW5nZWQoKTsKIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAg
ICBpZiAoYXV0byogdmlldyA9IHJlbmRlclZpZXcoKSkgewpAQCAtMzg0Niw2ICszODUxLDI0IEBA
IHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NUaGVtZUNvbG9yKGNvbnN0IFN0cmluZyYgdGhlbWVDb2xv
clN0cmluZykKICNlbmRpZiAvLyBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiB9CiAKK1dlYWtQdHI8
SFRNTE1ldGFFbGVtZW50PiBEb2N1bWVudDo6ZGV0ZXJtaW5lQWN0aXZlVGhlbWVDb2xvckVsZW1l
bnQoKQoreworICAgIGlmICghbV90aGVtZUNvbG9yRWxlbWVudHMpIHsKKyAgICAgICAgVmVjdG9y
PFdlYWtQdHI8SFRNTE1ldGFFbGVtZW50Pj4gdGhlbWVDb2xvckVsZW1lbnRzOworICAgICAgICBm
b3IgKGF1dG8mIG1ldGFFbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTE1ldGFFbGVtZW50
PigqdGhpcykpIHsKKyAgICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShtZXRhRWxlbWVudC5uYW1lKCksICJ0aGVtZS1jb2xvciIpICYmIG1ldGFFbGVtZW50LmNvbnRl
bnRDb2xvcigpLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICB0aGVtZUNvbG9yRWxlbWVudHMu
YXBwZW5kKG1ha2VXZWFrUHRyKG1ldGFFbGVtZW50KSk7CisgICAgICAgIH0KKyAgICAgICAgbV90
aGVtZUNvbG9yRWxlbWVudHMgPSBXVEZNb3ZlKHRoZW1lQ29sb3JFbGVtZW50cyk7CisgICAgfQor
CisgICAgZm9yIChhdXRvJiBtZXRhRWxlbWVudCA6ICptX3RoZW1lQ29sb3JFbGVtZW50cykgewor
ICAgICAgICBpZiAobWV0YUVsZW1lbnQgJiYgbWV0YUVsZW1lbnQtPmNvbnRlbnRDb2xvcigpLmlz
VmFsaWQoKSAmJiBtZXRhRWxlbWVudC0+bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKCkpCisgICAgICAg
ICAgICByZXR1cm4gbWV0YUVsZW1lbnQ7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQor
CiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCiBzdGF0aWMgdm9pZCBwcm9jZXNzQ29sb3JTY2hl
bWVTdHJpbmcoU3RyaW5nVmlldyBjb2xvclNjaGVtZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lk
KFN0cmluZ1ZpZXcga2V5KT4mIGNhbGxiYWNrKQogewpAQCAtNDEyNiw2ICs0MTQ5LDIwIEBAIHZv
aWQgRG9jdW1lbnQ6OnVwZGF0ZUVsZW1lbnRzQWZmZWN0ZWRCeU1lZGlhUXVlcmllcygpCiB7CiAg
ICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNj
b3BlOwogCisgICAgaWYgKGF1dG8gYWN0aXZlVGhlbWVDb2xvckVsZW1lbnQgPSBkZXRlcm1pbmVB
Y3RpdmVUaGVtZUNvbG9yRWxlbWVudCgpOyBtX2FjdGl2ZVRoZW1lQ29sb3JFbGVtZW50ICE9IGFj
dGl2ZVRoZW1lQ29sb3JFbGVtZW50KSB7CisgICAgICAgIG1fYWN0aXZlVGhlbWVDb2xvckVsZW1l
bnQgPSBhY3RpdmVUaGVtZUNvbG9yRWxlbWVudDsKKworICAgICAgICBpZiAoYXV0byogcGFnZSA9
IHRoaXMtPnBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnRoZW1l
Q29sb3JDaGFuZ2VkKCk7CisKKyNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCisgICAgICAgIGlm
IChhdXRvKiB2aWV3ID0gcmVuZGVyVmlldygpKSB7CisgICAgICAgICAgICBpZiAodmlldy0+dXNl
c0NvbXBvc2l0aW5nKCkpCisgICAgICAgICAgICAgICAgdmlldy0+Y29tcG9zaXRvcigpLnVwZGF0
ZUxheWVyRm9yT3ZlcmhhbmdBcmVhc0JhY2tncm91bmRDb2xvcigpOworICAgICAgICB9CisjZW5k
aWYgLy8gRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQorICAgIH0KKwogICAgIC8vIEZJWE1FOiBjb3B5
VG9WZWN0b3IgZG9lc24ndCB3b3JrIHdpdGggV2Vha0hhc2hTZXQKICAgICBWZWN0b3I8UmVmPEhU
TUxJbWFnZUVsZW1lbnQ+PiBpbWFnZXM7CiAgICAgaW1hZ2VzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9keW5hbWljTWVkaWFRdWVyeURlcGVuZGVudEltYWdlcy5jb21wdXRlU2l6ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggYWFhMjIwODJjZWNiLi5lNTllZDUwMDViY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xNTYsNiArMTU2LDcgQEAgY2xhc3MgSFRNTElGcmFtZUVsZW1lbnQ7
CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBjbGFzcyBI
VE1MTWVkaWFFbGVtZW50OworY2xhc3MgSFRNTE1ldGFFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVv
RWxlbWVudDsKIGNsYXNzIEhpZ2hsaWdodFJlZ2lzdGVyOwogY2xhc3MgSGl0VGVzdExvY2F0aW9u
OwpAQCAtNzM2LDggKzczNyw2IEBAIHB1YmxpYzoKICAgICBTZWNvbmRzIHRpbWVTaW5jZURvY3Vt
ZW50Q3JlYXRpb24oKSBjb25zdCB7IHJldHVybiBNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fZG9j
dW1lbnRDcmVhdGlvblRpbWU7IH07CiAjZW5kaWYKIAotICAgIGNvbnN0IENvbG9yJiB0aGVtZUNv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV90aGVtZUNvbG9yOyB9Ci0KICAgICB2b2lkIHNldFRleHRD
b2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV90ZXh0Q29sb3IgPSBjb2xvcjsgfQogICAgIGNv
bnN0IENvbG9yJiB0ZXh0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3RleHRDb2xvcjsgfQogCkBA
IC05MDcsNyArOTA2LDkgQEAgcHVibGljOgogICAgIHZvaWQgcHJvY2Vzc0Rpc2FibGVkQWRhcHRh
dGlvbnMoY29uc3QgU3RyaW5nJiBhZGFwdGF0aW9ucyk7CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9y
dEFyZ3VtZW50cygpOwogICAgIHZvaWQgcHJvY2Vzc1JlZmVycmVyUG9saWN5KGNvbnN0IFN0cmlu
ZyYgcG9saWN5LCBSZWZlcnJlclBvbGljeVNvdXJjZSk7Ci0gICAgdm9pZCBwcm9jZXNzVGhlbWVD
b2xvcihjb25zdCBTdHJpbmcmIHRoZW1lQ29sb3IpOworCisgICAgQ29sb3IgdGhlbWVDb2xvcigp
OworICAgIHZvaWQgdGhlbWVDb2xvckNoYW5nZWQoKTsKIAogI2lmIEVOQUJMRShEQVJLX01PREVf
Q1NTKQogICAgIHZvaWQgcHJvY2Vzc0NvbG9yU2NoZW1lKGNvbnN0IFN0cmluZyYgY29sb3JTY2hl
bWUpOwpAQCAtMTc4Niw3ICsxNzg3LDEwIEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Rm9ybUNvbnRyb2xsZXI+IG1fZm9ybUNvbnRyb2xsZXI7CiAKLSAgICBDb2xvciBtX3RoZW1l
Q29sb3I7CisgICAgV2Vha1B0cjxIVE1MTWV0YUVsZW1lbnQ+IGRldGVybWluZUFjdGl2ZVRoZW1l
Q29sb3JFbGVtZW50KCk7CisgICAgT3B0aW9uYWw8VmVjdG9yPFdlYWtQdHI8SFRNTE1ldGFFbGVt
ZW50Pj4+IG1fdGhlbWVDb2xvckVsZW1lbnRzOworICAgIFdlYWtQdHI8SFRNTE1ldGFFbGVtZW50
PiBtX2FjdGl2ZVRoZW1lQ29sb3JFbGVtZW50OworCiAgICAgQ29sb3IgbV90ZXh0Q29sb3IgeyBD
b2xvcjo6YmxhY2sgfTsKICAgICBDb2xvciBtX2xpbmtDb2xvcjsKICAgICBDb2xvciBtX3Zpc2l0
ZWRMaW5rQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKaW5kZXgg
ZDNjYzE0N2E3MmI0Li43YzdiNTFhMGQ2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRh
RWxlbWVudC5jcHAKQEAgLTI0LDExICsyNCwxOCBAQAogI2luY2x1ZGUgIkhUTUxNZXRhRWxlbWVu
dC5oIgogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxIZWFkRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgorI2luY2x1ZGUgIk1lZGlhUXVl
cnlFdmFsdWF0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5UGFyc2VyLmgiCisjaW5jbHVkZSAi
UmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlN0eWxlUmVz
b2x2ZUZvckRvY3VtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Miwy
NCArNTksODggQEAgUmVmPEhUTUxNZXRhRWxlbWVudD4gSFRNTE1ldGFFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW0KICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBIVE1MTWV0YUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAorc3RhdGljIFJl
ZjxNZWRpYVF1ZXJ5U2V0PiBwYXJzZU1lZGlhKGNvbnN0IFN0cmluZyYgbWVkaWFTdHJpbmcsIGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gTWVkaWFRdWVyeVNldDo6Y3Jl
YXRlKG1lZGlhU3RyaW5nLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIE1lZGlhUXVlcnlQYXJz
ZXJDb250ZXh0KGRvY3VtZW50KSk7Cit9CisKK3N0YXRpYyBib29sIG1lZGlhTWF0Y2hlcyhjb25z
dCBNZWRpYVF1ZXJ5U2V0JiBtZWRpYSwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAg
IE9wdGlvbmFsPFJlbmRlclN0eWxlPiBkb2N1bWVudFN0eWxlOworICAgIGlmIChkb2N1bWVudC5o
YXNMaXZpbmdSZW5kZXJUcmVlKCkpCisgICAgICAgIGRvY3VtZW50U3R5bGUgPSBTdHlsZTo6cmVz
b2x2ZUZvckRvY3VtZW50KGRvY3VtZW50KTsKKworICAgIFN0cmluZyBtZWRpYVR5cGU7CisgICAg
aWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgeworICAgICAgICBpZiAoYXV0byog
ZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIG1lZGlhVHlwZSA9IGZyYW1l
Vmlldy0+bWVkaWFUeXBlKCk7CisgICAgfQorCisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0
b3IobWVkaWFUeXBlLCBkb2N1bWVudCwgZG9jdW1lbnRTdHlsZSA/ICYqZG9jdW1lbnRTdHlsZSA6
IG51bGxwdHIpLmV2YWx1YXRlKG1lZGlhKTsKK30KKworc3RhdGljIGJvb2wgbWVkaWFNYXRjaGVz
KGNvbnN0IFN0cmluZyYgbWVkaWFTdHJpbmcsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3sK
KyAgICByZXR1cm4gbWVkaWFNYXRjaGVzKHBhcnNlTWVkaWEobWVkaWFTdHJpbmcsIGRvY3VtZW50
KS5nZXQoKSwgZG9jdW1lbnQpOworfQorCitib29sIEhUTUxNZXRhRWxlbWVudDo6bWVkaWFBdHRy
aWJ1dGVNYXRjaGVzKCkKK3sKKyAgICBpZiAoIW1fbWVkaWEpCisgICAgICAgIG1fbWVkaWEgPSBw
YXJzZU1lZGlhKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWVkaWFBdHRyKSwgZG9j
dW1lbnQoKSk7CisgICAgcmV0dXJuIG1lZGlhTWF0Y2hlcygqbV9tZWRpYSwgZG9jdW1lbnQoKSk7
Cit9CisKK0NvbG9yIEhUTUxNZXRhRWxlbWVudDo6Y29udGVudENvbG9yKCkKK3sKKyAgICBpZiAo
IW1fY29udGVudENvbG9yKQorICAgICAgICBtX2NvbnRlbnRDb2xvciA9IENTU1BhcnNlcjo6cGFy
c2VDb2xvcihjb250ZW50KCkpOworICAgIHJldHVybiAqbV9jb250ZW50Q29sb3I7Cit9CisKIHZv
aWQgSFRNTE1ldGFFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdW
YWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uIHJlYXNvbikKIHsKICAgICBIVE1MRWxl
bWVudDo6YXR0cmlidXRlQ2hhbmdlZChuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHJlYXNvbik7
CiAKLSAgICBpZiAobmFtZSA9PSBuYW1lQXR0ciAmJiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShvbGRWYWx1ZSwgInRoZW1lLWNvbG9yIikgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG5ld1ZhbHVlLCAidGhlbWUtY29sb3IiKSkKLSAgICAgICAgZG9jdW1lbnQoKS5wcm9j
ZXNzVGhlbWVDb2xvcihlbXB0eVN0cmluZygpKTsKKyAgICBpZiAocmVhc29uID09IE1vZGlmaWVk
RGlyZWN0bHkpIHsKKyAgICAgICAgaWYgKG5hbWUgPT0gbmFtZUF0dHIpIHsKKyAgICAgICAgICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShvbGRWYWx1ZSwgInRoZW1lLWNvbG9y
IikgJiYgY29udGVudENvbG9yKCkuaXNWYWxpZCgpICYmIG1lZGlhQXR0cmlidXRlTWF0Y2hlcygp
ICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuZXdWYWx1ZSwgInRoZW1lLWNvbG9y
IikpCisgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS50aGVtZUNvbG9yQ2hhbmdlZCgpOworICAg
ICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY29udGVudEF0dHIpIHsKKyAgICAgICAgICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0aGlzLT5uYW1lKCksICJ0aGVtZS1jb2xvciIp
ICYmIG1lZGlhQXR0cmlidXRlTWF0Y2hlcygpICYmICFjb250ZW50Q29sb3IoKS5pc1ZhbGlkKCkg
JiYgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKG9sZFZhbHVlKS5pc1ZhbGlkKCkpCisgICAgICAgICAg
ICAgICAgZG9jdW1lbnQoKS50aGVtZUNvbG9yQ2hhbmdlZCgpOworICAgICAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gbWVkaWFBdHRyKSB7CisgICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UodGhpcy0+bmFtZSgpLCAidGhlbWUtY29sb3IiKSAmJiBjb250ZW50Q29sb3Io
KS5pc1ZhbGlkKCkgJiYgIW1lZGlhQXR0cmlidXRlTWF0Y2hlcygpICYmIG1lZGlhTWF0Y2hlcyhv
bGRWYWx1ZSwgZG9jdW1lbnQoKSkpCisgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS50aGVtZUNv
bG9yQ2hhbmdlZCgpOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIEhUTUxNZXRhRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKG5hbWUgPT0gaHR0cF9lcXVpdkF0dHIpCisgICAgaWYg
KG5hbWUgPT0gbmFtZUF0dHIpIHsKICAgICAgICAgcHJvY2VzcygpOwotICAgIGVsc2UgaWYgKG5h
bWUgPT0gY29udGVudEF0dHIpCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobmFt
ZSA9PSBjb250ZW50QXR0cikgeworICAgICAgICBtX2NvbnRlbnRDb2xvciA9IFdURjo6bnVsbG9w
dDsKICAgICAgICAgcHJvY2VzcygpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gbmFtZUF0dHIpCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobmFtZSA9PSBodHRwX2VxdWl2QXR0cikg
ewogICAgICAgICBwcm9jZXNzKCk7Ci0gICAgZWxzZQotICAgICAgICBIVE1MRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKG5hbWUgPT0gbWVkaWFBdHRyKSB7CisgICAgICAgIG1fbWVkaWEgPSBudWxscHRyOworICAg
ICAgICBwcm9jZXNzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBIVE1MRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBOb2RlOjpJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdCBIVE1MTWV0YUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2Vy
dGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRy
ZWUpCkBAIC04OSw4ICsxNjAsMTAgQEAgdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnJlbW92ZWRGcm9t
QW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUKIHsKICAgICBI
VE1MRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZS
ZW1vdmVkVHJlZSk7CiAKLSAgICBpZiAoIWlzQ29ubmVjdGVkKCkgJiYgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobmFtZSgpLCAidGhlbWUtY29sb3IiKSkKLSAgICAgICAgb2xkUGFyZW50
T2ZSZW1vdmVkVHJlZS5kb2N1bWVudCgpLnByb2Nlc3NUaGVtZUNvbG9yKGVtcHR5U3RyaW5nKCkp
OworICAgIGF1dG8mIG9sZERvY3VtZW50ID0gb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5kb2N1bWVu
dCgpOworCisgICAgaWYgKCFpc0Nvbm5lY3RlZCgpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG5hbWUoKSwgInRoZW1lLWNvbG9yIikgJiYgY29udGVudENvbG9yKCkuaXNWYWxpZCgp
ICYmIG1lZGlhTWF0Y2hlcyhtX21lZGlhID8gKm1fbWVkaWEgOiBwYXJzZU1lZGlhKGF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWVkaWFBdHRyKSwgb2xkRG9jdW1lbnQpLmdldCgpLCBv
bGREb2N1bWVudCkpCisgICAgICAgIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUuZG9jdW1lbnQoKS50
aGVtZUNvbG9yQ2hhbmdlZCgpOwogfQogCiB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cHJvY2Vzcygp
CkBAIC0xMTEsOCArMTg0LDEwIEBAIHZvaWQgSFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKCkKICAg
ICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lKCksICJjb2xvci1z
Y2hlbWUiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lKCksICJzdXBwb3J0
ZWQtY29sb3Itc2NoZW1lcyIpKQogICAgICAgICBkb2N1bWVudCgpLnByb2Nlc3NDb2xvclNjaGVt
ZShjb250ZW50VmFsdWUpOwogI2VuZGlmCi0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UobmFtZSgpLCAidGhlbWUtY29sb3IiKSkKLSAgICAgICAgZG9jdW1lbnQoKS5w
cm9jZXNzVGhlbWVDb2xvcihjb250ZW50VmFsdWUpOworICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUoKSwgInRoZW1lLWNvbG9yIikpIHsKKyAgICAgICAgaWYg
KGNvbnRlbnRDb2xvcigpLmlzVmFsaWQoKSAmJiBtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKSkKKyAg
ICAgICAgICAgIGRvY3VtZW50KCkudGhlbWVDb2xvckNoYW5nZWQoKTsKKyAgICB9CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lKCksICJmb3JtYXQtZGV0ZWN0aW9uIikpCiAgICAgICAgIGRvY3VtZW50KCkucHJv
Y2Vzc0Zvcm1hdERldGVjdGlvbihjb250ZW50VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
dGFFbGVtZW50LmgKaW5kZXggMzM1MGYxZTgzNGY4Li5hZDc2ZDIxODdhMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaApAQCAtMjYsNiArMjYsOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIENvbG9yOworY2xhc3MgTWVkaWFRdWVyeVNldDsKKwogY2xhc3Mg
SFRNTE1ldGFFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKEhUTUxNZXRhRWxlbWVudCk7CiBwdWJsaWM6CkBAIC0zNiw2ICszOSwx
MCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRvbVN0cmluZyYgaHR0cEVxdWl2KCkgY29uc3Q7CiAg
ICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZSgpIGNvbnN0OwogCisgICAgYm9vbCBtZWRpYUF0dHJp
YnV0ZU1hdGNoZXMoKTsKKworICAgIENvbG9yIGNvbnRlbnRDb2xvcigpOworCiBwcml2YXRlOgog
ICAgIEhUTUxNZXRhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIApA
QCAtNDYsNiArNTMsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3Io
UmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKIAogICAgIHZvaWQgcHJvY2Vzcygp
OworCisgICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1fbWVkaWE7CisKKyAgICBPcHRpb25hbDxD
b2xvcj4gbV9jb250ZW50Q29sb3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5pZGwKaW5kZXggNzJlNzgwYTg3NjBiLi5jNDk0
YzdhMWQ3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5pZGwKQEAgLTIy
LDYgKzIyLDcgQEAKIF0gaW50ZXJmYWNlIEhUTUxNZXRhRWxlbWVudCA6IEhUTUxFbGVtZW50IHsK
ICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGNvbnRlbnQ7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdD1odHRwX2VxdWl2
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGh0dHBFcXVpdjsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1lZGlhOwogICAgIFtDRVJlYWN0aW9u
cz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKICAgICBbQ0VS
ZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNjaGVtZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBlMTA0MzE1MzM3MmIuLmU0ZTcw
YjNiZmE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0yMzEsNyArMjMxLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDb2xvciB1bmRlcmxheUNvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gQ29sb3IoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHRoZW1lQ29sb3JDaGFuZ2VkKENv
bG9yKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDb2xvckNoYW5nZWQoKSBjb25z
dCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hh
bmdlKENvbG9yKSBjb25zdCB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBleGNlZWRlZERhdGFiYXNl
UXVvdGEoRnJhbWUmLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgRGF0YWJhc2VEZXRhaWxz
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGI0MDM3NDc4MjJlYS4uMWFhN2JkZjk5NjM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDIxLTA0LTEyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYSBgbWVkaWFgIGF0dHJpYnV0ZSBvbiBg
PG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9Ii4uLiI+YAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mzg5CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NDk5MTYyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkIGNv
bnN0KToKKyAgICAgICAgUmVtb3ZlIHRoZSBgV2ViQ29yZTo6Q29sb3IgdGhlbWVDb2xvcmAgcGFy
YW1ldGVyIHNpbmNlIHRoZSBjYWxjdWxhdGlvbiB0aGF0IGRldGVybWluZXMgaXRzCisgICAgICAg
IHZhbHVlIGlzIGRlZmVycmVkIHVudGlsIHRoZSBuZXh0IGBEb2N1bWVudDo6dGhlbWVDb2xvcmAg
aXMgY2FsbGVkLgorCiAyMDIxLTA0LTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjczNTQxKSBXS1dlYlZpZXcgY2Fu
J3QgbG9hZCBOU1VSTFJlcXVlc3Qgc3ViY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRl
eCAyZTYwODQ2NDUxZDYuLmQ4YzMwMGFkOTQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAg
LTExNTQsNyArMTE1NCw3IEBAIENvbG9yIFdlYkNocm9tZUNsaWVudDo6dW5kZXJsYXlDb2xvcigp
IGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS51bmRlcmxheUNvbG9yKCk7CiB9CiAKLXZvaWQgV2Vi
Q2hyb21lQ2xpZW50Ojp0aGVtZUNvbG9yQ2hhbmdlZChDb2xvciAvKiB0aGVtZUNvbG9yICovKSBj
b25zdAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkKCkgY29uc3QKIHsK
ICAgICBtX3BhZ2UudGhlbWVDb2xvckNoYW5nZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRl
eCBhZTFlZDY2MjcxNGQuLmYxZTE1Nzc3ODE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzI4
LDcgKzMyOCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpDb2xvciB1bmRlcmxheUNvbG9y
KCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHRoZW1lQ29sb3JDaGFuZ2VkKFdlYkNvcmU6OkNv
bG9yKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHRoZW1lQ29sb3JDaGFuZ2VkKCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoV2ViQ29y
ZTo6Q29sb3IpIGNvbnN0IGZpbmFsOwogICAgIAogICAgIHZvaWQgd2hlZWxFdmVudEhhbmRsZXJz
Q2hhbmdlZChib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA0NmU2MjAyOTczNzUuLjg5MDg1ZWJmY2EzZSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisy
MDIxLTA0LTEyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgYSBgbWVkaWFgIGF0dHJpYnV0ZSBvbiBgPG1ldGEgbmFtZT0idGhlbWUt
Y29sb3IiIGNvbnRlbnQ9Ii4uLiI+YAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0Mzg5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDk5MTYyMT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSFRNTE1ldGFUaGVtZUNvbG9yLm1tOgorICAgICAg
ICAoVEVTVC5IVE1MTWV0YVRoZW1lQ29sb3IuVmFsaWROYW1lQW5kQ29sb3IpOiBBZGRlZC4KKyAg
ICAgICAgKFRFU1QuSFRNTE1ldGFUaGVtZUNvbG9yLlZhbGlkTmFtZUFuZENvbG9yQW5kTWVkaWEp
OiBBZGRlZC4KKyAgICAgICAgKFRFU1QuSFRNTE1ldGFUaGVtZUNvbG9yLkludmFsaWROYW1lKTog
QWRkZWQuCisgICAgICAgIChURVNULkhUTUxNZXRhVGhlbWVDb2xvci5JbnZhbGlkQ29sb3IpOiBB
ZGRlZC4KKyAgICAgICAgKFRFU1QuSFRNTE1ldGFUaGVtZUNvbG9yLkludmFsaWRNZWRpYSk6IEFk
ZGVkLgorICAgICAgICAoVEVTVC5IVE1MTWV0YVRoZW1lQ29sb3IuTXVsdGlwbGVWYWxpZCk6IEFk
ZGVkLgorICAgICAgICAoVEVTVC5IVE1MTWV0YVRoZW1lQ29sb3IuVmFsaWRTdWJmcmFtZSk6IEFk
ZGVkLgorICAgICAgICAoLVtXS1dlYlZpZXdUaGVtZUNvbG9yT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKFRFU1QuSFRN
TE1ldGFUaGVtZUNvbG9yLktWTyk6CisgICAgICAgIChURVNULkhUTUxNZXRhVGhlbWVDb2xvci5P
bkxvYWQpOiBEZWxldGVkLgorICAgICAgICAoVEVTVC5IVE1MTWV0YVRoZW1lQ29sb3IuTXVsdGlw
bGVUYWdzKTogRGVsZXRlZC4KKwogMjAyMS0wNC0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI3MzU0MSkgV0tXZWJW
aWV3IGNhbid0IGxvYWQgTlNVUkxSZXF1ZXN0IHN1YmNsYXNzZXMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSFRNTE1ldGFUaGVtZUNvbG9yLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9IVE1MTWV0YVRoZW1lQ29sb3Iu
bW0KaW5kZXggNDk0Yjk3NTIxMjY4Li40YWViZTU4NzBlYTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSFRNTE1ldGFUaGVtZUNvbG9yLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSFRNTE1ldGFUaGVtZUNvbG9y
Lm1tCkBAIC0zOCw3ICszOCw3IEBACiBjb25zdGV4cHIgQ0dGbG9hdCByZWRDb2xvckNvbXBvbmVu
dHNbNF0gPSB7IDEsIDAsIDAsIDEgfTsKIGNvbnN0ZXhwciBDR0Zsb2F0IGJsdWVDb2xvckNvbXBv
bmVudHNbNF0gPSB7IDAsIDAsIDEsIDEgfTsKIAotVEVTVChIVE1MTWV0YVRoZW1lQ29sb3IsIE9u
TG9hZCkKK1RFU1QoSFRNTE1ldGFUaGVtZUNvbG9yLCBWYWxpZE5hbWVBbmRDb2xvcikKIHsKICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIEVYUEVDVF9UUlVFKCFbd2Vi
VmlldyBfdGhlbWVDb2xvcl0pOwpAQCAtNDgsMjIgKzQ4LDc4IEBAIFRFU1QoSFRNTE1ldGFUaGVt
ZUNvbG9yLCBPbkxvYWQpCiAgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xv
clNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKICAgICBhdXRvIHJlZENv
bG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xv
ckNvbXBvbmVudHMpKTsKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJW
aWV3IF90aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOwotCi0gICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hp
bGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9J25vdC10aGVtZS1jb2xvcicgY29udGVudD0ncmVk
Jz4iXTsKLQotICAgIEVYUEVDVF9UUlVFKCFbd2ViVmlldyBfdGhlbWVDb2xvcl0pOwogfQogCi1U
RVNUKEhUTUxNZXRhVGhlbWVDb2xvciwgTXVsdGlwbGVUYWdzKQorVEVTVChIVE1MTWV0YVRoZW1l
Q29sb3IsIFZhbGlkTmFtZUFuZENvbG9yQW5kTWVkaWEpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKICAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3RoZW1lQ29sb3Jd
KTsKIAotICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRp
bEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicg
Y29udGVudD0ncmVkJz48bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0nYmx1ZSc+Il07
CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxs
SW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250
ZW50PSdyZWQnIG1lZGlhPSdzY3JlZW4nPiJdOwogCiAgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9
IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsK
LSAgICBhdXRvIGJsdWVDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFj
ZS5nZXQoKSwgYmx1ZUNvbG9yQ29tcG9uZW50cykpOwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JF
cXVhbFRvQ29sb3IoW3dlYlZpZXcgX3RoZW1lQ29sb3JdLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQo
KSkpOworICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9y
U3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOworICAgIEVYUEVDVF9UUlVFKENHQ29s
b3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3RoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdl
dCgpKSk7Cit9CisKK1RFU1QoSFRNTE1ldGFUaGVtZUNvbG9yLCBJbnZhbGlkTmFtZSkKK3sKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIEVYUEVDVF9UUlVFKCFbd2Vi
VmlldyBfdGhlbWVDb2xvcl0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5h
bWU9J25vdC10aGVtZS1jb2xvcicgY29udGVudD0nYmx1ZSc+PG1ldGEgbmFtZT0ndGhlbWUtY29s
b3InIGNvbnRlbnQ9J3JlZCc+Il07CisKKyAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRD
RihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgIGF1
dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCks
IHJlZENvbG9yQ29tcG9uZW50cykpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29s
b3IoW3dlYlZpZXcgX3RoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7Cit9CisK
K1RFU1QoSFRNTE1ldGFUaGVtZUNvbG9yLCBJbnZhbGlkQ29sb3IpCit7CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3RoZW1l
Q29sb3JdKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdh
aXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSd0aGVtZS1j
b2xvcicgY29udGVudD0naW52YWxpZCc+PG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9
J3JlZCc+Il07CisKKyAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3Bh
Y2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgIGF1dG8gcmVkQ29sb3Ig
PSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29t
cG9uZW50cykpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcg
X3RoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7Cit9CisKK1RFU1QoSFRNTE1l
dGFUaGVtZUNvbG9yLCBJbnZhbGlkTWVkaWEpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3RoZW1lQ29sb3JdKTsKKwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbElt
bWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVu
dD0nYmx1ZScgbWVkaWE9J2ludmFsaWQnPjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250ZW50
PSdyZWQnIG1lZGlhPSdzY3JlZW4nPiJdOworCisgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFk
b3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAg
ICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdl
dCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3IF90aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOwor
fQorCitURVNUKEhUTUxNZXRhVGhlbWVDb2xvciwgTXVsdGlwbGVWYWxpZCkKK3sKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIEVYUEVDVF9UUlVFKCFbd2ViVmlldyBf
dGhlbWVDb2xvcl0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
QW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxkaXY+PG1ldGEgbmFt
ZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J3JlZCc+PC9kaXY+PG1ldGEgbmFtZT0ndGhlbWUtY29s
b3InIGNvbnRlbnQ9J2JsdWUnPiJdOworCisgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0
Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBh
dXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgp
LCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0Nv
bG9yKFt3ZWJWaWV3IF90aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworfQor
CitURVNUKEhUTUxNZXRhVGhlbWVDb2xvciwgVmFsaWRTdWJmcmFtZSkKK3sKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIEVYUEVDVF9UUlVFKCFbd2ViVmlldyBfdGhl
bWVDb2xvcl0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5k
V2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxpZnJhbWUgc3JjZG9jPVwi
PG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J2JsdWUnPlwiPjwvaWZyYW1lPjxtZXRh
IG5hbWU9J3RoZW1lLWNvbG9yJyBjb250ZW50PSdyZWQnPiJdOworCisgICAgYXV0byBzUkdCQ29s
b3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFj
ZVNSR0IpKTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JD
b2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICBFWFBFQ1RfVFJVRShD
R0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IF90aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xv
ci5nZXQoKSkpOwogfQogCiBAaW50ZXJmYWNlIFdLV2ViVmlld1RoZW1lQ29sb3JPYnNlcnZlciA6
IE5TT2JqZWN0CkBAIC0xMDIsOCArMTU4LDEzIEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5
UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6
QCJiZWZvcmUtY29udGVudC1jaGFuZ2UiXSkgewotICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNv
bnRlbnQtY2hhbmdlIjsKKyAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUt
Y29udGVudC1jaGFuZ2UtaW52YWxpZCJdKSB7CisgICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItY29u
dGVudC1jaGFuZ2UtaW52YWxpZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
W19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY29udGVudC1jaGFuZ2UtdmFsaWQiXSkg
eworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNvbnRlbnQtY2hhbmdlLXZhbGlkIjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE3LDYgKzE3OCwyNiBAQCAtICh2b2lkKW9ic2VydmVW
YWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNo
YW5nZTooTgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFtfc3RhdGUgaXNFcXVh
bFRvU3RyaW5nOkAiYmVmb3JlLWludmFsaWQtbWVkaWEtYWRkZWQiXSkgeworICAgICAgICBfc3Rh
dGUgPSBAImFmdGVyLWludmFsaWQtbWVkaWEtYWRkZWQiOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLW1lZGlhLWNoYW5n
ZWQtdmFsaWQiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLW1lZGlhLWNoYW5nZWQtdmFs
aWQiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRv
U3RyaW5nOkAiYmVmb3JlLW1lZGlhLXN0YXRlLWNoYW5nZWQiXSkgeworICAgICAgICBfc3RhdGUg
PSBAImFmdGVyLW1lZGlhLXN0YXRlLWNoYW5nZWQiOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLW5vZGUtaW5zZXJ0ZWQi
XSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLW5vZGUtaW5zZXJ0ZWQiOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3Jl
LW5vZGUtcmVtb3ZlZCJdKSB7CiAgICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItbm9kZS1yZW1vdmVk
IjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTQzLDEwICsyMjQsMTYgQEAgVEVTVChIVE1MTWV0YVRo
ZW1lQ29sb3IsIEtWTykKICAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWxvYWQiLCBbdGhl
bWVDb2xvck9ic2VydmVyIHN0YXRlXSk7CiAgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlldyBfdGhlbWVDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKIAot
ICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY29udGVudC1jaGFuZ2Ui
XTsKKyAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNvbnRlbnQtY2hh
bmdlLWludmFsaWQiXTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YScpLnNldEF0dHJpYnV0ZSgnY29udGVudCcs
ICdpbnZhbGlkJykiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0
ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jb250ZW50LWNoYW5nZS1pbnZhbGlk
IiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKCFbd2ViVmll
dyBfdGhlbWVDb2xvcl0pOworCisgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJl
Zm9yZS1jb250ZW50LWNoYW5nZS12YWxpZCJdOwogICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZXRhJykuc2V0QXR0cmli
dXRlKCdjb250ZW50JywgJ2JsdWUnKSJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2Vu
dGF0aW9uVXBkYXRlXTsKLSAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWNvbnRlbnQtY2hh
bmdlIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9OU1NUUklOR19F
USgiYWZ0ZXItY29udGVudC1jaGFuZ2UtdmFsaWQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRl
XSk7CiAgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfdGhlbWVD
b2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7CiAKICAgICBbdGhlbWVDb2xvck9ic2Vy
dmVyIHNldFN0YXRlOkAiYmVmb3JlLW5hbWUtY2hhbmdlLW5vdC10aGVtZS1jb2xvciJdOwpAQCAt
MTYxLDYgKzI0OCwzMCBAQCBURVNUKEhUTUxNZXRhVGhlbWVDb2xvciwgS1ZPKQogICAgIEVYUEVD
VF9OU1NUUklOR19FUSgiYWZ0ZXItbmFtZS1jaGFuZ2UtdGhlbWUtY29sb3IiLCBbdGhlbWVDb2xv
ck9ic2VydmVyIHN0YXRlXSk7CiAgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihb
d2ViVmlldyBfdGhlbWVDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7CiAKKyAgICBb
dGhlbWVDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWludmFsaWQtbWVkaWEtYWRkZWQi
XTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcignbWV0YScpLnNldEF0dHJpYnV0ZSgnbWVkaWEnLCAnaW52YWxpZCcpIl07
CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVD
VF9OU1NUUklOR19FUSgiYWZ0ZXItaW52YWxpZC1tZWRpYS1hZGRlZCIsIFt0aGVtZUNvbG9yT2Jz
ZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3RoZW1lQ29sb3JdKTsK
KworICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtbWVkaWEtY2hhbmdl
ZC12YWxpZCJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZXRhJykuc2V0QXR0cmlidXRlKCdtZWRpYScsICcobWlu
LXdpZHRoOiA3NTBweCknKSJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9u
VXBkYXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLW1lZGlhLWNoYW5nZWQtdmFs
aWQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xv
ckVxdWFsVG9Db2xvcihbd2ViVmlldyBfdGhlbWVDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdl
dCgpKSk7CisKKyAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLW1lZGlh
LXN0YXRlLWNoYW5nZWQiXTsKKyAgICBbd2ViVmlldyBzZXRGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDcwMCwgNjAwKV07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVd
OworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItbWVkaWEtc3RhdGUtY2hhbmdlZCIsIFt0
aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3Ro
ZW1lQ29sb3JdKTsKKworICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUt
bm9kZS1pbnNlcnRlZCJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZXRhJykuaW5zZXJ0QWRqYWNlbnRIVE1MKCdi
ZWZvcmViZWdpbicsIFwiPG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J3JlZCc+XCIp
Il07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVY
UEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItbm9kZS1pbnNlcnRlZCIsIFt0aGVtZUNvbG9yT2JzZXJ2
ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3
IF90aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworCiAgICAgW3RoZW1lQ29s
b3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1ub2RlLXJlbW92ZWQiXTsKICAgICBbd2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
bWV0YScpLnJlbW92ZSgpIl07CiAgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25V
cGRhdGVdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425913</attachid>
            <date>2021-04-13 14:29:16 -0700</date>
            <delta_ts>2021-04-22 16:07:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>224389.diff</filename>
            <type>text/plain</type>
            <size>28567</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmYWUzMWNkNGNlMTUuLjJmOTZiN2VjNTA0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUzIEBACisyMDIxLTA0LTEzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYSBgbWVkaWFgIGF0dHJpYnV0ZSBvbiBgPG1l
dGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9Ii4uLiI+YAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mzg5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83NDk5MTYyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IGBIVE1MTWV0YVRoZW1lQ29sb3JgIEFQSSB0ZXN0cy4KKworICAg
ICAgICAqIGh0bWwvSFRNTE1ldGFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxNZXRh
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1ldGFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlTWVkaWEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhTWF0
Y2hlcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50OjptZWRpYUF0
dHJpYnV0ZU1hdGNoZXMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRhRWxlbWVu
dDo6Y29udGVudENvbG9yKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1l
bnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQ6OnJl
bW92ZWRGcm9tQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Ojpw
cm9jZXNzKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGEgcmVmbGVjdGVkIGBtZWRpYWAgYXR0
cmlidXRlLiBDYWNoZSB0aGUgbW9zdCByZWNlbnRseSBwYXJzZWQgYG1lZGlhYCAod2hpY2gKKyAg
ICAgICAgYmVjb21lcyBhIGBSZWY8TWVkaWFRdWVyeVNldD5gKSBhbmQgYGNvbnRlbnRgICh3aGlj
aCBjYW4gYmVjb21lIGEgYENvbG9yYCkgdG8gYXZvaWQgZG9pbmcKKyAgICAgICAgcmVwZWF0ZWQg
d29yayB3aGVuIGRldGVybWluaW5nIHRoZSBhY3RpdmUgdGhlbWUgY29sb3IgYWZ0ZXIgbWVkaWEg
c3RhdGUgY2hhbmdlcy4gTm90aWZ5IHRoZQorICAgICAgICBgRG9jdW1lbnRgIHdoZW5ldmVyIHRo
ZSBgbmFtZWAgb3IgYGNvbnRlbnRgIG9yIGBtZWRpYWAgYXR0cmlidXRlIGNoYW5nZXMgaWYgdGhl
IG5ldyBvciBvbGQKKyAgICAgICAgdmFsdWUgd2lsbCBiZSBvciB3b3VsZCBoYXZlIGJlZW4gcmVs
YXRlZCB0byBjYWxjdWxhdGluZyB0aGUgdGhlbWUgY29sb3IuCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aGVtZUNvbG9yIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnRoZW1lQ29sb3IpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp0aGVtZUNvbG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV0ZXJt
aW5lQWN0aXZlVGhlbWVDb2xvckVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojp1cGRhdGVFbGVtZW50c0FmZmVjdGVkQnlNZWRpYVF1ZXJpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NUaGVtZUNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAg
TWFrZSBjYWxjdWxhdGluZyB0aGUgdGhlbWUgY29sb3IgaW50byBhIHR3byBzdGFnZSBwcm9jZXNz
OgorICAgICAgICAgMS4gZmluZCBhbGwgYDxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIj5gIHRoYXQg
aGF2ZSBhIHZhbGlkIENTUyBjb2xvciBgY29udGVudGAgaW4gdHJlZSBvcmRlcgorICAgICAgICAg
Mi4gcmV0dXJuIHRoZSBgSFRNTE1ldGFFbGVtZW50Ojpjb250ZW50Q29sb3JgIG9mIHRoZSBmaXJz
dCBpdGVtIGZyb20gc3RlcCAxIHRoYXQgYEhUTUxNZXRhRWxlbWVudDo6bWVkaWFBdHRyaWJ1dGVN
YXRjaGVzYAorICAgICAgICBUaGlzIGlzIGRvbmUgc28gdGhhdCBgRG9jdW1lbnQ6OnVwZGF0ZUVs
ZW1lbnRzQWZmZWN0ZWRCeU1lZGlhUXVlcmllc2AgZG9lc24ndCBoYXZlIHRvIHJlcGVhdAorICAg
ICAgICBzdGVwIDEgZWFjaCB0aW1lIGl0J3MgcnVuICh3aGljaCBjYW4gYmUgb2Z0ZW4pIGFuZCBp
bnN0ZWFkIG9ubHkgbmVlZHMgdG8gaXRlcmF0ZSBhIChsaWtlbHkKKyAgICAgICAgdmVyeSBzbWFs
bCkgbGlzdCBpbiBzdGVwIDIuIFRoZSBhY3Rpb25zL3NpdHVhdGlvbnMgbGlzdGVkIGFib3ZlIHdv
dWxkIGNsZWFyIHRoZSBjYWNoZWQgZGF0YQorICAgICAgICBmcm9tIGJvdGggc3RlcHMsIG1lYW5p
bmcgdGhhdCB0aGUgbmV4dCBgRG9jdW1lbnQ6OnRoZW1lQ29sb3JgIHdpbGwgZG8gYSBmdWxsIHJl
Y2FsY3VsYXRpb24uCisgICAgICAgIE5vdGlmeSB0aGUgVUlQcm9jZXNzIG9mIGEgY2hhbmdlIGlu
IHRoZW1lIGNvbG9yIGlmIHRoZSByZXN1bHQgb2Ygc3RlcCAyIGlzIGRpZmZlcmVudCBmcm9tIGEK
KyAgICAgICAgcHJldmlvdXNseSBjYWNoZWQgcmVzdWx0IChpZiBzZXQpLgorCisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6dGhl
bWVDb2xvckNoYW5nZWQgY29uc3QpOgorICAgICAgICBSZW1vdmUgdGhlIGBDb2xvciB0aGVtZUNv
bG9yYCBwYXJhbWV0ZXIgc2luY2UgdGhlIGNhbGN1bGF0aW9uIHRoYXQgZGV0ZXJtaW5lcyBpdHMg
dmFsdWUgaXMKKyAgICAgICAgZGVmZXJyZWQgdW50aWwgdGhlIG5leHQgYERvY3VtZW50Ojp0aGVt
ZUNvbG9yYCBpcyBjYWxsZWQuCisKIDIwMjEtMDQtMTIgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgTW9kZXJuaXplIHVzZXMgb2YgQ29uc29sZUNsaWVudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggZjc2YThjMWJiYTkyLi41NmE0YjYyNjUyNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtMTAzLDYgKzEwMyw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRp
YUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWV0YUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TmFtZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiSFRNTFBpY3R1cmVFbGVtZW50LmgiCkBAIC0zODQ2LDE4ICszODQ3LDIyIEBAIHZvaWQgRG9j
dW1lbnQ6OnVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKCkKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1l
bnQ6OnByb2Nlc3NUaGVtZUNvbG9yKGNvbnN0IFN0cmluZyYgdGhlbWVDb2xvclN0cmluZykKK0Nv
bG9yIERvY3VtZW50Ojp0aGVtZUNvbG9yKCkKIHsKLSAgICBhdXRvIHRoZW1lQ29sb3IgPSBDU1NQ
YXJzZXI6OnBhcnNlQ29sb3IodGhlbWVDb2xvclN0cmluZyk7Ci0gICAgaWYgKHRoZW1lQ29sb3Ig
PT0gbV90aGVtZUNvbG9yKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2FjdGl2ZVRoZW1l
Q29sb3JFbGVtZW50KQorICAgICAgICBtX2FjdGl2ZVRoZW1lQ29sb3JFbGVtZW50ID0gZGV0ZXJt
aW5lQWN0aXZlVGhlbWVDb2xvckVsZW1lbnQoKTsKKyAgICByZXR1cm4gbV9hY3RpdmVUaGVtZUNv
bG9yRWxlbWVudCA/IG1fYWN0aXZlVGhlbWVDb2xvckVsZW1lbnQtPmNvbnRlbnRDb2xvcigpIDog
Q29sb3IoKTsKK30KIAotICAgIG1fdGhlbWVDb2xvciA9IFdURk1vdmUodGhlbWVDb2xvcik7Cit2
b2lkIERvY3VtZW50Ojp0aGVtZUNvbG9yQ2hhbmdlZCgpCit7CisgICAgbV90aGVtZUNvbG9yRWxl
bWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9hY3RpdmVUaGVtZUNvbG9yRWxlbWVudCA9IG51
bGxwdHI7CiAKICAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSh7IH0pOwogCiAgICAgaWYgKGF1
dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
LnRoZW1lQ29sb3JDaGFuZ2VkKG1fdGhlbWVDb2xvcik7CisgICAgICAgIHBhZ2UtPmNocm9tZSgp
LmNsaWVudCgpLnRoZW1lQ29sb3JDaGFuZ2VkKCk7CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJ
TkcpCiAgICAgaWYgKGF1dG8qIHZpZXcgPSByZW5kZXJWaWV3KCkpIHsKQEAgLTM4NjcsNiArMzg3
MiwyNCBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzVGhlbWVDb2xvcihjb25zdCBTdHJpbmcmIHRo
ZW1lQ29sb3JTdHJpbmcpCiAjZW5kaWYgLy8gRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogfQogCitX
ZWFrUHRyPEhUTUxNZXRhRWxlbWVudD4gRG9jdW1lbnQ6OmRldGVybWluZUFjdGl2ZVRoZW1lQ29s
b3JFbGVtZW50KCkKK3sKKyAgICBpZiAoIW1fdGhlbWVDb2xvckVsZW1lbnRzKSB7CisgICAgICAg
IFZlY3RvcjxXZWFrUHRyPEhUTUxNZXRhRWxlbWVudD4+IHRoZW1lQ29sb3JFbGVtZW50czsKKyAg
ICAgICAgZm9yIChhdXRvJiBtZXRhRWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxNZXRh
RWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobWV0YUVsZW1lbnQubmFtZSgpLCAidGhlbWUtY29sb3IiKSAmJiBtZXRhRWxlbWVu
dC5jb250ZW50Q29sb3IoKS5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgdGhlbWVDb2xvckVs
ZW1lbnRzLmFwcGVuZChtYWtlV2Vha1B0cihtZXRhRWxlbWVudCkpOworICAgICAgICB9CisgICAg
ICAgIG1fdGhlbWVDb2xvckVsZW1lbnRzID0gV1RGTW92ZSh0aGVtZUNvbG9yRWxlbWVudHMpOwor
ICAgIH0KKworICAgIGZvciAoYXV0byYgbWV0YUVsZW1lbnQgOiAqbV90aGVtZUNvbG9yRWxlbWVu
dHMpIHsKKyAgICAgICAgaWYgKG1ldGFFbGVtZW50ICYmIG1ldGFFbGVtZW50LT5jb250ZW50Q29s
b3IoKS5pc1ZhbGlkKCkgJiYgbWV0YUVsZW1lbnQtPm1lZGlhQXR0cmlidXRlTWF0Y2hlcygpKQor
ICAgICAgICAgICAgcmV0dXJuIG1ldGFFbGVtZW50OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQogc3RhdGljIHZvaWQgcHJvY2Vzc0Nv
bG9yU2NoZW1lU3RyaW5nKFN0cmluZ1ZpZXcgY29sb3JTY2hlbWUsIGNvbnN0IFdURjo6RnVuY3Rp
b248dm9pZChTdHJpbmdWaWV3IGtleSk+JiBjYWxsYmFjaykKIHsKQEAgLTQxNDcsNiArNDE3MCwy
MCBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVFbGVtZW50c0FmZmVjdGVkQnlNZWRpYVF1ZXJpZXMo
KQogewogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2Fs
bG93ZWRTY29wZTsKIAorICAgIGlmIChhdXRvIGFjdGl2ZVRoZW1lQ29sb3JFbGVtZW50ID0gZGV0
ZXJtaW5lQWN0aXZlVGhlbWVDb2xvckVsZW1lbnQoKTsgbV9hY3RpdmVUaGVtZUNvbG9yRWxlbWVu
dCAhPSBhY3RpdmVUaGVtZUNvbG9yRWxlbWVudCkgeworICAgICAgICBtX2FjdGl2ZVRoZW1lQ29s
b3JFbGVtZW50ID0gYWN0aXZlVGhlbWVDb2xvckVsZW1lbnQ7CisKKyAgICAgICAgaWYgKGF1dG8q
IHBhZ2UgPSB0aGlzLT5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS50aGVtZUNvbG9yQ2hhbmdlZCgpOworCisjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQorICAg
ICAgICBpZiAoYXV0byogdmlldyA9IHJlbmRlclZpZXcoKSkgeworICAgICAgICAgICAgaWYgKHZp
ZXctPnVzZXNDb21wb3NpdGluZygpKQorICAgICAgICAgICAgICAgIHZpZXctPmNvbXBvc2l0b3Io
KS51cGRhdGVMYXllckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAg
fQorI2VuZGlmIC8vIEVOQUJMRShSVUJCRVJfQkFORElORykKKyAgICB9CisKICAgICAvLyBGSVhN
RTogY29weVRvVmVjdG9yIGRvZXNuJ3Qgd29yayB3aXRoIFdlYWtIYXNoU2V0CiAgICAgVmVjdG9y
PFJlZjxIVE1MSW1hZ2VFbGVtZW50Pj4gaW1hZ2VzOwogICAgIGltYWdlcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG1fZHluYW1pY01lZGlhUXVlcnlEZXBlbmRlbnRJbWFnZXMuY29tcHV0ZVNpemUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDFlNjhjNTc5NzQxNy4uYzExNWY2ZDEyNmI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTU4LDYgKzE1OCw3IEBAIGNsYXNzIEhUTUxJRnJhbWVF
bGVtZW50OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxNYXBFbGVtZW50Owog
Y2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIEhUTUxNZXRhRWxlbWVudDsKIGNsYXNzIEhU
TUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBIaWdobGlnaHRSZWdpc3RlcjsKIGNsYXNzIEhpdFRlc3RM
b2NhdGlvbjsKQEAgLTc0MCw4ICs3NDEsNiBAQCBwdWJsaWM6CiAgICAgU2Vjb25kcyB0aW1lU2lu
Y2VEb2N1bWVudENyZWF0aW9uKCkgY29uc3QgeyByZXR1cm4gTW9ub3RvbmljVGltZTo6bm93KCkg
LSBtX2RvY3VtZW50Q3JlYXRpb25UaW1lOyB9OwogI2VuZGlmCiAKLSAgICBjb25zdCBDb2xvciYg
dGhlbWVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fdGhlbWVDb2xvcjsgfQotCiAgICAgdm9pZCBz
ZXRUZXh0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fdGV4dENvbG9yID0gY29sb3I7IH0K
ICAgICBjb25zdCBDb2xvciYgdGV4dENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q29sb3I7
IH0KIApAQCAtOTExLDcgKzkxMCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHByb2Nlc3NEaXNhYmxl
ZEFkYXB0YXRpb25zKGNvbnN0IFN0cmluZyYgYWRhcHRhdGlvbnMpOwogICAgIHZvaWQgdXBkYXRl
Vmlld3BvcnRBcmd1bWVudHMoKTsKICAgICB2b2lkIHByb2Nlc3NSZWZlcnJlclBvbGljeShjb25z
dCBTdHJpbmcmIHBvbGljeSwgUmVmZXJyZXJQb2xpY3lTb3VyY2UpOwotICAgIHZvaWQgcHJvY2Vz
c1RoZW1lQ29sb3IoY29uc3QgU3RyaW5nJiB0aGVtZUNvbG9yKTsKKworICAgIENvbG9yIHRoZW1l
Q29sb3IoKTsKKyAgICB2b2lkIHRoZW1lQ29sb3JDaGFuZ2VkKCk7CiAKICNpZiBFTkFCTEUoREFS
S19NT0RFX0NTUykKICAgICB2b2lkIHByb2Nlc3NDb2xvclNjaGVtZShjb25zdCBTdHJpbmcmIGNv
bG9yU2NoZW1lKTsKQEAgLTE3OTIsNyArMTc5MywxMCBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEZvcm1Db250cm9sbGVyPiBtX2Zvcm1Db250cm9sbGVyOwogCi0gICAgQ29sb3Ig
bV90aGVtZUNvbG9yOworICAgIFdlYWtQdHI8SFRNTE1ldGFFbGVtZW50PiBkZXRlcm1pbmVBY3Rp
dmVUaGVtZUNvbG9yRWxlbWVudCgpOworICAgIE9wdGlvbmFsPFZlY3RvcjxXZWFrUHRyPEhUTUxN
ZXRhRWxlbWVudD4+PiBtX3RoZW1lQ29sb3JFbGVtZW50czsKKyAgICBXZWFrUHRyPEhUTUxNZXRh
RWxlbWVudD4gbV9hY3RpdmVUaGVtZUNvbG9yRWxlbWVudDsKKwogICAgIENvbG9yIG1fdGV4dENv
bG9yIHsgQ29sb3I6OmJsYWNrIH07CiAgICAgQ29sb3IgbV9saW5rQ29sb3I7CiAgICAgQ29sb3Ig
bV92aXNpdGVkTGlua0NvbG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWV0YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3Bw
CmluZGV4IGQzY2MxNDdhNzJiNC4uY2U3MzhmODZhNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWV0YUVsZW1lbnQuY3BwCkBAIC0yNCwxMSArMjQsMTggQEAKICNpbmNsdWRlICJIVE1MTWV0
YUVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNvbG9yLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSGVhZEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYUxpc3QuaCIKKyNpbmNsdWRlICJN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlci5oIgorI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJT
dHlsZVJlc29sdmVGb3JEb2N1bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNTIsMjQgKzU5LDk3IEBAIFJlZjxIVE1MTWV0YUVsZW1lbnQ+IEhUTUxNZXRhRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSFRNTE1ldGFFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKK3N0
YXRpYyBSZWY8TWVkaWFRdWVyeVNldD4gcGFyc2VNZWRpYShjb25zdCBTdHJpbmcmIG1lZGlhU3Ry
aW5nLCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlT
ZXQ6OmNyZWF0ZShtZWRpYVN0cmluZy5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLCBNZWRpYVF1
ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOworfQorCitzdGF0aWMgYm9vbCBtZWRpYU1hdGNo
ZXMoY29uc3QgTWVkaWFRdWVyeVNldCYgbWVkaWEsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkK
K3sKKyAgICBPcHRpb25hbDxSZW5kZXJTdHlsZT4gZG9jdW1lbnRTdHlsZTsKKyAgICBpZiAoZG9j
dW1lbnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQorICAgICAgICBkb2N1bWVudFN0eWxlID0gU3R5
bGU6OnJlc29sdmVGb3JEb2N1bWVudChkb2N1bWVudCk7CisKKyAgICBTdHJpbmcgbWVkaWFUeXBl
OworICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKKyAgICAgICAgaWYg
KGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCkpCisgICAgICAgICAgICBtZWRpYVR5cGUg
PSBmcmFtZVZpZXctPm1lZGlhVHlwZSgpOworICAgIH0KKworICAgIHJldHVybiBNZWRpYVF1ZXJ5
RXZhbHVhdG9yKG1lZGlhVHlwZSwgZG9jdW1lbnQsIGRvY3VtZW50U3R5bGUgPyAmKmRvY3VtZW50
U3R5bGUgOiBudWxscHRyKS5ldmFsdWF0ZShtZWRpYSk7Cit9CisKK2Jvb2wgSFRNTE1ldGFFbGVt
ZW50OjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKQoreworICAgIGlmICghbV9tZWRpYSkKKyAgICAg
ICAgbV9tZWRpYSA9IHBhcnNlTWVkaWEoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbiht
ZWRpYUF0dHIpLCBkb2N1bWVudCgpKTsKKyAgICByZXR1cm4gbWVkaWFNYXRjaGVzKCptX21lZGlh
LCBkb2N1bWVudCgpKTsKK30KKworQ29sb3IgSFRNTE1ldGFFbGVtZW50Ojpjb250ZW50Q29sb3Io
KQoreworICAgIGlmICghbV9jb250ZW50Q29sb3IpCisgICAgICAgIG1fY29udGVudENvbG9yID0g
Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbnRlbnQoKSk7CisgICAgcmV0dXJuICptX2NvbnRlbnRD
b2xvcjsKK30KKwogdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0
b21TdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gcmVhc29uKQog
eworICAgIGJvb2wgd2FzVmFsaWRNZWRpYSA9IG1fbWVkaWEgJiYgbWVkaWFBdHRyaWJ1dGVNYXRj
aGVzKCk7CisgICAgYm9vbCB3YXNWYWxpZENvbG9yID0gbV9jb250ZW50Q29sb3IgJiYgY29udGVu
dENvbG9yKCkuaXNWYWxpZCgpOworCiAgICAgSFRNTEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQo
bmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCByZWFzb24pOwogCi0gICAgaWYgKG5hbWUgPT0gbmFt
ZUF0dHIgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uob2xkVmFsdWUsICJ0aGVtZS1j
b2xvciIpICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuZXdWYWx1ZSwgInRoZW1l
LWNvbG9yIikpCi0gICAgICAgIGRvY3VtZW50KCkucHJvY2Vzc1RoZW1lQ29sb3IoZW1wdHlTdHJp
bmcoKSk7CisgICAgaWYgKHJlYXNvbiAhPSBNb2RpZmllZERpcmVjdGx5KQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoIXdhc1ZhbGlkTWVkaWEgfHwgIXdhc1ZhbGlkQ29sb3IpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChuYW1lID09IG5hbWVBdHRyKSB7CisgICAgICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShvbGRWYWx1ZSwgInRoZW1lLWNvbG9yIikgJiYgIWVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5ld1ZhbHVlLCAidGhlbWUtY29sb3IiKSkKKyAg
ICAgICAgICAgIGRvY3VtZW50KCkudGhlbWVDb2xvckNoYW5nZWQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChuYW1lID09IGNvbnRlbnRBdHRyKSB7CisgICAgICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0aGlzLT5uYW1lKCksICJ0aGVtZS1jb2xvciIp
ICYmICFjb250ZW50Q29sb3IoKS5pc1ZhbGlkKCkpCisgICAgICAgICAgICBkb2N1bWVudCgpLnRo
ZW1lQ29sb3JDaGFuZ2VkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobmFt
ZSA9PSBtZWRpYUF0dHIpIHsKKyAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHRoaXMtPm5hbWUoKSwgInRoZW1lLWNvbG9yIikgJiYgIW1lZGlhQXR0cmlidXRlTWF0Y2hl
cygpKQorICAgICAgICAgICAgZG9jdW1lbnQoKS50aGVtZUNvbG9yQ2hhbmdlZCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQogfQogCiB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7
Ci0gICAgaWYgKG5hbWUgPT0gaHR0cF9lcXVpdkF0dHIpCisgICAgaWYgKG5hbWUgPT0gbmFtZUF0
dHIpIHsKICAgICAgICAgcHJvY2VzcygpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gY29udGVudEF0
dHIpCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobmFtZSA9PSBjb250ZW50QXR0
cikgeworICAgICAgICBtX2NvbnRlbnRDb2xvciA9IFdURjo6bnVsbG9wdDsKICAgICAgICAgcHJv
Y2VzcygpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gbmFtZUF0dHIpCisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobmFtZSA9PSBodHRwX2VxdWl2QXR0cikgewogICAgICAgICBwcm9j
ZXNzKCk7Ci0gICAgZWxzZQotICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFt
ZSwgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG5hbWUgPT0gbWVk
aWFBdHRyKSB7CisgICAgICAgIG1fbWVkaWEgPSBudWxscHRyOworICAgICAgICBwcm9jZXNzKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUobmFtZSwgdmFsdWUpOwogfQogCiBOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBI
VE1MTWV0YUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0
aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCkBAIC04OSw4ICsx
NjksMTAgQEAgdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3Zh
bFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUKIHsKICAgICBIVE1MRWxlbWVudDo6cmVt
b3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7CiAK
LSAgICBpZiAoIWlzQ29ubmVjdGVkKCkgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bmFtZSgpLCAidGhlbWUtY29sb3IiKSkKLSAgICAgICAgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5k
b2N1bWVudCgpLnByb2Nlc3NUaGVtZUNvbG9yKGVtcHR5U3RyaW5nKCkpOworICAgIGF1dG8mIG9s
ZERvY3VtZW50ID0gb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5kb2N1bWVudCgpOworCisgICAgaWYg
KCFpc0Nvbm5lY3RlZCgpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUoKSwg
InRoZW1lLWNvbG9yIikgJiYgY29udGVudENvbG9yKCkuaXNWYWxpZCgpICYmIG1lZGlhTWF0Y2hl
cyhtX21lZGlhID8gKm1fbWVkaWEgOiBwYXJzZU1lZGlhKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24obWVkaWFBdHRyKSwgb2xkRG9jdW1lbnQpLmdldCgpLCBvbGREb2N1bWVudCkpCisg
ICAgICAgIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUuZG9jdW1lbnQoKS50aGVtZUNvbG9yQ2hhbmdl
ZCgpOwogfQogCiB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cHJvY2VzcygpCkBAIC0xMTEsOCArMTkz
LDEwIEBAIHZvaWQgSFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKCkKICAgICBlbHNlIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lKCksICJjb2xvci1zY2hlbWUiKSB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lKCksICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1l
cyIpKQogICAgICAgICBkb2N1bWVudCgpLnByb2Nlc3NDb2xvclNjaGVtZShjb250ZW50VmFsdWUp
OwogI2VuZGlmCi0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSgpLCAidGhlbWUtY29sb3IiKSkKLSAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzVGhlbWVDb2xv
cihjb250ZW50VmFsdWUpOworICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG5hbWUoKSwgInRoZW1lLWNvbG9yIikpIHsKKyAgICAgICAgaWYgKGNvbnRlbnRDb2xvcigp
LmlzVmFsaWQoKSAmJiBtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKSkKKyAgICAgICAgICAgIGRvY3Vt
ZW50KCkudGhlbWVDb2xvckNoYW5nZWQoKTsKKyAgICB9CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lKCksICJm
b3JtYXQtZGV0ZWN0aW9uIikpCiAgICAgICAgIGRvY3VtZW50KCkucHJvY2Vzc0Zvcm1hdERldGVj
dGlvbihjb250ZW50VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWV0YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmgKaW5k
ZXggMzM1MGYxZTgzNGY4Li5hZDc2ZDIxODdhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1ldGFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
YUVsZW1lbnQuaApAQCAtMjYsNiArMjYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIENvbG9yOworY2xhc3MgTWVkaWFRdWVyeVNldDsKKwogY2xhc3MgSFRNTE1ldGFFbGVtZW50
IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KEhUTUxNZXRhRWxlbWVudCk7CiBwdWJsaWM6CkBAIC0zNiw2ICszOSwxMCBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgQXRvbVN0cmluZyYgaHR0cEVxdWl2KCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbVN0
cmluZyYgbmFtZSgpIGNvbnN0OwogCisgICAgYm9vbCBtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKTsK
KworICAgIENvbG9yIGNvbnRlbnRDb2xvcigpOworCiBwcml2YXRlOgogICAgIEhUTUxNZXRhRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIApAQCAtNDYsNiArNTMsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENv
bnRhaW5lck5vZGUmKSBmaW5hbDsKIAogICAgIHZvaWQgcHJvY2VzcygpOworCisgICAgUmVmUHRy
PE1lZGlhUXVlcnlTZXQ+IG1fbWVkaWE7CisKKyAgICBPcHRpb25hbDxDb2xvcj4gbV9jb250ZW50
Q29sb3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZXRhRWxlbWVudC5pZGwKaW5kZXggNzJlNzgwYTg3NjBiLi5jNDk0YzdhMWQ3NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5pZGwKQEAgLTIyLDYgKzIyLDcgQEAKIF0g
aW50ZXJmYWNlIEhUTUxNZXRhRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ0VSZWFjdGlv
bnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNvbnRlbnQ7CiAgICAg
W0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdD1odHRwX2VxdWl2XSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGh0dHBFcXVpdjsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIG1lZGlhOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJl
ZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNjaGVtZTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAppbmRleCBkMGJjMzU1MGQ0ZDAuLjg4OTY1OGQxNzlmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0yMzEsNyArMjMxLDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBDb2xvciB1bmRlcmxheUNvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsg
fQogCi0gICAgdmlydHVhbCB2b2lkIHRoZW1lQ29sb3JDaGFuZ2VkKENvbG9yKSBjb25zdCB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDb2xvckNoYW5nZWQoKSBjb25zdCB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKENvbG9yKSBjb25z
dCB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUmLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgRGF0YWJhc2VEZXRhaWxzKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDMzN2ZiMzhjZWU5Mi4uZjdiZmEzNDIyMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDIxLTA0LTEzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgYSBgbWVkaWFgIGF0dHJpYnV0ZSBvbiBgPG1ldGEgbmFtZT0idGhl
bWUtY29sb3IiIGNvbnRlbnQ9Ii4uLiI+YAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mzg5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDk5MTYy
MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAg
UmVtb3ZlIHRoZSBgV2ViQ29yZTo6Q29sb3IgdGhlbWVDb2xvcmAgcGFyYW1ldGVyIHNpbmNlIHRo
ZSBjYWxjdWxhdGlvbiB0aGF0IGRldGVybWluZXMgaXRzCisgICAgICAgIHZhbHVlIGlzIGRlZmVy
cmVkIHVudGlsIHRoZSBuZXh0IGBEb2N1bWVudDo6dGhlbWVDb2xvcmAgaXMgY2FsbGVkLgorCiAy
MDIxLTA0LTEyICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIENy
ZWF0ZSBXZWJJREJTZXJ2ZXIgb25seSB3aGVuIGl0IGlzIG5lZWRlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAppbmRleCBiY2M0YzE3YWMyOTUuLjYwOGViOTMwMzVmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKQEAgLTExNTQsNyArMTE1NCw3IEBAIENvbG9yIFdlYkNocm9tZUNsaWVudDo6dW5kZXJs
YXlDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS51bmRlcmxheUNvbG9yKCk7CiB9CiAK
LXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp0aGVtZUNvbG9yQ2hhbmdlZChDb2xvciAvKiB0aGVtZUNv
bG9yICovKSBjb25zdAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkKCkg
Y29uc3QKIHsKICAgICBtX3BhZ2UudGhlbWVDb2xvckNoYW5nZWQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCA2ODEyZTY0MmZlY2QuLjg1ZGVhZTI3ZDJiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aApAQCAtMzI4LDcgKzMyOCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpDb2xvciB1bmRl
cmxheUNvbG9yKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHRoZW1lQ29sb3JDaGFuZ2VkKFdl
YkNvcmU6OkNvbG9yKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHRoZW1lQ29sb3JDaGFuZ2VkKCkg
Y29uc3QgZmluYWw7CiAgICAgdm9pZCBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFu
Z2UoV2ViQ29yZTo6Q29sb3IpIGNvbnN0IGZpbmFsOwogICAgIAogICAgIHZvaWQgd2hlZWxFdmVu
dEhhbmRsZXJzQ2hhbmdlZChib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMDQwMTAxMjJiNjYuLjRmZmNjYjI5OWYxZCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDIxLTA0LTEzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYSBgbWVkaWFgIGF0dHJpYnV0ZSBvbiBgPG1ldGEgbmFt
ZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9Ii4uLiI+YAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mzg5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
NDk5MTYyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSFRNTE1ldGFUaGVtZUNvbG9yLm1t
OgorICAgICAgICAoVEVTVC5IVE1MTWV0YVRoZW1lQ29sb3IuVmFsaWROYW1lQW5kQ29sb3IpOiBB
ZGRlZC4KKyAgICAgICAgKFRFU1QuSFRNTE1ldGFUaGVtZUNvbG9yLlZhbGlkTmFtZUFuZENvbG9y
QW5kTWVkaWEpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuSFRNTE1ldGFUaGVtZUNvbG9yLkludmFs
aWROYW1lKTogQWRkZWQuCisgICAgICAgIChURVNULkhUTUxNZXRhVGhlbWVDb2xvci5JbnZhbGlk
Q29sb3IpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuSFRNTE1ldGFUaGVtZUNvbG9yLkludmFsaWRN
ZWRpYSk6IEFkZGVkLgorICAgICAgICAoVEVTVC5IVE1MTWV0YVRoZW1lQ29sb3IuTXVsdGlwbGVW
YWxpZCk6IEFkZGVkLgorICAgICAgICAoVEVTVC5IVE1MTWV0YVRoZW1lQ29sb3IuVmFsaWRTdWJm
cmFtZSk6IEFkZGVkLgorICAgICAgICAoLVtXS1dlYlZpZXdUaGVtZUNvbG9yT2JzZXJ2ZXIgb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAg
KFRFU1QuSFRNTE1ldGFUaGVtZUNvbG9yLktWTyk6CisgICAgICAgIChURVNULkhUTUxNZXRhVGhl
bWVDb2xvci5PbkxvYWQpOiBEZWxldGVkLgorICAgICAgICAoVEVTVC5IVE1MTWV0YVRoZW1lQ29s
b3IuTXVsdGlwbGVUYWdzKTogRGVsZXRlZC4KKwogMjAyMS0wNC0xMSAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5n
IHIyNzU4MDEuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0hUTUxNZXRhVGhlbWVDb2xvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSFRNTE1ldGFUaGVtZUNvbG9yLm1tCmluZGV4IDQ5NGI5NzUyMTI2OC4uZDliOGFj
OGU5ODBkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0hUTUxNZXRhVGhlbWVDb2xvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0hUTUxNZXRhVGhlbWVDb2xvci5tbQpAQCAtMzgsNyArMzgsNyBAQAogY29uc3Rl
eHByIENHRmxvYXQgcmVkQ29sb3JDb21wb25lbnRzWzRdID0geyAxLCAwLCAwLCAxIH07CiBjb25z
dGV4cHIgQ0dGbG9hdCBibHVlQ29sb3JDb21wb25lbnRzWzRdID0geyAwLCAwLCAxLCAxIH07CiAK
LVRFU1QoSFRNTE1ldGFUaGVtZUNvbG9yLCBPbkxvYWQpCitURVNUKEhUTUxNZXRhVGhlbWVDb2xv
ciwgVmFsaWROYW1lQW5kQ29sb3IpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCldKTsKICAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3RoZW1lQ29sb3JdKTsKQEAgLTQ4LDIy
ICs0OCw3OCBAQCBURVNUKEhUTUxNZXRhVGhlbWVDb2xvciwgT25Mb2FkKQogICAgIGF1dG8gc1JH
QkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9y
U3BhY2VTUkdCKSk7CiAgICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShz
UkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7CiAgICAgRVhQRUNUX1RS
VUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfdGhlbWVDb2xvcl0uQ0dDb2xvciwgcmVk
Q29sb3IuZ2V0KCkpKTsKLQotICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
Z0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSdu
b3QtdGhlbWUtY29sb3InIGNvbnRlbnQ9J3JlZCc+Il07Ci0KLSAgICBFWFBFQ1RfVFJVRSghW3dl
YlZpZXcgX3RoZW1lQ29sb3JdKTsKIH0KIAotVEVTVChIVE1MTWV0YVRoZW1lQ29sb3IsIE11bHRp
cGxlVGFncykKK1RFU1QoSFRNTE1ldGFUaGVtZUNvbG9yLCBWYWxpZE5hbWVBbmRDb2xvckFuZE1l
ZGlhKQogewogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgRVhQRUNU
X1RSVUUoIVt3ZWJWaWV3IF90aGVtZUNvbG9yXSk7CiAKLSAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50
OkAiPG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J3JlZCc+PG1ldGEgbmFtZT0ndGhl
bWUtY29sb3InIGNvbnRlbnQ9J2JsdWUnPiJdOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8
bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVkJyBtZWRpYT0nc2NyZWVuJz4iXTsK
IAogICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdp
dGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAgYXV0byBibHVlQ29sb3IgPSBhZG9wdENG
KENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIGJsdWVDb2xvckNvbXBvbmVudHMp
KTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IF90aGVtZUNv
bG9yXS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRv
cHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVu
dHMpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IF90aGVt
ZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworfQorCitURVNUKEhUTUxNZXRhVGhl
bWVDb2xvciwgSW52YWxpZE5hbWUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCldKTsKKyAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3RoZW1lQ29sb3JdKTsKKworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0
ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSdub3QtdGhlbWUtY29sb3InIGNvbnRlbnQ9
J2JsdWUnPjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250ZW50PSdyZWQnPiJdOworCisgICAg
YXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUo
a0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9y
Q3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICBF
WFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IF90aGVtZUNvbG9yXS5DR0Nv
bG9yLCByZWRDb2xvci5nZXQoKSkpOworfQorCitURVNUKEhUTUxNZXRhVGhlbWVDb2xvciwgSW52
YWxpZENvbG9yKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAg
RVhQRUNUX1RSVUUoIVt3ZWJWaWV3IF90aGVtZUNvbG9yXSk7CisKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1l
c1BhaW50OkAiPG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J2ludmFsaWQnPjxtZXRh
IG5hbWU9J3RoZW1lLWNvbG9yJyBjb250ZW50PSdyZWQnPiJdOworCisgICAgYXV0byBzUkdCQ29s
b3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFj
ZVNSR0IpKTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JD
b2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICBFWFBFQ1RfVFJVRShD
R0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IF90aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xv
ci5nZXQoKSkpOworfQorCitURVNUKEhUTUxNZXRhVGhlbWVDb2xvciwgSW52YWxpZE1lZGlhKQor
eworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgRVhQRUNUX1RSVUUo
IVt3ZWJWaWV3IF90aGVtZUNvbG9yXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPG1l
dGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J2JsdWUnIG1lZGlhPSdpbnZhbGlkJz48bWV0
YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVkJyBtZWRpYT0nc2NyZWVuJz4iXTsKKwor
ICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhO
YW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dD
b2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7Cisg
ICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfdGhlbWVDb2xvcl0u
Q0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKK30KKworVEVTVChIVE1MTWV0YVRoZW1lQ29sb3Is
IE11bHRpcGxlVmFsaWQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsK
KyAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3RoZW1lQ29sb3JdKTsKKworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxk
RnJhbWVzUGFpbnQ6QCI8ZGl2PjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250ZW50PSdyZWQn
PjwvZGl2PjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250ZW50PSdibHVlJz4iXTsKKworICAg
IGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1l
KGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xv
ckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7CisgICAg
RVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfdGhlbWVDb2xvcl0uQ0dD
b2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKK30KKworVEVTVChIVE1MTWV0YVRoZW1lQ29sb3IsIFZh
bGlkU3ViZnJhbWUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAg
ICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3RoZW1lQ29sb3JdKTsKKworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJh
bWVzUGFpbnQ6QCI8aWZyYW1lIHNyY2RvYz1cIjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250
ZW50PSdibHVlJz5cIj48L2lmcmFtZT48bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0n
cmVkJz4iXTsKKworICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFj
ZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byByZWRDb2xvciA9
IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21w
b25lbnRzKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBf
dGhlbWVDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKIH0KIAogQGludGVyZmFjZSBX
S1dlYlZpZXdUaGVtZUNvbG9yT2JzZXJ2ZXIgOiBOU09iamVjdApAQCAtMTAyLDggKzE1OCwxMyBA
QCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9i
amVjdDooaWQpb2JqZWN0IGNoYW5nZTooTgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWNvbnRlbnQtY2hhbmdlIl0pIHsK
LSAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jb250ZW50LWNoYW5nZSI7CisgICAgaWYgKFtfc3Rh
dGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWNvbnRlbnQtY2hhbmdlLWludmFsaWQiXSkgewor
ICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNvbnRlbnQtY2hhbmdlLWludmFsaWQiOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVm
b3JlLWNvbnRlbnQtY2hhbmdlLXZhbGlkIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1j
b250ZW50LWNoYW5nZS12YWxpZCI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExNyw2
ICsxNzgsMjYgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtl
eVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE4KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAorICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1pbnZhbGlkLW1l
ZGlhLWFkZGVkIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1pbnZhbGlkLW1lZGlhLWFk
ZGVkIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxU
b1N0cmluZzpAImJlZm9yZS1tZWRpYS1jaGFuZ2VkLXZhbGlkIl0pIHsKKyAgICAgICAgX3N0YXRl
ID0gQCJhZnRlci1tZWRpYS1jaGFuZ2VkLXZhbGlkIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1tZWRpYS1zdGF0ZS1j
aGFuZ2VkIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1tZWRpYS1zdGF0ZS1jaGFuZ2Vk
IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0
cmluZzpAImJlZm9yZS1ub2RlLWluc2VydGVkIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRl
ci1ub2RlLWluc2VydGVkIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChbX3N0
YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1ub2RlLXJlbW92ZWQiXSkgewogICAgICAgICBf
c3RhdGUgPSBAImFmdGVyLW5vZGUtcmVtb3ZlZCI7CiAgICAgICAgIHJldHVybjsKQEAgLTE0Mywx
MCArMjI0LDE2IEBAIFRFU1QoSFRNTE1ldGFUaGVtZUNvbG9yLCBLVk8pCiAgICAgRVhQRUNUX05T
U1RSSU5HX0VRKCJhZnRlci1sb2FkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwogICAg
IEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3RoZW1lQ29sb3JdLkNH
Q29sb3IsIHJlZENvbG9yLmdldCgpKSk7CiAKLSAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0
YXRlOkAiYmVmb3JlLWNvbnRlbnQtY2hhbmdlIl07CisgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBz
ZXRTdGF0ZTpAImJlZm9yZS1jb250ZW50LWNoYW5nZS1pbnZhbGlkIl07CisgICAgW3dlYlZpZXcg
b2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21l
dGEnKS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnLCAnaW52YWxpZCcpIl07CisgICAgW3dlYlZpZXcg
d2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgi
YWZ0ZXItY29udGVudC1jaGFuZ2UtaW52YWxpZCIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVd
KTsKKyAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3RoZW1lQ29sb3JdKTsKKworICAgIFt0aGVt
ZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY29udGVudC1jaGFuZ2UtdmFsaWQiXTsK
ICAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignbWV0YScpLnNldEF0dHJpYnV0ZSgnY29udGVudCcsICdibHVlJykiXTsKICAg
ICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07Ci0gICAgRVhQRUNUX05T
U1RSSU5HX0VRKCJhZnRlci1jb250ZW50LWNoYW5nZSIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3Rh
dGVdKTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWNvbnRlbnQtY2hhbmdlLXZhbGlk
IiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwogICAgIEVYUEVDVF9UUlVFKENHQ29sb3JF
cXVhbFRvQ29sb3IoW3dlYlZpZXcgX3RoZW1lQ29sb3JdLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQo
KSkpOwogCiAgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1uYW1lLWNo
YW5nZS1ub3QtdGhlbWUtY29sb3IiXTsKQEAgLTE2MSw2ICsyNDgsMzAgQEAgVEVTVChIVE1MTWV0
YVRoZW1lQ29sb3IsIEtWTykKICAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLW5hbWUtY2hh
bmdlLXRoZW1lLWNvbG9yIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwogICAgIEVYUEVD
VF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3RoZW1lQ29sb3JdLkNHQ29sb3Is
IGJsdWVDb2xvci5nZXQoKSkpOwogCisgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpA
ImJlZm9yZS1pbnZhbGlkLW1lZGlhLWFkZGVkIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGEnKS5zZXRBdHRy
aWJ1dGUoJ21lZGlhJywgJ2ludmFsaWQnKSJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJl
c2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWludmFsaWQt
bWVkaWEtYWRkZWQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX1RS
VUUoIVt3ZWJWaWV3IF90aGVtZUNvbG9yXSk7CisKKyAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNl
dFN0YXRlOkAiYmVmb3JlLW1lZGlhLWNoYW5nZWQtdmFsaWQiXTsKKyAgICBbd2ViVmlldyBvYmpl
Y3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YScp
LnNldEF0dHJpYnV0ZSgnbWVkaWEnLCAnc2NyZWVuJykiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9y
TmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1t
ZWRpYS1jaGFuZ2VkLXZhbGlkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVY
UEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3RoZW1lQ29sb3JdLkNHQ29s
b3IsIGJsdWVDb2xvci5nZXQoKSkpOworCisgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0
ZTpAImJlZm9yZS1tZWRpYS1zdGF0ZS1jaGFuZ2VkIl07CisgICAgW3dlYlZpZXcgc2V0TWVkaWFU
eXBlOkAicHJpbnQiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0
ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1tZWRpYS1zdGF0ZS1jaGFuZ2VkIiwg
W3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKCFbd2ViVmlldyBf
dGhlbWVDb2xvcl0pOworCisgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9y
ZS1ub2RlLWluc2VydGVkIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGEnKS5pbnNlcnRBZGphY2VudEhUTUwo
J2JlZm9yZWJlZ2luJywgXCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVkJz5c
IikiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAg
RVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1ub2RlLWluc2VydGVkIiwgW3RoZW1lQ29sb3JPYnNl
cnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZp
ZXcgX3RoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKICAgICBbdGhlbWVD
b2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLW5vZGUtcmVtb3ZlZCJdOwogICAgIFt3ZWJW
aWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCdtZXRhJykucmVtb3ZlKCkiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlv
blVwZGF0ZV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426860</attachid>
            <date>2021-04-22 16:07:33 -0700</date>
            <delta_ts>2021-04-22 16:09:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224389-20210422170732.patch</filename>
            <type>text/plain</type>
            <size>17192</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjYTk0MWRiZTI1ZjE1Njc0NGIzMzRkOGQ5NmRjNTc0Y2FhNThjNTU3Li4w
ZWFlYWRiYjEyYTM1Y2U5YzhmOWRmN2YxMzVlMTk4NjBmMGIxOTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTUgQEAKKzIwMjEtMDQtMjIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIGBtZWRpYWAgYXR0cmlidXRlIG9uIGA8bWV0
YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iLi4uIj5gCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzODkKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzc0OTkxNjIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBXS1dlYlZpZXdUaGVtZUNvbG9yLk1ldGFFbGVtZW50VmFsaWROYW1lQW5k
Q29sb3JBbmRNZWRpYQorICAgICAgICAgICAgICAgV0tXZWJWaWV3VGhlbWVDb2xvci5NZXRhRWxl
bWVudEludmFsaWROYW1lCisgICAgICAgICAgICAgICBXS1dlYlZpZXdUaGVtZUNvbG9yLk1ldGFF
bGVtZW50SW52YWxpZENvbG9yCisgICAgICAgICAgICAgICBXS1dlYlZpZXdUaGVtZUNvbG9yLk1l
dGFFbGVtZW50SW52YWxpZE1lZGlhCisgICAgICAgICAgICAgICBXS1dlYlZpZXdUaGVtZUNvbG9y
Lk1ldGFFbGVtZW50TXVsdGlwbGVWYWxpZAorICAgICAgICAgICAgICAgV0tXZWJWaWV3VGhlbWVD
b2xvci5NZXRhRWxlbWVudFZhbGlkU3ViZnJhbWUKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1Ro
ZW1lQ29sb3IuS1ZPCisKKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC9IVE1MTWV0YUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU1lZGlhKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjptZWRpYU1hdGNoZXMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZXRhRWxlbWVudDo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWV0YUVsZW1lbnQ6OmNvbnRlbnRDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1ldGFFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZXRhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1ldGFFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZXRhRWxlbWVudDo6cHJvY2Vzcyk6CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIHJl
ZmxlY3RlZCBgbWVkaWFgIGF0dHJpYnV0ZS4gQ2FjaGUgdGhlIG1vc3QgcmVjZW50bHkgcGFyc2Vk
IGBtZWRpYWAgKHdoaWNoCisgICAgICAgIGJlY29tZXMgYSBgUmVmPE1lZGlhUXVlcnlTZXQ+YCkg
YW5kIGBjb250ZW50YCAod2hpY2ggY2FuIGJlY29tZSBhIGBDb2xvcmApIHRvIGF2b2lkIGRvaW5n
CisgICAgICAgIHJlcGVhdGVkIHdvcmsgd2hlbiBkZXRlcm1pbmluZyB0aGUgYWN0aXZlIHRoZW1l
IGNvbG9yIGFmdGVyIG1lZGlhIHN0YXRlIGNoYW5nZXMuIE5vdGlmeSB0aGUKKyAgICAgICAgYERv
Y3VtZW50YCB3aGVuZXZlciB0aGUgYG5hbWVgIG9yIGBjb250ZW50YCBvciBgbWVkaWFgIGF0dHJp
YnV0ZSBjaGFuZ2VzIGlmIHRoZSBuZXcgb3Igb2xkCisgICAgICAgIHZhbHVlIHdpbGwgYmUgb3Ig
d291bGQgaGF2ZSBiZWVuIHJlbGF0ZWQgdG8gY2FsY3VsYXRpbmcgdGhlIHRoZW1lIGNvbG9yLgor
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
dGhlbWVDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aGVtZUNvbG9yKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6bWV0YUVsZW1lbnRUaGVtZUNvbG9yQ2hhbmdlZCk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRldGVybWluZUFjdGl2ZVRoZW1lQ29sb3JN
ZXRhRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRoZW1lQ29s
b3JDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVFbGVtZW50c0Fm
ZmVjdGVkQnlNZWRpYVF1ZXJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nl
c3NNZXRhRWxlbWVudFRoZW1lQ29sb3IpOiBEZWxldGVkLgorICAgICAgICBNYWtlIGNhbGN1bGF0
aW5nIHRoZSB0aGVtZSBjb2xvciBpbnRvIGEgdHdvIHN0YWdlIHByb2Nlc3M6CisgICAgICAgICAx
LiBmaW5kIGFsbCBgPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiPmAgdGhhdCBoYXZlIGEgdmFsaWQg
Q1NTIGNvbG9yIGBjb250ZW50YCBpbiB0cmVlIG9yZGVyCisgICAgICAgICAyLiByZXR1cm4gdGhl
IGBIVE1MTWV0YUVsZW1lbnQ6OmNvbnRlbnRDb2xvcmAgb2YgdGhlIGZpcnN0IGl0ZW0gZnJvbSBz
dGVwIDEgdGhhdCBgSFRNTE1ldGFFbGVtZW50OjptZWRpYUF0dHJpYnV0ZU1hdGNoZXNgCisgICAg
ICAgIFRoaXMgaXMgZG9uZSBzbyB0aGF0IGBEb2N1bWVudDo6dXBkYXRlRWxlbWVudHNBZmZlY3Rl
ZEJ5TWVkaWFRdWVyaWVzYCBkb2Vzbid0IGhhdmUgdG8gcmVwZWF0CisgICAgICAgIHN0ZXAgMSBl
YWNoIHRpbWUgaXQncyBydW4gKHdoaWNoIGNhbiBiZSBvZnRlbikgYW5kIGluc3RlYWQgb25seSBu
ZWVkcyB0byBpdGVyYXRlIGEgKGxpa2VseQorICAgICAgICB2ZXJ5IHNtYWxsKSBsaXN0IGluIHN0
ZXAgMi4gVGhlIGFjdGlvbnMvc2l0dWF0aW9ucyBsaXN0ZWQgYWJvdmUgd291bGQgY2xlYXIgdGhl
IGNhY2hlZCBkYXRhCisgICAgICAgIGZyb20gYm90aCBzdGVwcywgbWVhbmluZyB0aGF0IHRoZSBu
ZXh0IGBEb2N1bWVudDo6dGhlbWVDb2xvcmAgd2lsbCBkbyBhIGZ1bGwgcmVjYWxjdWxhdGlvbi4K
KyAgICAgICAgTm90aWZ5IHRoZSBVSVByb2Nlc3Mgb2YgYSBjaGFuZ2UgaW4gdGhlbWUgY29sb3Ig
aWYgdGhlIHJlc3VsdCBvZiBzdGVwIDIgaXMgZGlmZmVyZW50IGZyb20gYQorICAgICAgICBwcmV2
aW91c2x5IGNhY2hlZCByZXN1bHQgKGlmIHNldCkuCisKIDIwMjEtMDQtMjIgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVy
dGluZyByMjcxNjQ0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNGU4YTc5NmUxY2IxZTg5
MWU5ZjIxMzI2N2VjZDY2NTc3OGVhYmVjNy4uZDU3MmUxMDZhNmJhYWI5NzNlN2IyNmRiOWRhYmVk
MTkyYzQ0ZTg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMDUsNiArMTA1LDcgQEAK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxNZXRhRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxQ
YXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MUGljdHVyZUVsZW1lbnQuaCIKQEAgLTk1OSw2
ICs5NjAsMjUgQEAgU3RyaW5nIERvY3VtZW50Ojpjb21wYXRNb2RlKCkgY29uc3QKICAgICByZXR1
cm4gaW5RdWlya3NNb2RlKCkgPyAiQmFja0NvbXBhdCIgOiAiQ1NTMUNvbXBhdCI7CiB9CiAKK2Nv
bnN0IENvbG9yJiBEb2N1bWVudDo6dGhlbWVDb2xvcihEb2N1bWVudDo6UmVjYWxjdWxhdGVUaGVt
ZUNvbG9yIHJlY2FsY3VsYXRlVGhlbWVDb2xvcikKK3sKKyAgICBpZiAocmVjYWxjdWxhdGVUaGVt
ZUNvbG9yICE9IFJlY2FsY3VsYXRlVGhlbWVDb2xvcjo6Tm8pIHsKKyAgICAgICAgaWYgKHJlY2Fs
Y3VsYXRlVGhlbWVDb2xvciA9PSBSZWNhbGN1bGF0ZVRoZW1lQ29sb3I6OlllcykKKyAgICAgICAg
ICAgIG1fY2FjaGVkVGhlbWVDb2xvciA9IENvbG9yKCk7CisKKyAgICAgICAgaWYgKCFtX2NhY2hl
ZFRoZW1lQ29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBpZiAoIW1fYWN0aXZlVGhlbWVD
b2xvck1ldGFFbGVtZW50KQorICAgICAgICAgICAgICAgIG1fYWN0aXZlVGhlbWVDb2xvck1ldGFF
bGVtZW50ID0gZGV0ZXJtaW5lQWN0aXZlVGhlbWVDb2xvck1ldGFFbGVtZW50KCk7CisgICAgICAg
ICAgICBpZiAobV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQpCisgICAgICAgICAgICAgICAg
bV9jYWNoZWRUaGVtZUNvbG9yID0gbV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQtPmNvbnRl
bnRDb2xvcigpOworCisgICAgICAgICAgICBpZiAoIW1fY2FjaGVkVGhlbWVDb2xvci5pc1ZhbGlk
KCkpCisgICAgICAgICAgICAgICAgbV9jYWNoZWRUaGVtZUNvbG9yID0gbV9hcHBsaWNhdGlvbk1h
bmlmZXN0VGhlbWVDb2xvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbV9jYWNoZWRU
aGVtZUNvbG9yOworfQorCiB2b2lkIERvY3VtZW50OjpyZXNldExpbmtDb2xvcigpCiB7CiAgICAg
bV9saW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlV2Via2l0
TGluaywgc3R5bGVDb2xvck9wdGlvbnMobnVsbHB0cikpOwpAQCAtMzg1NCwxNiArMzg3NCwzNSBA
QCB2b2lkIERvY3VtZW50Ojp1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpCiAgICAgfQogfQogCi12
b2lkIERvY3VtZW50Ojpwcm9jZXNzTWV0YUVsZW1lbnRUaGVtZUNvbG9yKGNvbnN0IFN0cmluZyYg
dGhlbWVDb2xvclN0cmluZykKK3ZvaWQgRG9jdW1lbnQ6Om1ldGFFbGVtZW50VGhlbWVDb2xvckNo
YW5nZWQoKQogewotICAgIGF1dG8gb2xkVGhlbWVDb2xvciA9IHRoZW1lQ29sb3IoKTsKLSAgICBt
X21ldGFFbGVtZW50VGhlbWVDb2xvciA9IENTU1BhcnNlcjo6cGFyc2VDb2xvcih0aGVtZUNvbG9y
U3RyaW5nKTsKLSAgICBpZiAodGhlbWVDb2xvcigpID09IG9sZFRoZW1lQ29sb3IpCisgICAgYXV0
byBvbGRUaGVtZUNvbG9yID0gdGhlbWVDb2xvcihSZWNhbGN1bGF0ZVRoZW1lQ29sb3I6Ok5vKTsK
KyAgICBtX21ldGFUaGVtZUNvbG9yRWxlbWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9hY3Rp
dmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQgPSBudWxscHRyOworICAgIGlmICh0aGVtZUNvbG9yKFJl
Y2FsY3VsYXRlVGhlbWVDb2xvcjo6WWVzKSA9PSBvbGRUaGVtZUNvbG9yKQogICAgICAgICByZXR1
cm47CiAKICAgICB0aGVtZUNvbG9yQ2hhbmdlZCgpOwogfQogCitXZWFrUHRyPEhUTUxNZXRhRWxl
bWVudD4gRG9jdW1lbnQ6OmRldGVybWluZUFjdGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudCgpCit7
CisgICAgaWYgKCFtX21ldGFUaGVtZUNvbG9yRWxlbWVudHMpIHsKKyAgICAgICAgVmVjdG9yPFdl
YWtQdHI8SFRNTE1ldGFFbGVtZW50Pj4gbWV0YVRoZW1lQ29sb3JFbGVtZW50czsKKyAgICAgICAg
Zm9yIChhdXRvJiBtZXRhRWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxNZXRhRWxlbWVu
dD4oKnRoaXMpKSB7CisgICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWV0YUVsZW1lbnQubmFtZSgpLCAidGhlbWUtY29sb3IiKSAmJiBtZXRhRWxlbWVudC5jb250
ZW50Q29sb3IoKS5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgbWV0YVRoZW1lQ29sb3JFbGVt
ZW50cy5hcHBlbmQobWFrZVdlYWtQdHIobWV0YUVsZW1lbnQpKTsKKyAgICAgICAgfQorICAgICAg
ICBtX21ldGFUaGVtZUNvbG9yRWxlbWVudHMgPSBXVEZNb3ZlKG1ldGFUaGVtZUNvbG9yRWxlbWVu
dHMpOworICAgIH0KKworICAgIGZvciAoYXV0byYgbWV0YUVsZW1lbnQgOiAqbV9tZXRhVGhlbWVD
b2xvckVsZW1lbnRzKSB7CisgICAgICAgIGlmIChtZXRhRWxlbWVudCAmJiBtZXRhRWxlbWVudC0+
Y29udGVudENvbG9yKCkuaXNWYWxpZCgpICYmIG1ldGFFbGVtZW50LT5tZWRpYUF0dHJpYnV0ZU1h
dGNoZXMoKSkKKyAgICAgICAgICAgIHJldHVybiBtZXRhRWxlbWVudDsKKyAgICB9CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkKCkKIHsK
ICAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSh7IH0pOwpAQCAtMzk4Nyw5ICs0MDI2LDkgQEAg
dm9pZCBEb2N1bWVudDo6cHJvY2Vzc1JlZmVycmVyUG9saWN5KGNvbnN0IFN0cmluZyYgcG9saWN5
LCBSZWZlcnJlclBvbGljeVNvdXJjZQogCiB2b2lkIERvY3VtZW50Ojpwcm9jZXNzQXBwbGljYXRp
b25NYW5pZmVzdChjb25zdCBBcHBsaWNhdGlvbk1hbmlmZXN0JiBhcHBsaWNhdGlvbk1hbmlmZXN0
KQogewotICAgIGF1dG8gb2xkVGhlbWVDb2xvciA9IHRoZW1lQ29sb3IoKTsKKyAgICBhdXRvIG9s
ZFRoZW1lQ29sb3IgPSB0aGVtZUNvbG9yKFJlY2FsY3VsYXRlVGhlbWVDb2xvcjo6Tm8pOwogICAg
IG1fYXBwbGljYXRpb25NYW5pZmVzdFRoZW1lQ29sb3IgPSBhcHBsaWNhdGlvbk1hbmlmZXN0LnRo
ZW1lQ29sb3I7Ci0gICAgaWYgKHRoZW1lQ29sb3IoKSA9PSBvbGRUaGVtZUNvbG9yKQorICAgIGlm
ICh0aGVtZUNvbG9yKFJlY2FsY3VsYXRlVGhlbWVDb2xvcjo6WWVzKSA9PSBvbGRUaGVtZUNvbG9y
KQogICAgICAgICByZXR1cm47CiAKICAgICB0aGVtZUNvbG9yQ2hhbmdlZCgpOwpAQCAtNDE3Myw2
ICs0MjEyLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUVsZW1lbnRzQWZmZWN0ZWRCeU1lZGlh
UXVlcmllcygpCiB7CiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2Ny
aXB0RGlzYWxsb3dlZFNjb3BlOwogCisgICAgaWYgKGF1dG8gYWN0aXZlVGhlbWVDb2xvckVsZW1l
bnQgPSBkZXRlcm1pbmVBY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQoKTsgbV9hY3RpdmVUaGVt
ZUNvbG9yTWV0YUVsZW1lbnQgIT0gYWN0aXZlVGhlbWVDb2xvckVsZW1lbnQpIHsKKyAgICAgICAg
YXV0byBvbGRUaGVtZUNvbG9yID0gdGhlbWVDb2xvcihSZWNhbGN1bGF0ZVRoZW1lQ29sb3I6Ok5v
KTsKKyAgICAgICAgbV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQgPSBXVEZNb3ZlKGFjdGl2
ZVRoZW1lQ29sb3JFbGVtZW50KTsKKyAgICAgICAgaWYgKHRoZW1lQ29sb3IoUmVjYWxjdWxhdGVU
aGVtZUNvbG9yOjpZZXMpICE9IG9sZFRoZW1lQ29sb3IpCisgICAgICAgICAgICB0aGVtZUNvbG9y
Q2hhbmdlZCgpOworICAgIH0KKwogICAgIC8vIEZJWE1FOiBjb3B5VG9WZWN0b3IgZG9lc24ndCB3
b3JrIHdpdGggV2Vha0hhc2hTZXQKICAgICBWZWN0b3I8UmVmPEhUTUxJbWFnZUVsZW1lbnQ+PiBp
bWFnZXM7CiAgICAgaW1hZ2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9keW5hbWljTWVkaWFR
dWVyeURlcGVuZGVudEltYWdlcy5jb21wdXRlU2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggZTI1N2VhZDNjOTQ1MWZmM2ZhOTIwMDc4Mzg0ZTU5YWUyYWM1ZGM4OC4uMTk1MDNjMzVhN2E2
YzE2MDI4MjdkMDcxNDhlMmVmNzVlMGU4NzQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1
OCw2ICsxNTgsNyBAQCBjbGFzcyBIVE1MSUZyYW1lRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVs
ZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Citj
bGFzcyBIVE1MTWV0YUVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSGln
aGxpZ2h0UmVnaXN0ZXI7CiBjbGFzcyBIaXRUZXN0TG9jYXRpb247CkBAIC03NDEsNyArNzQyLDgg
QEAgcHVibGljOgogICAgIFNlY29uZHMgdGltZVNpbmNlRG9jdW1lbnRDcmVhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9kb2N1bWVudENyZWF0aW9uVGltZTsg
fTsKICNlbmRpZgogCi0gICAgY29uc3QgQ29sb3ImIHRoZW1lQ29sb3IoKSBjb25zdCB7IHJldHVy
biBtX21ldGFFbGVtZW50VGhlbWVDb2xvci5pc1ZhbGlkKCkgPyBtX21ldGFFbGVtZW50VGhlbWVD
b2xvciA6IG1fYXBwbGljYXRpb25NYW5pZmVzdFRoZW1lQ29sb3I7IH0KKyAgICBlbnVtIGNsYXNz
IFJlY2FsY3VsYXRlVGhlbWVDb2xvciA6IHVpbnQ4X3QgeyBObywgSWZOZWVkZWQsIFllcyB9Owor
ICAgIGNvbnN0IENvbG9yJiB0aGVtZUNvbG9yKFJlY2FsY3VsYXRlVGhlbWVDb2xvciA9IFJlY2Fs
Y3VsYXRlVGhlbWVDb2xvcjo6SWZOZWVkZWQpOwogCiAgICAgdm9pZCBzZXRUZXh0Q29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKSB7IG1fdGV4dENvbG9yID0gY29sb3I7IH0KICAgICBjb25zdCBDb2xv
ciYgdGV4dENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q29sb3I7IH0KQEAgLTkxMCw3ICs5
MTIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm9jZXNzRGlzYWJsZWRBZGFwdGF0aW9ucyhjb25z
dCBTdHJpbmcmIGFkYXB0YXRpb25zKTsKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0QXJndW1lbnRz
KCk7CiAgICAgdm9pZCBwcm9jZXNzUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3ks
IFJlZmVycmVyUG9saWN5U291cmNlKTsKLSAgICB2b2lkIHByb2Nlc3NNZXRhRWxlbWVudFRoZW1l
Q29sb3IoY29uc3QgU3RyaW5nJiB0aGVtZUNvbG9yKTsKKworICAgIHZvaWQgbWV0YUVsZW1lbnRU
aGVtZUNvbG9yQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCiAgICAgdm9p
ZCBwcm9jZXNzQ29sb3JTY2hlbWUoY29uc3QgU3RyaW5nJiBjb2xvclNjaGVtZSk7CkBAIC0xNjc1
LDYgKzE2NzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVGl0bGUoY29uc3QgU3RyaW5n
V2l0aERpcmVjdGlvbiYpOwogICAgIHZvaWQgdXBkYXRlQmFzZVVSTCgpOwogCisgICAgV2Vha1B0
cjxIVE1MTWV0YUVsZW1lbnQ+IGRldGVybWluZUFjdGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudCgp
OwogICAgIHZvaWQgdGhlbWVDb2xvckNoYW5nZWQoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZUFj
Y2Vzc0tleUNhY2hlU2xvd0Nhc2UoKTsKQEAgLTE3OTcsNyArMTgwMSw5IEBAIHByaXZhdGU6CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybUNvbnRyb2xsZXI+IG1fZm9ybUNvbnRyb2xsZXI7CiAK
LSAgICBDb2xvciBtX21ldGFFbGVtZW50VGhlbWVDb2xvcjsKKyAgICBDb2xvciBtX2NhY2hlZFRo
ZW1lQ29sb3I7CisgICAgT3B0aW9uYWw8VmVjdG9yPFdlYWtQdHI8SFRNTE1ldGFFbGVtZW50Pj4+
IG1fbWV0YVRoZW1lQ29sb3JFbGVtZW50czsKKyAgICBXZWFrUHRyPEhUTUxNZXRhRWxlbWVudD4g
bV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQ7CiAgICAgQ29sb3IgbV9hcHBsaWNhdGlvbk1h
bmlmZXN0VGhlbWVDb2xvcjsKIAogICAgIENvbG9yIG1fdGV4dENvbG9yIHsgQ29sb3I6OmJsYWNr
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKaW5kZXggYzg5Y2Y4NTU3
ZjYzNWQ2MDg1OTI3MjJhMWE3NjM0ZTM2Nzg3MDE1Yi4uMWNkZWJkN2NiZjY4YmIyMDRmNTA3OWU1
YzEyZmRiYzUzNjZlZjgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNw
cApAQCAtMjQsMTEgKzI0LDE4IEBACiAjaW5jbHVkZSAiSFRNTE1ldGFFbGVtZW50LmgiCiAKICNp
bmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRv
ci5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJzZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU3R5bGVSZXNvbHZlRm9yRG9j
dW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDI0ICs1OSw5OSBA
QCBSZWY8SFRNTE1ldGFFbGVtZW50PiBIVE1MTWV0YUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxN
ZXRhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCitzdGF0aWMgUmVmPE1lZGlhUXVl
cnlTZXQ+IHBhcnNlTWVkaWEoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZywgY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWFT
dHJpbmcuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQo
ZG9jdW1lbnQpKTsKK30KKworc3RhdGljIGJvb2wgbWVkaWFNYXRjaGVzKGNvbnN0IE1lZGlhUXVl
cnlTZXQmIG1lZGlhLCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgT3B0aW9uYWw8
UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5bGU7CisgICAgaWYgKGRvY3VtZW50Lmhhc0xpdmluZ1Jl
bmRlclRyZWUoKSkKKyAgICAgICAgZG9jdW1lbnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9yRG9j
dW1lbnQoZG9jdW1lbnQpOworCisgICAgU3RyaW5nIG1lZGlhVHlwZTsKKyAgICBpZiAoYXV0byog
ZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBmcmFtZVZpZXcg
PSBmcmFtZS0+dmlldygpKQorICAgICAgICAgICAgbWVkaWFUeXBlID0gZnJhbWVWaWV3LT5tZWRp
YVR5cGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvcihtZWRpYVR5
cGUsIGRvY3VtZW50LCBkb2N1bWVudFN0eWxlID8gJipkb2N1bWVudFN0eWxlIDogbnVsbHB0ciku
ZXZhbHVhdGUobWVkaWEpOworfQorCitib29sIEhUTUxNZXRhRWxlbWVudDo6bWVkaWFBdHRyaWJ1
dGVNYXRjaGVzKCkKK3sKKyAgICBpZiAoIW1fbWVkaWEpCisgICAgICAgIG1fbWVkaWEgPSBwYXJz
ZU1lZGlhKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWVkaWFBdHRyKSwgZG9jdW1l
bnQoKSk7CisgICAgcmV0dXJuIG1lZGlhTWF0Y2hlcygqbV9tZWRpYSwgZG9jdW1lbnQoKSk7Cit9
CisKK2NvbnN0IENvbG9yJiBIVE1MTWV0YUVsZW1lbnQ6OmNvbnRlbnRDb2xvcigpCit7CisgICAg
aWYgKCFtX2NvbnRlbnRDb2xvcikKKyAgICAgICAgbV9jb250ZW50Q29sb3IgPSBDU1NQYXJzZXI6
OnBhcnNlQ29sb3IoY29udGVudCgpKTsKKyAgICByZXR1cm4gKm1fY29udGVudENvbG9yOworfQor
CiB2b2lkIEhUTUxNZXRhRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYg
bmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiByZWFzb24pCiB7CisgICAgYm9v
bCB3YXNWYWxpZE1lZGlhID0gbV9tZWRpYSAmJiBtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKTsKKyAg
ICBib29sIHdhc1ZhbGlkQ29sb3IgPSBtX2NvbnRlbnRDb2xvciAmJiBjb250ZW50Q29sb3IoKS5p
c1ZhbGlkKCk7CisKICAgICBIVE1MRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChuYW1lLCBvbGRW
YWx1ZSwgbmV3VmFsdWUsIHJlYXNvbik7CiAKLSAgICBpZiAobmFtZSA9PSBuYW1lQXR0ciAmJiBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShvbGRWYWx1ZSwgInRoZW1lLWNvbG9yIikgJiYg
IWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5ld1ZhbHVlLCAidGhlbWUtY29sb3IiKSkK
LSAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzTWV0YUVsZW1lbnRUaGVtZUNvbG9yKGVtcHR5U3Ry
aW5nKCkpOworICAgIC8vIENoYW5naW5nIGEgbWV0YSB0YWcgd2hpbGUgaXQncyBub3QgaW4gdGhl
IHRyZWUgc2hvdWxkbid0IGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgZG9jdW1lbnQuCisgICAgaWYg
KCFpc0Nvbm5lY3RlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBbiBhdHRyaWJ1dGUg
YmVpbmcgYWRkZWQgKGkuZS4gaWYgdGhlIGBtZWRpYWAgYXR0cmlidXRlIGRpZG4ndCBleGlzdCkg
aXMgaGFuZGxlZCBieSBgcHJvY2VzcygpYC4KKyAgICBpZiAoIXdhc1ZhbGlkTWVkaWEgfHwgIXdh
c1ZhbGlkQ29sb3IpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuYW1lID09IG5hbWVBdHRy
KSB7CisgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShvbGRWYWx1ZSwg
InRoZW1lLWNvbG9yIikgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5ld1ZhbHVl
LCAidGhlbWUtY29sb3IiKSkKKyAgICAgICAgICAgIGRvY3VtZW50KCkubWV0YUVsZW1lbnRUaGVt
ZUNvbG9yQ2hhbmdlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG5hbWUg
PT0gY29udGVudEF0dHIpIHsKKyAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHRoaXMtPm5hbWUoKSwgInRoZW1lLWNvbG9yIikgJiYgIWNvbnRlbnRDb2xvcigpLmlzVmFs
aWQoKSkKKyAgICAgICAgICAgIGRvY3VtZW50KCkubWV0YUVsZW1lbnRUaGVtZUNvbG9yQ2hhbmdl
ZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG5hbWUgPT0gbWVkaWFBdHRy
KSB7CisgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0aGlzLT5uYW1l
KCksICJ0aGVtZS1jb2xvciIpICYmICFtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKSkKKyAgICAgICAg
ICAgIGRvY3VtZW50KCkubWV0YUVsZW1lbnRUaGVtZUNvbG9yQ2hhbmdlZCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogfQogCiB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7Ci0g
ICAgaWYgKG5hbWUgPT0gaHR0cF9lcXVpdkF0dHIpCisgICAgaWYgKG5hbWUgPT0gbmFtZUF0dHIp
IHsKICAgICAgICAgcHJvY2VzcygpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gY29udGVudEF0dHIp
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobmFtZSA9PSBjb250ZW50QXR0cikg
eworICAgICAgICBtX2NvbnRlbnRDb2xvciA9IFdURjo6bnVsbG9wdDsKICAgICAgICAgcHJvY2Vz
cygpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gbmFtZUF0dHIpCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAobmFtZSA9PSBodHRwX2VxdWl2QXR0cikgewogICAgICAgICBwcm9jZXNz
KCk7Ci0gICAgZWxzZQotICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwg
dmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG5hbWUgPT0gbWVkaWFB
dHRyKSB7CisgICAgICAgIG1fbWVkaWEgPSBudWxscHRyOworICAgICAgICBwcm9jZXNzKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogfQogCiBOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBIVE1M
TWV0YUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9u
VHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCkBAIC04OSw4ICsxNzEs
MTAgQEAgdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5
cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUKIHsKICAgICBIVE1MRWxlbWVudDo6cmVtb3Zl
ZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7CiAKLSAg
ICBpZiAoIWlzQ29ubmVjdGVkKCkgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSgpLCAidGhlbWUtY29sb3IiKSkKLSAgICAgICAgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5kb2N1
bWVudCgpLnByb2Nlc3NNZXRhRWxlbWVudFRoZW1lQ29sb3IoZW1wdHlTdHJpbmcoKSk7CisgICAg
YXV0byYgb2xkRG9jdW1lbnQgPSBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLmRvY3VtZW50KCk7CisK
KyAgICBpZiAoIWlzQ29ubmVjdGVkKCkgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bmFtZSgpLCAidGhlbWUtY29sb3IiKSAmJiBjb250ZW50Q29sb3IoKS5pc1ZhbGlkKCkgJiYgbWVk
aWFNYXRjaGVzKG1fbWVkaWEgPyAqbV9tZWRpYSA6IHBhcnNlTWVkaWEoYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihtZWRpYUF0dHIpLCBvbGREb2N1bWVudCkuZ2V0KCksIG9sZERvY3Vt
ZW50KSkKKyAgICAgICAgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5kb2N1bWVudCgpLm1ldGFFbGVt
ZW50VGhlbWVDb2xvckNoYW5nZWQoKTsKIH0KIAogdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnByb2Nl
c3MoKQpAQCAtMTExLDggKzE5NSwxMCBAQCB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cHJvY2Vzcygp
CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSgpLCAiY29s
b3Itc2NoZW1lIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSgpLCAic3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMiKSkKICAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzQ29sb3JT
Y2hlbWUoY29udGVudFZhbHVlKTsKICNlbmRpZgotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG5hbWUoKSwgInRoZW1lLWNvbG9yIikpCi0gICAgICAgIGRvY3VtZW50
KCkucHJvY2Vzc01ldGFFbGVtZW50VGhlbWVDb2xvcihjb250ZW50VmFsdWUpOworICAgIGVsc2Ug
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUoKSwgInRoZW1lLWNvbG9yIikp
IHsKKyAgICAgICAgaWYgKGNvbnRlbnRDb2xvcigpLmlzVmFsaWQoKSAmJiBtZWRpYUF0dHJpYnV0
ZU1hdGNoZXMoKSkKKyAgICAgICAgICAgIGRvY3VtZW50KCkubWV0YUVsZW1lbnRUaGVtZUNvbG9y
Q2hhbmdlZCgpOworICAgIH0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUoKSwgImZvcm1hdC1kZXRlY3Rpb24i
KSkKICAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzRm9ybWF0RGV0ZWN0aW9uKGNvbnRlbnRWYWx1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaAppbmRleCAzMzUwZjFlODM0Zjhl
OTY4OWNmOTdhZWJlODdkNDJlNTkyYWZhYTRiLi5mNTk5MzkzZTgxZDM5ODMxZjRlZTllY2IyODQ2
MmVjYjJiOWQ0ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmgKQEAgLTI2
LDYgKzI2LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb2xvcjsKK2NsYXNz
IE1lZGlhUXVlcnlTZXQ7CisKIGNsYXNzIEhUTUxNZXRhRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChIVE1MTWV0YUVsZW1lbnQp
OwogcHVibGljOgpAQCAtMzYsNiArMzksMTAgQEAgcHVibGljOgogICAgIGNvbnN0IEF0b21TdHJp
bmcmIGh0dHBFcXVpdigpIGNvbnN0OwogICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUoKSBjb25z
dDsKIAorICAgIGJvb2wgbWVkaWFBdHRyaWJ1dGVNYXRjaGVzKCk7CisKKyAgICBjb25zdCBDb2xv
ciYgY29udGVudENvbG9yKCk7CisKIHByaXZhdGU6CiAgICAgSFRNTE1ldGFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCkBAIC00Niw2ICs1MywxMCBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9k
ZSYpIGZpbmFsOwogCiAgICAgdm9pZCBwcm9jZXNzKCk7CisKKyAgICBSZWZQdHI8TWVkaWFRdWVy
eVNldD4gbV9tZWRpYTsKKworICAgIE9wdGlvbmFsPENvbG9yPiBtX2NvbnRlbnRDb2xvcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVt
ZW50LmlkbAppbmRleCA3MmU3ODBhODc2MGJhM2MxZDJjYTI3NjRjZWRjNDEyYjA2ODM5YjNlLi5j
NDk0YzdhMWQ3NTA3N2VhZDVhNDIxNDM5OTE4ZWY5ZjA5MmZkMmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0YUVsZW1lbnQuaWRsCkBAIC0yMiw2ICsyMiw3IEBACiBdIGludGVyZmFjZSBI
VE1MTWV0YUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRl
ZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBjb250ZW50OwogICAgIFtDRVJlYWN0aW9u
cz1Ob3ROZWVkZWQsIFJlZmxlY3Q9aHR0cF9lcXVpdl0gYXR0cmlidXRlIERPTVN0cmluZyBodHRw
RXF1aXY7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERP
TVN0cmluZyBtZWRpYTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVj
dF0gYXR0cmlidXRlIERPTVN0cmluZyBzY2hlbWU7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426861</attachid>
            <date>2021-04-22 16:09:52 -0700</date>
            <delta_ts>2021-04-28 19:06:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224389-20210422170951.patch</filename>
            <type>text/plain</type>
            <size>28438</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjYTk0MWRiZTI1ZjE1Njc0NGIzMzRkOGQ5NmRjNTc0Y2FhNThjNTU3Li4w
ZWFlYWRiYjEyYTM1Y2U5YzhmOWRmN2YxMzVlMTk4NjBmMGIxOTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTUgQEAKKzIwMjEtMDQtMjIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIGBtZWRpYWAgYXR0cmlidXRlIG9uIGA8bWV0
YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iLi4uIj5gCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzODkKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzc0OTkxNjIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBXS1dlYlZpZXdUaGVtZUNvbG9yLk1ldGFFbGVtZW50VmFsaWROYW1lQW5k
Q29sb3JBbmRNZWRpYQorICAgICAgICAgICAgICAgV0tXZWJWaWV3VGhlbWVDb2xvci5NZXRhRWxl
bWVudEludmFsaWROYW1lCisgICAgICAgICAgICAgICBXS1dlYlZpZXdUaGVtZUNvbG9yLk1ldGFF
bGVtZW50SW52YWxpZENvbG9yCisgICAgICAgICAgICAgICBXS1dlYlZpZXdUaGVtZUNvbG9yLk1l
dGFFbGVtZW50SW52YWxpZE1lZGlhCisgICAgICAgICAgICAgICBXS1dlYlZpZXdUaGVtZUNvbG9y
Lk1ldGFFbGVtZW50TXVsdGlwbGVWYWxpZAorICAgICAgICAgICAgICAgV0tXZWJWaWV3VGhlbWVD
b2xvci5NZXRhRWxlbWVudFZhbGlkU3ViZnJhbWUKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1Ro
ZW1lQ29sb3IuS1ZPCisKKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC9IVE1MTWV0YUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU1lZGlhKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjptZWRpYU1hdGNoZXMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZXRhRWxlbWVudDo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWV0YUVsZW1lbnQ6OmNvbnRlbnRDb2xvcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1ldGFFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZXRhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1ldGFFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZXRhRWxlbWVudDo6cHJvY2Vzcyk6CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIHJl
ZmxlY3RlZCBgbWVkaWFgIGF0dHJpYnV0ZS4gQ2FjaGUgdGhlIG1vc3QgcmVjZW50bHkgcGFyc2Vk
IGBtZWRpYWAgKHdoaWNoCisgICAgICAgIGJlY29tZXMgYSBgUmVmPE1lZGlhUXVlcnlTZXQ+YCkg
YW5kIGBjb250ZW50YCAod2hpY2ggY2FuIGJlY29tZSBhIGBDb2xvcmApIHRvIGF2b2lkIGRvaW5n
CisgICAgICAgIHJlcGVhdGVkIHdvcmsgd2hlbiBkZXRlcm1pbmluZyB0aGUgYWN0aXZlIHRoZW1l
IGNvbG9yIGFmdGVyIG1lZGlhIHN0YXRlIGNoYW5nZXMuIE5vdGlmeSB0aGUKKyAgICAgICAgYERv
Y3VtZW50YCB3aGVuZXZlciB0aGUgYG5hbWVgIG9yIGBjb250ZW50YCBvciBgbWVkaWFgIGF0dHJp
YnV0ZSBjaGFuZ2VzIGlmIHRoZSBuZXcgb3Igb2xkCisgICAgICAgIHZhbHVlIHdpbGwgYmUgb3Ig
d291bGQgaGF2ZSBiZWVuIHJlbGF0ZWQgdG8gY2FsY3VsYXRpbmcgdGhlIHRoZW1lIGNvbG9yLgor
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
dGhlbWVDb2xvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aGVtZUNvbG9yKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6bWV0YUVsZW1lbnRUaGVtZUNvbG9yQ2hhbmdlZCk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRldGVybWluZUFjdGl2ZVRoZW1lQ29sb3JN
ZXRhRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRoZW1lQ29s
b3JDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVFbGVtZW50c0Fm
ZmVjdGVkQnlNZWRpYVF1ZXJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nl
c3NNZXRhRWxlbWVudFRoZW1lQ29sb3IpOiBEZWxldGVkLgorICAgICAgICBNYWtlIGNhbGN1bGF0
aW5nIHRoZSB0aGVtZSBjb2xvciBpbnRvIGEgdHdvIHN0YWdlIHByb2Nlc3M6CisgICAgICAgICAx
LiBmaW5kIGFsbCBgPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiPmAgdGhhdCBoYXZlIGEgdmFsaWQg
Q1NTIGNvbG9yIGBjb250ZW50YCBpbiB0cmVlIG9yZGVyCisgICAgICAgICAyLiByZXR1cm4gdGhl
IGBIVE1MTWV0YUVsZW1lbnQ6OmNvbnRlbnRDb2xvcmAgb2YgdGhlIGZpcnN0IGl0ZW0gZnJvbSBz
dGVwIDEgdGhhdCBgSFRNTE1ldGFFbGVtZW50OjptZWRpYUF0dHJpYnV0ZU1hdGNoZXNgCisgICAg
ICAgIFRoaXMgaXMgZG9uZSBzbyB0aGF0IGBEb2N1bWVudDo6dXBkYXRlRWxlbWVudHNBZmZlY3Rl
ZEJ5TWVkaWFRdWVyaWVzYCBkb2Vzbid0IGhhdmUgdG8gcmVwZWF0CisgICAgICAgIHN0ZXAgMSBl
YWNoIHRpbWUgaXQncyBydW4gKHdoaWNoIGNhbiBiZSBvZnRlbikgYW5kIGluc3RlYWQgb25seSBu
ZWVkcyB0byBpdGVyYXRlIGEgKGxpa2VseQorICAgICAgICB2ZXJ5IHNtYWxsKSBsaXN0IGluIHN0
ZXAgMi4gVGhlIGFjdGlvbnMvc2l0dWF0aW9ucyBsaXN0ZWQgYWJvdmUgd291bGQgY2xlYXIgdGhl
IGNhY2hlZCBkYXRhCisgICAgICAgIGZyb20gYm90aCBzdGVwcywgbWVhbmluZyB0aGF0IHRoZSBu
ZXh0IGBEb2N1bWVudDo6dGhlbWVDb2xvcmAgd2lsbCBkbyBhIGZ1bGwgcmVjYWxjdWxhdGlvbi4K
KyAgICAgICAgTm90aWZ5IHRoZSBVSVByb2Nlc3Mgb2YgYSBjaGFuZ2UgaW4gdGhlbWUgY29sb3Ig
aWYgdGhlIHJlc3VsdCBvZiBzdGVwIDIgaXMgZGlmZmVyZW50IGZyb20gYQorICAgICAgICBwcmV2
aW91c2x5IGNhY2hlZCByZXN1bHQgKGlmIHNldCkuCisKIDIwMjEtMDQtMjIgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVy
dGluZyByMjcxNjQ0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNGU4YTc5NmUxY2IxZTg5
MWU5ZjIxMzI2N2VjZDY2NTc3OGVhYmVjNy4uZDU3MmUxMDZhNmJhYWI5NzNlN2IyNmRiOWRhYmVk
MTkyYzQ0ZTg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMDUsNiArMTA1LDcgQEAK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxNZXRhRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxQ
YXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MUGljdHVyZUVsZW1lbnQuaCIKQEAgLTk1OSw2
ICs5NjAsMjUgQEAgU3RyaW5nIERvY3VtZW50Ojpjb21wYXRNb2RlKCkgY29uc3QKICAgICByZXR1
cm4gaW5RdWlya3NNb2RlKCkgPyAiQmFja0NvbXBhdCIgOiAiQ1NTMUNvbXBhdCI7CiB9CiAKK2Nv
bnN0IENvbG9yJiBEb2N1bWVudDo6dGhlbWVDb2xvcihEb2N1bWVudDo6UmVjYWxjdWxhdGVUaGVt
ZUNvbG9yIHJlY2FsY3VsYXRlVGhlbWVDb2xvcikKK3sKKyAgICBpZiAocmVjYWxjdWxhdGVUaGVt
ZUNvbG9yICE9IFJlY2FsY3VsYXRlVGhlbWVDb2xvcjo6Tm8pIHsKKyAgICAgICAgaWYgKHJlY2Fs
Y3VsYXRlVGhlbWVDb2xvciA9PSBSZWNhbGN1bGF0ZVRoZW1lQ29sb3I6OlllcykKKyAgICAgICAg
ICAgIG1fY2FjaGVkVGhlbWVDb2xvciA9IENvbG9yKCk7CisKKyAgICAgICAgaWYgKCFtX2NhY2hl
ZFRoZW1lQ29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBpZiAoIW1fYWN0aXZlVGhlbWVD
b2xvck1ldGFFbGVtZW50KQorICAgICAgICAgICAgICAgIG1fYWN0aXZlVGhlbWVDb2xvck1ldGFF
bGVtZW50ID0gZGV0ZXJtaW5lQWN0aXZlVGhlbWVDb2xvck1ldGFFbGVtZW50KCk7CisgICAgICAg
ICAgICBpZiAobV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQpCisgICAgICAgICAgICAgICAg
bV9jYWNoZWRUaGVtZUNvbG9yID0gbV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQtPmNvbnRl
bnRDb2xvcigpOworCisgICAgICAgICAgICBpZiAoIW1fY2FjaGVkVGhlbWVDb2xvci5pc1ZhbGlk
KCkpCisgICAgICAgICAgICAgICAgbV9jYWNoZWRUaGVtZUNvbG9yID0gbV9hcHBsaWNhdGlvbk1h
bmlmZXN0VGhlbWVDb2xvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbV9jYWNoZWRU
aGVtZUNvbG9yOworfQorCiB2b2lkIERvY3VtZW50OjpyZXNldExpbmtDb2xvcigpCiB7CiAgICAg
bV9saW5rQ29sb3IgPSBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlV2Via2l0
TGluaywgc3R5bGVDb2xvck9wdGlvbnMobnVsbHB0cikpOwpAQCAtMzg1NCwxNiArMzg3NCwzNSBA
QCB2b2lkIERvY3VtZW50Ojp1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpCiAgICAgfQogfQogCi12
b2lkIERvY3VtZW50Ojpwcm9jZXNzTWV0YUVsZW1lbnRUaGVtZUNvbG9yKGNvbnN0IFN0cmluZyYg
dGhlbWVDb2xvclN0cmluZykKK3ZvaWQgRG9jdW1lbnQ6Om1ldGFFbGVtZW50VGhlbWVDb2xvckNo
YW5nZWQoKQogewotICAgIGF1dG8gb2xkVGhlbWVDb2xvciA9IHRoZW1lQ29sb3IoKTsKLSAgICBt
X21ldGFFbGVtZW50VGhlbWVDb2xvciA9IENTU1BhcnNlcjo6cGFyc2VDb2xvcih0aGVtZUNvbG9y
U3RyaW5nKTsKLSAgICBpZiAodGhlbWVDb2xvcigpID09IG9sZFRoZW1lQ29sb3IpCisgICAgYXV0
byBvbGRUaGVtZUNvbG9yID0gdGhlbWVDb2xvcihSZWNhbGN1bGF0ZVRoZW1lQ29sb3I6Ok5vKTsK
KyAgICBtX21ldGFUaGVtZUNvbG9yRWxlbWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9hY3Rp
dmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQgPSBudWxscHRyOworICAgIGlmICh0aGVtZUNvbG9yKFJl
Y2FsY3VsYXRlVGhlbWVDb2xvcjo6WWVzKSA9PSBvbGRUaGVtZUNvbG9yKQogICAgICAgICByZXR1
cm47CiAKICAgICB0aGVtZUNvbG9yQ2hhbmdlZCgpOwogfQogCitXZWFrUHRyPEhUTUxNZXRhRWxl
bWVudD4gRG9jdW1lbnQ6OmRldGVybWluZUFjdGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudCgpCit7
CisgICAgaWYgKCFtX21ldGFUaGVtZUNvbG9yRWxlbWVudHMpIHsKKyAgICAgICAgVmVjdG9yPFdl
YWtQdHI8SFRNTE1ldGFFbGVtZW50Pj4gbWV0YVRoZW1lQ29sb3JFbGVtZW50czsKKyAgICAgICAg
Zm9yIChhdXRvJiBtZXRhRWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxNZXRhRWxlbWVu
dD4oKnRoaXMpKSB7CisgICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWV0YUVsZW1lbnQubmFtZSgpLCAidGhlbWUtY29sb3IiKSAmJiBtZXRhRWxlbWVudC5jb250
ZW50Q29sb3IoKS5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgbWV0YVRoZW1lQ29sb3JFbGVt
ZW50cy5hcHBlbmQobWFrZVdlYWtQdHIobWV0YUVsZW1lbnQpKTsKKyAgICAgICAgfQorICAgICAg
ICBtX21ldGFUaGVtZUNvbG9yRWxlbWVudHMgPSBXVEZNb3ZlKG1ldGFUaGVtZUNvbG9yRWxlbWVu
dHMpOworICAgIH0KKworICAgIGZvciAoYXV0byYgbWV0YUVsZW1lbnQgOiAqbV9tZXRhVGhlbWVD
b2xvckVsZW1lbnRzKSB7CisgICAgICAgIGlmIChtZXRhRWxlbWVudCAmJiBtZXRhRWxlbWVudC0+
Y29udGVudENvbG9yKCkuaXNWYWxpZCgpICYmIG1ldGFFbGVtZW50LT5tZWRpYUF0dHJpYnV0ZU1h
dGNoZXMoKSkKKyAgICAgICAgICAgIHJldHVybiBtZXRhRWxlbWVudDsKKyAgICB9CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkKCkKIHsK
ICAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSh7IH0pOwpAQCAtMzk4Nyw5ICs0MDI2LDkgQEAg
dm9pZCBEb2N1bWVudDo6cHJvY2Vzc1JlZmVycmVyUG9saWN5KGNvbnN0IFN0cmluZyYgcG9saWN5
LCBSZWZlcnJlclBvbGljeVNvdXJjZQogCiB2b2lkIERvY3VtZW50Ojpwcm9jZXNzQXBwbGljYXRp
b25NYW5pZmVzdChjb25zdCBBcHBsaWNhdGlvbk1hbmlmZXN0JiBhcHBsaWNhdGlvbk1hbmlmZXN0
KQogewotICAgIGF1dG8gb2xkVGhlbWVDb2xvciA9IHRoZW1lQ29sb3IoKTsKKyAgICBhdXRvIG9s
ZFRoZW1lQ29sb3IgPSB0aGVtZUNvbG9yKFJlY2FsY3VsYXRlVGhlbWVDb2xvcjo6Tm8pOwogICAg
IG1fYXBwbGljYXRpb25NYW5pZmVzdFRoZW1lQ29sb3IgPSBhcHBsaWNhdGlvbk1hbmlmZXN0LnRo
ZW1lQ29sb3I7Ci0gICAgaWYgKHRoZW1lQ29sb3IoKSA9PSBvbGRUaGVtZUNvbG9yKQorICAgIGlm
ICh0aGVtZUNvbG9yKFJlY2FsY3VsYXRlVGhlbWVDb2xvcjo6WWVzKSA9PSBvbGRUaGVtZUNvbG9y
KQogICAgICAgICByZXR1cm47CiAKICAgICB0aGVtZUNvbG9yQ2hhbmdlZCgpOwpAQCAtNDE3Myw2
ICs0MjEyLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUVsZW1lbnRzQWZmZWN0ZWRCeU1lZGlh
UXVlcmllcygpCiB7CiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2Ny
aXB0RGlzYWxsb3dlZFNjb3BlOwogCisgICAgaWYgKGF1dG8gYWN0aXZlVGhlbWVDb2xvckVsZW1l
bnQgPSBkZXRlcm1pbmVBY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQoKTsgbV9hY3RpdmVUaGVt
ZUNvbG9yTWV0YUVsZW1lbnQgIT0gYWN0aXZlVGhlbWVDb2xvckVsZW1lbnQpIHsKKyAgICAgICAg
YXV0byBvbGRUaGVtZUNvbG9yID0gdGhlbWVDb2xvcihSZWNhbGN1bGF0ZVRoZW1lQ29sb3I6Ok5v
KTsKKyAgICAgICAgbV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQgPSBXVEZNb3ZlKGFjdGl2
ZVRoZW1lQ29sb3JFbGVtZW50KTsKKyAgICAgICAgaWYgKHRoZW1lQ29sb3IoUmVjYWxjdWxhdGVU
aGVtZUNvbG9yOjpZZXMpICE9IG9sZFRoZW1lQ29sb3IpCisgICAgICAgICAgICB0aGVtZUNvbG9y
Q2hhbmdlZCgpOworICAgIH0KKwogICAgIC8vIEZJWE1FOiBjb3B5VG9WZWN0b3IgZG9lc24ndCB3
b3JrIHdpdGggV2Vha0hhc2hTZXQKICAgICBWZWN0b3I8UmVmPEhUTUxJbWFnZUVsZW1lbnQ+PiBp
bWFnZXM7CiAgICAgaW1hZ2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9keW5hbWljTWVkaWFR
dWVyeURlcGVuZGVudEltYWdlcy5jb21wdXRlU2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggZTI1N2VhZDNjOTQ1MWZmM2ZhOTIwMDc4Mzg0ZTU5YWUyYWM1ZGM4OC4uMTk1MDNjMzVhN2E2
YzE2MDI4MjdkMDcxNDhlMmVmNzVlMGU4NzQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1
OCw2ICsxNTgsNyBAQCBjbGFzcyBIVE1MSUZyYW1lRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVs
ZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Citj
bGFzcyBIVE1MTWV0YUVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSGln
aGxpZ2h0UmVnaXN0ZXI7CiBjbGFzcyBIaXRUZXN0TG9jYXRpb247CkBAIC03NDEsNyArNzQyLDgg
QEAgcHVibGljOgogICAgIFNlY29uZHMgdGltZVNpbmNlRG9jdW1lbnRDcmVhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9kb2N1bWVudENyZWF0aW9uVGltZTsg
fTsKICNlbmRpZgogCi0gICAgY29uc3QgQ29sb3ImIHRoZW1lQ29sb3IoKSBjb25zdCB7IHJldHVy
biBtX21ldGFFbGVtZW50VGhlbWVDb2xvci5pc1ZhbGlkKCkgPyBtX21ldGFFbGVtZW50VGhlbWVD
b2xvciA6IG1fYXBwbGljYXRpb25NYW5pZmVzdFRoZW1lQ29sb3I7IH0KKyAgICBlbnVtIGNsYXNz
IFJlY2FsY3VsYXRlVGhlbWVDb2xvciA6IHVpbnQ4X3QgeyBObywgSWZOZWVkZWQsIFllcyB9Owor
ICAgIGNvbnN0IENvbG9yJiB0aGVtZUNvbG9yKFJlY2FsY3VsYXRlVGhlbWVDb2xvciA9IFJlY2Fs
Y3VsYXRlVGhlbWVDb2xvcjo6SWZOZWVkZWQpOwogCiAgICAgdm9pZCBzZXRUZXh0Q29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKSB7IG1fdGV4dENvbG9yID0gY29sb3I7IH0KICAgICBjb25zdCBDb2xv
ciYgdGV4dENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q29sb3I7IH0KQEAgLTkxMCw3ICs5
MTIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm9jZXNzRGlzYWJsZWRBZGFwdGF0aW9ucyhjb25z
dCBTdHJpbmcmIGFkYXB0YXRpb25zKTsKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0QXJndW1lbnRz
KCk7CiAgICAgdm9pZCBwcm9jZXNzUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3ks
IFJlZmVycmVyUG9saWN5U291cmNlKTsKLSAgICB2b2lkIHByb2Nlc3NNZXRhRWxlbWVudFRoZW1l
Q29sb3IoY29uc3QgU3RyaW5nJiB0aGVtZUNvbG9yKTsKKworICAgIHZvaWQgbWV0YUVsZW1lbnRU
aGVtZUNvbG9yQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCiAgICAgdm9p
ZCBwcm9jZXNzQ29sb3JTY2hlbWUoY29uc3QgU3RyaW5nJiBjb2xvclNjaGVtZSk7CkBAIC0xNjc1
LDYgKzE2NzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVGl0bGUoY29uc3QgU3RyaW5n
V2l0aERpcmVjdGlvbiYpOwogICAgIHZvaWQgdXBkYXRlQmFzZVVSTCgpOwogCisgICAgV2Vha1B0
cjxIVE1MTWV0YUVsZW1lbnQ+IGRldGVybWluZUFjdGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudCgp
OwogICAgIHZvaWQgdGhlbWVDb2xvckNoYW5nZWQoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZUFj
Y2Vzc0tleUNhY2hlU2xvd0Nhc2UoKTsKQEAgLTE3OTcsNyArMTgwMSw5IEBAIHByaXZhdGU6CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybUNvbnRyb2xsZXI+IG1fZm9ybUNvbnRyb2xsZXI7CiAK
LSAgICBDb2xvciBtX21ldGFFbGVtZW50VGhlbWVDb2xvcjsKKyAgICBDb2xvciBtX2NhY2hlZFRo
ZW1lQ29sb3I7CisgICAgT3B0aW9uYWw8VmVjdG9yPFdlYWtQdHI8SFRNTE1ldGFFbGVtZW50Pj4+
IG1fbWV0YVRoZW1lQ29sb3JFbGVtZW50czsKKyAgICBXZWFrUHRyPEhUTUxNZXRhRWxlbWVudD4g
bV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQ7CiAgICAgQ29sb3IgbV9hcHBsaWNhdGlvbk1h
bmlmZXN0VGhlbWVDb2xvcjsKIAogICAgIENvbG9yIG1fdGV4dENvbG9yIHsgQ29sb3I6OmJsYWNr
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKaW5kZXggYzg5Y2Y4NTU3
ZjYzNWQ2MDg1OTI3MjJhMWE3NjM0ZTM2Nzg3MDE1Yi4uMWNkZWJkN2NiZjY4YmIyMDRmNTA3OWU1
YzEyZmRiYzUzNjZlZjgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNw
cApAQCAtMjQsMTEgKzI0LDE4IEBACiAjaW5jbHVkZSAiSFRNTE1ldGFFbGVtZW50LmgiCiAKICNp
bmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRv
ci5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJzZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU3R5bGVSZXNvbHZlRm9yRG9j
dW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDI0ICs1OSw5OSBA
QCBSZWY8SFRNTE1ldGFFbGVtZW50PiBIVE1MTWV0YUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxN
ZXRhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCitzdGF0aWMgUmVmPE1lZGlhUXVl
cnlTZXQ+IHBhcnNlTWVkaWEoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZywgY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWFT
dHJpbmcuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQo
ZG9jdW1lbnQpKTsKK30KKworc3RhdGljIGJvb2wgbWVkaWFNYXRjaGVzKGNvbnN0IE1lZGlhUXVl
cnlTZXQmIG1lZGlhLCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgT3B0aW9uYWw8
UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5bGU7CisgICAgaWYgKGRvY3VtZW50Lmhhc0xpdmluZ1Jl
bmRlclRyZWUoKSkKKyAgICAgICAgZG9jdW1lbnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9yRG9j
dW1lbnQoZG9jdW1lbnQpOworCisgICAgU3RyaW5nIG1lZGlhVHlwZTsKKyAgICBpZiAoYXV0byog
ZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBmcmFtZVZpZXcg
PSBmcmFtZS0+dmlldygpKQorICAgICAgICAgICAgbWVkaWFUeXBlID0gZnJhbWVWaWV3LT5tZWRp
YVR5cGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvcihtZWRpYVR5
cGUsIGRvY3VtZW50LCBkb2N1bWVudFN0eWxlID8gJipkb2N1bWVudFN0eWxlIDogbnVsbHB0ciku
ZXZhbHVhdGUobWVkaWEpOworfQorCitib29sIEhUTUxNZXRhRWxlbWVudDo6bWVkaWFBdHRyaWJ1
dGVNYXRjaGVzKCkKK3sKKyAgICBpZiAoIW1fbWVkaWEpCisgICAgICAgIG1fbWVkaWEgPSBwYXJz
ZU1lZGlhKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWVkaWFBdHRyKSwgZG9jdW1l
bnQoKSk7CisgICAgcmV0dXJuIG1lZGlhTWF0Y2hlcygqbV9tZWRpYSwgZG9jdW1lbnQoKSk7Cit9
CisKK2NvbnN0IENvbG9yJiBIVE1MTWV0YUVsZW1lbnQ6OmNvbnRlbnRDb2xvcigpCit7CisgICAg
aWYgKCFtX2NvbnRlbnRDb2xvcikKKyAgICAgICAgbV9jb250ZW50Q29sb3IgPSBDU1NQYXJzZXI6
OnBhcnNlQ29sb3IoY29udGVudCgpKTsKKyAgICByZXR1cm4gKm1fY29udGVudENvbG9yOworfQor
CiB2b2lkIEhUTUxNZXRhRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYg
bmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiByZWFzb24pCiB7CisgICAgYm9v
bCB3YXNWYWxpZE1lZGlhID0gbV9tZWRpYSAmJiBtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKTsKKyAg
ICBib29sIHdhc1ZhbGlkQ29sb3IgPSBtX2NvbnRlbnRDb2xvciAmJiBjb250ZW50Q29sb3IoKS5p
c1ZhbGlkKCk7CisKICAgICBIVE1MRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChuYW1lLCBvbGRW
YWx1ZSwgbmV3VmFsdWUsIHJlYXNvbik7CiAKLSAgICBpZiAobmFtZSA9PSBuYW1lQXR0ciAmJiBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShvbGRWYWx1ZSwgInRoZW1lLWNvbG9yIikgJiYg
IWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5ld1ZhbHVlLCAidGhlbWUtY29sb3IiKSkK
LSAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzTWV0YUVsZW1lbnRUaGVtZUNvbG9yKGVtcHR5U3Ry
aW5nKCkpOworICAgIC8vIENoYW5naW5nIGEgbWV0YSB0YWcgd2hpbGUgaXQncyBub3QgaW4gdGhl
IHRyZWUgc2hvdWxkbid0IGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgZG9jdW1lbnQuCisgICAgaWYg
KCFpc0Nvbm5lY3RlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBbiBhdHRyaWJ1dGUg
YmVpbmcgYWRkZWQgKGkuZS4gaWYgdGhlIGBtZWRpYWAgYXR0cmlidXRlIGRpZG4ndCBleGlzdCkg
aXMgaGFuZGxlZCBieSBgcHJvY2VzcygpYC4KKyAgICBpZiAoIXdhc1ZhbGlkTWVkaWEgfHwgIXdh
c1ZhbGlkQ29sb3IpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuYW1lID09IG5hbWVBdHRy
KSB7CisgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShvbGRWYWx1ZSwg
InRoZW1lLWNvbG9yIikgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5ld1ZhbHVl
LCAidGhlbWUtY29sb3IiKSkKKyAgICAgICAgICAgIGRvY3VtZW50KCkubWV0YUVsZW1lbnRUaGVt
ZUNvbG9yQ2hhbmdlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG5hbWUg
PT0gY29udGVudEF0dHIpIHsKKyAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHRoaXMtPm5hbWUoKSwgInRoZW1lLWNvbG9yIikgJiYgIWNvbnRlbnRDb2xvcigpLmlzVmFs
aWQoKSkKKyAgICAgICAgICAgIGRvY3VtZW50KCkubWV0YUVsZW1lbnRUaGVtZUNvbG9yQ2hhbmdl
ZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG5hbWUgPT0gbWVkaWFBdHRy
KSB7CisgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0aGlzLT5uYW1l
KCksICJ0aGVtZS1jb2xvciIpICYmICFtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKSkKKyAgICAgICAg
ICAgIGRvY3VtZW50KCkubWV0YUVsZW1lbnRUaGVtZUNvbG9yQ2hhbmdlZCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogfQogCiB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7Ci0g
ICAgaWYgKG5hbWUgPT0gaHR0cF9lcXVpdkF0dHIpCisgICAgaWYgKG5hbWUgPT0gbmFtZUF0dHIp
IHsKICAgICAgICAgcHJvY2VzcygpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gY29udGVudEF0dHIp
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobmFtZSA9PSBjb250ZW50QXR0cikg
eworICAgICAgICBtX2NvbnRlbnRDb2xvciA9IFdURjo6bnVsbG9wdDsKICAgICAgICAgcHJvY2Vz
cygpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gbmFtZUF0dHIpCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAobmFtZSA9PSBodHRwX2VxdWl2QXR0cikgewogICAgICAgICBwcm9jZXNz
KCk7Ci0gICAgZWxzZQotICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwg
dmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG5hbWUgPT0gbWVkaWFB
dHRyKSB7CisgICAgICAgIG1fbWVkaWEgPSBudWxscHRyOworICAgICAgICBwcm9jZXNzKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogfQogCiBOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBIVE1M
TWV0YUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9u
VHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCkBAIC04OSw4ICsxNzEs
MTAgQEAgdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5
cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUKIHsKICAgICBIVE1MRWxlbWVudDo6cmVtb3Zl
ZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7CiAKLSAg
ICBpZiAoIWlzQ29ubmVjdGVkKCkgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSgpLCAidGhlbWUtY29sb3IiKSkKLSAgICAgICAgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5kb2N1
bWVudCgpLnByb2Nlc3NNZXRhRWxlbWVudFRoZW1lQ29sb3IoZW1wdHlTdHJpbmcoKSk7CisgICAg
YXV0byYgb2xkRG9jdW1lbnQgPSBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLmRvY3VtZW50KCk7CisK
KyAgICBpZiAoIWlzQ29ubmVjdGVkKCkgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bmFtZSgpLCAidGhlbWUtY29sb3IiKSAmJiBjb250ZW50Q29sb3IoKS5pc1ZhbGlkKCkgJiYgbWVk
aWFNYXRjaGVzKG1fbWVkaWEgPyAqbV9tZWRpYSA6IHBhcnNlTWVkaWEoYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihtZWRpYUF0dHIpLCBvbGREb2N1bWVudCkuZ2V0KCksIG9sZERvY3Vt
ZW50KSkKKyAgICAgICAgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5kb2N1bWVudCgpLm1ldGFFbGVt
ZW50VGhlbWVDb2xvckNoYW5nZWQoKTsKIH0KIAogdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnByb2Nl
c3MoKQpAQCAtMTExLDggKzE5NSwxMCBAQCB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cHJvY2Vzcygp
CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSgpLCAiY29s
b3Itc2NoZW1lIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSgpLCAic3Vw
cG9ydGVkLWNvbG9yLXNjaGVtZXMiKSkKICAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzQ29sb3JT
Y2hlbWUoY29udGVudFZhbHVlKTsKICNlbmRpZgotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG5hbWUoKSwgInRoZW1lLWNvbG9yIikpCi0gICAgICAgIGRvY3VtZW50
KCkucHJvY2Vzc01ldGFFbGVtZW50VGhlbWVDb2xvcihjb250ZW50VmFsdWUpOworICAgIGVsc2Ug
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUoKSwgInRoZW1lLWNvbG9yIikp
IHsKKyAgICAgICAgaWYgKGNvbnRlbnRDb2xvcigpLmlzVmFsaWQoKSAmJiBtZWRpYUF0dHJpYnV0
ZU1hdGNoZXMoKSkKKyAgICAgICAgICAgIGRvY3VtZW50KCkubWV0YUVsZW1lbnRUaGVtZUNvbG9y
Q2hhbmdlZCgpOworICAgIH0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUoKSwgImZvcm1hdC1kZXRlY3Rpb24i
KSkKICAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzRm9ybWF0RGV0ZWN0aW9uKGNvbnRlbnRWYWx1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaAppbmRleCAzMzUwZjFlODM0Zjhl
OTY4OWNmOTdhZWJlODdkNDJlNTkyYWZhYTRiLi5mNTk5MzkzZTgxZDM5ODMxZjRlZTllY2IyODQ2
MmVjYjJiOWQ0ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmgKQEAgLTI2
LDYgKzI2LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb2xvcjsKK2NsYXNz
IE1lZGlhUXVlcnlTZXQ7CisKIGNsYXNzIEhUTUxNZXRhRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChIVE1MTWV0YUVsZW1lbnQp
OwogcHVibGljOgpAQCAtMzYsNiArMzksMTAgQEAgcHVibGljOgogICAgIGNvbnN0IEF0b21TdHJp
bmcmIGh0dHBFcXVpdigpIGNvbnN0OwogICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUoKSBjb25z
dDsKIAorICAgIGJvb2wgbWVkaWFBdHRyaWJ1dGVNYXRjaGVzKCk7CisKKyAgICBjb25zdCBDb2xv
ciYgY29udGVudENvbG9yKCk7CisKIHByaXZhdGU6CiAgICAgSFRNTE1ldGFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCkBAIC00Niw2ICs1MywxMCBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9k
ZSYpIGZpbmFsOwogCiAgICAgdm9pZCBwcm9jZXNzKCk7CisKKyAgICBSZWZQdHI8TWVkaWFRdWVy
eVNldD4gbV9tZWRpYTsKKworICAgIE9wdGlvbmFsPENvbG9yPiBtX2NvbnRlbnRDb2xvcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVt
ZW50LmlkbAppbmRleCA3MmU3ODBhODc2MGJhM2MxZDJjYTI3NjRjZWRjNDEyYjA2ODM5YjNlLi5j
NDk0YzdhMWQ3NTA3N2VhZDVhNDIxNDM5OTE4ZWY5ZjA5MmZkMmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0YUVsZW1lbnQuaWRsCkBAIC0yMiw2ICsyMiw3IEBACiBdIGludGVyZmFjZSBI
VE1MTWV0YUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRl
ZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBjb250ZW50OwogICAgIFtDRVJlYWN0aW9u
cz1Ob3ROZWVkZWQsIFJlZmxlY3Q9aHR0cF9lcXVpdl0gYXR0cmlidXRlIERPTVN0cmluZyBodHRw
RXF1aXY7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERP
TVN0cmluZyBtZWRpYTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVj
dF0gYXR0cmlidXRlIERPTVN0cmluZyBzY2hlbWU7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk2MTFjMWEwYTdlMmQxZmZkZmI3MjE2MmM1
NTYxYWNkNjJlYzBiNzMuLjZlOTIxMDc0MGE3MmZlZmI5NTAzNzU0MDk1NjA5ZGU5YTQ0YjhlZDYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAyMS0wNC0yMiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGEgYG1lZGlhYCBhdHRyaWJ1dGUgb24gYDxtZXRh
IG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIuLi4iPmAKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDM4OQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNzQ5OTE2MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29s
b3IubW06CisgICAgICAgIChURVNULldLV2ViVmlld1RoZW1lQ29sb3IuTWV0YUVsZW1lbnRWYWxp
ZE5hbWVBbmRDb2xvcik6IEFkZGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdUaGVtZUNvbG9y
Lk1ldGFFbGVtZW50VmFsaWROYW1lQW5kQ29sb3JBbmRNZWRpYSk6IEFkZGVkLgorICAgICAgICAo
VEVTVC5XS1dlYlZpZXdUaGVtZUNvbG9yLk1ldGFFbGVtZW50SW52YWxpZE5hbWUpOiBBZGRlZC4K
KyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VGhlbWVDb2xvci5NZXRhRWxlbWVudEludmFsaWRDb2xv
cik6IEFkZGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdUaGVtZUNvbG9yLk1ldGFFbGVtZW50
SW52YWxpZE1lZGlhKTogQWRkZWQuCisgICAgICAgIChURVNULldLV2ViVmlld1RoZW1lQ29sb3Iu
TWV0YUVsZW1lbnRNdWx0aXBsZVZhbGlkKTogQWRkZWQuCisgICAgICAgIChURVNULldLV2ViVmll
d1RoZW1lQ29sb3IuTWV0YUVsZW1lbnRWYWxpZFN1YmZyYW1lKTogQWRkZWQuCisgICAgICAgICgt
W1dLV2ViVmlld1RoZW1lQ29sb3JPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2Jq
ZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdUaGVtZUNvbG9y
LktWTyk6CisgICAgICAgIChURVNULldLV2ViVmlld1RoZW1lQ29sb3IuTWV0YUVsZW1lbnRPbkxv
YWQpOiBEZWxldGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdUaGVtZUNvbG9yLk1ldGFFbGVt
ZW50TXVsdGlwbGVUYWdzKTogRGVsZXRlZC4KKwogMjAyMS0wNC0yMiAgVGltIE5ndXllbiAgPG50
aW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCAiVGltIE5ndXllbiIgdG8gY29udHJpYnV0b3Jz
Lmpzb24uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLV2ViVmlld1RoZW1lQ29sb3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0KaW5kZXggYmYyYTZmMGU0ZDEzNTNhODdkNmY2
NTcyZDI2NTY5NjRlMzIzMmQwYy4uZjk3YjQyMzIxOWU3ZTA5NzI3OGE5YTU5MWIzNTEwZGU2MTQ2
ZjVmMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1dlYlZpZXdUaGVtZUNvbG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tXZWJWaWV3VGhlbWVDb2xvci5tbQpAQCAtNDEsNyArNDEsNyBAQAogY29uc3Rl
eHByIENHRmxvYXQgcmVkQ29sb3JDb21wb25lbnRzWzRdID0geyAxLCAwLCAwLCAxIH07CiBjb25z
dGV4cHIgQ0dGbG9hdCBibHVlQ29sb3JDb21wb25lbnRzWzRdID0geyAwLCAwLCAxLCAxIH07CiAK
LVRFU1QoV0tXZWJWaWV3VGhlbWVDb2xvciwgTWV0YUVsZW1lbnRPbkxvYWQpCitURVNUKFdLV2Vi
Vmlld1RoZW1lQ29sb3IsIE1ldGFFbGVtZW50VmFsaWROYW1lQW5kQ29sb3IpCiB7CiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcg
dGhlbWVDb2xvcl0pOwpAQCAtNTEsMjIgKzUxLDc4IEBAIFRFU1QoV0tXZWJWaWV3VGhlbWVDb2xv
ciwgTWV0YUVsZW1lbnRPbkxvYWQpCiAgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0Yo
Q0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKICAgICBhdXRv
IHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBy
ZWRDb2xvckNvbXBvbmVudHMpKTsKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9y
KFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7Ci0KLSAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlh
dGVDaGlsZEZyYW1lc1BhaW50OkAiPG1ldGEgbmFtZT0nbm90LXRoZW1lLWNvbG9yJyBjb250ZW50
PSdyZWQnPiJdOwotCi0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3IHRoZW1lQ29sb3JdKTsKIH0K
IAotVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBNdWx0aXBsZU1ldGFFbGVtZW50cykKK1RFU1Qo
V0tXZWJWaWV3VGhlbWVDb2xvciwgTWV0YUVsZW1lbnRWYWxpZE5hbWVBbmRDb2xvckFuZE1lZGlh
KQogewogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgRVhQRUNUX1RS
VUUoIVt3ZWJWaWV3IHRoZW1lQ29sb3JdKTsKIAotICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8
bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVkJz48bWV0YSBuYW1lPSd0aGVtZS1j
b2xvcicgY29udGVudD0nYmx1ZSc+Il07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRI
VE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRh
IG5hbWU9J3RoZW1lLWNvbG9yJyBjb250ZW50PSdyZWQnIG1lZGlhPSdzY3JlZW4nPiJdOwogCiAg
ICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5h
bWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIGJsdWVDb2xvciA9IGFkb3B0Q0YoQ0dD
b2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9yQ29tcG9uZW50cykpOwot
ICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdGhlbWVDb2xvcl0u
Q0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7CisgICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0Yo
Q0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7
CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB0aGVtZUNvbG9y
XS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworfQorCitURVNUKFdLV2ViVmlld1RoZW1lQ29s
b3IsIE1ldGFFbGVtZW50SW52YWxpZE5hbWUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgdGhlbWVDb2xvcl0pOworCisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1t
ZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9J25vdC10aGVtZS1jb2xvcicgY29u
dGVudD0nYmx1ZSc+PG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J3JlZCc+Il07CisK
KyAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRo
TmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENH
Q29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOwor
ICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdGhlbWVDb2xvcl0u
Q0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKK30KKworVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9y
LCBNZXRhRWxlbWVudEludmFsaWRDb2xvcikKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKV0pOworICAgIEVYUEVDVF9UUlVFKCFbd2ViVmlldyB0aGVtZUNvbG9yXSk7CisKKyAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1l
ZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9
J2ludmFsaWQnPjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250ZW50PSdyZWQnPiJdOworCisg
ICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5h
bWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0Nv
bG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAg
ICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNH
Q29sb3IsIHJlZENvbG9yLmdldCgpKSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3VGhlbWVDb2xvciwg
TWV0YUVsZW1lbnRJbnZhbGlkTWVkaWEpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgdGhlbWVDb2xvcl0pOworCisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRp
YXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250ZW50PSdi
bHVlJyBtZWRpYT0naW52YWxpZCc+PG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J3Jl
ZCcgbWVkaWE9J3NjcmVlbic+Il07CisKKyAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRD
RihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgIGF1
dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCks
IHJlZENvbG9yQ29tcG9uZW50cykpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29s
b3IoW3dlYlZpZXcgdGhlbWVDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKK30KKwor
VEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBNZXRhRWxlbWVudE11bHRpcGxlVmFsaWQpCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRSghW3dl
YlZpZXcgdGhlbWVDb2xvcl0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxkaXY+PG1l
dGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J3JlZCc+PC9kaXY+PG1ldGEgbmFtZT0ndGhl
bWUtY29sb3InIGNvbnRlbnQ9J2JsdWUnPiJdOworCisgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9
IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsK
KyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNl
LmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1
YWxUb0NvbG9yKFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7
Cit9CisKK1RFU1QoV0tXZWJWaWV3VGhlbWVDb2xvciwgTWV0YUVsZW1lbnRWYWxpZFN1YmZyYW1l
KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgRVhQRUNUX1RS
VUUoIVt3ZWJWaWV3IHRoZW1lQ29sb3JdKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8
aWZyYW1lIHNyY2RvYz1cIjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250ZW50PSdibHVlJz5c
Ij48L2lmcmFtZT48bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVkJz4iXTsKKwor
ICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhO
YW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dD
b2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7Cisg
ICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB0aGVtZUNvbG9yXS5D
R0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOwogfQogCiBAaW50ZXJmYWNlIFdLV2ViVmlld1RoZW1l
Q29sb3JPYnNlcnZlciA6IE5TT2JqZWN0CkBAIC0xMDUsOCArMTYxLDEzIEBAIC0gKHZvaWQpb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmpl
Y3QgY2hhbmdlOihOCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoW19zdGF0ZSBp
c0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY29udGVudC1jaGFuZ2UiXSkgewotICAgICAgICBfc3Rh
dGUgPSBAImFmdGVyLWNvbnRlbnQtY2hhbmdlIjsKKyAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9T
dHJpbmc6QCJiZWZvcmUtY29udGVudC1jaGFuZ2UtaW52YWxpZCJdKSB7CisgICAgICAgIF9zdGF0
ZSA9IEAiYWZ0ZXItY29udGVudC1jaGFuZ2UtaW52YWxpZCI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY29udGVudC1j
aGFuZ2UtdmFsaWQiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNvbnRlbnQtY2hhbmdl
LXZhbGlkIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTIwLDYgKzE4MSwyNiBAQCAt
ICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVj
dDooaWQpb2JqZWN0IGNoYW5nZTooTgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYg
KFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWludmFsaWQtbWVkaWEtYWRkZWQiXSkg
eworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWludmFsaWQtbWVkaWEtYWRkZWQiOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVm
b3JlLW1lZGlhLWNoYW5nZWQtdmFsaWQiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLW1l
ZGlhLWNoYW5nZWQtdmFsaWQiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFtf
c3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLW1lZGlhLXN0YXRlLWNoYW5nZWQiXSkgewor
ICAgICAgICBfc3RhdGUgPSBAImFmdGVyLW1lZGlhLXN0YXRlLWNoYW5nZWQiOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3Jl
LW5vZGUtaW5zZXJ0ZWQiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLW5vZGUtaW5zZXJ0
ZWQiOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRv
U3RyaW5nOkAiYmVmb3JlLW5vZGUtcmVtb3ZlZCJdKSB7CiAgICAgICAgIF9zdGF0ZSA9IEAiYWZ0
ZXItbm9kZS1yZW1vdmVkIjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ2LDEwICsyMjcsMTYgQEAg
VEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBLVk8pCiAgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJh
ZnRlci1sb2FkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwogICAgIEVYUEVDVF9UUlVF
KENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdGhlbWVDb2xvcl0uQ0dDb2xvciwgcmVkQ29s
b3IuZ2V0KCkpKTsKIAotICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUt
Y29udGVudC1jaGFuZ2UiXTsKKyAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVm
b3JlLWNvbnRlbnQtY2hhbmdlLWludmFsaWQiXTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YScpLnNldEF0dHJp
YnV0ZSgnY29udGVudCcsICdpbnZhbGlkJykiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jb250ZW50
LWNoYW5nZS1pbnZhbGlkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVD
VF9UUlVFKCFbd2ViVmlldyB0aGVtZUNvbG9yXSk7CisKKyAgICBbdGhlbWVDb2xvck9ic2VydmVy
IHNldFN0YXRlOkAiYmVmb3JlLWNvbnRlbnQtY2hhbmdlLXZhbGlkIl07CiAgICAgW3dlYlZpZXcg
b2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21l
dGEnKS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnLCAnYmx1ZScpIl07CiAgICAgW3dlYlZpZXcgd2Fp
dEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0
ZXItY29udGVudC1jaGFuZ2UiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQ
RUNUX05TU1RSSU5HX0VRKCJhZnRlci1jb250ZW50LWNoYW5nZS12YWxpZCIsIFt0aGVtZUNvbG9y
T2JzZXJ2ZXIgc3RhdGVdKTsKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3
ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwogCiAgICAgW3Ro
ZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1uYW1lLWNoYW5nZS1ub3QtdGhlbWUt
Y29sb3IiXTsKQEAgLTE2NCw2ICsyNTEsMzAgQEAgVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBL
Vk8pCiAgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1uYW1lLWNoYW5nZS10aGVtZS1jb2xv
ciIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9y
RXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQo
KSkpOwogCisgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1pbnZhbGlk
LW1lZGlhLWFkZGVkIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGEnKS5zZXRBdHRyaWJ1dGUoJ21lZGlhJywg
J2ludmFsaWQnKSJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRl
XTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWludmFsaWQtbWVkaWEtYWRkZWQiLCBb
dGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3IF90
aGVtZUNvbG9yXSk7CisKKyAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3Jl
LW1lZGlhLWNoYW5nZWQtdmFsaWQiXTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YScpLnNldEF0dHJpYnV0ZSgn
bWVkaWEnLCAnc2NyZWVuJykiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlv
blVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1tZWRpYS1jaGFuZ2VkLXZh
bGlkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29s
b3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3RoZW1lQ29sb3JdLkNHQ29sb3IsIGJsdWVDb2xvci5n
ZXQoKSkpOworCisgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1tZWRp
YS1zdGF0ZS1jaGFuZ2VkIl07CisgICAgW3dlYlZpZXcgc2V0TWVkaWFUeXBlOkAicHJpbnQiXTsK
KyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNU
X05TU1RSSU5HX0VRKCJhZnRlci1tZWRpYS1zdGF0ZS1jaGFuZ2VkIiwgW3RoZW1lQ29sb3JPYnNl
cnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKCFbd2ViVmlldyBfdGhlbWVDb2xvcl0pOwor
CisgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1ub2RlLWluc2VydGVk
Il07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ21ldGEnKS5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWJlZ2luJywg
XCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVkJz5cIikiXTsKKyAgICBbd2Vi
VmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5H
X0VRKCJhZnRlci1ub2RlLWluc2VydGVkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwor
ICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3RoZW1lQ29sb3Jd
LkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKICAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNl
dFN0YXRlOkAiYmVmb3JlLW5vZGUtcmVtb3ZlZCJdOwogICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZXRhJykucmVtb3Zl
KCkiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427323</attachid>
            <date>2021-04-28 19:06:46 -0700</date>
            <delta_ts>2021-05-07 15:34:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>224389.diff</filename>
            <type>text/plain</type>
            <size>26450</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjYTk4YTQ1ZDBmMWEuLjhkMWEwMTYxYjY5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU1IEBACisyMDIxLTA0LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYSBgbWVkaWFgIGF0dHJpYnV0ZSBvbiBgPG1l
dGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9Ii4uLiI+YAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mzg5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83NDk5MTYyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUZXN0czogV0tXZWJWaWV3VGhlbWVDb2xvci5NZXRhRWxlbWVudFZhbGlkTmFtZUFu
ZENvbG9yQW5kTWVkaWEKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1RoZW1lQ29sb3IuTWV0YUVs
ZW1lbnRJbnZhbGlkTmFtZQorICAgICAgICAgICAgICAgV0tXZWJWaWV3VGhlbWVDb2xvci5NZXRh
RWxlbWVudEludmFsaWRDb2xvcgorICAgICAgICAgICAgICAgV0tXZWJWaWV3VGhlbWVDb2xvci5N
ZXRhRWxlbWVudEludmFsaWRNZWRpYQorICAgICAgICAgICAgICAgV0tXZWJWaWV3VGhlbWVDb2xv
ci5NZXRhRWxlbWVudE11bHRpcGxlVmFsaWQKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1RoZW1l
Q29sb3IuTWV0YUVsZW1lbnRWYWxpZFN1YmZyYW1lCisgICAgICAgICAgICAgICBXS1dlYlZpZXdU
aGVtZUNvbG9yLktWTworCisgICAgICAgICogaHRtbC9IVE1MTWV0YUVsZW1lbnQuaWRsOgorICAg
ICAgICAqIGh0bWwvSFRNTE1ldGFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWV0YUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNZWRpYSk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6bWVkaWFNYXRjaGVzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWV0YUVsZW1lbnQ6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1ldGFFbGVtZW50Ojpjb250ZW50Q29sb3IpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZXRhRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWV0YUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZXRhRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWV0YUVsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYSBy
ZWZsZWN0ZWQgYG1lZGlhYCBhdHRyaWJ1dGUuIENhY2hlIHRoZSBtb3N0IHJlY2VudGx5IHBhcnNl
ZCBgbWVkaWFgICh3aGljaAorICAgICAgICBiZWNvbWVzIGEgYFJlZjxNZWRpYVF1ZXJ5U2V0PmAp
IGFuZCBgY29udGVudGAgKHdoaWNoIGNhbiBiZWNvbWUgYSBgQ29sb3JgKSB0byBhdm9pZCBkb2lu
ZworICAgICAgICByZXBlYXRlZCB3b3JrIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIGFjdGl2ZSB0aGVt
ZSBjb2xvciBhZnRlciBtZWRpYSBzdGF0ZSBjaGFuZ2VzLiBOb3RpZnkgdGhlCisgICAgICAgIGBE
b2N1bWVudGAgd2hlbmV2ZXIgdGhlIGBuYW1lYCBvciBgY29udGVudGAgb3IgYG1lZGlhYCBhdHRy
aWJ1dGUgY2hhbmdlcyBpZiB0aGUgbmV3IG9yIG9sZAorICAgICAgICB2YWx1ZSB3aWxsIGJlIG9y
IHdvdWxkIGhhdmUgYmVlbiByZWxhdGVkIHRvIGNhbGN1bGF0aW5nIHRoZSB0aGVtZSBjb2xvci4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnRoZW1lQ29sb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dGhlbWVDb2xvcik6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1ldGFFbGVtZW50VGhlbWVDb2xvckNoYW5nZWQpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZXRlcm1pbmVBY3RpdmVUaGVtZUNvbG9y
TWV0YUVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aGVtZUNv
bG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlRWxlbWVudHNB
ZmZlY3RlZEJ5TWVkaWFRdWVyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9j
ZXNzTWV0YUVsZW1lbnRUaGVtZUNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgTWFrZSBjYWxjdWxh
dGluZyB0aGUgdGhlbWUgY29sb3IgaW50byBhIHR3byBzdGFnZSBwcm9jZXNzOgorICAgICAgICAg
MS4gZmluZCBhbGwgYDxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIj5gIHRoYXQgaGF2ZSBhIHZhbGlk
IENTUyBjb2xvciBgY29udGVudGAgaW4gdHJlZSBvcmRlcgorICAgICAgICAgMi4gcmV0dXJuIHRo
ZSBgSFRNTE1ldGFFbGVtZW50Ojpjb250ZW50Q29sb3JgIG9mIHRoZSBmaXJzdCBpdGVtIGZyb20g
c3RlcCAxIHRoYXQgYEhUTUxNZXRhRWxlbWVudDo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzYAorICAg
ICAgICBUaGlzIGlzIGRvbmUgc28gdGhhdCBgRG9jdW1lbnQ6OnVwZGF0ZUVsZW1lbnRzQWZmZWN0
ZWRCeU1lZGlhUXVlcmllc2AgZG9lc24ndCBoYXZlIHRvIHJlcGVhdAorICAgICAgICBzdGVwIDEg
ZWFjaCB0aW1lIGl0J3MgcnVuICh3aGljaCBjYW4gYmUgb2Z0ZW4pIGFuZCBpbnN0ZWFkIG9ubHkg
bmVlZHMgdG8gaXRlcmF0ZSBhIChsaWtlbHkKKyAgICAgICAgdmVyeSBzbWFsbCkgbGlzdCBpbiBz
dGVwIDIuIFRoZSBhY3Rpb25zL3NpdHVhdGlvbnMgbGlzdGVkIGFib3ZlIHdvdWxkIGNsZWFyIHRo
ZSBjYWNoZWQgZGF0YQorICAgICAgICBmcm9tIGJvdGggc3RlcHMsIG1lYW5pbmcgdGhhdCB0aGUg
bmV4dCBgRG9jdW1lbnQ6OnRoZW1lQ29sb3JgIHdpbGwgZG8gYSBmdWxsIHJlY2FsY3VsYXRpb24u
CisgICAgICAgIE5vdGlmeSB0aGUgVUlQcm9jZXNzIG9mIGEgY2hhbmdlIGluIHRoZW1lIGNvbG9y
IGlmIHRoZSByZXN1bHQgb2Ygc3RlcCAyIGlzIGRpZmZlcmVudCBmcm9tIGEKKyAgICAgICAgcHJl
dmlvdXNseSBjYWNoZWQgcmVzdWx0IChpZiBzZXQpLgorCiAyMDIxLTA0LTI2ICBGdWppaSBIaXJv
bm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI3
MjM3OSkgW1dpbl0gU29tZSBlbW9qaXMgYXJlIHBhaW50ZWQgd2l0aCBhIGJsYW5rIHNxdWFyZSBv
biB0aGUgcmlnaHQgc2lkZSBvZiBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMmFlM2Mz
ZGViOTEwLi4wOGU5ZWY3ZGFjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTA1LDYg
KzEwNSw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxM
aW5rRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MTWV0YUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZUNvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFBpY3R1cmVFbGVtZW50Lmgi
CkBAIC05NTksNiArOTYwLDIwIEBAIFN0cmluZyBEb2N1bWVudDo6Y29tcGF0TW9kZSgpIGNvbnN0
CiAgICAgcmV0dXJuIGluUXVpcmtzTW9kZSgpID8gIkJhY2tDb21wYXQiIDogIkNTUzFDb21wYXQi
OwogfQogCitjb25zdCBDb2xvciYgRG9jdW1lbnQ6OnRoZW1lQ29sb3IoKQoreworICAgIGlmICgh
bV9jYWNoZWRUaGVtZUNvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBpZiAoIW1fYWN0aXZlVGhl
bWVDb2xvck1ldGFFbGVtZW50KQorICAgICAgICAgICAgbV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVs
ZW1lbnQgPSBkZXRlcm1pbmVBY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQoKTsKKyAgICAgICAg
aWYgKG1fYWN0aXZlVGhlbWVDb2xvck1ldGFFbGVtZW50KQorICAgICAgICAgICAgbV9jYWNoZWRU
aGVtZUNvbG9yID0gbV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQtPmNvbnRlbnRDb2xvcigp
OworCisgICAgICAgIGlmICghbV9jYWNoZWRUaGVtZUNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAg
ICAgIG1fY2FjaGVkVGhlbWVDb2xvciA9IG1fYXBwbGljYXRpb25NYW5pZmVzdFRoZW1lQ29sb3I7
CisgICAgfQorICAgIHJldHVybiBtX2NhY2hlZFRoZW1lQ29sb3I7Cit9CisKIHZvaWQgRG9jdW1l
bnQ6OnJlc2V0TGlua0NvbG9yKCkKIHsKICAgICBtX2xpbmtDb2xvciA9IFN0eWxlQ29sb3I6OmNv
bG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVXZWJraXRMaW5rLCBzdHlsZUNvbG9yT3B0aW9ucyhudWxs
cHRyKSk7CkBAIC0zODU0LDE2ICszODY5LDQwIEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVZpZXdw
b3J0QXJndW1lbnRzKCkKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NNZXRhRWxl
bWVudFRoZW1lQ29sb3IoY29uc3QgU3RyaW5nJiB0aGVtZUNvbG9yU3RyaW5nKQordm9pZCBEb2N1
bWVudDo6bWV0YUVsZW1lbnRUaGVtZUNvbG9yQ2hhbmdlZChIVE1MTWV0YUVsZW1lbnQmIG1ldGFF
bGVtZW50KQogewotICAgIGF1dG8gb2xkVGhlbWVDb2xvciA9IHRoZW1lQ29sb3IoKTsKLSAgICBt
X21ldGFFbGVtZW50VGhlbWVDb2xvciA9IENTU1BhcnNlcjo6cGFyc2VDb2xvcih0aGVtZUNvbG9y
U3RyaW5nKTsKKyAgICAvLyBJZiB0aGUgY3VycmVudCBjb250ZW50IGNvbG9yIGlzbid0IHZhbGlk
IGFuZCBpdCB3YXNuJ3QgcHJldmlvdXNseSBpbiB0aGUgbGlzdCBvZiBlbGVtZW50cworICAgIC8v
IHdpdGggYSB2YWxpZCBjb250ZW50IGNvbG9yLCBkb24ndCBib3RoZXIgcmVjYWxjdWxhdGluZyBg
bV9tZXRhVGhlbWVDb2xvckVsZW1lbnRzYC4KKyAgICBpZiAoIW1ldGFFbGVtZW50LmNvbnRlbnRD
b2xvcigpLmlzVmFsaWQoKSAmJiBtX21ldGFUaGVtZUNvbG9yRWxlbWVudHMgJiYgIW1fbWV0YVRo
ZW1lQ29sb3JFbGVtZW50cy0+Y29udGFpbnMoJm1ldGFFbGVtZW50KSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBvbGRUaGVtZUNvbG9yID0gc3RkOjpleGNoYW5nZShtX2NhY2hlZFRoZW1l
Q29sb3IsIENvbG9yKCkpOworICAgIG1fbWV0YVRoZW1lQ29sb3JFbGVtZW50cyA9IFdURjo6bnVs
bG9wdDsKKyAgICBtX2FjdGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudCA9IG51bGxwdHI7CiAgICAg
aWYgKHRoZW1lQ29sb3IoKSA9PSBvbGRUaGVtZUNvbG9yKQogICAgICAgICByZXR1cm47CiAKICAg
ICB0aGVtZUNvbG9yQ2hhbmdlZCgpOwogfQogCitXZWFrUHRyPEhUTUxNZXRhRWxlbWVudD4gRG9j
dW1lbnQ6OmRldGVybWluZUFjdGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudCgpCit7CisgICAgaWYg
KCFtX21ldGFUaGVtZUNvbG9yRWxlbWVudHMpIHsKKyAgICAgICAgVmVjdG9yPFdlYWtQdHI8SFRN
TE1ldGFFbGVtZW50Pj4gbWV0YVRoZW1lQ29sb3JFbGVtZW50czsKKyAgICAgICAgZm9yIChhdXRv
JiBtZXRhRWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxNZXRhRWxlbWVudD4oKnRoaXMp
KSB7CisgICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWV0YUVs
ZW1lbnQubmFtZSgpLCAidGhlbWUtY29sb3IiKSAmJiBtZXRhRWxlbWVudC5jb250ZW50Q29sb3Io
KS5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgbWV0YVRoZW1lQ29sb3JFbGVtZW50cy5hcHBl
bmQobWFrZVdlYWtQdHIobWV0YUVsZW1lbnQpKTsKKyAgICAgICAgfQorICAgICAgICBtX21ldGFU
aGVtZUNvbG9yRWxlbWVudHMgPSBXVEZNb3ZlKG1ldGFUaGVtZUNvbG9yRWxlbWVudHMpOworICAg
IH0KKworICAgIGZvciAoYXV0byYgbWV0YUVsZW1lbnQgOiAqbV9tZXRhVGhlbWVDb2xvckVsZW1l
bnRzKSB7CisgICAgICAgIGlmIChtZXRhRWxlbWVudCAmJiBtZXRhRWxlbWVudC0+Y29udGVudENv
bG9yKCkuaXNWYWxpZCgpICYmIG1ldGFFbGVtZW50LT5tZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKSkK
KyAgICAgICAgICAgIHJldHVybiBtZXRhRWxlbWVudDsKKyAgICB9CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkKCkKIHsKICAgICBzY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZSh7IH0pOwpAQCAtMzk4Nyw3ICs0MDI2LDcgQEAgdm9pZCBEb2N1
bWVudDo6cHJvY2Vzc1JlZmVycmVyUG9saWN5KGNvbnN0IFN0cmluZyYgcG9saWN5LCBSZWZlcnJl
clBvbGljeVNvdXJjZQogCiB2b2lkIERvY3VtZW50Ojpwcm9jZXNzQXBwbGljYXRpb25NYW5pZmVz
dChjb25zdCBBcHBsaWNhdGlvbk1hbmlmZXN0JiBhcHBsaWNhdGlvbk1hbmlmZXN0KQogewotICAg
IGF1dG8gb2xkVGhlbWVDb2xvciA9IHRoZW1lQ29sb3IoKTsKKyAgICBhdXRvIG9sZFRoZW1lQ29s
b3IgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FjaGVkVGhlbWVDb2xvciwgQ29sb3IoKSk7CiAgICAgbV9h
cHBsaWNhdGlvbk1hbmlmZXN0VGhlbWVDb2xvciA9IGFwcGxpY2F0aW9uTWFuaWZlc3QudGhlbWVD
b2xvcjsKICAgICBpZiAodGhlbWVDb2xvcigpID09IG9sZFRoZW1lQ29sb3IpCiAgICAgICAgIHJl
dHVybjsKQEAgLTQxNzMsNiArNDIxMiwxMyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVFbGVtZW50
c0FmZmVjdGVkQnlNZWRpYVF1ZXJpZXMoKQogewogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6
SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKIAorICAgIGlmIChhdXRvIGFjdGl2
ZVRoZW1lQ29sb3JFbGVtZW50ID0gZGV0ZXJtaW5lQWN0aXZlVGhlbWVDb2xvck1ldGFFbGVtZW50
KCk7IG1fYWN0aXZlVGhlbWVDb2xvck1ldGFFbGVtZW50ICE9IGFjdGl2ZVRoZW1lQ29sb3JFbGVt
ZW50KSB7CisgICAgICAgIGF1dG8gb2xkVGhlbWVDb2xvciA9IHN0ZDo6ZXhjaGFuZ2UobV9jYWNo
ZWRUaGVtZUNvbG9yLCBDb2xvcigpKTsKKyAgICAgICAgbV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVs
ZW1lbnQgPSBXVEZNb3ZlKGFjdGl2ZVRoZW1lQ29sb3JFbGVtZW50KTsKKyAgICAgICAgaWYgKHRo
ZW1lQ29sb3IoKSAhPSBvbGRUaGVtZUNvbG9yKQorICAgICAgICAgICAgdGhlbWVDb2xvckNoYW5n
ZWQoKTsKKyAgICB9CisKICAgICAvLyBGSVhNRTogY29weVRvVmVjdG9yIGRvZXNuJ3Qgd29yayB3
aXRoIFdlYWtIYXNoU2V0CiAgICAgVmVjdG9yPFJlZjxIVE1MSW1hZ2VFbGVtZW50Pj4gaW1hZ2Vz
OwogICAgIGltYWdlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZHluYW1pY01lZGlhUXVlcnlE
ZXBlbmRlbnRJbWFnZXMuY29tcHV0ZVNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDA4
ZjBhMDU2ZDE4NS4uNzU1MTQ0MmE5MjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTU4LDYg
KzE1OCw3IEBAIGNsYXNzIEhUTUxJRnJhbWVFbGVtZW50OwogY2xhc3MgSFRNTEltYWdlRWxlbWVu
dDsKIGNsYXNzIEhUTUxNYXBFbGVtZW50OwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNz
IEhUTUxNZXRhRWxlbWVudDsKIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBIaWdobGln
aHRSZWdpc3RlcjsKIGNsYXNzIEhpdFRlc3RMb2NhdGlvbjsKQEAgLTc0MSw3ICs3NDIsNyBAQCBw
dWJsaWM6CiAgICAgU2Vjb25kcyB0aW1lU2luY2VEb2N1bWVudENyZWF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2RvY3VtZW50Q3JlYXRpb25UaW1lOyB9Owog
I2VuZGlmCiAKLSAgICBjb25zdCBDb2xvciYgdGhlbWVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
bWV0YUVsZW1lbnRUaGVtZUNvbG9yLmlzVmFsaWQoKSA/IG1fbWV0YUVsZW1lbnRUaGVtZUNvbG9y
IDogbV9hcHBsaWNhdGlvbk1hbmlmZXN0VGhlbWVDb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiB0
aGVtZUNvbG9yKCk7CiAKICAgICB2b2lkIHNldFRleHRDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
IHsgbV90ZXh0Q29sb3IgPSBjb2xvcjsgfQogICAgIGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IoKSBj
b25zdCB7IHJldHVybiBtX3RleHRDb2xvcjsgfQpAQCAtOTEwLDcgKzkxMSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHByb2Nlc3NEaXNhYmxlZEFkYXB0YXRpb25zKGNvbnN0IFN0cmluZyYgYWRhcHRh
dGlvbnMpOwogICAgIHZvaWQgdXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKTsKICAgICB2b2lkIHBy
b2Nlc3NSZWZlcnJlclBvbGljeShjb25zdCBTdHJpbmcmIHBvbGljeSwgUmVmZXJyZXJQb2xpY3lT
b3VyY2UpOwotICAgIHZvaWQgcHJvY2Vzc01ldGFFbGVtZW50VGhlbWVDb2xvcihjb25zdCBTdHJp
bmcmIHRoZW1lQ29sb3IpOworCisgICAgdm9pZCBtZXRhRWxlbWVudFRoZW1lQ29sb3JDaGFuZ2Vk
KEhUTUxNZXRhRWxlbWVudCYpOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCiAgICAgdm9p
ZCBwcm9jZXNzQ29sb3JTY2hlbWUoY29uc3QgU3RyaW5nJiBjb2xvclNjaGVtZSk7CkBAIC0xNjc1
LDYgKzE2NzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVGl0bGUoY29uc3QgU3RyaW5n
V2l0aERpcmVjdGlvbiYpOwogICAgIHZvaWQgdXBkYXRlQmFzZVVSTCgpOwogCisgICAgV2Vha1B0
cjxIVE1MTWV0YUVsZW1lbnQ+IGRldGVybWluZUFjdGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudCgp
OwogICAgIHZvaWQgdGhlbWVDb2xvckNoYW5nZWQoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZUFj
Y2Vzc0tleUNhY2hlU2xvd0Nhc2UoKTsKQEAgLTE3OTcsNyArMTgwMCw5IEBAIHByaXZhdGU6CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybUNvbnRyb2xsZXI+IG1fZm9ybUNvbnRyb2xsZXI7CiAK
LSAgICBDb2xvciBtX21ldGFFbGVtZW50VGhlbWVDb2xvcjsKKyAgICBDb2xvciBtX2NhY2hlZFRo
ZW1lQ29sb3I7CisgICAgT3B0aW9uYWw8VmVjdG9yPFdlYWtQdHI8SFRNTE1ldGFFbGVtZW50Pj4+
IG1fbWV0YVRoZW1lQ29sb3JFbGVtZW50czsKKyAgICBXZWFrUHRyPEhUTUxNZXRhRWxlbWVudD4g
bV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQ7CiAgICAgQ29sb3IgbV9hcHBsaWNhdGlvbk1h
bmlmZXN0VGhlbWVDb2xvcjsKIAogICAgIENvbG9yIG1fdGV4dENvbG9yIHsgQ29sb3I6OmJsYWNr
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKaW5kZXggYzg5Y2Y4NTU3
ZjYzLi4xZmZkOWYzYWE4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
dGFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5j
cHAKQEAgLTI0LDExICsyNCwxOCBAQAogI2luY2x1ZGUgIkhUTUxNZXRhRWxlbWVudC5oIgogCiAj
aW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxIZWFkRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0
b3IuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5UGFyc2VyLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZUZvckRv
Y3VtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MiwyNCArNTksNzMg
QEAgUmVmPEhUTUxNZXRhRWxlbWVudD4gSFRNTE1ldGFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW0KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1M
TWV0YUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAorYm9vbCBIVE1MTWV0YUVsZW1l
bnQ6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcygpCit7CisgICAgYXV0byYgZG9jdW1lbnQgPSB0aGlz
LT5kb2N1bWVudCgpOworCisgICAgaWYgKCFtX21lZGlhKQorICAgICAgICBtX21lZGlhID0gTWVk
aWFRdWVyeVNldDo6Y3JlYXRlKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWVkaWFB
dHRyKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChk
b2N1bWVudCkpOworCisgICAgT3B0aW9uYWw8UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5bGU7Cisg
ICAgaWYgKGRvY3VtZW50Lmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKKyAgICAgICAgZG9jdW1lbnRT
dHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9yRG9jdW1lbnQoZG9jdW1lbnQpOworCisgICAgU3RyaW5n
IG1lZGlhVHlwZTsKKyAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKQorICAgICAgICAgICAg
bWVkaWFUeXBlID0gZnJhbWVWaWV3LT5tZWRpYVR5cGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
TWVkaWFRdWVyeUV2YWx1YXRvcihtZWRpYVR5cGUsIGRvY3VtZW50LCBkb2N1bWVudFN0eWxlID8g
Jipkb2N1bWVudFN0eWxlIDogbnVsbHB0cikuZXZhbHVhdGUoKm1fbWVkaWEpOworfQorCitjb25z
dCBDb2xvciYgSFRNTE1ldGFFbGVtZW50Ojpjb250ZW50Q29sb3IoKQoreworICAgIGlmICghbV9j
b250ZW50Q29sb3IpCisgICAgICAgIG1fY29udGVudENvbG9yID0gQ1NTUGFyc2VyOjpwYXJzZUNv
bG9yKGNvbnRlbnQoKSk7CisgICAgcmV0dXJuICptX2NvbnRlbnRDb2xvcjsKK30KKwogdm9pZCBI
VE1MTWV0YUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVl
LCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gcmVhc29uKQogewogICAgIEhUTUxFbGVtZW50
OjphdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSwgcmVhc29uKTsKIAot
ICAgIGlmIChuYW1lID09IG5hbWVBdHRyICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG9sZFZhbHVlLCAidGhlbWUtY29sb3IiKSAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobmV3VmFsdWUsICJ0aGVtZS1jb2xvciIpKQotICAgICAgICBkb2N1bWVudCgpLnByb2Nlc3NN
ZXRhRWxlbWVudFRoZW1lQ29sb3IoZW1wdHlTdHJpbmcoKSk7CisgICAgLy8gQ2hhbmdpbmcgYSBt
ZXRhIHRhZyB3aGlsZSBpdCdzIG5vdCBpbiB0aGUgdHJlZSBzaG91bGRuJ3QgaGF2ZSBhbnkgZWZm
ZWN0IG9uIHRoZSBkb2N1bWVudC4KKyAgICBpZiAoIWlzQ29ubmVjdGVkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChuYW1lID09IG5hbWVBdHRyKSB7CisgICAgICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShvbGRWYWx1ZSwgInRoZW1lLWNvbG9yIikgJiYgIWVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5ld1ZhbHVlLCAidGhlbWUtY29sb3IiKSkKKyAgICAg
ICAgICAgIGRvY3VtZW50KCkubWV0YUVsZW1lbnRUaGVtZUNvbG9yQ2hhbmdlZCgqdGhpcyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiB9CiAKIHZvaWQgSFRNTE1ldGFFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICBpZiAobmFtZSA9PSBodHRwX2VxdWl2QXR0cikKKyAgICBpZiAobmFtZSA9PSBu
YW1lQXR0cikgewogICAgICAgICBwcm9jZXNzKCk7Ci0gICAgZWxzZSBpZiAobmFtZSA9PSBjb250
ZW50QXR0cikKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChuYW1lID09IGNvbnRl
bnRBdHRyKSB7CisgICAgICAgIG1fY29udGVudENvbG9yID0gV1RGOjpudWxsb3B0OwogICAgICAg
ICBwcm9jZXNzKCk7Ci0gICAgZWxzZSBpZiAobmFtZSA9PSBuYW1lQXR0cikKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChuYW1lID09IGh0dHBfZXF1aXZBdHRyKSB7CiAgICAgICAg
IHByb2Nlc3MoKTsKLSAgICBlbHNlCi0gICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobmFtZSA9
PSBtZWRpYUF0dHIpIHsKKyAgICAgICAgbV9tZWRpYSA9IG51bGxwdHI7CisgICAgICAgIHByb2Nl
c3MoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIE5vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVz
dWx0IEhUTUxNZXRhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBp
bnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkKQEAgLTg5
LDggKzE0NSw4IEBAIHZvaWQgSFRNTE1ldGFFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJl
bW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlCiB7CiAgICAgSFRNTEVsZW1lbnQ6
OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUp
OwogCi0gICAgaWYgKCFpc0Nvbm5lY3RlZCgpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG5hbWUoKSwgInRoZW1lLWNvbG9yIikpCi0gICAgICAgIG9sZFBhcmVudE9mUmVtb3ZlZFRy
ZWUuZG9jdW1lbnQoKS5wcm9jZXNzTWV0YUVsZW1lbnRUaGVtZUNvbG9yKGVtcHR5U3RyaW5nKCkp
OworICAgIGlmIChyZW1vdmFsVHlwZS5kaXNjb25uZWN0ZWRGcm9tRG9jdW1lbnQgJiYgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSgpLCAidGhlbWUtY29sb3IiKSkKKyAgICAgICAg
b2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5kb2N1bWVudCgpLm1ldGFFbGVtZW50VGhlbWVDb2xvckNo
YW5nZWQoKnRoaXMpOwogfQogCiB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cHJvY2VzcygpCkBAIC0x
MTIsNyArMTY4LDcgQEAgdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnByb2Nlc3MoKQogICAgICAgICBk
b2N1bWVudCgpLnByb2Nlc3NDb2xvclNjaGVtZShjb250ZW50VmFsdWUpOwogI2VuZGlmCiAgICAg
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSgpLCAidGhlbWUtY29s
b3IiKSkKLSAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzTWV0YUVsZW1lbnRUaGVtZUNvbG9yKGNv
bnRlbnRWYWx1ZSk7CisgICAgICAgIGRvY3VtZW50KCkubWV0YUVsZW1lbnRUaGVtZUNvbG9yQ2hh
bmdlZCgqdGhpcyk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbHNlIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lKCksICJmb3JtYXQtZGV0ZWN0aW9uIikpCiAg
ICAgICAgIGRvY3VtZW50KCkucHJvY2Vzc0Zvcm1hdERldGVjdGlvbihjb250ZW50VmFsdWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmgKaW5kZXggMzM1MGYxZTgzNGY4Li5mNTk5
MzkzZTgxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaApAQCAtMjYsNiAr
MjYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbG9yOworY2xhc3MgTWVk
aWFRdWVyeVNldDsKKwogY2xhc3MgSFRNTE1ldGFFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxF
bGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxNZXRhRWxlbWVudCk7CiBw
dWJsaWM6CkBAIC0zNiw2ICszOSwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRvbVN0cmluZyYg
aHR0cEVxdWl2KCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZSgpIGNvbnN0Owog
CisgICAgYm9vbCBtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKTsKKworICAgIGNvbnN0IENvbG9yJiBj
b250ZW50Q29sb3IoKTsKKwogcHJpdmF0ZToKICAgICBIVE1MTWV0YUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKQEAgLTQ2LDYgKzUzLDEwIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikg
ZmluYWw7CiAKICAgICB2b2lkIHByb2Nlc3MoKTsKKworICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0
PiBtX21lZGlhOworCisgICAgT3B0aW9uYWw8Q29sb3I+IG1fY29udGVudENvbG9yOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWV0YUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQu
aWRsCmluZGV4IDcyZTc4MGE4NzYwYi4uYzQ5NGM3YTFkNzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWV0YUVsZW1lbnQuaWRsCkBAIC0yMiw2ICsyMiw3IEBACiBdIGludGVyZmFjZSBIVE1M
TWV0YUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwg
UmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBjb250ZW50OwogICAgIFtDRVJlYWN0aW9ucz1O
b3ROZWVkZWQsIFJlZmxlY3Q9aHR0cF9lcXVpdl0gYXR0cmlidXRlIERPTVN0cmluZyBodHRwRXF1
aXY7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0
cmluZyBtZWRpYTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0g
YXR0cmlidXRlIERPTVN0cmluZyBzY2hlbWU7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM5M2U0MGNhMWY1Yi4uODBjZmE5MGY2Mjk0IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMjEtMDQtMjIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIGBtZWRpYWAgYXR0cmlidXRlIG9uIGA8bWV0YSBu
YW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iLi4uIj5gCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzc0OTkxNjIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9y
Lm1tOgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdUaGVtZUNvbG9yLk1ldGFFbGVtZW50VmFsaWRO
YW1lQW5kQ29sb3IpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VGhlbWVDb2xvci5N
ZXRhRWxlbWVudFZhbGlkTmFtZUFuZENvbG9yQW5kTWVkaWEpOiBBZGRlZC4KKyAgICAgICAgKFRF
U1QuV0tXZWJWaWV3VGhlbWVDb2xvci5NZXRhRWxlbWVudEludmFsaWROYW1lKTogQWRkZWQuCisg
ICAgICAgIChURVNULldLV2ViVmlld1RoZW1lQ29sb3IuTWV0YUVsZW1lbnRJbnZhbGlkQ29sb3Ip
OiBBZGRlZC4KKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VGhlbWVDb2xvci5NZXRhRWxlbWVudElu
dmFsaWRNZWRpYSk6IEFkZGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdUaGVtZUNvbG9yLk1l
dGFFbGVtZW50TXVsdGlwbGVWYWxpZCk6IEFkZGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdU
aGVtZUNvbG9yLk1ldGFFbGVtZW50VmFsaWRTdWJmcmFtZSk6IEFkZGVkLgorICAgICAgICAoLVtX
S1dlYlZpZXdUaGVtZUNvbG9yT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVj
dDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VGhlbWVDb2xvci5L
Vk8pOgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdUaGVtZUNvbG9yLk1ldGFFbGVtZW50T25Mb2Fk
KTogRGVsZXRlZC4KKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VGhlbWVDb2xvci5NZXRhRWxlbWVu
dE11bHRpcGxlVGFncyk6IERlbGV0ZWQuCisKIDIwMjEtMDQtMjYgIERvbiBPbG1zdGVhZCAgPGRv
bi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIE1vZGVybml6ZSBXZWJLaXQg
R0xpYiB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0KaW5kZXggYmYyYTZmMGU0ZDEzLi5m
OTdiNDIzMjE5ZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tXZWJWaWV3VGhlbWVDb2xvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0KQEAgLTQxLDcgKzQxLDcgQEAK
IGNvbnN0ZXhwciBDR0Zsb2F0IHJlZENvbG9yQ29tcG9uZW50c1s0XSA9IHsgMSwgMCwgMCwgMSB9
OwogY29uc3RleHByIENHRmxvYXQgYmx1ZUNvbG9yQ29tcG9uZW50c1s0XSA9IHsgMCwgMCwgMSwg
MSB9OwogCi1URVNUKFdLV2ViVmlld1RoZW1lQ29sb3IsIE1ldGFFbGVtZW50T25Mb2FkKQorVEVT
VChXS1dlYlZpZXdUaGVtZUNvbG9yLCBNZXRhRWxlbWVudFZhbGlkTmFtZUFuZENvbG9yKQogewog
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgRVhQRUNUX1RSVUUoIVt3
ZWJWaWV3IHRoZW1lQ29sb3JdKTsKQEAgLTUxLDIyICs1MSw3OCBAQCBURVNUKFdLV2ViVmlld1Ro
ZW1lQ29sb3IsIE1ldGFFbGVtZW50T25Mb2FkKQogICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBh
ZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CiAg
ICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5n
ZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7CiAgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFs
VG9Db2xvcihbd2ViVmlldyB0aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOwot
Ci0gICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxs
SW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9J25vdC10aGVtZS1jb2xvcicg
Y29udGVudD0ncmVkJz4iXTsKLQotICAgIEVYUEVDVF9UUlVFKCFbd2ViVmlldyB0aGVtZUNvbG9y
XSk7CiB9CiAKLVRFU1QoV0tXZWJWaWV3VGhlbWVDb2xvciwgTXVsdGlwbGVNZXRhRWxlbWVudHMp
CitURVNUKFdLV2ViVmlld1RoZW1lQ29sb3IsIE1ldGFFbGVtZW50VmFsaWROYW1lQW5kQ29sb3JB
bmRNZWRpYSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAgIEVY
UEVDVF9UUlVFKCFbd2ViVmlldyB0aGVtZUNvbG9yXSk7CiAKLSAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1Bh
aW50OkAiPG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J3JlZCc+PG1ldGEgbmFtZT0n
dGhlbWUtY29sb3InIGNvbnRlbnQ9J2JsdWUnPiJdOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6
QCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVkJyBtZWRpYT0nc2NyZWVuJz4i
XTsKIAogICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0
ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAgYXV0byBibHVlQ29sb3IgPSBhZG9w
dENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIGJsdWVDb2xvckNvbXBvbmVu
dHMpKTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHRoZW1l
Q29sb3JdLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOworICAgIGF1dG8gcmVkQ29sb3IgPSBh
ZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9u
ZW50cykpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdGhl
bWVDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKK30KKworVEVTVChXS1dlYlZpZXdU
aGVtZUNvbG9yLCBNZXRhRWxlbWVudEludmFsaWROYW1lKQoreworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApXSk7CisgICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3IHRoZW1lQ29sb3Jd
KTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRp
bEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSdub3QtdGhlbWUtY29s
b3InIGNvbnRlbnQ9J2JsdWUnPjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250ZW50PSdyZWQn
PiJdOworCisgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3Jl
YXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRv
cHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVu
dHMpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHRoZW1l
Q29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3VGhl
bWVDb2xvciwgTWV0YUVsZW1lbnRJbnZhbGlkQ29sb3IpCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgdGhlbWVDb2xvcl0p
OworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGls
QWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBj
b250ZW50PSdpbnZhbGlkJz48bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVkJz4i
XTsKKworICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0
ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byByZWRDb2xvciA9IGFkb3B0
Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRz
KSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB0aGVtZUNv
bG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworfQorCitURVNUKFdLV2ViVmlld1RoZW1l
Q29sb3IsIE1ldGFFbGVtZW50SW52YWxpZE1lZGlhKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApXSk7CisgICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3IHRoZW1lQ29sb3JdKTsK
KworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFs
bEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29u
dGVudD0nYmx1ZScgbWVkaWE9J2ludmFsaWQnPjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250
ZW50PSdyZWQnIG1lZGlhPSdzY3JlZW4nPiJdOworCisgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9
IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsK
KyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNl
LmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1
YWxUb0NvbG9yKFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7
Cit9CisKK1RFU1QoV0tXZWJWaWV3VGhlbWVDb2xvciwgTWV0YUVsZW1lbnRNdWx0aXBsZVZhbGlk
KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgRVhQRUNUX1RS
VUUoIVt3ZWJWaWV3IHRoZW1lQ29sb3JdKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8
ZGl2PjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250ZW50PSdyZWQnPjwvZGl2PjxtZXRhIG5h
bWU9J3RoZW1lLWNvbG9yJyBjb250ZW50PSdibHVlJz4iXTsKKworICAgIGF1dG8gc1JHQkNvbG9y
U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VT
UkdCKSk7CisgICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29s
b3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dD
b2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB0aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5n
ZXQoKSkpOworfQorCitURVNUKFdLV2ViVmlld1RoZW1lQ29sb3IsIE1ldGFFbGVtZW50VmFsaWRT
dWJmcmFtZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIEVY
UEVDVF9UUlVFKCFbd2ViVmlldyB0aGVtZUNvbG9yXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1Bh
aW50OkAiPGlmcmFtZSBzcmNkb2M9XCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0n
Ymx1ZSc+XCI+PC9pZnJhbWU+PG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J3JlZCc+
Il07CisKKyAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9w
dENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50
cykpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdGhlbWVD
b2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKIH0KIAogQGludGVyZmFjZSBXS1dlYlZp
ZXdUaGVtZUNvbG9yT2JzZXJ2ZXIgOiBOU09iamVjdApAQCAtMTA1LDggKzE2MSwxMyBAQCAtICh2
b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDoo
aWQpb2JqZWN0IGNoYW5nZTooTgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKFtf
c3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWNvbnRlbnQtY2hhbmdlIl0pIHsKLSAgICAg
ICAgX3N0YXRlID0gQCJhZnRlci1jb250ZW50LWNoYW5nZSI7CisgICAgaWYgKFtfc3RhdGUgaXNF
cXVhbFRvU3RyaW5nOkAiYmVmb3JlLWNvbnRlbnQtY2hhbmdlLWludmFsaWQiXSkgeworICAgICAg
ICBfc3RhdGUgPSBAImFmdGVyLWNvbnRlbnQtY2hhbmdlLWludmFsaWQiOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWNv
bnRlbnQtY2hhbmdlLXZhbGlkIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jb250ZW50
LWNoYW5nZS12YWxpZCI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyMCw2ICsxODEs
MjYgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGgg
b2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1pbnZhbGlkLW1lZGlhLWFk
ZGVkIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1pbnZhbGlkLW1lZGlhLWFkZGVkIjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmlu
ZzpAImJlZm9yZS1tZWRpYS1jaGFuZ2VkLXZhbGlkIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJh
ZnRlci1tZWRpYS1jaGFuZ2VkLXZhbGlkIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1tZWRpYS1zdGF0ZS1jaGFuZ2Vk
Il0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1tZWRpYS1zdGF0ZS1jaGFuZ2VkIjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpA
ImJlZm9yZS1ub2RlLWluc2VydGVkIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1ub2Rl
LWluc2VydGVkIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChbX3N0YXRlIGlz
RXF1YWxUb1N0cmluZzpAImJlZm9yZS1ub2RlLXJlbW92ZWQiXSkgewogICAgICAgICBfc3RhdGUg
PSBAImFmdGVyLW5vZGUtcmVtb3ZlZCI7CiAgICAgICAgIHJldHVybjsKQEAgLTE0NiwxMCArMjI3
LDE2IEBAIFRFU1QoV0tXZWJWaWV3VGhlbWVDb2xvciwgS1ZPKQogICAgIEVYUEVDVF9OU1NUUklO
R19FUSgiYWZ0ZXItbG9hZCIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKICAgICBFWFBF
Q1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29sb3Is
IHJlZENvbG9yLmdldCgpKSk7CiAKLSAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0YXRlOkAi
YmVmb3JlLWNvbnRlbnQtY2hhbmdlIl07CisgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0
ZTpAImJlZm9yZS1jb250ZW50LWNoYW5nZS1pbnZhbGlkIl07CisgICAgW3dlYlZpZXcgb2JqZWN0
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGEnKS5z
ZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnLCAnaW52YWxpZCcpIl07CisgICAgW3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXIt
Y29udGVudC1jaGFuZ2UtaW52YWxpZCIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAg
ICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgdGhlbWVDb2xvcl0pOworCisgICAgW3RoZW1lQ29sb3JP
YnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1jb250ZW50LWNoYW5nZS12YWxpZCJdOwogICAgIFt3
ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdtZXRhJykuc2V0QXR0cmlidXRlKCdjb250ZW50JywgJ2JsdWUnKSJdOwogICAgIFt3ZWJW
aWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKLSAgICBFWFBFQ1RfTlNTVFJJTkdf
RVEoImFmdGVyLWNvbnRlbnQtY2hhbmdlIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwor
ICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItY29udGVudC1jaGFuZ2UtdmFsaWQiLCBbdGhl
bWVDb2xvck9ic2VydmVyIHN0YXRlXSk7CiAgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlldyB0aGVtZUNvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsKIAog
ICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtbmFtZS1jaGFuZ2Utbm90
LXRoZW1lLWNvbG9yIl07CkBAIC0xNjQsNiArMjUxLDMwIEBAIFRFU1QoV0tXZWJWaWV3VGhlbWVD
b2xvciwgS1ZPKQogICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItbmFtZS1jaGFuZ2UtdGhl
bWUtY29sb3IiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7CiAgICAgRVhQRUNUX1RSVUUo
Q0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB0aGVtZUNvbG9yXS5DR0NvbG9yLCBibHVlQ29s
b3IuZ2V0KCkpKTsKIAorICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUt
aW52YWxpZC1tZWRpYS1hZGRlZCJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZXRhJykuc2V0QXR0cmlidXRlKCdt
ZWRpYScsICdpbnZhbGlkJykiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlv
blVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1pbnZhbGlkLW1lZGlhLWFk
ZGVkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKCFbd2Vi
VmlldyBfdGhlbWVDb2xvcl0pOworCisgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpA
ImJlZm9yZS1tZWRpYS1jaGFuZ2VkLXZhbGlkIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGEnKS5zZXRBdHRy
aWJ1dGUoJ21lZGlhJywgJ3NjcmVlbicpIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVz
ZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItbWVkaWEtY2hh
bmdlZC12YWxpZCIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJV
RShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IF90aGVtZUNvbG9yXS5DR0NvbG9yLCBibHVl
Q29sb3IuZ2V0KCkpKTsKKworICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZv
cmUtbWVkaWEtc3RhdGUtY2hhbmdlZCJdOworICAgIFt3ZWJWaWV3IHNldE1lZGlhVHlwZTpAInBy
aW50Il07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAg
IEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItbWVkaWEtc3RhdGUtY2hhbmdlZCIsIFt0aGVtZUNv
bG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3RoZW1lQ29s
b3JdKTsKKworICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtbm9kZS1p
bnNlcnRlZCJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZXRhJykuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVi
ZWdpbicsIFwiPG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J3JlZCc+XCIpIl07Cisg
ICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9O
U1NUUklOR19FUSgiYWZ0ZXItbm9kZS1pbnNlcnRlZCIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3Rh
dGVdKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IF90aGVt
ZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworCiAgICAgW3RoZW1lQ29sb3JPYnNl
cnZlciBzZXRTdGF0ZTpAImJlZm9yZS1ub2RlLXJlbW92ZWQiXTsKICAgICBbd2ViVmlldyBvYmpl
Y3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YScp
LnJlbW92ZSgpIl07CiAgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVd
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428044</attachid>
            <date>2021-05-07 15:34:06 -0700</date>
            <delta_ts>2021-05-10 10:20:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224389-20210507163406.patch</filename>
            <type>text/plain</type>
            <size>26745</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NmZlNDQyNjkzYjU5NmJkNzE3NzQ0Y2FmYTVjYzM4MzlmODliMzA0Li4w
OTFlYjc5NDFlZjFiODc5NzgwZWY5OWZlNjBlMDhhNTdhZmIwZmMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTUgQEAKKzIwMjEtMDUtMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIGBtZWRpYWAgYXR0cmlidXRlIG9uIGA8bWV0
YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iLi4uIj5gCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzODkKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzc0OTkxNjIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAg
ICAgICBUZXN0czogV0tXZWJWaWV3VGhlbWVDb2xvci5NZXRhRWxlbWVudFZhbGlkTmFtZUFuZENv
bG9yQW5kTWVkaWEKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1RoZW1lQ29sb3IuTWV0YUVsZW1l
bnRJbnZhbGlkTmFtZQorICAgICAgICAgICAgICAgV0tXZWJWaWV3VGhlbWVDb2xvci5NZXRhRWxl
bWVudEludmFsaWRDb2xvcgorICAgICAgICAgICAgICAgV0tXZWJWaWV3VGhlbWVDb2xvci5NZXRh
RWxlbWVudEludmFsaWRNZWRpYQorICAgICAgICAgICAgICAgV0tXZWJWaWV3VGhlbWVDb2xvci5N
ZXRhRWxlbWVudE11bHRpcGxlVmFsaWQKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1RoZW1lQ29s
b3IuTWV0YUVsZW1lbnRWYWxpZFN1YmZyYW1lCisgICAgICAgICAgICAgICBXS1dlYlZpZXdUaGVt
ZUNvbG9yLktWTworCisgICAgICAgICogaHRtbC9IVE1MTWV0YUVsZW1lbnQuaWRsOgorICAgICAg
ICAqIGh0bWwvSFRNTE1ldGFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWV0YUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNZWRpYSk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6bWVkaWFNYXRjaGVzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0
YUVsZW1lbnQ6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1ldGFFbGVtZW50Ojpjb250ZW50Q29sb3IpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZXRhRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWV0YUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZXRhRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWV0YUVsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYSByZWZs
ZWN0ZWQgYG1lZGlhYCBhdHRyaWJ1dGUuIENhY2hlIHRoZSBtb3N0IHJlY2VudGx5IHBhcnNlZCBg
bWVkaWFgICh3aGljaAorICAgICAgICBiZWNvbWVzIGEgYFJlZjxNZWRpYVF1ZXJ5U2V0PmApIGFu
ZCBgY29udGVudGAgKHdoaWNoIGNhbiBiZWNvbWUgYSBgQ29sb3JgKSB0byBhdm9pZCBkb2luZwor
ICAgICAgICByZXBlYXRlZCB3b3JrIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIGFjdGl2ZSB0aGVtZSBj
b2xvciBhZnRlciBtZWRpYSBzdGF0ZSBjaGFuZ2VzLiBOb3RpZnkgdGhlCisgICAgICAgIGBEb2N1
bWVudGAgd2hlbmV2ZXIgdGhlIGBuYW1lYCBvciBgY29udGVudGAgb3IgYG1lZGlhYCBhdHRyaWJ1
dGUgY2hhbmdlcyBpZiB0aGUgbmV3IG9yIG9sZAorICAgICAgICB2YWx1ZSB3aWxsIGJlIG9yIHdv
dWxkIGhhdmUgYmVlbiByZWxhdGVkIHRvIGNhbGN1bGF0aW5nIHRoZSB0aGVtZSBjb2xvci4KKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRo
ZW1lQ29sb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dGhlbWVDb2xvcik6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6Om1ldGFFbGVtZW50VGhlbWVDb2xvckNoYW5nZWQpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZXRlcm1pbmVBY3RpdmVUaGVtZUNvbG9yTWV0
YUVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aGVtZUNvbG9y
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlRWxlbWVudHNBZmZl
Y3RlZEJ5TWVkaWFRdWVyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNz
TWV0YUVsZW1lbnRUaGVtZUNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgTWFrZSBjYWxjdWxhdGlu
ZyB0aGUgdGhlbWUgY29sb3IgaW50byBhIHR3byBzdGFnZSBwcm9jZXNzOgorICAgICAgICAgMS4g
ZmluZCBhbGwgYDxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIj5gIHRoYXQgaGF2ZSBhIHZhbGlkIENT
UyBjb2xvciBgY29udGVudGAgaW4gdHJlZSBvcmRlcgorICAgICAgICAgMi4gcmV0dXJuIHRoZSBg
SFRNTE1ldGFFbGVtZW50Ojpjb250ZW50Q29sb3JgIG9mIHRoZSBmaXJzdCBpdGVtIGZyb20gc3Rl
cCAxIHRoYXQgYEhUTUxNZXRhRWxlbWVudDo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzYAorICAgICAg
ICBUaGlzIGlzIGRvbmUgc28gdGhhdCBgRG9jdW1lbnQ6OnVwZGF0ZUVsZW1lbnRzQWZmZWN0ZWRC
eU1lZGlhUXVlcmllc2AgZG9lc24ndCBoYXZlIHRvIHJlcGVhdAorICAgICAgICBzdGVwIDEgZWFj
aCB0aW1lIGl0J3MgcnVuICh3aGljaCBjYW4gYmUgb2Z0ZW4pIGFuZCBpbnN0ZWFkIG9ubHkgbmVl
ZHMgdG8gaXRlcmF0ZSBhIChsaWtlbHkKKyAgICAgICAgdmVyeSBzbWFsbCkgbGlzdCBpbiBzdGVw
IDIuIFRoZSBhY3Rpb25zL3NpdHVhdGlvbnMgbGlzdGVkIGFib3ZlIHdvdWxkIGNsZWFyIHRoZSBj
YWNoZWQgZGF0YQorICAgICAgICBmcm9tIGJvdGggc3RlcHMsIG1lYW5pbmcgdGhhdCB0aGUgbmV4
dCBgRG9jdW1lbnQ6OnRoZW1lQ29sb3JgIHdpbGwgZG8gYSBmdWxsIHJlY2FsY3VsYXRpb24uCisg
ICAgICAgIE5vdGlmeSB0aGUgVUlQcm9jZXNzIG9mIGEgY2hhbmdlIGluIHRoZW1lIGNvbG9yIGlm
IHRoZSByZXN1bHQgb2Ygc3RlcCAyIGlzIGRpZmZlcmVudCBmcm9tIGEKKyAgICAgICAgcHJldmlv
dXNseSBjYWNoZWQgcmVzdWx0IChpZiBzZXQpLgorCiAyMDIxLTA1LTA3ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gU2V0IHRoZSAtaXNT
b3VyY2VFZGl0YWJsZSBwcm9wZXJ0eSB3aGVuIHByZXNlbnRpbmcgd2VicGFnZSB0cmFuc2xhdGlv
biBwb3B1cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZDkwZGIyODE3ZGM3MTIzOWNiZjg5
OTEwZWFlYzA0MTc1YzVhNTBhNC4uODFmY2Q5Mjk3MDIyOWFjMzAzODYwMjNhZmZhZWIxM2NhMmFj
YjNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAKICNpbmNs
dWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxNZXRhRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MUGljdHVyZUVsZW1lbnQuaCIKQEAgLTk2Miw2ICs5NjMs
MjAgQEAgU3RyaW5nIERvY3VtZW50Ojpjb21wYXRNb2RlKCkgY29uc3QKICAgICByZXR1cm4gaW5R
dWlya3NNb2RlKCkgPyAiQmFja0NvbXBhdCIgOiAiQ1NTMUNvbXBhdCI7CiB9CiAKK2NvbnN0IENv
bG9yJiBEb2N1bWVudDo6dGhlbWVDb2xvcigpCit7CisgICAgaWYgKCFtX2NhY2hlZFRoZW1lQ29s
b3IuaXNWYWxpZCgpKSB7CisgICAgICAgIGlmICghbV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1l
bnQpCisgICAgICAgICAgICBtX2FjdGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudCA9IGRldGVybWlu
ZUFjdGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudCgpOworICAgICAgICBpZiAobV9hY3RpdmVUaGVt
ZUNvbG9yTWV0YUVsZW1lbnQpCisgICAgICAgICAgICBtX2NhY2hlZFRoZW1lQ29sb3IgPSBtX2Fj
dGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudC0+Y29udGVudENvbG9yKCk7CisKKyAgICAgICAgaWYg
KCFtX2NhY2hlZFRoZW1lQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICAgICAgbV9jYWNoZWRUaGVt
ZUNvbG9yID0gbV9hcHBsaWNhdGlvbk1hbmlmZXN0VGhlbWVDb2xvcjsKKyAgICB9CisgICAgcmV0
dXJuIG1fY2FjaGVkVGhlbWVDb2xvcjsKK30KKwogdm9pZCBEb2N1bWVudDo6cmVzZXRMaW5rQ29s
b3IoKQogewogICAgIG1fbGlua0NvbG9yID0gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChD
U1NWYWx1ZVdlYmtpdExpbmssIHN0eWxlQ29sb3JPcHRpb25zKG51bGxwdHIpKTsKQEAgLTM4NDYs
MTYgKzM4NjEsNDAgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKQog
ICAgIH0KIH0KIAotdm9pZCBEb2N1bWVudDo6cHJvY2Vzc01ldGFFbGVtZW50VGhlbWVDb2xvcihj
b25zdCBTdHJpbmcmIHRoZW1lQ29sb3JTdHJpbmcpCit2b2lkIERvY3VtZW50OjptZXRhRWxlbWVu
dFRoZW1lQ29sb3JDaGFuZ2VkKEhUTUxNZXRhRWxlbWVudCYgbWV0YUVsZW1lbnQpCiB7Ci0gICAg
YXV0byBvbGRUaGVtZUNvbG9yID0gdGhlbWVDb2xvcigpOwotICAgIG1fbWV0YUVsZW1lbnRUaGVt
ZUNvbG9yID0gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHRoZW1lQ29sb3JTdHJpbmcpOworICAgIC8v
IElmIHRoZSBjdXJyZW50IGNvbnRlbnQgY29sb3IgaXNuJ3QgdmFsaWQgYW5kIGl0IHdhc24ndCBw
cmV2aW91c2x5IGluIHRoZSBsaXN0IG9mIGVsZW1lbnRzCisgICAgLy8gd2l0aCBhIHZhbGlkIGNv
bnRlbnQgY29sb3IsIGRvbid0IGJvdGhlciByZWNhbGN1bGF0aW5nIGBtX21ldGFUaGVtZUNvbG9y
RWxlbWVudHNgLgorICAgIGlmICghbWV0YUVsZW1lbnQuY29udGVudENvbG9yKCkuaXNWYWxpZCgp
ICYmIG1fbWV0YVRoZW1lQ29sb3JFbGVtZW50cyAmJiAhbV9tZXRhVGhlbWVDb2xvckVsZW1lbnRz
LT5jb250YWlucygmbWV0YUVsZW1lbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG9s
ZFRoZW1lQ29sb3IgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FjaGVkVGhlbWVDb2xvciwgQ29sb3IoKSk7
CisgICAgbV9tZXRhVGhlbWVDb2xvckVsZW1lbnRzID0gV1RGOjpudWxsb3B0OworICAgIG1fYWN0
aXZlVGhlbWVDb2xvck1ldGFFbGVtZW50ID0gbnVsbHB0cjsKICAgICBpZiAodGhlbWVDb2xvcigp
ID09IG9sZFRoZW1lQ29sb3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIHRoZW1lQ29sb3JDaGFu
Z2VkKCk7CiB9CiAKK1dlYWtQdHI8SFRNTE1ldGFFbGVtZW50PiBEb2N1bWVudDo6ZGV0ZXJtaW5l
QWN0aXZlVGhlbWVDb2xvck1ldGFFbGVtZW50KCkKK3sKKyAgICBpZiAoIW1fbWV0YVRoZW1lQ29s
b3JFbGVtZW50cykgeworICAgICAgICBWZWN0b3I8V2Vha1B0cjxIVE1MTWV0YUVsZW1lbnQ+PiBt
ZXRhVGhlbWVDb2xvckVsZW1lbnRzOworICAgICAgICBmb3IgKGF1dG8mIG1ldGFFbGVtZW50IDog
ZGVzY2VuZGFudHNPZlR5cGU8SFRNTE1ldGFFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtZXRhRWxlbWVudC5uYW1lKCksICJ0
aGVtZS1jb2xvciIpICYmIG1ldGFFbGVtZW50LmNvbnRlbnRDb2xvcigpLmlzVmFsaWQoKSkKKyAg
ICAgICAgICAgICAgICBtZXRhVGhlbWVDb2xvckVsZW1lbnRzLmFwcGVuZChtYWtlV2Vha1B0ciht
ZXRhRWxlbWVudCkpOworICAgICAgICB9CisgICAgICAgIG1fbWV0YVRoZW1lQ29sb3JFbGVtZW50
cyA9IFdURk1vdmUobWV0YVRoZW1lQ29sb3JFbGVtZW50cyk7CisgICAgfQorCisgICAgZm9yIChh
dXRvJiBtZXRhRWxlbWVudCA6ICptX21ldGFUaGVtZUNvbG9yRWxlbWVudHMpIHsKKyAgICAgICAg
aWYgKG1ldGFFbGVtZW50ICYmIG1ldGFFbGVtZW50LT5jb250ZW50Q29sb3IoKS5pc1ZhbGlkKCkg
JiYgbWV0YUVsZW1lbnQtPm1lZGlhQXR0cmlidXRlTWF0Y2hlcygpKQorICAgICAgICAgICAgcmV0
dXJuIG1ldGFFbGVtZW50OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogdm9pZCBE
b2N1bWVudDo6dGhlbWVDb2xvckNoYW5nZWQoKQogewogICAgIHNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKHsgfSk7CkBAIC00MTcwLDcgKzQyMDksNyBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzUmVm
ZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3ksIFJlZmVycmVyUG9saWN5U291cmNlCiAK
IHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NBcHBsaWNhdGlvbk1hbmlmZXN0KGNvbnN0IEFwcGxpY2F0
aW9uTWFuaWZlc3QmIGFwcGxpY2F0aW9uTWFuaWZlc3QpCiB7Ci0gICAgYXV0byBvbGRUaGVtZUNv
bG9yID0gdGhlbWVDb2xvcigpOworICAgIGF1dG8gb2xkVGhlbWVDb2xvciA9IHN0ZDo6ZXhjaGFu
Z2UobV9jYWNoZWRUaGVtZUNvbG9yLCBDb2xvcigpKTsKICAgICBtX2FwcGxpY2F0aW9uTWFuaWZl
c3RUaGVtZUNvbG9yID0gYXBwbGljYXRpb25NYW5pZmVzdC50aGVtZUNvbG9yOwogICAgIGlmICh0
aGVtZUNvbG9yKCkgPT0gb2xkVGhlbWVDb2xvcikKICAgICAgICAgcmV0dXJuOwpAQCAtNDM1Niw2
ICs0Mzk1LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUVsZW1lbnRzQWZmZWN0ZWRCeU1lZGlh
UXVlcmllcygpCiB7CiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2Ny
aXB0RGlzYWxsb3dlZFNjb3BlOwogCisgICAgaWYgKGF1dG8gYWN0aXZlVGhlbWVDb2xvckVsZW1l
bnQgPSBkZXRlcm1pbmVBY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQoKTsgbV9hY3RpdmVUaGVt
ZUNvbG9yTWV0YUVsZW1lbnQgIT0gYWN0aXZlVGhlbWVDb2xvckVsZW1lbnQpIHsKKyAgICAgICAg
YXV0byBvbGRUaGVtZUNvbG9yID0gc3RkOjpleGNoYW5nZShtX2NhY2hlZFRoZW1lQ29sb3IsIENv
bG9yKCkpOworICAgICAgICBtX2FjdGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudCA9IFdURk1vdmUo
YWN0aXZlVGhlbWVDb2xvckVsZW1lbnQpOworICAgICAgICBpZiAodGhlbWVDb2xvcigpICE9IG9s
ZFRoZW1lQ29sb3IpCisgICAgICAgICAgICB0aGVtZUNvbG9yQ2hhbmdlZCgpOworICAgIH0KKwog
ICAgIC8vIEZJWE1FOiBjb3B5VG9WZWN0b3IgZG9lc24ndCB3b3JrIHdpdGggV2Vha0hhc2hTZXQK
ICAgICBWZWN0b3I8UmVmPEhUTUxJbWFnZUVsZW1lbnQ+PiBpbWFnZXM7CiAgICAgaW1hZ2VzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobV9keW5hbWljTWVkaWFRdWVyeURlcGVuZGVudEltYWdlcy5j
b21wdXRlU2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNGEwZmRkNTIwMGE2MGY0NTg5
MzRjNGU0NDUwNGI4MGI3NTQyMmNjMC4uMzYxYzlmODZhMDM3ZGQ2ZjRhNGFjMzA3YjBhNDVmZmUy
N2U3YWE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1OCw2ICsxNTgsNyBAQCBjbGFzcyBI
VE1MSUZyYW1lRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFw
RWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBIVE1MTWV0YUVsZW1lbnQ7
CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSGlnaGxpZ2h0UmVnaXN0ZXI7CiBjbGFz
cyBIaXRUZXN0TG9jYXRpb247CkBAIC03NDEsNyArNzQyLDcgQEAgcHVibGljOgogICAgIFNlY29u
ZHMgdGltZVNpbmNlRG9jdW1lbnRDcmVhdGlvbigpIGNvbnN0IHsgcmV0dXJuIE1vbm90b25pY1Rp
bWU6Om5vdygpIC0gbV9kb2N1bWVudENyZWF0aW9uVGltZTsgfTsKICNlbmRpZgogCi0gICAgY29u
c3QgQ29sb3ImIHRoZW1lQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX21ldGFFbGVtZW50VGhlbWVD
b2xvci5pc1ZhbGlkKCkgPyBtX21ldGFFbGVtZW50VGhlbWVDb2xvciA6IG1fYXBwbGljYXRpb25N
YW5pZmVzdFRoZW1lQ29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgdGhlbWVDb2xvcigpOwogCiAg
ICAgY29uc3QgQ29sb3ImIHNhbXBsZWRQYWdlVG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3Nh
bXBsZWRQYWdlVG9wQ29sb3I7IH0KIApAQCAtOTEyLDcgKzkxMyw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHByb2Nlc3NEaXNhYmxlZEFkYXB0YXRpb25zKGNvbnN0IFN0cmluZyYgYWRhcHRhdGlvbnMp
OwogICAgIHZvaWQgdXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKTsKICAgICB2b2lkIHByb2Nlc3NS
ZWZlcnJlclBvbGljeShjb25zdCBTdHJpbmcmIHBvbGljeSwgUmVmZXJyZXJQb2xpY3lTb3VyY2Up
OwotICAgIHZvaWQgcHJvY2Vzc01ldGFFbGVtZW50VGhlbWVDb2xvcihjb25zdCBTdHJpbmcmIHRo
ZW1lQ29sb3IpOworCisgICAgdm9pZCBtZXRhRWxlbWVudFRoZW1lQ29sb3JDaGFuZ2VkKEhUTUxN
ZXRhRWxlbWVudCYpOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCiAgICAgdm9pZCBwcm9j
ZXNzQ29sb3JTY2hlbWUoY29uc3QgU3RyaW5nJiBjb2xvclNjaGVtZSk7CkBAIC0xNjcyLDYgKzE2
NzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERp
cmVjdGlvbiYpOwogICAgIHZvaWQgdXBkYXRlQmFzZVVSTCgpOwogCisgICAgV2Vha1B0cjxIVE1M
TWV0YUVsZW1lbnQ+IGRldGVybWluZUFjdGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudCgpOwogICAg
IHZvaWQgdGhlbWVDb2xvckNoYW5nZWQoKTsKIAogICAgIHZvaWQgZGV0ZXJtaW5lU2FtcGxlZFBh
Z2VUb3BDb2xvcigpOwpAQCAtMTc5NCw3ICsxNzk3LDkgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGb3JtQ29udHJvbGxlcj4gbV9mb3JtQ29udHJvbGxlcjsKIAotICAgIENvbG9y
IG1fbWV0YUVsZW1lbnRUaGVtZUNvbG9yOworICAgIENvbG9yIG1fY2FjaGVkVGhlbWVDb2xvcjsK
KyAgICBPcHRpb25hbDxWZWN0b3I8V2Vha1B0cjxIVE1MTWV0YUVsZW1lbnQ+Pj4gbV9tZXRhVGhl
bWVDb2xvckVsZW1lbnRzOworICAgIFdlYWtQdHI8SFRNTE1ldGFFbGVtZW50PiBtX2FjdGl2ZVRo
ZW1lQ29sb3JNZXRhRWxlbWVudDsKICAgICBDb2xvciBtX2FwcGxpY2F0aW9uTWFuaWZlc3RUaGVt
ZUNvbG9yOwogCiAgICAgQ29sb3IgbV9zYW1wbGVkUGFnZVRvcENvbG9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCmluZGV4IGM4OWNmODU1N2Y2MzVkNjA4NTkyNzIyYTFh
NzYzNGUzNjc4NzAxNWIuLjBmY2Q5NmQyMzNlZmFjOWQwNjQ2OTQyMWQwM2M3YmYwOGE5MzFjNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKQEAgLTI0LDExICsyNCwx
OCBAQAogI2luY2x1ZGUgIkhUTUxNZXRhRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQXR0cmlidXRl
LmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkhUTUxIZWFkRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk1l
ZGlhTGlzdC5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKKyNpbmNsdWRlICJN
ZWRpYVF1ZXJ5UGFyc2VyLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgorI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MiwyNCArNTksNzIgQEAgUmVmPEhUTUxNZXRhRWxl
bWVudD4gSFRNTE1ldGFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW0KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MTWV0YUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAorYm9vbCBIVE1MTWV0YUVsZW1lbnQ6Om1lZGlhQXR0cmlidXRl
TWF0Y2hlcygpCit7CisgICAgYXV0byYgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworCisg
ICAgaWYgKCFtX21lZGlhKQorICAgICAgICBtX21lZGlhID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRl
KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWVkaWFBdHRyKS5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOworCisgICAg
T3B0aW9uYWw8UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5bGU7CisgICAgaWYgKGRvY3VtZW50Lmhh
c0xpdmluZ1JlbmRlclRyZWUoKSkKKyAgICAgICAgZG9jdW1lbnRTdHlsZSA9IFN0eWxlOjpyZXNv
bHZlRm9yRG9jdW1lbnQoZG9jdW1lbnQpOworCisgICAgU3RyaW5nIG1lZGlhVHlwZTsKKyAgICBp
ZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBm
cmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKQorICAgICAgICAgICAgbWVkaWFUeXBlID0gZnJhbWVW
aWV3LT5tZWRpYVR5cGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRv
cihtZWRpYVR5cGUsIGRvY3VtZW50LCBkb2N1bWVudFN0eWxlID8gJipkb2N1bWVudFN0eWxlIDog
bnVsbHB0cikuZXZhbHVhdGUoKm1fbWVkaWEpOworfQorCitjb25zdCBDb2xvciYgSFRNTE1ldGFF
bGVtZW50Ojpjb250ZW50Q29sb3IoKQoreworICAgIGlmICghbV9jb250ZW50Q29sb3IpCisgICAg
ICAgIG1fY29udGVudENvbG9yID0gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbnRlbnQoKSk7Cisg
ICAgcmV0dXJuICptX2NvbnRlbnRDb2xvcjsKK30KKwogdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OmF0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmlu
ZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmlj
YXRpb25SZWFzb24gcmVhc29uKQogewogICAgIEhUTUxFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSwgcmVhc29uKTsKIAotICAgIGlmIChuYW1lID09IG5h
bWVBdHRyICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG9sZFZhbHVlLCAidGhlbWUt
Y29sb3IiKSAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmV3VmFsdWUsICJ0aGVt
ZS1jb2xvciIpKQotICAgICAgICBkb2N1bWVudCgpLnByb2Nlc3NNZXRhRWxlbWVudFRoZW1lQ29s
b3IoZW1wdHlTdHJpbmcoKSk7CisgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobmFtZSA9PSBuYW1lQXR0cikgeworICAgICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uob2xkVmFsdWUsICJ0aGVtZS1jb2xvciIpICYmICFlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuZXdWYWx1ZSwgInRoZW1lLWNvbG9yIikpCisgICAgICAg
ICAgICBkb2N1bWVudCgpLm1ldGFFbGVtZW50VGhlbWVDb2xvckNoYW5nZWQoKnRoaXMpOworICAg
ICAgICByZXR1cm47CisgICAgfQogfQogCiB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgaWYgKG5hbWUgPT0gaHR0cF9lcXVpdkF0dHIpCisgICAgaWYgKG5hbWUgPT0gbmFt
ZUF0dHIpIHsKICAgICAgICAgcHJvY2VzcygpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gY29udGVu
dEF0dHIpCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobmFtZSA9PSBjb250ZW50
QXR0cikgeworICAgICAgICBtX2NvbnRlbnRDb2xvciA9IFdURjo6bnVsbG9wdDsKICAgICAgICAg
cHJvY2VzcygpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gbmFtZUF0dHIpCisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAobmFtZSA9PSBodHRwX2VxdWl2QXR0cikgewogICAgICAgICBw
cm9jZXNzKCk7Ci0gICAgZWxzZQotICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG5hbWUgPT0g
bWVkaWFBdHRyKSB7CisgICAgICAgIG1fbWVkaWEgPSBudWxscHRyOworICAgICAgICBwcm9jZXNz
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3Vs
dCBIVE1MTWV0YUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5z
ZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpCkBAIC04OSw4
ICsxNDQsOCBAQCB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1v
dmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZQogewogICAgIEhUTUxFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsK
IAotICAgIGlmICghaXNDb25uZWN0ZWQoKSAmJiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lKCksICJ0aGVtZS1jb2xvciIpKQotICAgICAgICBvbGRQYXJlbnRPZlJlbW92ZWRUcmVl
LmRvY3VtZW50KCkucHJvY2Vzc01ldGFFbGVtZW50VGhlbWVDb2xvcihlbXB0eVN0cmluZygpKTsK
KyAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50ICYmIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUoKSwgInRoZW1lLWNvbG9yIikpCisgICAgICAgIG9s
ZFBhcmVudE9mUmVtb3ZlZFRyZWUuZG9jdW1lbnQoKS5tZXRhRWxlbWVudFRoZW1lQ29sb3JDaGFu
Z2VkKCp0aGlzKTsKIH0KIAogdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnByb2Nlc3MoKQpAQCAtMTEy
LDcgKzE2Nyw3IEBAIHZvaWQgSFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKCkKICAgICAgICAgZG9j
dW1lbnQoKS5wcm9jZXNzQ29sb3JTY2hlbWUoY29udGVudFZhbHVlKTsKICNlbmRpZgogICAgIGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUoKSwgInRoZW1lLWNvbG9y
IikpCi0gICAgICAgIGRvY3VtZW50KCkucHJvY2Vzc01ldGFFbGVtZW50VGhlbWVDb2xvcihjb250
ZW50VmFsdWUpOworICAgICAgICBkb2N1bWVudCgpLm1ldGFFbGVtZW50VGhlbWVDb2xvckNoYW5n
ZWQoKnRoaXMpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSgpLCAiZm9ybWF0LWRldGVjdGlvbiIpKQogICAg
ICAgICBkb2N1bWVudCgpLnByb2Nlc3NGb3JtYXREZXRlY3Rpb24oY29udGVudFZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5oCmluZGV4IDMzNTBmMWU4MzRmOGU5Njg5Y2Y5
N2FlYmU4N2Q0MmU1OTJhZmFhNGIuLmY1OTkzOTNlODFkMzk4MzFmNGVlOWVjYjI4NDYyZWNiMmI5
ZDRmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaApAQCAtMjYsNiArMjYs
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbG9yOworY2xhc3MgTWVkaWFR
dWVyeVNldDsKKwogY2xhc3MgSFRNTE1ldGFFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVt
ZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxNZXRhRWxlbWVudCk7CiBwdWJs
aWM6CkBAIC0zNiw2ICszOSwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRvbVN0cmluZyYgaHR0
cEVxdWl2KCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZSgpIGNvbnN0OwogCisg
ICAgYm9vbCBtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKTsKKworICAgIGNvbnN0IENvbG9yJiBjb250
ZW50Q29sb3IoKTsKKwogcHJpdmF0ZToKICAgICBIVE1MTWV0YUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKQEAgLTQ2LDYgKzUzLDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmlu
YWw7CiAKICAgICB2b2lkIHByb2Nlc3MoKTsKKworICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBt
X21lZGlhOworCisgICAgT3B0aW9uYWw8Q29sb3I+IG1fY29udGVudENvbG9yOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWV0YUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaWRs
CmluZGV4IDcyZTc4MGE4NzYwYmEzYzFkMmNhMjc2NGNlZGM0MTJiMDY4MzliM2UuLmM0OTRjN2Ex
ZDc1MDc3ZWFkNWE0MjE0Mzk5MThlZjlmMDkyZmQyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZXRhRWxlbWVudC5pZGwKQEAgLTIyLDYgKzIyLDcgQEAKIF0gaW50ZXJmYWNlIEhUTUxNZXRh
RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZs
ZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNvbnRlbnQ7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgUmVmbGVjdD1odHRwX2VxdWl2XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGh0dHBFcXVpdjsK
KyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IG1lZGlhOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBE
T01TdHJpbmcgbmFtZTsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHNjaGVtZTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDk2NWY2OWVlNzE0ZGVjYmNhODljM2RiMjdjZjY2OGU3
MWExNTg0My4uN2U3YzZmNTQyNzYwZTFlN2JiYjY3MDUyY2YzYWNmNmJlZDExYmY3MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDIxLTA1LTA3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgYSBgbWVkaWFgIGF0dHJpYnV0ZSBvbiBgPG1ldGEgbmFtZT0i
dGhlbWUtY29sb3IiIGNvbnRlbnQ9Ii4uLiI+YAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0Mzg5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDk5
MTYyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW06Cisg
ICAgICAgIChURVNULldLV2ViVmlld1RoZW1lQ29sb3IuTWV0YUVsZW1lbnRWYWxpZE5hbWVBbmRD
b2xvcik6IEFkZGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdUaGVtZUNvbG9yLk1ldGFFbGVt
ZW50VmFsaWROYW1lQW5kQ29sb3JBbmRNZWRpYSk6IEFkZGVkLgorICAgICAgICAoVEVTVC5XS1dl
YlZpZXdUaGVtZUNvbG9yLk1ldGFFbGVtZW50SW52YWxpZE5hbWUpOiBBZGRlZC4KKyAgICAgICAg
KFRFU1QuV0tXZWJWaWV3VGhlbWVDb2xvci5NZXRhRWxlbWVudEludmFsaWRDb2xvcik6IEFkZGVk
LgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdUaGVtZUNvbG9yLk1ldGFFbGVtZW50SW52YWxpZE1l
ZGlhKTogQWRkZWQuCisgICAgICAgIChURVNULldLV2ViVmlld1RoZW1lQ29sb3IuTWV0YUVsZW1l
bnRNdWx0aXBsZVZhbGlkKTogQWRkZWQuCisgICAgICAgIChURVNULldLV2ViVmlld1RoZW1lQ29s
b3IuTWV0YUVsZW1lbnRWYWxpZFN1YmZyYW1lKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmll
d1RoZW1lQ29sb3JPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5n
ZTpjb250ZXh0Ol0pOgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdUaGVtZUNvbG9yLktWTyk6Cisg
ICAgICAgIChURVNULldLV2ViVmlld1RoZW1lQ29sb3IuTWV0YUVsZW1lbnRPbkxvYWQpOiBEZWxl
dGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdUaGVtZUNvbG9yLk1ldGFFbGVtZW50TXVsdGlw
bGVUYWdzKTogRGVsZXRlZC4KKwogMjAyMS0wNS0wNyAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHRlc3QtdHViZSBlbW9qaSBmb3IgRVdTIHN0YXR1
cyBidWJibGVzIGZvciB0ZXN0ZXIgcXVldWVzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0KaW5kZXgg
YmYyYTZmMGU0ZDEzNTNhODdkNmY2NTcyZDI2NTY5NjRlMzIzMmQwYy4uYjU3ZWRhNzE4MzQ1OTAx
NTBmODc1OTRhYWQ0MTYwMjBlZmQzNDNlOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VGhlbWVDb2xvci5tbQpAQCAt
NDEsNyArNDEsNyBAQAogY29uc3RleHByIENHRmxvYXQgcmVkQ29sb3JDb21wb25lbnRzWzRdID0g
eyAxLCAwLCAwLCAxIH07CiBjb25zdGV4cHIgQ0dGbG9hdCBibHVlQ29sb3JDb21wb25lbnRzWzRd
ID0geyAwLCAwLCAxLCAxIH07CiAKLVRFU1QoV0tXZWJWaWV3VGhlbWVDb2xvciwgTWV0YUVsZW1l
bnRPbkxvYWQpCitURVNUKFdLV2ViVmlld1RoZW1lQ29sb3IsIE1ldGFFbGVtZW50VmFsaWROYW1l
QW5kQ29sb3IpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBF
WFBFQ1RfVFJVRSghW3dlYlZpZXcgdGhlbWVDb2xvcl0pOwpAQCAtNTEsMjIgKzUxLDc4IEBAIFRF
U1QoV0tXZWJWaWV3VGhlbWVDb2xvciwgTWV0YUVsZW1lbnRPbkxvYWQpCiAgICAgYXV0byBzUkdC
Q29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JT
cGFjZVNSR0IpKTsKICAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNS
R0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKICAgICBFWFBFQ1RfVFJV
RShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENv
bG9yLmdldCgpKSk7Ci0KLSAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdB
bmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPG1ldGEgbmFtZT0nbm90
LXRoZW1lLWNvbG9yJyBjb250ZW50PSdyZWQnPiJdOwotCi0gICAgRVhQRUNUX1RSVUUoIVt3ZWJW
aWV3IHRoZW1lQ29sb3JdKTsKIH0KIAotVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBNdWx0aXBs
ZU1ldGFFbGVtZW50cykKK1RFU1QoV0tXZWJWaWV3VGhlbWVDb2xvciwgTWV0YUVsZW1lbnRWYWxp
ZE5hbWVBbmRDb2xvckFuZE1lZGlhKQogewogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApXSk7CiAgICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3IHRoZW1lQ29sb3JdKTsKIAotICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0
ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVk
Jz48bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0nYmx1ZSc+Il07CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hp
bGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250ZW50PSdyZWQnIG1l
ZGlhPSdzY3JlZW4nPiJdOwogCiAgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dD
b2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIGJs
dWVDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1
ZUNvbG9yQ29tcG9uZW50cykpOwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgdGhlbWVDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7CisgICAgYXV0
byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwg
cmVkQ29sb3JDb21wb25lbnRzKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xv
cihbd2ViVmlldyB0aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworfQorCitU
RVNUKFdLV2ViVmlld1RoZW1lQ29sb3IsIE1ldGFFbGVtZW50SW52YWxpZE5hbWUpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRSghW3dlYlZp
ZXcgdGhlbWVDb2xvcl0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9
J25vdC10aGVtZS1jb2xvcicgY29udGVudD0nYmx1ZSc+PG1ldGEgbmFtZT0ndGhlbWUtY29sb3In
IGNvbnRlbnQ9J3JlZCc+Il07CisKKyAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihD
R0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgIGF1dG8g
cmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJl
ZENvbG9yQ29tcG9uZW50cykpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgdGhlbWVDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKK30KKworVEVT
VChXS1dlYlZpZXdUaGVtZUNvbG9yLCBNZXRhRWxlbWVudEludmFsaWRDb2xvcikKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIEVYUEVDVF9UUlVFKCFbd2ViVmll
dyB0aGVtZUNvbG9yXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPG1ldGEgbmFtZT0n
dGhlbWUtY29sb3InIGNvbnRlbnQ9J2ludmFsaWQnPjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBj
b250ZW50PSdyZWQnPiJdOworCisgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dD
b2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIHJl
ZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRD
b2xvckNvbXBvbmVudHMpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3
ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7Cit9CisKK1RFU1Qo
V0tXZWJWaWV3VGhlbWVDb2xvciwgTWV0YUVsZW1lbnRJbnZhbGlkTWVkaWEpCit7CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcg
dGhlbWVDb2xvcl0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
QW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9J3Ro
ZW1lLWNvbG9yJyBjb250ZW50PSdibHVlJyBtZWRpYT0naW52YWxpZCc+PG1ldGEgbmFtZT0ndGhl
bWUtY29sb3InIGNvbnRlbnQ9J3JlZCcgbWVkaWE9J3NjcmVlbic+Il07CisKKyAgICBhdXRvIHNS
R0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xv
clNwYWNlU1JHQikpOworICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUo
c1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOworICAgIEVYUEVDVF9U
UlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdGhlbWVDb2xvcl0uQ0dDb2xvciwgcmVk
Q29sb3IuZ2V0KCkpKTsKK30KKworVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBNZXRhRWxlbWVu
dE11bHRpcGxlVmFsaWQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsK
KyAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgdGhlbWVDb2xvcl0pOworCisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRG
cmFtZXNQYWludDpAIjxkaXY+PG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J3JlZCc+
PC9kaXY+PG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J2JsdWUnPiJdOworCisgICAg
YXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUo
a0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9y
Q3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICBF
WFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29s
b3IsIHJlZENvbG9yLmdldCgpKSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3VGhlbWVDb2xvciwgTWV0
YUVsZW1lbnRWYWxpZFN1YmZyYW1lKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApXSk7CisgICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3IHRoZW1lQ29sb3JdKTsKKworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0
ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8aWZyYW1lIHNyY2RvYz1cIjxtZXRhIG5hbWU9J3RoZW1lLWNv
bG9yJyBjb250ZW50PSdibHVlJz5cIj48L2lmcmFtZT48bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicg
Y29udGVudD0ncmVkJz4iXTsKKworICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENH
Q29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byBy
ZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVk
Q29sb3JDb21wb25lbnRzKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihb
d2ViVmlldyB0aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOwogfQogCiBAaW50
ZXJmYWNlIFdLV2ViVmlld1RoZW1lQ29sb3JPYnNlcnZlciA6IE5TT2JqZWN0CkBAIC0xMDUsOCAr
MTYxLDEzIEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQ
YXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY29udGVudC1jaGFu
Z2UiXSkgewotICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNvbnRlbnQtY2hhbmdlIjsKKyAgICBp
ZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY29udGVudC1jaGFuZ2UtaW52YWxp
ZCJdKSB7CisgICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItY29udGVudC1jaGFuZ2UtaW52YWxpZCI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJp
bmc6QCJiZWZvcmUtY29udGVudC1jaGFuZ2UtdmFsaWQiXSkgeworICAgICAgICBfc3RhdGUgPSBA
ImFmdGVyLWNvbnRlbnQtY2hhbmdlLXZhbGlkIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTIwLDYgKzE4MSwyNiBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3Ry
aW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTgogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWlu
dmFsaWQtbWVkaWEtYWRkZWQiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWludmFsaWQt
bWVkaWEtYWRkZWQiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUg
aXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLW1lZGlhLWNoYW5nZWQtdmFsaWQiXSkgeworICAgICAg
ICBfc3RhdGUgPSBAImFmdGVyLW1lZGlhLWNoYW5nZWQtdmFsaWQiOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLW1lZGlh
LXN0YXRlLWNoYW5nZWQiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLW1lZGlhLXN0YXRl
LWNoYW5nZWQiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNF
cXVhbFRvU3RyaW5nOkAiYmVmb3JlLW5vZGUtaW5zZXJ0ZWQiXSkgeworICAgICAgICBfc3RhdGUg
PSBAImFmdGVyLW5vZGUtaW5zZXJ0ZWQiOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
aWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLW5vZGUtcmVtb3ZlZCJdKSB7CiAg
ICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItbm9kZS1yZW1vdmVkIjsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTQ2LDEwICsyMjcsMTYgQEAgVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBLVk8pCiAgICAg
RVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1sb2FkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0
ZV0pOwogICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdGhlbWVD
b2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKIAotICAgIFt0aGVtZUNvbG9yT2JzZXJ2
ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY29udGVudC1jaGFuZ2UiXTsKKyAgICBbdGhlbWVDb2xvck9i
c2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNvbnRlbnQtY2hhbmdlLWludmFsaWQiXTsKKyAgICBb
d2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcignbWV0YScpLnNldEF0dHJpYnV0ZSgnY29udGVudCcsICdpbnZhbGlkJykiXTsKKyAgICBb
d2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RS
SU5HX0VRKCJhZnRlci1jb250ZW50LWNoYW5nZS1pbnZhbGlkIiwgW3RoZW1lQ29sb3JPYnNlcnZl
ciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKCFbd2ViVmlldyB0aGVtZUNvbG9yXSk7CisKKyAg
ICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNvbnRlbnQtY2hhbmdlLXZh
bGlkIl07CiAgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGEnKS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnLCAnYmx1ZScp
Il07CiAgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVY
UEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItY29udGVudC1jaGFuZ2UiLCBbdGhlbWVDb2xvck9ic2Vy
dmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jb250ZW50LWNoYW5n
ZS12YWxpZCIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKICAgICBFWFBFQ1RfVFJVRShD
R0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29sb3IsIGJsdWVDb2xv
ci5nZXQoKSkpOwogCiAgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1u
YW1lLWNoYW5nZS1ub3QtdGhlbWUtY29sb3IiXTsKQEAgLTE2NCw2ICsyNTEsMzAgQEAgVEVTVChX
S1dlYlZpZXdUaGVtZUNvbG9yLCBLVk8pCiAgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1u
YW1lLWNoYW5nZS10aGVtZS1jb2xvciIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKICAg
ICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNH
Q29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwogCisgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRT
dGF0ZTpAImJlZm9yZS1pbnZhbGlkLW1lZGlhLWFkZGVkIl07CisgICAgW3dlYlZpZXcgb2JqZWN0
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGEnKS5z
ZXRBdHRyaWJ1dGUoJ21lZGlhJywgJ2ludmFsaWQnKSJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JO
ZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWlu
dmFsaWQtbWVkaWEtYWRkZWQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQ
RUNUX1RSVUUoIVt3ZWJWaWV3IHRoZW1lQ29sb3JdKTsKKworICAgIFt0aGVtZUNvbG9yT2JzZXJ2
ZXIgc2V0U3RhdGU6QCJiZWZvcmUtbWVkaWEtY2hhbmdlZC12YWxpZCJdOworICAgIFt3ZWJWaWV3
IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdt
ZXRhJykuc2V0QXR0cmlidXRlKCdtZWRpYScsICdzY3JlZW4nKSJdOworICAgIFt3ZWJWaWV3IHdh
aXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFm
dGVyLW1lZGlhLWNoYW5nZWQtdmFsaWQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7Cisg
ICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB0aGVtZUNvbG9yXS5D
R0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsKKworICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0
U3RhdGU6QCJiZWZvcmUtbWVkaWEtc3RhdGUtY2hhbmdlZCJdOworICAgIFt3ZWJWaWV3IHNldE1l
ZGlhVHlwZTpAInByaW50Il07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25V
cGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItbWVkaWEtc3RhdGUtY2hhbmdl
ZCIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJVRSghW3dlYlZp
ZXcgdGhlbWVDb2xvcl0pOworCisgICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJl
Zm9yZS1ub2RlLWluc2VydGVkIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGEnKS5pbnNlcnRBZGphY2VudEhU
TUwoJ2JlZm9yZWJlZ2luJywgXCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVk
Jz5cIikiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07Cisg
ICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1ub2RlLWluc2VydGVkIiwgW3RoZW1lQ29sb3JP
YnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dl
YlZpZXcgdGhlbWVDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKKwogICAgIFt0aGVt
ZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtbm9kZS1yZW1vdmVkIl07CiAgICAgW3dl
YlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoJ21ldGEnKS5yZW1vdmUoKSJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0
aW9uVXBkYXRlXTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>