<?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>97800</bug_id>
          
          <creation_ts>2012-09-27 10:00:30 -0700</creation_ts>
          <short_desc>Allow ports to override text track rendering style</short_desc>
          <delta_ts>2012-10-24 07:25:04 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>98572</dependson>
          <blocked>43668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>jer.noble</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>silviapf</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>729643</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-09-27 10:00:30 -0700</bug_when>
    <thetext>Ports should be able to modify the style used when rendering captions and subtitles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729644</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-09-27 10:01:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/12386612&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729890</commentid>
    <comment_count>2</comment_count>
      <attachid>166067</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-09-27 14:58:20 -0700</bug_when>
    <thetext>Created attachment 166067
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729896</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 15:00:21 -0700</bug_when>
    <thetext>Attachment 166067 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/html/HTMLMediaElement.cpp:4193:  Missing space before ( in if(  [whitespace/parens] [5]
Source/WebCore/rendering/RenderTheme.h:237:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/rendering/RenderTheme.h:238:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/html/shadow/MediaControlElements.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729906</commentid>
    <comment_count>4</comment_count>
      <attachid>166067</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-27 15:05:00 -0700</bug_when>
    <thetext>Comment on attachment 166067
Proposed patch

Attachment 166067 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14031996</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729907</commentid>
    <comment_count>5</comment_count>
      <attachid>166067</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-27 15:05:26 -0700</bug_when>
    <thetext>Comment on attachment 166067
Proposed patch

Attachment 166067 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14032968</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729908</commentid>
    <comment_count>6</comment_count>
      <attachid>166067</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-27 15:05:29 -0700</bug_when>
    <thetext>Comment on attachment 166067
Proposed patch

Attachment 166067 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14035959</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729912</commentid>
    <comment_count>7</comment_count>
      <attachid>166067</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-27 15:23:54 -0700</bug_when>
    <thetext>Comment on attachment 166067
Proposed patch

Attachment 166067 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14043674</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730005</commentid>
    <comment_count>8</comment_count>
      <attachid>166067</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 16:48:40 -0700</bug_when>
    <thetext>Comment on attachment 166067
Proposed patch

Attachment 166067 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14059072

New failing tests:
media/track/track-cue-rendering-horizontal.html
media/track/track-cue-rendering-vertical.html
media/track/track-cue-rendering.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730203</commentid>
    <comment_count>9</comment_count>
      <attachid>166134</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-09-27 20:46:41 -0700</bug_when>
    <thetext>Created attachment 166134
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730219</commentid>
    <comment_count>10</comment_count>
      <attachid>166134</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-27 21:11:47 -0700</bug_when>
    <thetext>Comment on attachment 166134
Updated patch

Attachment 166134 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14043799</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730247</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-09-27 22:29:20 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 166134 [details])
&gt; Attachment 166134 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/14043799

This is failing because the updated WKSI libraries aren&apos;t in the patch because they pushed it well beyond the maximum size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730876</commentid>
    <comment_count>12</comment_count>
      <attachid>166291</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-09-28 12:21:21 -0700</bug_when>
    <thetext>Created attachment 166291
YAP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732680</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-02 08:50:59 -0700</bug_when>
    <thetext>LGTM. Unofficial r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733257</commentid>
    <comment_count>14</comment_count>
      <attachid>166291</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-02 17:30:33 -0700</bug_when>
    <thetext>Comment on attachment 166291
YAP

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

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1340
&gt; +void MediaControlTextTrackContainerElement::userCaptionPreferencesChanged()
&gt; +{
&gt; +    Page* page = document()-&gt;page();
&gt; +    if (!page)
&gt; +        return;
&gt; +
&gt; +    DEFINE_STATIC_LOCAL(KURL, captionsStyleSheetURL, (ParsedURLString, &quot;user-captions-override:01F6AF12-C3B0-4F70-AF5E-A3E00234DC23&quot;));
&gt; +
&gt; +    RenderTheme* theme = page-&gt;theme();
&gt; +    HTMLMediaElement* mediaElement = toParentMediaElement(this);
&gt; +
&gt; +    mediaElement-&gt;setNeedsStyleRecalc();
&gt; +
&gt; +    page-&gt;group().removeUserStyleSheetFromWorld(mainThreadNormalWorld(), captionsStyleSheetURL);
&gt; +
&gt; +    if (!mediaElement-&gt;closedCaptionsVisible() &amp;&amp; !theme-&gt;userHasCaptionPreferences())
&gt; +        return;
&gt; +
&gt; +    String captionsOverrideStyleSheet = theme-&gt;captionsStyleSheetOverride();
&gt; +    if (captionsOverrideStyleSheet.isEmpty())
&gt; +        return;
&gt; +
&gt; +    page-&gt;group().addUserStyleSheetToWorld(mainThreadNormalWorld(), captionsOverrideStyleSheet, captionsStyleSheetURL, adoptPtr(new Vector&lt;String&gt;), adoptPtr(new Vector&lt;String&gt;), 
&gt; +        InjectInAllFrames, UserStyleAuthorLevel, InjectInExistingDocuments);
&gt; +}
&gt; +

Not sure about the user style sheet code here. I&apos;d prefer if someone familiar with that code would take a look at this.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1415
&gt; +    float fontSize = videoBox.size().height() * (document()-&gt;page()-&gt;theme()-&gt;captionFontSizeScale());

Can page be null here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733258</commentid>
    <comment_count>15</comment_count>
      <attachid>166291</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-02 17:31:07 -0700</bug_when>
    <thetext>Comment on attachment 166291
YAP

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4210
&gt; +    for (Node* node = firstChild(); node; node = node-&gt;nextSibling()) {

It might be slightly safer to make node a RefPtr&lt;Node&gt; here.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4222
&gt; +        String kind = textTrack-&gt;kind();
&gt; +
&gt; +        if (kind == TextTrack::subtitlesKeyword() || kind == TextTrack::captionsKeyword())
&gt; +            trackElement-&gt;setHasBeenConfigured(false);

Should these be AtomicStrings?

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1321
&gt; +    DEFINE_STATIC_LOCAL(KURL, captionsStyleSheetURL, (ParsedURLString, &quot;user-captions-override:01F6AF12-C3B0-4F70-AF5E-A3E00234DC23&quot;));

This would read slightly nicer at the top of the function.

&gt; Source/WebCore/rendering/RenderTheme.h:37
&gt;  
&gt; +
&gt;  namespace WebCore {

Unnecessary whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735007</commentid>
    <comment_count>16</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-04 14:21:21 -0700</bug_when>
    <thetext>Since Eric is on vacation, I&apos;ll take his patch and make the suggested improvements by Anders and Sam below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735081</commentid>
    <comment_count>17</comment_count>
      <attachid>167190</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-04 15:40:58 -0700</bug_when>
    <thetext>Created attachment 167190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735213</commentid>
    <comment_count>18</comment_count>
      <attachid>167190</attachid>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-10-04 18:34:21 -0700</bug_when>
    <thetext>Comment on attachment 167190
Patch

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

&gt; Source/WebKit/mac/ChangeLog:25
&gt; +2012-10-04  Eric Carlson  &lt;eric.carlson@apple.com&gt;
&gt; +
&gt; +        Allow ports to override text track rendering style
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=97800
&gt; +        &lt;rdar://problem/12044964&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; +
&gt; +        * WebCoreSupport/WebSystemInterface.mm:
&gt; +        (InitWebCoreSystemInterface): Initialize new WKSI function pointers.
&gt; +
&gt; +2012-09-27  Eric Carlson  &lt;eric.carlson@apple.com&gt;
&gt; +
&gt; +        Need a short description (OOPS!).
&gt; +        Need the bug URL (OOPS!).
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; +
&gt; +        * WebCoreSupport/WebSystemInterface.mm:
&gt; +        (InitWebCoreSystemInterface):
&gt; +

Two entries? You might want to clean up this ChangeLog.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3999
&gt;          configureTextTracks();

You  might want to remove this, since markCaptionAndSubtitleTracksAsUnconfigured is already doing this as its last action.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735993</commentid>
    <comment_count>19</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-05 14:56:53 -0700</bug_when>
    <thetext>Committed r130556: &lt;http://trac.webkit.org/changeset/130556&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736073</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-05 16:21:21 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 98572</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736087</commentid>
    <comment_count>21</comment_count>
      <attachid>167190</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-05 16:31:33 -0700</bug_when>
    <thetext>Comment on attachment 167190
Patch

Looks like this change broke several platforms (not sure why none of the bots complained):

* Most Mac ones (andersca fixed them in http://trac.webkit.org/changeset/130564)
* Windows, here is the warning:

26&gt;..\..\WebCore\rendering\RenderTheme.h(239): error C2220: warning treated as error - no &apos;object&apos; file generated
26&gt;..\..\WebCore\rendering\RenderTheme.h(239): warning C4305: &apos;return&apos; : truncation from &apos;double&apos; to &apos;float&apos;

This comes from this line:

virtual float captionFontSizeScale() const { return 0.05; }

Mostly the patch was landed with an r+ from a non-reviewer which was the reason for rolling out instead of fixing the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736088</commentid>
    <comment_count>22</comment_count>
      <attachid>167190</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-05 16:31:59 -0700</bug_when>
    <thetext>Comment on attachment 167190
Patch

Moving back to review? as I don&apos;t think Sylvia is technically a reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736089</commentid>
    <comment_count>23</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-05 16:32:53 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 167190 [details])
&gt; Moving back to review? as I don&apos;t think Sylvia is technically a reviewer.

I(In reply to comment #21)
&gt; (From update of attachment 167190 [details])
&gt; Looks like this change broke several platforms (not sure why none of the bots complained):
&gt; 
&gt; * Most Mac ones (andersca fixed them in http://trac.webkit.org/changeset/130564)
&gt; * Windows, here is the warning:
&gt; 
&gt; 26&gt;..\..\WebCore\rendering\RenderTheme.h(239): error C2220: warning treated as error - no &apos;object&apos; file generated
&gt; 26&gt;..\..\WebCore\rendering\RenderTheme.h(239): warning C4305: &apos;return&apos; : truncation from &apos;double&apos; to &apos;float&apos;
&gt; 
&gt; This comes from this line:
&gt; 
&gt; virtual float captionFontSizeScale() const { return 0.05; }
&gt; 

I&apos;ll fix these and reupload for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736094</commentid>
    <comment_count>24</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-10-05 16:40:05 -0700</bug_when>
    <thetext>Oops, sorry. I was under the impression it already had an r+. No, I am not a reviewer yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736104</commentid>
    <comment_count>25</comment_count>
      <attachid>167418</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-05 17:07:49 -0700</bug_when>
    <thetext>Created attachment 167418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737450</commentid>
    <comment_count>26</comment_count>
      <attachid>167418</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-08 23:26:03 -0700</bug_when>
    <thetext>Comment on attachment 167418
Patch

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

&gt; Source/WebKit/mac/ChangeLog:24
&gt; +2012-10-05  Eric Carlson  &lt;eric.carlson@apple.com&gt;
&gt; +
&gt; +        Allow ports to override text track rendering style
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=97800
&gt; +        &lt;rdar://problem/12044964&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; +
&gt; +        * WebCoreSupport/WebSystemInterface.mm:
&gt; +        (InitWebCoreSystemInterface): Initialize new WKSI function pointers.
&gt; +
&gt; +2012-09-27  Eric Carlson  &lt;eric.carlson@apple.com&gt;
&gt; +
&gt; +        Need a short description (OOPS!).
&gt; +        Need the bug URL (OOPS!).
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; +
&gt; +        * WebCoreSupport/WebSystemInterface.mm:
&gt; +        (InitWebCoreSystemInterface):

Double Changelog!

&gt; Source/WebCore/html/HTMLMediaElement.cpp:557
&gt; +#if ENABLE(VIDEO_TRACK)
&gt; +    if (document()-&gt;page())
&gt; +        document()-&gt;page()-&gt;theme()-&gt;registerForCaptionPreferencesChangedCallbacks(this);
&gt; +#endif

Are caption preferences only observable when in the render tree? In other words, why is attach the right place for this, rather than say, insertedIntoDocument()?

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1315
&gt; +void MediaControlTextTrackContainerElement::userCaptionPreferencesChanged()

Does this change captions for all pages in the page group?  If so, why does this need to be down in MediaControlTextTrackContainerElement. Should it be up in PageGroup instead?

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1317
&gt; +    DEFINE_STATIC_LOCAL(KURL, captionsStyleSheetURL, (ParsedURLString, &quot;user-captions-override:01F6AF12-C3B0-4F70-AF5E-A3E00234DC23&quot;));

I think a comment explaining the weird URL would be useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737839</commentid>
    <comment_count>27</comment_count>
      <attachid>167418</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-09 09:01:19 -0700</bug_when>
    <thetext>Comment on attachment 167418
Patch

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

&gt;&gt; Source/WebKit/mac/ChangeLog:24
&gt;&gt; +        (InitWebCoreSystemInterface):
&gt; 
&gt; Double Changelog!

Whoops, removed.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:557
&gt;&gt; +#endif
&gt; 
&gt; Are caption preferences only observable when in the render tree? In other words, why is attach the right place for this, rather than say, insertedIntoDocument()?

Changing preferences results in a new set of CSS style rules being applied to the captions.  So yes, changes to the caption preferences only result in observable changes when the media element is in a render tree.

&gt;&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1315
&gt;&gt; +void MediaControlTextTrackContainerElement::userCaptionPreferencesChanged()
&gt; 
&gt; Does this change captions for all pages in the page group?  If so, why does this need to be down in MediaControlTextTrackContainerElement. Should it be up in PageGroup instead?

I don&apos;t know. It seems that way.  But then again, that could get complicated, as the page group may media elements to register with it, so it can query whether or not the element&apos;s captions are visible, and so it can mark those media elements as setNeedsStyleRecalc().

However it does appear that there&apos;s no reason for this to be in MediaControlTextTrackContainerElement rather than HTMLMediaElement.

&gt;&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1317
&gt;&gt; +    DEFINE_STATIC_LOCAL(KURL, captionsStyleSheetURL, (ParsedURLString, &quot;user-captions-override:01F6AF12-C3B0-4F70-AF5E-A3E00234DC23&quot;));
&gt; 
&gt; I think a comment explaining the weird URL would be useful.

Sho nuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744962</commentid>
    <comment_count>28</comment_count>
      <attachid>169339</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-10-17 22:01:43 -0700</bug_when>
    <thetext>Created attachment 169339
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745022</commentid>
    <comment_count>29</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-10-17 23:57:39 -0700</bug_when>
    <thetext>I still think that in Source/WebCore/html/HTMLMediaElement.cpp,

&gt; void HTMLMediaElement::setClosedCaptions
..
&gt; markCaptionAndSubtitleTracksAsUnconfigured();
&gt;  configureTextTracks();

that configureTextTracks() call is surplus because markCaptionAndSubtitleTracksAsUnconfigured() already calls that function as its last action.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745247</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-10-18 07:41:22 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; I still think that in Source/WebCore/html/HTMLMediaElement.cpp,
&gt; 
&gt; &gt; void HTMLMediaElement::setClosedCaptions
&gt; ..
&gt; &gt; markCaptionAndSubtitleTracksAsUnconfigured();
&gt; &gt;  configureTextTracks();
&gt; 
&gt; that configureTextTracks() call is surplus because markCaptionAndSubtitleTracksAsUnconfigured() already calls that function as its last action.

Good point. Sorry, I overlooked your earlier comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745545</commentid>
    <comment_count>31</comment_count>
      <attachid>169469</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-10-18 13:59:57 -0700</bug_when>
    <thetext>Created attachment 169469
Updated patch

Updated to fix the problem Silvia noted. Also includes the changes Sam suggested: the PageGroup now listens for notifications of user preference changes and updates the CSS override, and a media element registers with the PageGroup for preference notifications so it can re-evaluate which tracks should be enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745555</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-18 14:06:05 -0700</bug_when>
    <thetext>Attachment 169469 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/medi...&quot; exit_code: 1
Source/WebCore/page/CaptionUserPreferences.h:26:  #ifndef header guard has wrong style, please use: CaptionUserPreferences_h  [build/header_guard] [5]
Source/WebCore/page/PageGroup.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/page/CaptionUserPreferencesMac.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/page/CaptionUserPreferencesMac.h:53:  The parameter name &quot;group&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745604</commentid>
    <comment_count>33</comment_count>
      <attachid>169480</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-10-18 15:04:03 -0700</bug_when>
    <thetext>Created attachment 169480
Another updated patch

Fixed the style-nits in my new code. This will fail the style-bot because the indentation in PageGroup.h is still wrong, but I just used the same indentation the file already has.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745606</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-18 15:06:38 -0700</bug_when>
    <thetext>Attachment 169480 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/medi...&quot; exit_code: 1
Source/WebCore/page/PageGroup.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748437</commentid>
    <comment_count>35</comment_count>
      <attachid>169480</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-23 03:00:09 -0700</bug_when>
    <thetext>Comment on attachment 169480
Another updated patch

Comments have been address afaict. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749643</commentid>
    <comment_count>36</comment_count>
      <attachid>169480</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 07:24:57 -0700</bug_when>
    <thetext>Comment on attachment 169480
Another updated patch

Clearing flags on attachment: 169480

Committed r132349: &lt;http://trac.webkit.org/changeset/132349&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749644</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 07:25:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166067</attachid>
            <date>2012-09-27 14:58:20 -0700</date>
            <delta_ts>2012-09-27 20:46:41 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>user_preferences_patch_24.txt</filename>
            <type>text/plain</type>
            <size>53410</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTc5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBACisyMDEyLTA5LTI3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHBvcnRzIHRv
IG92ZXJyaWRlIHRleHQgdHJhY2sgcmVuZGVyaW5nIHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTIwNDQ5NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IG5ldyBXZWJraXRTeXN0ZW1JbnRlcmZhY2Ug
ZnVuY3Rpb25zLgorCisgICAgICAgICogY3NzL21lZGlhQ29udHJvbHMuY3NzOiBSZWFycmFuZ2Ug
dGhlIGNhcHRpb24gQ1NTIHNvIGl0IGlzIHBvc3NpYmxlIHRvIHN0eWxlIHRoZSBjdWUgd2luZG93
LAorICAgICAgICAgICAgYmFja2dyb3VuZCwgYW5kIHRleHQgaW5kZXBlbmRlbnRseS4KKworICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KTogSW5pdGlhbGl6ZSBtX2Rpc2FibGVDYXB0
aW9ucyB3aXRoIHRoZW1lLT51c2VyUHJlZmVyc0NhcHRpb25zKCkuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjphdHRhY2gpOiBSZWdpc3RlciBmb3IgY2FwdGlvbiBwcmVmZXJl
bmNlcyBjaGFuZ2UgY2FsbGJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6ZGV0YWNoKTogVW5yZWdpc3RlciBmb3IgY2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2Fs
bGJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlclByZWZlcnND
YXB0aW9ucyk6IFJldHVybiB0aGVtZS0+dXNlclByZWZlcnNDYXB0aW9ucygpLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2lu
ZCk6IENvbnNpZGVyIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6IE1vdmUgdGhlIGNvZGUg
dGhhdCBtYXJrcyBhbGwgdHJhY2tzIGFzCisgICAgICAgICAgICB1bi1jb25maWd1cmVkIHRvIG1h
cmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCBzbyBpdCBjYW4gYmUgcmV1
c2VkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlvblByZWZlcmVu
Y2VzQ2hhbmdlZCk6IE5ldywgZm9yY2UgYSByZWV2YWx1YXRpb24gb2YgYWxsIHRleHQgdHJhY2tz
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0
aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKTogTmV3LCBjb2RlIG1vdmVkIGZyb20gCisgICAgICAg
ICAgICBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDogSW5oZXJpdCBmcm9tIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci4K
KworICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVzZXJD
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKTogTmV3LCBpZiB0aGVtZQorICAgICAgICAgICAgaGFz
IGEgY2FwdGlvbnMgc3R5bGUgc2hlZXQgb3ZlcnJpZGUsIGluamVjdCBpdCBpbnRvIHRoZSBjdXJy
ZW50IHBhZ2UgZ3JvdXAsIG90aGVyd2lzZQorICAgICAgICAgICAgcmVtb3ZlIGluamVjdGVkIHNo
ZWV0LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWVudDo6dXBkYXRlU2l6ZXMpOiBHZXQgcmlkIG9mIHVubmVjZXNzYXJ5IG1lbWJlcgorICAgICAg
ICAgICAgdmFyaWFibGUuIEdldCBjYXB0aW9uIGZvbnQgc2NhbGUgZnJvbSB0aGVtZSBpbnN0ZWFk
IG9mIGhhcmQgY29kaW5nLgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmg6CisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXNlckNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWQpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xSb290RWxlbWVudDo6dXBkYXRlVGV4dFRyYWNrRGlzcGxheSk6CisgICAgICAgICogaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaDogQWRkIHVzZXJDYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkLCBtaW5vciBjbGVhbnVwLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6dXNlckNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWQpOiBOZXcuCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1
ZUJveCk6IFNldCB0aGUgc2hhZG93IHBzZXVkbyBpZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1l
dGhvZCB0byByZXR1cm4gdGhlIAorICAgICAgICAgICAgc2hhZG93IHBzZXVkbyBpZCBzbyBpdCBj
YW4gYmUgdXNlZCBlbHNld2hlcmUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6
OnNoYWRvd1BzZXVkb0lkKTogQ2FsbCB0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6cGFzdE5vZGVzU2hhZG93UHNldWRvSWQpOiBO
ZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1cm4gdGhlIAorICAgICAgICAgICAgc2hhZG93IHBzZXVk
byBpZCBzbyBpdCBjYW4gYmUgdXNlZCBlbHNld2hlcmUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWU6OmZ1dHVyZU5vZGVzU2hhZG93UHNldWRvSWQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUpOgorICAgICAgICAqIGh0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oOiBVcGRhdGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLm1tOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9DYXB0aW9u
UHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIuaDogQWRkZWQuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp1c2VyUHJl
ZmVyc0NhcHRpb25zKTogTmV3LCBkZWZhdWx0IGRvLW5vdGhpbmcgaW1wbGVtZW50YXRpb24uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmNhcHRpb25Gb250U2l6ZVNj
YWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y2FwdGlvbnNTdHls
ZVNoZWV0T3ZlcnJpZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpy
ZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVu
Y2VzQ2hhbmdlZENhbGxiYWNrcyk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6dXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25D
YWxsYmFjayk6IE5ldywgcmVjZWl2ZXMgcHJlZmVyZW5jZSBjaGFuZ2VkIG5vdGlmaWNhdGlvbnMu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6UmVuZGVyVGhlbWVNYWMpOiBJbml0
aWFsaXplIG1fbGlzdGVuaW5nRm9yQ2FwdGlvblByZWZlcmVuY2VOb3RpZmljYXRpb25zLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6On5SZW5kZXJUaGVtZU1hYyk6IFVucmVnaXN0
ZXIgZm9yIG5vdGlmaWNhdGlvbnMgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMpOiBOZXcsIHBhc3N0aHJvdWdo
IHRvIFdLU0kgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6dXNl
clByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OmNhcHRpb25zV2luZG93Q29sb3IpOiBSZXR1cm4gQ29sb3Igd2l0aCB1c2VyJ3MgY2FwdGlv
biB3aW5kb3cgY29sb3IgcHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpjYXB0aW9uc0JhY2tncm91bmRDb2xvcik6IFJldHVybiBDb2xvciB3aXRoIHVzZXIncyBj
YXB0aW9uIAorICAgICAgICAgICAgYmFja2dyb3VuZCBjb2xvciBwcmVmZXJlbmNlLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zVGV4dENvbG9yKTogUmV0dXJuIENv
bG9yIHdpdGggdXNlcidzIGNhcHRpb24gdGV4dCBjb2xvciBwcmVmZXJlbmNlLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKTog
UmV0dXJuIENvbG9yIGZvciB0ZXh0IGVkZ2UgZWZmZWN0LgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OmNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IpOiBSZXR1cm4gU3RyaW5n
IHdpdGggQ1NTIHRvIHNldCBhIHRleHQtc2hhZG93CisgICAgICAgICAgICBvciB3ZWJraXQtdGV4
dC1zdHJva2UgcHJvcGVydHkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6Y3Nz
Q29sb3JQcm9wZXJ0eSk6IFJldHVybiBhIFN0cmluZyB3aXRoIGNzcyB0byBzZXQgYSBwcm9wZXJ0
eSAKKyAgICAgICAgICAgIHdpdGggYSBjb2xvciB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpjYXB0aW9uc1RleHRFZGdlU3R5bGUpOiBSZXR1cm4gYSBTdHJpbmcgd2l0
aCBjc3MgdG8gc3R5bGUgY2FwdGlvbiAKKyAgICAgICAgICAgIHRleHQgd2l0aCB0aGUgdXNlcidz
IHByZWZlcnJlZCB0ZXh0IGVkZ2Ugc3R5ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpjYXB0aW9uc0RlZmF1bHRGb250KTogUmV0dXJuIGEgU3RyaW5nIHdpdGggY3NzIHRvIHN0
eWxlIGNhcHRpb24KKyAgICAgICAgICAgIHRleHQgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCBm
b250LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zU3R5bGVTaGVl
dE92ZXJyaWRlKTogUmV0dXJuIGEgU3RyaW5nIHdpdGggY3NzIHRvIHN0eWxlIGNhcHRpb25zCisg
ICAgICAgICAgICB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVycmVkIHN0eWxlLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25Gb250U2l6ZVNjYWxlKTogUmV0dXJuIHRoZSB1
c2VyJ3MgcHJlZmVycmVkIGNhcHRpb24gZm9udCBzY2FsZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKTogTm90aWZ5IGxpc3RlbmVy
cyBvZiBjYXB0aW9uIHByZWZlcmVuY2UgY2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6
IEFkZCBhIGNhcHRpb24gcHJlZmVyZW5jZXMgCisgICAgICAgICAgICBjaGFuZ2VzIGxpc3RlbmVy
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnVucmVnaXN0ZXJGb3JDYXB0aW9u
UHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKTogUmVtb3ZlIGEgY2FwdGlvbiBwcmVmZXJlbmNl
cworICAgICAgICAgICAgY2hhbmdlcyBsaXN0ZW5lci4KKwogMjAxMi0wOS0yNyAgRXJpayBBcnZp
ZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBpc3N1ZSB3aXRoIENsYXNz
TGlzdCB3aGljaCB3YXMgaGl0dGluZyBhbiBhc3NlcnQgaW4gZGVidWcgbW9kZQpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEyOTc5OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTk3LDMgKzI1OTcsMTggQEAgX19aTjdXZWJD
b3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZQogX19aTjdXZWJDb3JlMjRUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2VDMUVQMThOU1RleHRBbHRlcm5hdGl2ZXM4X05TUmFuZ2UKIF9fWk43V2Vi
Q29yZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXNFUDE4TlNBdHRyaWJ1dGVkU3Ry
aW5nUk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUVMbTBFRUUKICNl
bmRpZgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorX3drQ2FwdGlvbkFwcGVhcmFuY2VIYXNV
c2VyUHJlZmVyZW5jZXMKK193a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWls
YWJsZQorX3drQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yCitfd2tDYXB0aW9u
QXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IKK193a0NhcHRpb25BcHBlYXJhbmNlQ29weVdp
bmRvd0NvbG9yCitfd2tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5Citfd2tD
YXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5Citfd2tDYXB0aW9uQXBwZWFyYW5j
ZUdldFdpbmRvd09wYWNpdHkKK193a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvbnRGb3JTdHlsZQor
X3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUKK193a0NhcHRpb25B
cHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZQorX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5n
c0NoYW5nZWROb3RpZmljYXRpb24KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL21l
ZGlhQ29udHJvbHMuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNv
bnRyb2xzLmNzcwkocmV2aXNpb24gMTI5Nzk4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL21lZGlh
Q29udHJvbHMuY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAgdmlkZW86Oi13
ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZQogICAgIGZvbnQtc2l6ZTogMjJweDsKICAg
ICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAg
Y29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7CisgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUs
IDI1NSwgMSk7CiAKICAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogICAgIHdvcmQtc3BhY2lu
Zzogbm9ybWFsOwpAQCAtMjM0LDggKzIzNCw2IEBAIHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQt
dHJhY2stcGFzdC1ub2QKIAogICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44
KTsKICAgICBwYWRkaW5nOiAycHggMnB4OwotCi0gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwog
fQogCiB2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2RlcyB7CkBAIC0y
NDYsMTEgKzI0NCwxMCBAQCB2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1u
CiAKICAgICBtYXJnaW4tbGVmdDogLTJweDsKICAgICBwYWRkaW5nOiAycHggMnB4IDJweCAwcHg7
Ci0KLSAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiB9CiAKIHZpZGVvOjotd2Via2l0LW1lZGlh
LXRleHQtdHJhY2stZGlzcGxheSB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGNvbG9y
OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hp
dGUtc3BhY2U6IHByZS13cmFwOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMjk3OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBACiAjaW5j
bHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlkZW8uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgpAQCAtMjgxLDYgKzI4MiwxNCBAQCBIVE1MTWVkaWFFbGVtZW50OjpI
VE1MTWVkaWFFbGVtZW50KGNvbnN0CiAKICAgICBzZXRIYXNDdXN0b21DYWxsYmFja3MoKTsKICAg
ICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVudCk7CisKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkpIHsKKyAgICAgICAgUmVuZGVy
VGhlbWUqIHRoZW1lID0gZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKTsKKyAgICAgICAgaWYgKHRo
ZW1lLT51c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkpCisgICAgICAgICAgICBtX2Rpc2FibGVD
YXB0aW9ucyA9ICF0aGVtZS0+dXNlclByZWZlcnNDYXB0aW9ucygpOworICAgIH0KKyNlbmRpZgog
fQogCiBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCkBAIC01NDEsNiArNTUw
LDIwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCktPmhpZGVNZWRpYVBsYXllclByb3h5UGx1Z2luKG1fcHJveHlX
aWRnZXQuZ2V0KCkpOwogICAgIH0KICNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
ICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+
dGhlbWUoKS0+cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRo
aXMpOworI2VuZGlmCit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGV0YWNoKCkKK3sKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKGRvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAg
ICAgZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpLT51bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKKyNlbmRpZgorICAgIEhUTUxFbGVtZW50Ojpk
ZXRhY2goKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZWNhbGNTdHlsZShTdHls
ZUNoYW5nZSkKQEAgLTI3ODMsMjggKzI4MDYsMzAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3
aWxsUmVtb3ZlVHJhY2soSAogICAgICAgICBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rp
b25CZWdhbi5yZW1vdmUoaW5kZXgpOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJJ
c0ludGVyZXN0ZWRJblRoaXNMYW5ndWFnZShjb25zdCBTdHJpbmcmKSBjb25zdAorYm9vbCBIVE1M
TWVkaWFFbGVtZW50Ojp1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QKIHsKLSAgICAvLyBGSVhN
RTogY2hlY2sgdGhlIHVzZXIncyBsYW5ndWFnZSBwcmVmZXJlbmNlIC0gYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NDEyMQotICAgIHJldHVybiB0cnVlOworICAgIFBhZ2UqIHBhZ2Ug
PSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBSZW5kZXJUaGVtZSogdGhlbWUgPSBwYWdlLT50aGVtZSgpOworICAgIHJldHVy
biB0aGVtZS0+dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpICYmIHRoZW1lLT51c2VyUHJlZmVy
c0NhcHRpb25zKCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6dXNlcklzSW50ZXJlc3Rl
ZEluVGhpc1RyYWNrS2luZChTdHJpbmcga2luZCkgY29uc3QKIHsKLSAgICAvLyBJZiAuLi4gdGhl
IHVzZXIgaGFzIGluZGljYXRlZCBhbiBpbnRlcmVzdCBpbiBoYXZpbmcgYSB0cmFjayB3aXRoIHRo
aXMgdGV4dCB0cmFjayBraW5kLCB0ZXh0IHRyYWNrIGxhbmd1YWdlLCAuLi4gCiAgICAgaWYgKG1f
ZGlzYWJsZUNhcHRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTZXR0aW5ncyog
c2V0dGluZ3MgPSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOwotICAgIGlmICghc2V0dGluZ3MpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnNPclN1YnRp
dGxlcyA9IG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlIHx8IHVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsK
IAogICAgIGlmIChraW5kID09IFRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCgpKQotICAgICAg
ICByZXR1cm4gc2V0dGluZ3MtPnNob3VsZERpc3BsYXlTdWJ0aXRsZXMoKSB8fCBtX2Nsb3NlZENh
cHRpb25zVmlzaWJsZTsKKyAgICAgICAgcmV0dXJuIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+c2hv
dWxkRGlzcGxheVN1YnRpdGxlcygpKSB8fCB1c2VyUHJlZmVyc0NhcHRpb25zT3JTdWJ0aXRsZXM7
CiAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAg
cmV0dXJuIHNldHRpbmdzLT5zaG91bGREaXNwbGF5Q2FwdGlvbnMoKSB8fCBtX2Nsb3NlZENhcHRp
b25zVmlzaWJsZTsKKyAgICAgICAgcmV0dXJuIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+c2hvdWxk
RGlzcGxheUNhcHRpb25zKCkpIHx8IHVzZXJQcmVmZXJzQ2FwdGlvbnNPclN1YnRpdGxlczsKICAg
ICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAg
cmV0dXJuIHNldHRpbmdzLT5zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygpIHx8IG1fY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlOworICAgICAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3Mt
PnNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9
CkBAIC0zOTY5LDIyICszOTk0LDEyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Q2xvc2Vk
Q2FwdGlvbnMKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKICAgICAgICAgbV9kaXNhYmxl
Q2FwdGlvbnMgPSAhbV9jbG9zZWRDYXB0aW9uc1Zpc2libGU7Ci0gICAgICAgIAotICAgICAgICAv
LyBNYXJrIGFsbCB0cmFjayBlbGVtZW50cyBhcyBub3QgImNvbmZpZ3VyZWQiIHNvIHRoYXQgY29u
ZmlndXJlVGV4dFRyYWNrcygpCi0gICAgICAgIC8vIHdpbGwgcmVjb25zaWRlciB3aGljaCB0cmFj
a3MgdG8gZGlzcGxheSBpbiBsaWdodCBvZiBuZXcgdXNlciBwcmVmZXJlbmNlcwotICAgICAgICAv
LyAoZS5nLiBkZWZhdWx0IHRyYWNrcyBzaG91bGQgbm90IGJlIGRpc3BsYXllZCBpZiB0aGUgdXNl
ciBoYXMgdHVybmVkIG9mZgotICAgICAgICAvLyBjYXB0aW9ucyBhbmQgbm9uLWRlZmF1bHQgdHJh
Y2tzIHNob3VsZCBiZSBkaXNwbGF5ZWQgYmFzZWQgb24gbGFuZ3VhZ2UKLSAgICAgICAgLy8gcHJl
ZmVyZW5jZXMgaWYgdGhlIHVzZXIgaGFzIHR1cm5lZCBjYXB0aW9ucyBvbikuCi0gICAgICAgIGZv
ciAoTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJs
aW5nKCkpIHsKLSAgICAgICAgICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZSh0cmFja1RhZykpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBIVE1MVHJhY2tFbGVtZW50KiB0
cmFja0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVHJhY2tFbGVtZW50Kj4obm9kZSk7Ci0gICAg
ICAgICAgICBpZiAodHJhY2tFbGVtZW50LT5raW5kKCkgPT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tl
eXdvcmQoKQotICAgICAgICAgICAgICAgIHx8IHRyYWNrRWxlbWVudC0+a2luZCgpID09IFRleHRU
cmFjazo6c3VidGl0bGVzS2V5d29yZCgpKQotICAgICAgICAgICAgICAgIHRyYWNrRWxlbWVudC0+
c2V0SGFzQmVlbkNvbmZpZ3VyZWQoZmFsc2UpOwotICAgICAgICB9CiAKKyAgICAgICAgbWFya0Nh
cHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKCk7CiAgICAgICAgIGNvbmZpZ3Vy
ZVRleHRUcmFja3MoKTsKKworICAgICAgICBpZiAoIW1fZGlzYWJsZUNhcHRpb25zICYmIChoYXNN
ZWRpYUNvbnRyb2xzKCkgfHwgY3JlYXRlTWVkaWFDb250cm9scygpKSkKKyAgICAgICAgICAgIG1l
ZGlhQ29udHJvbHMoKS0+dXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKICAgICB9CiAj
ZWxzZQogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCkBAIC00MTcyLDYgKzQxODcsNDMgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVDbG9zZWRDYXB0aQogICAgICAgICAgICAgbWVk
aWFDb250cm9scygpLT51cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CiAgICAgfQogfQorCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQoreworICAgIGlm
KCFpc1ZpZGVvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1hcmtDYXB0aW9uQW5kU3VidGl0
bGVUcmFja3NBc1VuY29uZmlndXJlZCgpOworICAgIAorICAgIGlmICghaGFzTWVkaWFDb250cm9s
cygpICYmICFjcmVhdGVNZWRpYUNvbnRyb2xzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtZWRp
YUNvbnRyb2xzKCktPnVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1
cmVkKCkKK3sKKyAgICAvLyBNYXJrIGFsbCB0cmFjayBlbGVtZW50cyBhcyBub3QgImNvbmZpZ3Vy
ZWQiIHNvIHRoYXQgY29uZmlndXJlVGV4dFRyYWNrcygpCisgICAgLy8gd2lsbCByZWNvbnNpZGVy
IHdoaWNoIHRyYWNrcyB0byBkaXNwbGF5IGluIGxpZ2h0IG9mIG5ldyB1c2VyIHByZWZlcmVuY2Vz
CisgICAgLy8gKGUuZy4gZGVmYXVsdCB0cmFja3Mgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWQgaWYg
dGhlIHVzZXIgaGFzIHR1cm5lZCBvZmYKKyAgICAvLyBjYXB0aW9ucyBhbmQgbm9uLWRlZmF1bHQg
dHJhY2tzIHNob3VsZCBiZSBkaXNwbGF5ZWQgYmFzZWQgb24gbGFuZ3VhZ2UKKyAgICAvLyBwcmVm
ZXJlbmNlcyBpZiB0aGUgdXNlciBoYXMgdHVybmVkIGNhcHRpb25zIG9uKS4KKyAgICBmb3IgKE5v
ZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygp
KSB7CisgICAgICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZSh0cmFja1RhZykpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxUcmFja0VsZW1lbnQqPihub2RlKTsKKyAgICAgICAgUmVm
UHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gdHJhY2tFbGVtZW50LT50cmFjaygpOworICAgICAg
ICBpZiAoIXRleHRUcmFjaykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAg
ICAgU3RyaW5nIGtpbmQgPSB0ZXh0VHJhY2stPmtpbmQoKTsKKworICAgICAgICBpZiAoa2luZCA9
PSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSB8fCBraW5kID09IFRleHRUcmFjazo6Y2Fw
dGlvbnNLZXl3b3JkKCkpCisgICAgICAgICAgICB0cmFja0VsZW1lbnQtPnNldEhhc0JlZW5Db25m
aWd1cmVkKGZhbHNlKTsKKyAgICB9CisgICAgY29uZmlndXJlVGV4dFRyYWNrcygpOworfQorCiAj
ZW5kaWYKIAogdm9pZCogSFRNTE1lZGlhRWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJ
KHJldmlzaW9uIDEyOTc5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVl
LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlLmgiCkBAIC03OCw3ICs3OSw3IEBAIHR5cGVkZWYgVmVjdG9yPEN1
ZUludGVydmFsVHJlZTo6SW50ZXJ2YWwKIAogY2xhc3MgSFRNTE1lZGlhRWxlbWVudCA6IHB1Ymxp
YyBIVE1MRWxlbWVudCwgcHVibGljIE1lZGlhUGxheWVyQ2xpZW50LCBwdWJsaWMgTWVkaWFQbGF5
ZXJTdXBwb3J0c1R5cGVDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotICAgICwgcHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQKKyAgICAs
IHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50LCBwcml2YXRlIENhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRMaXN0ZW5lcgogI2VuZGlmCiB7CiBwdWJsaWM6CkBAIC0yNDAsNiArMjQxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrcygpOwogICAgIHZvaWQgY29uZmlndXJlVGV4
dFRyYWNrR3JvdXAoY29uc3QgVHJhY2tHcm91cCYpIGNvbnN0OwogCisgICAgYm9vbCB1c2VyUHJl
ZmVyc0NhcHRpb25zKCkgY29uc3Q7CiAgICAgYm9vbCB1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJh
Y2tLaW5kKFN0cmluZykgY29uc3Q7CiAgICAgYm9vbCB0ZXh0VHJhY2tzQXJlUmVhZHkoKSBjb25z
dDsKICAgICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkoKTsKQEAgLTMyNSw3ICszMjcs
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0
dHJpYnV0ZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRy
ZW4oKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOworICAgIHZpcnR1YWwg
dm9pZCBhdHRhY2goKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCkgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9s
ZERvY3VtZW50KSBPVkVSUklERTsKIApAQCAtNDc0LDEyICs0NzcsMTQgQEAgcHJpdmF0ZToKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1
ZXMoZmxvYXQpOwotICAgIGJvb2wgdXNlcklzSW50ZXJlc3RlZEluVGhpc0xhbmd1YWdlKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwogICAgIEhUTUxUcmFja0VsZW1lbnQqIHNob3dpbmdUcmFja1dpdGhT
YW1lS2luZChIVE1MVHJhY2tFbGVtZW50KikgY29uc3Q7CiAKICAgICBib29sIGlnbm9yZVRyYWNr
RGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVUcmFja0Rpc3Bs
YXlVcGRhdGUgPiAwOyB9CiAgICAgdm9pZCBiZWdpbklnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRl
UmVxdWVzdHMoKSB7ICsrbV9pZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGU7IH0KICAgICB2b2lkIGVu
ZElnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKSB7IEFTU0VSVChtX2lnbm9yZVRy
YWNrRGlzcGxheVVwZGF0ZSk7IC0tbV9pZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGU7IH0KKworICAg
IHZvaWQgbWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKCk7CisgICAg
dmlydHVhbCB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKSBPVkVSUklERTsKICNlbmRp
ZgogCiAgICAgLy8gVGhlc2UgImludGVybmFsIiBmdW5jdGlvbnMgZG8gbm90IGNoZWNrIHVzZXIg
Z2VzdHVyZSByZXN0cmljdGlvbnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiAxMjk3OTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDggKzQ2LDEwIEBACiAjaW5jbHVkZSAiTGF5b3V0UmVwYWludGVyLmgi
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMu
aCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xSb290RWxlbWVudC5oIgogI2luY2x1ZGUgIk1vdXNl
RXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5j
bHVkZSAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVySW5s
aW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWVkaWEuaCIKQEAgLTEzMTAsNiArMTMxMiwzMiBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRleHRUcmFjCiAgICAgcmV0dXJuIGlkOwog
fQogCit2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVzZXJDYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkKK3sKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+
cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChLVVJMLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwsIChQYXJzZWRVUkxTdHJpbmcs
ICJ1c2VyLWNhcHRpb25zLW92ZXJyaWRlOjAxRjZBRjEyLUMzQjAtNEY3MC1BRjVFLUEzRTAwMjM0
REMyMyIpKTsKKworICAgIFJlbmRlclRoZW1lKiB0aGVtZSA9IHBhZ2UtPnRoZW1lKCk7CisgICAg
SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gdG9QYXJlbnRNZWRpYUVsZW1lbnQodGhp
cyk7CisKKyAgICBtZWRpYUVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKworICAgIHBh
Z2UtPmdyb3VwKCkucmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQobWFpblRocmVhZE5vcm1h
bFdvcmxkKCksIGNhcHRpb25zU3R5bGVTaGVldFVSTCk7CisKKyAgICBpZiAoIW1lZGlhRWxlbWVu
dC0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgJiYgIXRoZW1lLT51c2VySGFzQ2FwdGlvblByZWZl
cmVuY2VzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBjYXB0aW9uc092ZXJyaWRl
U3R5bGVTaGVldCA9IHRoZW1lLT5jYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpOworICAgIGlm
IChjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpLCBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldCwgY2FwdGlvbnNTdHlsZVNo
ZWV0VVJMLCBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4pLCBhZG9wdFB0cihuZXcgVmVjdG9y
PFN0cmluZz4pLCAKKyAgICAgICAgSW5qZWN0SW5BbGxGcmFtZXMsIFVzZXJTdHlsZUF1dGhvckxl
dmVsLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKK30KKwogdm9pZCBNZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKIHsKICAgICBIVE1MTWVk
aWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxlbWVudCh0aGlzKTsKQEAg
LTEzNzYsMTAgKzE0MDQsNiBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVs
ZW1lCiAgICAgaGFzQ2hpbGROb2RlcygpID8gc2hvdygpIDogaGlkZSgpOwogfQogCi1zdGF0aWMg
Y29uc3QgZmxvYXQgbWltaW11bUZvbnRTaXplID0gMTY7Ci1zdGF0aWMgY29uc3QgZmxvYXQgdmlk
ZW9IZWlnaHRGb250U2l6ZVBlcmNlbnRhZ2UgPSAuMDU7Ci1zdGF0aWMgY29uc3QgZmxvYXQgdHJh
Y2tCb3R0b21NdWx0aXBsaWVyID0gLjk7Ci0KIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudDo6dXBkYXRlU2l6ZXMoKQogewogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1l
ZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KHRoaXMpOwpAQCAtMTM4NywxMSArMTQx
MSw4IEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWUKICAgICAgICAg
cmV0dXJuOwogCiAgICAgSW50UmVjdCB2aWRlb0JveCA9IHRvUmVuZGVyVmlkZW8obWVkaWFFbGVt
ZW50LT5yZW5kZXJlcigpKS0+dmlkZW9Cb3goKTsKLSAgICBpZiAobV92aWRlb0Rpc3BsYXlTaXpl
ID09IHZpZGVvQm94KQotICAgICAgICByZXR1cm47Ci0gICAgbV92aWRlb0Rpc3BsYXlTaXplID0g
dmlkZW9Cb3g7CiAKLSAgICBmbG9hdCBmb250U2l6ZSA9IG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXpl
KCkuaGVpZ2h0KCkgKiB2aWRlb0hlaWdodEZvbnRTaXplUGVyY2VudGFnZTsKKyAgICBmbG9hdCBm
b250U2l6ZSA9IHZpZGVvQm94LnNpemUoKS5oZWlnaHQoKSAqIChkb2N1bWVudCgpLT5wYWdlKCkt
PnRoZW1lKCktPmNhcHRpb25Gb250U2l6ZVNjYWxlKCkpOwogICAgIGlmIChmb250U2l6ZSAhPSBt
X2ZvbnRTaXplKSB7CiAgICAgICAgIG1fZm9udFNpemUgPSBmb250U2l6ZTsKICAgICAgICAgc2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBTdHJpbmc6Om51bWJlcihm
b250U2l6ZSkgKyAicHgiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkocmV2aXNpb24gMTI5Nzk4KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtNTM3LDYgKzUzNyw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVs
ZW0KIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAorICAgIHZvaWQgdXNlckNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKICAgICB2b2lkIHVwZGF0ZURpc3BsYXkoKTsKICAgICB2
b2lkIHVwZGF0ZVNpemVzKCk7CiAKQEAgLTU0Nyw3ICs1NDgsOCBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCB7IHJldHVy
biBNZWRpYVRleHRUcmFja0Rpc3BsYXlDb250YWluZXI7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIAotICAgIEludFJlY3QgbV92aWRl
b0Rpc3BsYXlTaXplOworICAgIHZvaWQgdXBkYXRlQ2FwdGlvbkFwcGVhcmFuY2UoKTsKKwogICAg
IGZsb2F0IG1fZm9udFNpemU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMjk3
OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OSw2ICs0NjksMTIgQEAgdm9pZCBNZWRpYUNvbnRy
b2xSb290RWxlbWVudDo6Y2hhbmdlZENsbwogICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25z
QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwogfQogCit2b2lkIE1lZGlhQ29udHJvbFJvb3RF
bGVtZW50Ojp1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fdGV4
dERpc3BsYXlDb250YWluZXIpCisgICAgICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnVzZXJD
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7Cit9CisKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnQ6OmNoYW5nZWRNdXRlKCkKIHsKICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+Y2hhbmdlZE11
dGUoKTsKQEAgLTY1MCw3ICs2NTYsNiBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojp1
cGRhdGVUZXh0CiAgICAgICAgIGNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKIAogICAgIG1fdGV4
dERpc3BsYXlDb250YWluZXItPnVwZGF0ZURpc3BsYXkoKTsKLQogfQogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnQuaAkocmV2aXNpb24gMTI5Nzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDkgKzEwNSwx
MCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgdm9pZCBjcmVhdGVU
ZXh0VHJhY2tEaXNwbGF5KCk7Ci0gICAgdm9pZCBzaG93VGV4dFRyYWNrRGlzcGxheSgpOwotICAg
IHZvaWQgaGlkZVRleHRUcmFja0Rpc3BsYXkoKTsKLSAgICB2b2lkIHVwZGF0ZVRleHRUcmFja0Rp
c3BsYXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1RleHRUcmFja0Rpc3BsYXkoKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVRleHRUcmFja0Rpc3BsYXkoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpIE9WRVJSSURFOwogI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGlkZUNvbnRyb2xzKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCShyZXZpc2lvbiAxMjk3OTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTczLDYgKzczLDcgQEAgY2xhc3MgTWVkaWFDb250cm9scyA6IHB1YmxpYyBIVE1M
RGl2RWxlbQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIaWRlQ29udHJvbHMoKSA9IDA7CiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgdmlydHVhbCB2b2lkIHVzZXJDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkKCkgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBzaG93VGV4dFRyYWNrRGlzcGxh
eSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZVRleHRUcmFja0Rpc3BsYXkoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKSA9IDA7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCShyZXZpc2lvbiAxMjk3OTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk1LDYgKzk1LDcgQEAgVGV4dFRyYWNrQ3VlQm94OjpUZXh0VHJhY2tDdWVCb3go
RG9jdW1lbgogICAgIDogSFRNTEVsZW1lbnQoZGl2VGFnLCBkb2N1bWVudCkKICAgICAsIG1fY3Vl
KGN1ZSkKIHsKKyAgICBzZXRTaGFkb3dQc2V1ZG9JZChzaGFkb3dQc2V1ZG9JZCgpKTsKIH0KIAog
VGV4dFRyYWNrQ3VlKiBUZXh0VHJhY2tDdWVCb3g6OmdldEN1ZSgpIGNvbnN0CkBAIC0xNjcsMTIg
KzE2OCwxNyBAQCB2b2lkIFRleHRUcmFja0N1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzCiAgICAg
fQogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0N1ZUJveDo6c2hhZG93UHNldWRv
SWQoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tDdWVCb3g6OnRleHRUcmFj
a0N1ZUJveFNoYWRvd1BzZXVkb0lkKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRvSWQsICgiLXdlYmtpdC1t
ZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXkiKSk7CiAgICAgcmV0dXJuIHRyYWNrRGlzcGxheUJveFNo
YWRvd1BzZXVkb0lkOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0N1ZUJveDo6
c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIHJldHVybiB0ZXh0VHJhY2tDdWVCb3hTaGFk
b3dQc2V1ZG9JZCgpOworfQorCiBSZW5kZXJPYmplY3QqIFRleHRUcmFja0N1ZUJveDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJu
IG5ldyAoYXJlbmEpIFJlbmRlclRleHRUcmFja0N1ZSh0aGlzKTsKQEAgLTE4MCw2ICsxODYsMTgg
QEAgUmVuZGVyT2JqZWN0KiBUZXh0VHJhY2tDdWVCb3g6OmNyZWF0ZVJlbgogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK2NvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrQ3Vl
OjpwYXN0Tm9kZXNTaGFkb3dQc2V1ZG9JZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2st
cGFzdC1ub2RlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBy
ZXR1cm4gc3VidGl0bGVzOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0N1ZTo6
ZnV0dXJlTm9kZXNTaGFkb3dQc2V1ZG9JZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2st
ZnV0dXJlLW5vZGVzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHJldHVybiBzdWJ0aXRsZXM7Cit9CisKIFRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29u
c3QgU3RyaW5nJiBjb250ZW50KQogICAgIDogbV9zdGFydFRpbWUoc3RhcnQpCiAgICAgLCBtX2Vu
ZFRpbWUoZW5kKQpAQCAtNjUyLDkgKzY3MCw2IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjp1cGRhdGVE
aXNwbGF5VHJlZShmbG8KICAgICAvLyB0aW1lc3RhbXBzIChwcm9jZXNzaW5nIGluc3RydWN0aW9u
cyksIGFsb25nIHdpdGggZGlzcGxheWFibGUgbm9kZXMuCiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIHRpbWVzdGFtcFRhZywgKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIikp
KTsKIAotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFja1Bh
c3ROb2Rlc1NoYWRvd1BzZXVkb0lkLCAoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1wYXN0LW5v
ZGVzIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFj
a0Z1dHVyZU5vZGVzU2hhZG93UHNldWRvSWQsICgiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1
dHVyZS1ub2RlcyIpKTsKLQogICAgIGlmICghdHJhY2soKS0+aXNSZW5kZXJlZCgpKQogICAgICAg
cmV0dXJuOwogCkBAIC02NjIsMTAgKzY3NywxMCBAQCB2b2lkIFRleHRUcmFja0N1ZTo6dXBkYXRl
RGlzcGxheVRyZWUoZmxvCiAKICAgICAvLyBDbGVhciB0aGUgY29udGVudHMgb2YgdGhlIHR3byBz
ZXRzLgogICAgIG1fZnV0dXJlRG9jdW1lbnROb2Rlcy0+cmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICBt
X2Z1dHVyZURvY3VtZW50Tm9kZXMtPnNldFNoYWRvd1BzZXVkb0lkKHRyYWNrRnV0dXJlTm9kZXNT
aGFkb3dQc2V1ZG9JZCk7CisgICAgbV9mdXR1cmVEb2N1bWVudE5vZGVzLT5zZXRTaGFkb3dQc2V1
ZG9JZChmdXR1cmVOb2Rlc1NoYWRvd1BzZXVkb0lkKCkpOwogCiAgICAgbV9wYXN0RG9jdW1lbnRO
b2Rlcy0+cmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICBtX3Bhc3REb2N1bWVudE5vZGVzLT5zZXRTaGFk
b3dQc2V1ZG9JZCh0cmFja1Bhc3ROb2Rlc1NoYWRvd1BzZXVkb0lkKTsKKyAgICBtX3Bhc3REb2N1
bWVudE5vZGVzLT5zZXRTaGFkb3dQc2V1ZG9JZChwYXN0Tm9kZXNTaGFkb3dQc2V1ZG9JZCgpKTsK
IAogICAgIC8vIFVwZGF0ZSB0aGUgdHdvIHNldHMgY29udGFpbmluZyBwYXN0IGFuZCBmdXR1cmUg
V2ViVlRUIG9iamVjdHMuCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHJlZmVyZW5jZVRy
ZWUgPSBnZXRDdWVBc0hUTUwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuaAkocmV2aXNpb24gMTI5Nzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhcHBseUNTU1Byb3BlcnRpZXMoKTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIHRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKCk7CiAKIHBy
aXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlQm94KERvY3VtZW50KiwgVGV4dFRyYWNrQ3VlKik7CkBA
IC04MCw2ICs4MSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflRleHRUcmFja0N1ZSgpOwog
CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGFzdE5vZGVzU2hhZG93UHNldWRvSWQo
KTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmdXR1cmVOb2Rlc1NoYWRvd1BzZXVk
b0lkKCk7CisKICAgICBUZXh0VHJhY2sqIHRyYWNrKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUcmFj
ayhQYXNzUmVmUHRyPFRleHRUcmFjaz4pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDEyOTc5
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzMCw2ICszMzAsNDAgQEAgZXh0ZXJuIENHRmxvYXQgKCp3
a05TRWxhc3RpY0RlbHRhRm9yUmVibwogZXh0ZXJuIENHRmxvYXQgKCp3a05TUmVib3VuZERlbHRh
Rm9yRWxhc3RpY0RlbHRhKShDR0Zsb2F0IGRlbHRhKTsKICNlbmRpZgogCit0eXBlZGVmIGVudW0g
eworICAgIHdrQ2FwdGlvbkZvbnRTdHlsZURlZmF1bHQgPSAwLAorICAgIHdrQ2FwdGlvbkZvbnRT
dHlsZU1vbm9zcGFjZWRXaXRoU2VyaWYsCisgICAgd2tDYXB0aW9uRm9udFN0eWxlUHJvcG9ydGlv
bmFsV2l0aFNlcmlmLAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZU1vbm9zcGFjZWRXaXRob3V0U2Vy
aWYsCisgICAgd2tDYXB0aW9uRm9udFN0eWxlUHJvcG9ydGlvbmFsV2l0aG91dFNlcmlmLAorICAg
IHdrQ2FwdGlvbkZvbnRTdHlsZUNhc3VhbCwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVDdXJzaXZl
LAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZVNtYWxsQ2FwaXRhbCwKKyAgICB3a0NhcHRpb25Gb250
U3R5bGVNYXgKK30gd2tDYXB0aW9uRm9udFN0eWxlOworCit0eXBlZGVmIGVudW0geworICAgIHdr
Q2FwdGlvblRleHRFZGdlU3R5bGVVbmRlZmluZWQgPSAwLAorICAgIHdrQ2FwdGlvblRleHRFZGdl
U3R5bGVOb25lLAorICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVSYWlzZWQsCisgICAgd2tDYXB0
aW9uVGV4dEVkZ2VTdHlsZURlcHJlc3NlZCwKKyAgICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlVW5p
Zm9ybSwKKyAgICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlRHJvcFNoYWRvdywKKyAgICB3a0NhcHRp
b25UZXh0RWRnZVN0eWxlTWF4Cit9IHdrQ2FwdGlvblRleHRFZGdlU3R5bGU7CisKK2V4dGVybiBi
b29sICgqd2tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcykodm9pZCk7CitleHRl
cm4gYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKSh2
b2lkKTsKK2V4dGVybiBDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91
bmRDb2xvcikodm9pZCk7CitleHRlcm4gQ0dDb2xvclJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNv
cHlCYWNrZ3JvdW5kQ29sb3IpKHZvaWQpOworZXh0ZXJuIENHQ29sb3JSZWYoKndrQ2FwdGlvbkFw
cGVhcmFuY2VDb3B5V2luZG93Q29sb3IpKHZvaWQpOworZXh0ZXJuIGJvb2woKndrQ2FwdGlvbkFw
cGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSkoQ0dGbG9hdCopOworZXh0ZXJuIGJvb2woKndr
Q2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eSkoQ0dGbG9hdCopOworZXh0ZXJu
IGJvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KShDR0Zsb2F0Kik7Citl
eHRlcm4gQ0dGb250UmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvbnRGb3JTdHlsZSkoaW50
KTsKK2V4dGVybiBib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJT
aXplKShDR0Zsb2F0Kik7CitleHRlcm4gaW50KCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVk
Z2VTdHlsZSkodm9pZCk7CitleHRlcm4gQ0ZTdHJpbmdSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24pKHZvaWQpOwogfQogCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLm1tCShyZXZpc2lvbiAxMjk3OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjA5LDMgKzIw
OSwxNSBAQCBDR0Zsb2F0ICgqd2tOU0VsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0CiBDR0Zsb2F0
ICgqd2tOU1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSkoQ0dGbG9hdCBkZWx0YSk7CiAjZW5k
aWYKIAorYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2VyUHJlZmVyZW5jZXMpKHZvaWQp
OworYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKSh2
b2lkKTsKK0NHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9y
KSh2b2lkKTsKK0NHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENv
bG9yKSh2b2lkKTsKK0NHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29s
b3IpKHZvaWQpOworYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5
KShDR0Zsb2F0Kik7Citib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNp
dHkpKENHRmxvYXQqKTsKK2Jvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5
KShDR0Zsb2F0Kik7CitDR0ZvbnRSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0
eWxlKShpbnQpOworYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVy
U2l6ZSkoQ0dGbG9hdCopOworaW50KCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHls
ZSkodm9pZCk7CitDRlN0cmluZ1JlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hh
bmdlZE5vdGlmaWNhdGlvbikodm9pZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWRMaXN0ZW5lci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyX2gKKyNkZWZpbmUgQ2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZExpc3RlbmVyX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYXB0aW9uUHJl
ZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBjYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkgPSAwOworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkNh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcigpIHsgfQorfTsKKworfQorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCShyZXZpc2lvbiAxMjk3
OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEVsZW1lbnQ7CkBAIC00Niw2ICs0Nyw5IEBAIGNsYXNzIFJlbmRlck1ldGVyOwogI2lmIEVOQUJM
RShQUk9HUkVTU19FTEVNRU5UKQogY2xhc3MgUmVuZGVyUHJvZ3Jlc3M7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCitjbGFzcyBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVu
ZXI7CisjZW5kaWYKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiAKIGNsYXNzIFJlbmRlclRoZW1lIDog
cHVibGljIFJlZkNvdW50ZWQ8UmVuZGVyVGhlbWU+IHsKQEAgLTIyNSw2ICsyMjksMTUgQEAgcHVi
bGljOgogICAgIHZvaWQgcGFpbnRTbGlkZXJUaWNrcyhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgZmxvYXQgY2FwdGlvbkZvbnRTaXpl
U2NhbGUoKSBjb25zdCB7IHJldHVybiAwLjA1OyB9CisgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlv
bnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxi
YWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKSB7fQorICAgIHZpcnR1YWwg
dm9pZCB1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKSB7fQorI2VuZGlmCisKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIYXZlU3BpbkJ1dHRvbihIVE1MSW5wdXRF
bGVtZW50KikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5oCShyZXZpc2lvbiAxMjk3OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSwxMSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHVzZXNUZXN0TW9kZUZvY3VzUmluZ0NvbG9yKCkgY29uc3Q7
CiAgICAgLy8gQSB2aWV3IGFzc29jaWF0ZWQgdG8gdGhlIGNvbnRhaW5lZCBkb2N1bWVudC4gU3Vi
Y2xhc3NlcyBtYXkgbm90IGhhdmUgc3VjaCBhIHZpZXcgYW5kIHJldHVybiBhIGZha2UuCiAgICAg
dmlydHVhbCBOU1ZpZXcqIGRvY3VtZW50Vmlld0ZvcihSZW5kZXJPYmplY3QqKSBjb25zdDsKKwor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWQoKTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyVGhlbWVNYWMoKTsKICAgICB2
aXJ0dWFsIH5SZW5kZXJUaGVtZU1hYygpOwpAQCAtMTc4LDYgKzE4MywxNSBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lZGlhU2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxl
KikgY29uc3Q7CiAgICAgdmlydHVhbCBJbnRQb2ludCB2b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0
ZUJ1dHRvbihSZW5kZXJCb3gqLCBjb25zdCBJbnRTaXplJikgY29uc3QgT1ZFUlJJREU7CiAjZW5k
aWYKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZl
cnNDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2Fw
dGlvblByZWZlcmVuY2VzKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBmbG9hdCBjYXB0
aW9uRm9udFNpemVTY2FsZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNh
cHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9u
UHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgT1ZFUlJJREU7CisjZW5kaWYKICAgICAKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3VzZWQoKSBjb25zdDsKIApA
QCAtMjM3LDYgKzI1MSwxNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGludCogcHJvZ3Jlc3NCYXJN
YXJnaW5zKE5TQ29udHJvbFNpemUpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisgICAgQ29sb3IgY2FwdGlvbnNXaW5kb3dDb2xvcigpIGNvbnN0OworICAgIENvbG9y
IGNhcHRpb25zQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgQ29sb3IgY2FwdGlvbnNUZXh0
Q29sb3IoKSBjb25zdDsKKyAgICBTdHJpbmcgY2FwdGlvbnNEZWZhdWx0Rm9udCgpIGNvbnN0Owor
ICAgIENvbG9yIGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKGNvbnN0IENvbG9yJikgY29u
c3Q7CisgICAgU3RyaW5nIGNhcHRpb25zVGV4dEVkZ2VTdHlsZSgpIGNvbnN0OworICAgIFN0cmlu
ZyBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IENvbG9yJikgY29uc3Q7CisgICAgU3RyaW5nIGNzc0NvbG9yUHJvcGVydHkoQ1NT
UHJvcGVydHlJRCwgY29uc3QgQ29sb3ImKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IG11dGFibGUgUmV0YWluUHRyPE5TUG9wVXBCdXR0b25DZWxsPiBtX3BvcHVwQnV0dG9uOwogICAg
IG11dGFibGUgUmV0YWluUHRyPE5TU2VhcmNoRmllbGRDZWxsPiBtX3NlYXJjaDsKQEAgLTI1Miw2
ICsyNzcsMTEgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEhhc2hNYXA8aW50LCBSR0JBMzI+IG1f
c3lzdGVtQ29sb3JDYWNoZTsKIAogICAgIFJldGFpblB0cjxXZWJDb3JlUmVuZGVyVGhlbWVOb3Rp
ZmljYXRpb25PYnNlcnZlcj4gbV9ub3RpZmljYXRpb25PYnNlcnZlcjsKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKyAgICBIYXNoU2V0PENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5l
cio+IG1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnM7CisgICAgYm9vbCBtX2xpc3Rl
bmluZ0ZvckNhcHRpb25QcmVmZXJlbmNlTm90aWZpY2F0aW9uczsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMTI5Nzk4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRWxlbWVudC5oIgogI2ltcG9ydCAiRmlsZUxp
c3QuaCIKKyNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiRnJhbWVWaWV3Lmgi
CiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiSFRNTElucHV0RWxlbWVu
dC5oIgpAQCAtMTUxLDYgKzE1MiwxMSBAQCBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJU
aGVtZTo6dGhlCiB9CiAjZW5kaWYKIAorc3RhdGljIHZvaWQgdXNlckNhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9p
ZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmLCBjb25zdCB2b2lkICosIENGRGljdGlvbmFyeVJlZikK
K3sKKyAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZU1hYyo+KG9ic2VydmVyKS0+Y2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZCgpOworfQorCiBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJU
aGVtZU1hYzo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1l
TWFjKTsKQEAgLTE2MCw2ICsxNjYsOSBAQCBSZW5kZXJUaGVtZU1hYzo6UmVuZGVyVGhlbWVNYWMo
KQogICAgIDogbV9pc1NsaWRlclRodW1iSG9yaXpvbnRhbFByZXNzZWQoZmFsc2UpCiAgICAgLCBt
X2lzU2xpZGVyVGh1bWJWZXJ0aWNhbFByZXNzZWQoZmFsc2UpCiAgICAgLCBtX25vdGlmaWNhdGlv
bk9ic2VydmVyKEFkb3B0TlMsIFtbV2ViQ29yZVJlbmRlclRoZW1lTm90aWZpY2F0aW9uT2JzZXJ2
ZXIgYWxsb2NdIGluaXRXaXRoVGhlbWU6dGhpc10pCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
ICAgICwgbV9saXN0ZW5pbmdGb3JDYXB0aW9uUHJlZmVyZW5jZU5vdGlmaWNhdGlvbnMoZmFsc2Up
CisjZW5kaWYKIHsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFk
ZE9ic2VydmVyOm1fbm90aWZpY2F0aW9uT2JzZXJ2ZXIuZ2V0KCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6QHNlbGVjdG9y
KHN5c3RlbUNvbG9yc0RpZENoYW5nZTopCkBAIC0xNzAsNiArMTc5LDExIEBAIFJlbmRlclRoZW1l
TWFjOjpSZW5kZXJUaGVtZU1hYygpCiBSZW5kZXJUaGVtZU1hYzo6flJlbmRlclRoZW1lTWFjKCkK
IHsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2Vy
dmVyOm1fbm90aWZpY2F0aW9uT2JzZXJ2ZXIuZ2V0KCldOworCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorICAgIGlmIChtX2xpc3RlbmluZ0ZvckNhcHRpb25QcmVmZXJlbmNlTm90aWZpY2F0aW9u
cykKKyAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZW1vdmVPYnNlcnZlcihDRk5vdGlmaWNh
dGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCksIHRoaXMsIHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRT
ZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKSwgTlVMTCk7CisjZW5kaWYKIH0KIAogQ29sb3Ig
UmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkg
Y29uc3QKQEAgLTIxMjgsNiArMjE0MiwyNTMgQEAgSW50UG9pbnQgUmVuZGVyVGhlbWVNYWM6OnZv
bHVtZVNsaWRlck9mZgogICAgIHJldHVybiBSZW5kZXJNZWRpYUNvbnRyb2xzOjp2b2x1bWVTbGlk
ZXJPZmZzZXRGcm9tTXV0ZUJ1dHRvbihtdXRlQnV0dG9uQm94LCBzaXplKTsKIH0KIAorI2lmIEVO
QUJMRShWSURFT19UUkFDSykKK2Jvb2wgUmVuZGVyVGhlbWVNYWM6OnVzZXJIYXNDYXB0aW9uUHJl
ZmVyZW5jZXMoKSBjb25zdAoreworICAgIHJldHVybiB3a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNl
clByZWZlcmVuY2VzKCk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVNYWM6OnVzZXJQcmVmZXJzQ2Fw
dGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiB3a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRp
b25zV2hlbkF2YWlsYWJsZSgpOworfQorCitDb2xvciBSZW5kZXJUaGVtZU1hYzo6Y2FwdGlvbnNX
aW5kb3dDb2xvcigpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yKEFk
b3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IoKSk7CisgICAgQ29sb3Ig
d2luZG93Q29sb3IoY29sb3IuZ2V0KCkpOworICAgIGlmICghd2luZG93Q29sb3IuaXNWYWxpZCgp
KQorICAgICAgICB3aW5kb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICAKKyAgICBD
R0Zsb2F0IG9wYWNpdHk7CisgICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFj
aXR5KCZvcGFjaXR5KSkKKyAgICAgICAgcmV0dXJuIENvbG9yKHdpbmRvd0NvbG9yLnJlZCgpLCB3
aW5kb3dDb2xvci5ncmVlbigpLCB3aW5kb3dDb2xvci5ibHVlKCksIG9wYWNpdHkgKiAyNTUpOwor
ICAgIAorICAgIGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBDb2xvcigpOworCisgICAgcmV0
dXJuIHdpbmRvd0NvbG9yOworfQorCitDb2xvciBSZW5kZXJUaGVtZU1hYzo6Y2FwdGlvbnNCYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJl
IHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJvbHMuY3NzIGZvciAt
d2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcworICAgIC8vIGFuZCB3ZWJraXQtbWVk
aWEtdGV4dC10cmFjay1mdXR1cmUtbm9kZXMuCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xv
ciwgZGVmYXVsdEJhY2tncm91bmRDb2xvciwgKENvbG9yKDAsIDAsIDAsIDAuOCAqIDI1NSkpKTsK
KworICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihBZG9wdENGLCB3a0NhcHRpb25BcHBl
YXJhbmNlQ29weUJhY2tncm91bmRDb2xvcigpKTsKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3Io
Y29sb3IuZ2V0KCkpOworICAgIGlmICghYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkgeworICAg
ICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBkZWZhdWx0QmFja2dyb3VuZENvbG9yOworICAgIH0KKwor
ICAgIENHRmxvYXQgb3BhY2l0eTsKKyAgICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tn
cm91bmRPcGFjaXR5KCZvcGFjaXR5KSkKKyAgICAgICAgcmV0dXJuIENvbG9yKGJhY2tncm91bmRD
b2xvci5yZWQoKSwgYmFja2dyb3VuZENvbG9yLmdyZWVuKCksIGJhY2tncm91bmRDb2xvci5ibHVl
KCksIG9wYWNpdHkgKiAyNTUpOworCisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIENv
bG9yKCk7CisgICAgCisgICAgcmV0dXJuIGJhY2tncm91bmRDb2xvcjsKK30KKworQ29sb3IgUmVu
ZGVyVGhlbWVNYWM6OmNhcHRpb25zVGV4dENvbG9yKCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8
Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3Jv
dW5kQ29sb3IoKSk7CisgICAgQ29sb3IgdGV4dENvbG9yKGNvbG9yLmdldCgpKTsKKyAgICBpZiAo
IXRleHRDb2xvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgLy8gVGhpcyBkZWZhdWx0IHZhbHVlIG11
c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4gbWVkaWFDb250cm9scy5jc3Mg
Zm9yIC13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIuCisgICAgICAgIHRleHRDb2xv
ciA9IENvbG9yOjp3aGl0ZTsKKyAgICB9CisgICAgCisgICAgQ0dGbG9hdCBvcGFjaXR5OworICAg
IGlmICh3a0NhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkoJm9wYWNpdHkpKQor
ICAgICAgICByZXR1cm4gQ29sb3IodGV4dENvbG9yLnJlZCgpLCB0ZXh0Q29sb3IuZ3JlZW4oKSwg
dGV4dENvbG9yLmJsdWUoKSwgb3BhY2l0eSAqIDI1NSk7CisgICAgCisgICAgaWYgKCFjb2xvcikK
KyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgCisgICAgcmV0dXJuIHRleHRDb2xvcjsKK30K
KworQ29sb3IgUmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKGNv
bnN0IENvbG9yJiB0ZXh0Q29sb3IpIGNvbnN0Cit7CisgICAgaW50IGRpc3RhbmNlRnJvbVdoaXRl
ID0gZGlmZmVyZW5jZVNxdWFyZWQodGV4dENvbG9yLCBDb2xvcjo6d2hpdGUpOworICAgIGludCBk
aXN0YW5jZUZyb21CbGFjayA9IGRpZmZlcmVuY2VTcXVhcmVkKHRleHRDb2xvciwgQ29sb3I6OmJs
YWNrKTsKKyAgICAKKyAgICBpZiAoZGlzdGFuY2VGcm9tV2hpdGUgPCBkaXN0YW5jZUZyb21CbGFj
aykKKyAgICAgICAgcmV0dXJuIHRleHRDb2xvci5kYXJrKCk7CisgICAgCisgICAgcmV0dXJuIHRl
eHRDb2xvci5saWdodCgpOworfQorCitTdHJpbmcgUmVuZGVyVGhlbWVNYWM6OmNzc1Byb3BlcnR5
V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Y29uc3QgQ29sb3ImIHRleHRDb2xvcikgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgCisgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGlkKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICBidWlsZGVyLmFwcGVuZChjYXB0aW9uc0VkZ2VD
b2xvckZvclRleHRDb2xvcih0ZXh0Q29sb3IpLnNlcmlhbGl6ZWQoKSk7CisgICAgYnVpbGRlci5h
cHBlbmQoJzsnKTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisgICAgCitT
dHJpbmcgUmVuZGVyVGhlbWVNYWM6OmNzc0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwg
Y29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICAKKyAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoaWQpKTsKKyAg
ICBidWlsZGVyLmFwcGVuZCgnOicpOworICAgIGJ1aWxkZXIuYXBwZW5kKGNvbG9yLnNlcmlhbGl6
ZWQoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKKyAgICAKKyAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOworfQorCitTdHJpbmcgUmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zVGV4dEVk
Z2VTdHlsZSgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcs
IGVkZ2VTdHlsZVJhaXNlZCwgKCIgLS4wNWVtIC0uMDVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRn
ZVN0eWxlRGVwcmVzc2VkLCAoIiAuMDVlbSAuMDVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0
eWxlRHJvcFNoYWRvdywgKCIgLjA3NWVtIC4wNzVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0
eWxlVW5pZm9ybSwgKCIgLjAzZW0gIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
CisgICAgQ29sb3IgY29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcigpOworICAgIGlmICghY29sb3Iu
aXNWYWxpZCgpKQorICAgICAgICBjb2xvci5zZXROYW1lZENvbG9yKCJibGFjayIpOworICAgIGNv
bG9yID0gY2FwdGlvbnNFZGdlQ29sb3JGb3JUZXh0Q29sb3IoY29sb3IpOworCisgICAgd2tDYXB0
aW9uVGV4dEVkZ2VTdHlsZSB0ZXh0RWRnZVN0eWxlID0gc3RhdGljX2Nhc3Q8d2tDYXB0aW9uVGV4
dEVkZ2VTdHlsZT4od2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUoKSk7CisgICAg
c3dpdGNoICh0ZXh0RWRnZVN0eWxlKSB7CisgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxl
VW5kZWZpbmVkOgorICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZU5vbmU6CisgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxl
UmFpc2VkOgorICAgICAgICByZXR1cm4gY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQ
cm9wZXJ0eVRleHRTaGFkb3csIGVkZ2VTdHlsZVJhaXNlZCwgY29sb3IpOworICAgIGNhc2Ugd2tD
YXB0aW9uVGV4dEVkZ2VTdHlsZURlcHJlc3NlZDoKKyAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5
V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVEZXByZXNz
ZWQsIGNvbG9yKTsKKyAgICBjYXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVEcm9wU2hhZG93Ogor
ICAgICAgICByZXR1cm4gY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVRl
eHRTaGFkb3csIGVkZ2VTdHlsZURyb3BTaGFkb3csIGNvbG9yKTsKKyAgICBjYXNlIHdrQ2FwdGlv
blRleHRFZGdlU3R5bGVVbmlmb3JtOgorICAgICAgICByZXR1cm4gY3NzUHJvcGVydHlXaXRoVGV4
dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UsIGVkZ2VTdHlsZVVuaWZvcm0s
IGNvbG9yKTsKKworICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZU1heDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworU3RyaW5nIFJlbmRlclRoZW1l
TWFjOjpjYXB0aW9uc0RlZmF1bHRGb250KCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0dGb250
UmVmPiBmb250KEFkb3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxlKHdr
Q2FwdGlvbkZvbnRTdHlsZURlZmF1bHQpKTsKKyAgICBpZiAoIWZvbnQpCisgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOworCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lKEFkb3B0
Q0YsIENHRm9udENvcHlQb3N0U2NyaXB0TmFtZShmb250LmdldCgpKSk7CisgICAgaWYgKCFuYW1l
KQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICAKKyAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NT
UHJvcGVydHlGb250RmFtaWx5KSk7CisgICAgYnVpbGRlci5hcHBlbmQoIjogXCIiKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChuYW1lLmdldCgpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiXCI7Iik7Cisg
ICAgCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFJlbmRlclRo
ZW1lTWFjOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0Cit7CisgICAgU3RyaW5n
QnVpbGRlciBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldDsKKworICAgIENvbG9yIGNvbG9yID0g
Y2FwdGlvbnNCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Cisg
ICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKKyAg
ICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZTo6cGFz
dE5vZGVzU2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNo
ZWV0LmFwcGVuZCgneycpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBl
bmQoY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgY29sb3IpKTsK
KyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7CisKKyAgICAg
ICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86OiIpOworICAgICAg
ICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNrQ3VlOjpmdXR1cmVO
b2Rlc1NoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVl
dC5hcHBlbmQoJ3snKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5k
KGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGNvbG9yKSk7Cisg
ICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScpOworICAgIH0KKwor
ICAgIGNvbG9yID0gY2FwdGlvbnNXaW5kb3dDb2xvcigpOworICAgIGlmIChjb2xvci5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86
OiIpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNr
Q3VlQm94Ojp0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpKTsKKyAgICAgICAgY2FwdGlv
bnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJp
ZGVTdHlsZVNoZWV0LmFwcGVuZChjc3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yLCBjb2xvcikpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBl
bmQoJ30nKTsKKyAgICB9CisKKyAgICBjb2xvciA9IGNhcHRpb25zVGV4dENvbG9yKCk7CisgICAg
U3RyaW5nIGVkZ2VTdHlsZSA9IGNhcHRpb25zVGV4dEVkZ2VTdHlsZSgpOworICAgIFN0cmluZyBm
b250TmFtZSA9IGNhcHRpb25zRGVmYXVsdEZvbnQoKTsKKyAgICBpZiAoY29sb3IuaXNWYWxpZCgp
IHx8ICFlZGdlU3R5bGUuaXNFbXB0eSgpIHx8ICFmb250TmFtZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86OiIpOworICAgICAg
ICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNrQ3VlQm94Ojp0ZXh0
VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0
eWxlU2hlZXQuYXBwZW5kKCd7Jyk7CisKKyAgICAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkKKyAg
ICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChjc3NDb2xvclByb3Bl
cnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yKSk7CisgICAgICAgIGlmICghZWRnZVN0eWxlLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChl
ZGdlU3R5bGUpOworICAgICAgICBpZiAoIWZvbnROYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChmb250TmFtZSk7CisKKyAgICAgICAg
Y2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7CisgICAgfQorCisgICAgcmV0
dXJuIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LnRvU3RyaW5nKCk7Cit9CisKK2Zsb2F0IFJl
bmRlclRoZW1lTWFjOjpjYXB0aW9uRm9udFNpemVTY2FsZSgpIGNvbnN0Cit7CisgICAgQ0dGbG9h
dCBjaGFyYWN0ZXJTY2FsZSA9IFJlbmRlclRoZW1lOjpjYXB0aW9uRm9udFNpemVTY2FsZSgpOwor
ICAgIENHRmxvYXQgc2NhbGVBZGp1c3RtZW50OworICAgIAorICAgIGlmICghd2tDYXB0aW9uQXBw
ZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSgmc2NhbGVBZGp1c3RtZW50KSkKKyAgICAg
ICAgcmV0dXJuIGNoYXJhY3RlclNjYWxlOworICAgIAorICAgIHJldHVybiBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KHNjYWxlQWRqdXN0bWVudCAqIGNoYXJhY3RlclNjYWxlKTsKK30KKwordm9pZCBS
ZW5kZXJUaGVtZU1hYzo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpCit7CisgICAgZm9yIChI
YXNoU2V0PENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcio+OjppdGVyYXRvciBpID0g
bV9jYXB0aW9uUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVycy5iZWdpbigpOyBpICE9IG1fY2FwdGlv
blByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnMuZW5kKCk7ICsraSkKKyAgICAgICAgKCppKS0+Y2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOworfQorCit2b2lkIFJlbmRlclRoZW1lTWFjOjpyZWdp
c3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVu
Y2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikKK3sKKyAgICBpZiAoIXdrQ2FwdGlvbkFwcGVh
cmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIGlmICghbV9saXN0ZW5pbmdGb3JDYXB0aW9uUHJlZmVyZW5jZU5vdGlmaWNhdGlv
bnMpIHsKKyAgICAgICAgbV9saXN0ZW5pbmdGb3JDYXB0aW9uUHJlZmVyZW5jZU5vdGlmaWNhdGlv
bnMgPSB0cnVlOworICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyIChDRk5v
dGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCksIHRoaXMsIHVzZXJDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uQ2FsbGJhY2ssIHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRT
ZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKSwgTlVMTCwgQ0ZOb3RpZmljYXRpb25TdXNwZW5z
aW9uQmVoYXZpb3JDb2FsZXNjZSk7CisgICAgfQorICAgIAorICAgIG1fY2FwdGlvblByZWZlcmVu
Y2VDaGFuZ2VMaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTsKK30KKyAgICAKK3ZvaWQgUmVuZGVyVGhl
bWVNYWM6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgIGlmICh3
a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkpCisgICAg
ICAgIG1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsK
K30KKyNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCisKICNlbmRpZiAvLyBFTkFCTEUoVklE
RU8pCiAKIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnNob3VsZFNob3dQbGFjZWhvbGRlcldoZW5Gb2N1
c2VkKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTc5OCkKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5
LTI3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFs
bG93IHBvcnRzIHRvIG92ZXJyaWRlIHRleHQgdHJhY2sgcmVuZGVyaW5nIHN0eWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTIwNDQ5NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0
ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6IElu
aXRpYWxpemUgbmV3IFdLU0kgZnVuY3Rpb24gcG9pbnRlcnMuCisKIDIwMTItMDktMjcgIEhlbGRl
ciBDb3JyZWlhICA8aGVsZGVyLmNvcnJlaWFAbm9raWEuY29tPgogCiAgICAgICAgIFtDYWlyb10g
VW5uZWNlc3NhcnkgY3JlYXRpb24gb2YgU2hhcmVhYmxlQml0bWFwJ3MgZm9yIGRpcmVjdGx5IGNv
bXBvc2l0ZWQgaW1hZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1t
CShyZXZpc2lvbiAxMjk3OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4Niw1
ICsxODYsMTcgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAg
ICBJTklUKE5TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKTsKICNlbmRpZgogCisgICAgICAg
IElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2VyUHJlZmVyZW5jZXMpOworICAgICAgICBJTklU
KENhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJsZSk7CisgICAgICAgIElO
SVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yKTsKKyAgICAgICAgSU5JVChD
YXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICBJTklUKENhcHRp
b25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yKTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFy
YW5jZUdldEZvcmVncm91bmRPcGFjaXR5KTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5j
ZUdldEJhY2tncm91bmRPcGFjaXR5KTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdl
dFdpbmRvd09wYWNpdHkpOworICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlQ29weUZvbnRG
b3JTdHlsZSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJh
Y3RlclNpemUpOworICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHls
ZSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3Rp
ZmljYXRpb24pOwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5
Nzk4KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTItMDktMjcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWxsb3cgcG9ydHMgdG8gb3ZlcnJpZGUgdGV4dCB0cmFjayByZW5k
ZXJpbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3ODAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjA0NDk2ND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0
aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRk
IHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlKTogSW5pdGlhbGl6ZSBuZXcgV0tTSSBmdW5jdGlvbiBwb2ludGVycy4K
KworMjAxMi0wOS0yNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gKE9PUFMhKS4KKyAgICAgICAgTmVlZCB0
aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFz
IGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9u
cyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50
ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCiAyMDEy
LTA5LTI2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
U3RvcCB1c2luZyBrQ0ZVUkxIRlNQYXRoU3R5bGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9u
IDEyOTc5OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUlu
dGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjA1LDYgKzIwNSwxOSBAQCB2b2lkIEluaXRX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChOU1JlYm91bmREZWx0YUZvckVs
YXN0aWNEZWx0YSk7CiAjZW5kaWYKIAorICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2Vy
UHJlZmVyZW5jZXMpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVu
QXZhaWxhYmxlKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xv
cik7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IpOworICAg
IElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IpOworICAgIElOSVQoQ2FwdGlv
bkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFy
YW5jZUdldEJhY2tncm91bmRPcGFjaXR5KTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0
V2luZG93T3BhY2l0eSk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250Rm9yU3R5
bGUpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUp
OworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKTsKKyAgICBJTklU
KENhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKTsKKwogI2Vu
ZGlmCiAgICAgZGlkSW5pdCA9IHRydWU7CiB9CkluZGV4OiBXZWJLaXRMaWJyYXJpZXMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
OTc5OCkKKysrIFdlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOCBAQAorMjAxMi0wOS0yNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyB0byBvdmVycmlkZSB0ZXh0IHRyYWNrIHJlbmRl
cmluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDQ0OTY0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBXS1NJIHdpdGggU1BJ
IGZvciBnZXR0aW5nIHRoZSB1c2VyIGNhcHRpb24gYXBwZWFyYW5jZSBwcmVmZXJlbmNlcy4KKwor
ICAgICAgICAqIFdlYktpdFN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIGxpYldlYktpdFN5
c3RlbUludGVyZmFjZUxpb24uYToKKyAgICAgICAgKiBsaWJXZWJLaXRTeXN0ZW1JbnRlcmZhY2VN
b3VudGFpbkxpb24uYToKKyAgICAgICAgKiBsaWJXZWJLaXRTeXN0ZW1JbnRlcmZhY2VTbm93TGVv
cGFyZC5hOgorCiAyMDEyLTA5LTI1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjM1MTkwNj4gSGF2ZSBEdW1wUmVuZGVy
VHJlZSBhbmQgV2ViS2l0VGVzdFJ1bm5lciBjcmFzaCBsb2dzIHNob3cgd2hpY2ggdGVzdCBjcmFz
aGVkCkluZGV4OiBXZWJLaXRMaWJyYXJpZXMvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0TGlicmFyaWVzL1dlYktpdFN5c3RlbUludGVyZmFjZS5oCShyZXZpc2lv
biAxMjk3OTgpCisrKyBXZWJLaXRMaWJyYXJpZXMvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKiAgICAgIAogICAgIFdlYktpdFN5c3RlbUlu
dGVyZmFjZS5oCi0gICAgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmln
aHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgUHVibGljIGhlYWRlciBmaWxlLgog
Ki8KQEAgLTUwOSw2ICs1MDksNDEgQEAgQ0dGbG9hdCBXS05TUmVib3VuZERlbHRhRm9yRWxhc3Rp
Y0RlbHRhKAogQm9vbGVhbiBXS0pMSXNSdW50aW1lQW5kV2ViQ29tcG9uZW50c0luc3RhbGxlZCh2
b2lkKTsKICNlbmRpZgogCit0eXBlZGVmIGVudW0geworICAgIFdLQ2FwdGlvbkZvbnRTdHlsZURl
ZmF1bHQgPSAwLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZU1vbm9zcGFjZWRXaXRoU2VyaWYsCisg
ICAgV0tDYXB0aW9uRm9udFN0eWxlUHJvcG9ydGlvbmFsV2l0aFNlcmlmLAorICAgIFdLQ2FwdGlv
bkZvbnRTdHlsZU1vbm9zcGFjZWRXaXRob3V0U2VyaWYsCisgICAgV0tDYXB0aW9uRm9udFN0eWxl
UHJvcG9ydGlvbmFsV2l0aG91dFNlcmlmLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZUNhc3VhbCwK
KyAgICBXS0NhcHRpb25Gb250U3R5bGVDdXJzaXZlLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZVNt
YWxsQ2FwaXRhbCwKKyAgICBXS0NhcHRpb25Gb250U3R5bGVNYXgKK30gV0tDYXB0aW9uRm9udFN0
eWxlOworCit0eXBlZGVmIGVudW0geworICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVVbmRlZmlu
ZWQgPSAwLAorICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVOb25lLAorICAgIFdLQ2FwdGlvblRl
eHRFZGdlU3R5bGVSYWlzZWQsCisgICAgV0tDYXB0aW9uVGV4dEVkZ2VTdHlsZURlcHJlc3NlZCwK
KyAgICBXS0NhcHRpb25UZXh0RWRnZVN0eWxlVW5pZm9ybSwKKyAgICBXS0NhcHRpb25UZXh0RWRn
ZVN0eWxlRHJvcFNoYWRvdywKKyAgICBXS0NhcHRpb25UZXh0RWRnZVN0eWxlTWF4Cit9IFdLQ2Fw
dGlvblRleHRFZGdlU3R5bGU7CisKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVm
ZXJlbmNlcyh2b2lkKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0aW9uc1doZW5B
dmFpbGFibGUodm9pZCk7CitDR0NvbG9yUmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdy
b3VuZENvbG9yKHZvaWQpOworQ0dDb2xvclJlZiBXS0NhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tn
cm91bmRDb2xvcih2b2lkKTsKK0NHQ29sb3JSZWYgV0tDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5k
b3dDb2xvcih2b2lkKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFj
aXR5KENHRmxvYXQqKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFj
aXR5KENHRmxvYXQqKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHko
Q0dGbG9hdCopOworQ0dGb250UmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxl
KGludCBmb250U3R5bGUpOworYm9vbCBXS0NhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFy
YWN0ZXJTaXplKENHRmxvYXQqKTsKK2ludCBXS0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VT
dHlsZSh2b2lkKTsKK0NGU3RyaW5nUmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0No
YW5nZWROb3RpZmljYXRpb24odm9pZCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
Cg==
</data>
<flag name="commit-queue"
          id="178292"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166134</attachid>
            <date>2012-09-27 20:46:41 -0700</date>
            <delta_ts>2012-09-28 12:21:21 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>user_preferences_patch_26.txt</filename>
            <type>text/plain</type>
            <size>60655</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTgzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBACisyMDEyLTA5LTI3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHBvcnRzIHRv
IG92ZXJyaWRlIHRleHQgdHJhY2sgcmVuZGVyaW5nIHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTIwNDQ5NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IG5ldyBXZWJraXRTeXN0ZW1JbnRlcmZhY2Ug
ZnVuY3Rpb25zLgorCisgICAgICAgICogY3NzL21lZGlhQ29udHJvbHMuY3NzOiBSZWFycmFuZ2Ug
dGhlIGNhcHRpb24gQ1NTIHNvIGl0IGlzIHBvc3NpYmxlIHRvIHN0eWxlIHRoZSBjdWUgd2luZG93
LAorICAgICAgICAgICAgYmFja2dyb3VuZCwgYW5kIHRleHQgaW5kZXBlbmRlbnRseS4KKworICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KTogSW5pdGlhbGl6ZSBtX2Rpc2FibGVDYXB0
aW9ucyB3aXRoIHRoZW1lLT51c2VyUHJlZmVyc0NhcHRpb25zKCkuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjphdHRhY2gpOiBSZWdpc3RlciBmb3IgY2FwdGlvbiBwcmVmZXJl
bmNlcyBjaGFuZ2UgY2FsbGJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6ZGV0YWNoKTogVW5yZWdpc3RlciBmb3IgY2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2Fs
bGJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlclByZWZlcnND
YXB0aW9ucyk6IFJldHVybiB0aGVtZS0+dXNlclByZWZlcnNDYXB0aW9ucygpLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2lu
ZCk6IENvbnNpZGVyIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6IE1vdmUgdGhlIGNvZGUg
dGhhdCBtYXJrcyBhbGwgdHJhY2tzIGFzCisgICAgICAgICAgICB1bi1jb25maWd1cmVkIHRvIG1h
cmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCBzbyBpdCBjYW4gYmUgcmV1
c2VkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlvblByZWZlcmVu
Y2VzQ2hhbmdlZCk6IE5ldywgZm9yY2UgYSByZWV2YWx1YXRpb24gb2YgYWxsIHRleHQgdHJhY2tz
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0
aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKTogTmV3LCBjb2RlIG1vdmVkIGZyb20gCisgICAgICAg
ICAgICBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDogSW5oZXJpdCBmcm9tIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci4K
KworICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVzZXJD
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKTogTmV3LCBpZiB0aGVtZQorICAgICAgICAgICAgaGFz
IGEgY2FwdGlvbnMgc3R5bGUgc2hlZXQgb3ZlcnJpZGUsIGluamVjdCBpdCBpbnRvIHRoZSBjdXJy
ZW50IHBhZ2UgZ3JvdXAsIG90aGVyd2lzZQorICAgICAgICAgICAgcmVtb3ZlIGluamVjdGVkIHNo
ZWV0LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWVudDo6dXBkYXRlU2l6ZXMpOiBHZXQgcmlkIG9mIHVubmVjZXNzYXJ5IG1lbWJlcgorICAgICAg
ICAgICAgdmFyaWFibGUuIEdldCBjYXB0aW9uIGZvbnQgc2NhbGUgZnJvbSB0aGVtZSBpbnN0ZWFk
IG9mIGhhcmQgY29kaW5nLgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmg6CisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXNlckNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWQpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xSb290RWxlbWVudDo6dXBkYXRlVGV4dFRyYWNrRGlzcGxheSk6CisgICAgICAgICogaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaDogQWRkIHVzZXJDYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkLCBtaW5vciBjbGVhbnVwLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6dXNlckNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWQpOiBOZXcuCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1
ZUJveCk6IFNldCB0aGUgc2hhZG93IHBzZXVkbyBpZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1l
dGhvZCB0byByZXR1cm4gdGhlIAorICAgICAgICAgICAgc2hhZG93IHBzZXVkbyBpZCBzbyBpdCBj
YW4gYmUgdXNlZCBlbHNld2hlcmUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6
OnNoYWRvd1BzZXVkb0lkKTogQ2FsbCB0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6cGFzdE5vZGVzU2hhZG93UHNldWRvSWQpOiBO
ZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1cm4gdGhlIAorICAgICAgICAgICAgc2hhZG93IHBzZXVk
byBpZCBzbyBpdCBjYW4gYmUgdXNlZCBlbHNld2hlcmUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWU6OmZ1dHVyZU5vZGVzU2hhZG93UHNldWRvSWQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUpOgorICAgICAgICAqIGh0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oOiBVcGRhdGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLm1tOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9DYXB0aW9u
UHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIuaDogQWRkZWQuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp1c2VyUHJl
ZmVyc0NhcHRpb25zKTogTmV3LCBkZWZhdWx0IGRvLW5vdGhpbmcgaW1wbGVtZW50YXRpb24uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmNhcHRpb25Gb250U2l6ZVNj
YWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y2FwdGlvbnNTdHls
ZVNoZWV0T3ZlcnJpZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpy
ZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVu
Y2VzQ2hhbmdlZENhbGxiYWNrcyk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6dXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25D
YWxsYmFjayk6IE5ldywgcmVjZWl2ZXMgcHJlZmVyZW5jZSBjaGFuZ2VkIG5vdGlmaWNhdGlvbnMu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6UmVuZGVyVGhlbWVNYWMpOiBJbml0
aWFsaXplIG1fbGlzdGVuaW5nRm9yQ2FwdGlvblByZWZlcmVuY2VOb3RpZmljYXRpb25zLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6On5SZW5kZXJUaGVtZU1hYyk6IFVucmVnaXN0
ZXIgZm9yIG5vdGlmaWNhdGlvbnMgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMpOiBOZXcsIHBhc3N0aHJvdWdo
IHRvIFdLU0kgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6dXNl
clByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OmNhcHRpb25zV2luZG93Q29sb3IpOiBSZXR1cm4gQ29sb3Igd2l0aCB1c2VyJ3MgY2FwdGlv
biB3aW5kb3cgY29sb3IgcHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpjYXB0aW9uc0JhY2tncm91bmRDb2xvcik6IFJldHVybiBDb2xvciB3aXRoIHVzZXIncyBj
YXB0aW9uIAorICAgICAgICAgICAgYmFja2dyb3VuZCBjb2xvciBwcmVmZXJlbmNlLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zVGV4dENvbG9yKTogUmV0dXJuIENv
bG9yIHdpdGggdXNlcidzIGNhcHRpb24gdGV4dCBjb2xvciBwcmVmZXJlbmNlLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKTog
UmV0dXJuIENvbG9yIGZvciB0ZXh0IGVkZ2UgZWZmZWN0LgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OmNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IpOiBSZXR1cm4gU3RyaW5n
IHdpdGggQ1NTIHRvIHNldCBhIHRleHQtc2hhZG93CisgICAgICAgICAgICBvciB3ZWJraXQtdGV4
dC1zdHJva2UgcHJvcGVydHkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6Y3Nz
Q29sb3JQcm9wZXJ0eSk6IFJldHVybiBhIFN0cmluZyB3aXRoIGNzcyB0byBzZXQgYSBwcm9wZXJ0
eSAKKyAgICAgICAgICAgIHdpdGggYSBjb2xvciB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpjYXB0aW9uc1RleHRFZGdlU3R5bGUpOiBSZXR1cm4gYSBTdHJpbmcgd2l0
aCBjc3MgdG8gc3R5bGUgY2FwdGlvbiAKKyAgICAgICAgICAgIHRleHQgd2l0aCB0aGUgdXNlcidz
IHByZWZlcnJlZCB0ZXh0IGVkZ2Ugc3R5ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpjYXB0aW9uc0RlZmF1bHRGb250KTogUmV0dXJuIGEgU3RyaW5nIHdpdGggY3NzIHRvIHN0
eWxlIGNhcHRpb24KKyAgICAgICAgICAgIHRleHQgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCBm
b250LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zU3R5bGVTaGVl
dE92ZXJyaWRlKTogUmV0dXJuIGEgU3RyaW5nIHdpdGggY3NzIHRvIHN0eWxlIGNhcHRpb25zCisg
ICAgICAgICAgICB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVycmVkIHN0eWxlLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25Gb250U2l6ZVNjYWxlKTogUmV0dXJuIHRoZSB1
c2VyJ3MgcHJlZmVycmVkIGNhcHRpb24gZm9udCBzY2FsZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKTogTm90aWZ5IGxpc3RlbmVy
cyBvZiBjYXB0aW9uIHByZWZlcmVuY2UgY2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6
IEFkZCBhIGNhcHRpb24gcHJlZmVyZW5jZXMgCisgICAgICAgICAgICBjaGFuZ2VzIGxpc3RlbmVy
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnVucmVnaXN0ZXJGb3JDYXB0aW9u
UHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKTogUmVtb3ZlIGEgY2FwdGlvbiBwcmVmZXJlbmNl
cworICAgICAgICAgICAgY2hhbmdlcyBsaXN0ZW5lci4KKwogMjAxMi0wOS0yNyAgTWFyayBQaWxn
cmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUg
dW51c2VkIFBsYXRmb3JtU3VwcG9ydCByZWZlcmVuY2UgaW4gQ2xpcGJvYXJkQ2hyb21pdW0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMjk4MzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjU5NywzICsyNTk3LDE4IEBAIF9f
Wk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGUKIF9fWk43V2ViQ29yZTI0VGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4TlNUZXh0QWx0ZXJuYXRpdmVzOF9OU1JhbmdlCiBf
X1pON1dlYkNvcmUzMmNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzRVAxOE5TQXR0cmli
dXRlZFN0cmluZ1JOM1dURjZWZWN0b3JJTlNfMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VFTG0w
RUVFCiAjZW5kaWYKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKK193a0NhcHRpb25BcHBlYXJh
bmNlSGFzVXNlclByZWZlcmVuY2VzCitfd2tDYXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0aW9uc1do
ZW5BdmFpbGFibGUKK193a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcgorX3dr
Q2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yCitfd2tDYXB0aW9uQXBwZWFyYW5j
ZUNvcHlXaW5kb3dDb2xvcgorX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0
eQorX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eQorX3drQ2FwdGlvbkFw
cGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5Citfd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250Rm9y
U3R5bGUKK193a0NhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplCitfd2tD
YXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUKK193a0NhcHRpb25BcHBlYXJhbmNlR2V0
U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyOTgz
NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAJCTA3QkRENkVDMTQ2OUI0QzIwMDlD
OUY4NSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNUEzMEExNDY4N0I4NDAwQTgxRUNFIC8qIEpTVHJhY2tF
dmVudEN1c3RvbS5jcHAgKi87IH07CiAJCTA3RTExNkIxMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1Rl
eHRUcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3Bw
ICovOyB9OwogCQkwN0UxMTcwNzE0ODlFQkVCMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdF
MTE3MDYxNDg5RUJFQjAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCAqLzsgfTsK
KwkJMDdFQzM4QjkxNjE1NEMxQTAwRTgxNDZEIC8qIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRM
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdFQzM4QjgxNjE1NEMxQTAwRTgxNDZEIC8qIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0
ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTA4MDZFNTdBMTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MDZFNTc5MTI4OTMwNDUwMDdDRUQzMiAv
KiBTVkdNYXRyaXguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwODBFNDkyNjEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJh
c2VsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
ODBFNDkyMjEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmgg
Ki87IH07CiAJCTA4MEU0OTI4MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5l
U3BhY2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDgwRTQ5MjQxMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nLmgg
Ki87IH07CkBAIC03MTUyLDYgKzcxNTMsNyBAQAogCQkwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0Ug
LyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwN0UxMTcwNjE0ODlFQkVCMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UzOEEwQjE0OEZDRjBDMDA2RTFF
Q0MgLyogSlNUZXh0VHJhY2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNUZXh0VHJhY2tDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdF
QzM4QjgxNjE1NEMxQTAwRTgxNDZEIC8qIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5l
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgwNkU1Nzkx
Mjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdNYXRyaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgwRTQ5
MjExMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0TGF5b3V0RW5naW5lQmFz
ZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODBFNDkyMjEyNTVGM0JE
MDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEzNDEsNiArMjEzNDMsNyBAQAogCQkJCUJDRTc4OTg1
MTEyMEU3QTYwMDYwRUNFNSAvKiBCaWRpUnVuLmggKi8sCiAJCQkJQkNFQTQ4MTUwOTdEOTMwMjAw
OTRDOUU0IC8qIGJyZWFrX2xpbmVzLmNwcCAqLywKIAkJCQlCQ0VBNDgxNjA5N0Q5MzAyMDA5NEM5
RTQgLyogYnJlYWtfbGluZXMuaCAqLywKKwkJCQkwN0VDMzhCODE2MTU0QzFBMDBFODE0NkQgLyog
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyLmggKi8sCiAJCQkJQkNERDQ1NEQxMjM2
Qzk1QzAwOUE3OTg1IC8qIENvbHVtbkluZm8uaCAqLywKIAkJCQk5MzkyRjE0RjBBRDE4NjIzMDA2
OTFCRDQgLyogQ291bnRlck5vZGUuY3BwICovLAogCQkJCTkzOTJGMTRCMEFEMTg2MUIwMDY5MUJE
NCAvKiBDb3VudGVyTm9kZS5oICovLApAQCAtMjU1NzQsNiArMjU1NzcsNyBAQAogCQkJCUZCOTJE
RjRCMTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNEY3QjRBNjYxNUZGNkQ2QTAwNkI1RjIyIC8qIFBsYXRmb3JtTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJGNjE1RkU2OTUzMDBDNEMwN0UgLyog
TGF5b3V0TWlsZXN0b25lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdFQzM4QjkxNjE1NEMxQTAw
RTgxNDZEIC8qIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9scy5jc3MKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHMuY3NzCShyZXZpc2lvbiAxMjk4
MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9scy5jc3MJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNiw3ICsyMTYsNyBAQCB2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNv
bnRhaW5lCiAgICAgZm9udC1zaXplOiAyMnB4OwogICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlm
OwogICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1
LCAwKTsKKyAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKIAogICAgIGxldHRlci1z
cGFjaW5nOiBub3JtYWw7CiAgICAgd29yZC1zcGFjaW5nOiBub3JtYWw7CkBAIC0yMzQsOCArMjM0
LDYgQEAgdmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZAogCiAgICAgYmFj
a2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpOwogICAgIHBhZGRpbmc6IDJweCAycHg7
Ci0KLSAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiB9CiAKIHZpZGVvOjotd2Via2l0LW1lZGlh
LXRleHQtdHJhY2stZnV0dXJlLW5vZGVzIHsKQEAgLTI0NiwxMSArMjQ0LDEwIEBAIHZpZGVvOjot
d2Via2l0LW1lZGlhLXRleHQtdHJhY2stZnV0dXJlLW4KIAogICAgIG1hcmdpbi1sZWZ0OiAtMnB4
OwogICAgIHBhZGRpbmc6IDJweCAycHggMnB4IDBweDsKLQotICAgIHdoaXRlLXNwYWNlOiBwcmUt
d3JhcDsKIH0KIAogdmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IHsKICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7
CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDEy
OTgzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisj
aW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCkBAIC0yODEs
NiArMjgyLDE0IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKIAog
ICAgIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpOwogICAgIGFkZEVsZW1lbnRUb0RvY3VtZW50TWFw
KHRoaXMsIGRvY3VtZW50KTsKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAoZG9j
dW1lbnQtPnBhZ2UoKSkgeworICAgICAgICBSZW5kZXJUaGVtZSogdGhlbWUgPSBkb2N1bWVudC0+
cGFnZSgpLT50aGVtZSgpOworICAgICAgICBpZiAodGhlbWUtPnVzZXJIYXNDYXB0aW9uUHJlZmVy
ZW5jZXMoKSkKKyAgICAgICAgICAgIG1fZGlzYWJsZUNhcHRpb25zID0gIXRoZW1lLT51c2VyUHJl
ZmVyc0NhcHRpb25zKCk7CisgICAgfQorI2VuZGlmCiB9CiAKIEhUTUxNZWRpYUVsZW1lbnQ6On5I
VE1MTWVkaWFFbGVtZW50KCkKQEAgLTU0MSw2ICs1NTAsMjAgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjphdHRhY2goKQogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+aGlk
ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4obV9wcm94eVdpZGdldC5nZXQoKSk7CiAgICAgfQogI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKGRvY3VtZW50KCktPnBhZ2Uo
KSkKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpLT5yZWdpc3RlckZvckNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CisjZW5kaWYKK30KKwordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpkZXRhY2goKQoreworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAg
ICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPnRo
ZW1lKCktPnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRo
aXMpOworI2VuZGlmCisgICAgSFRNTEVsZW1lbnQ6OmRldGFjaCgpOwogfQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKQpAQCAtMjc4MywyOCArMjgw
NiwzMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxSZW1vdmVUcmFjayhICiAgICAgICAg
IG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLnJlbW92ZShpbmRleCk7CiB9
CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6dXNlcklzSW50ZXJlc3RlZEluVGhpc0xhbmd1YWdl
KGNvbnN0IFN0cmluZyYpIGNvbnN0Citib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJQcmVmZXJz
Q2FwdGlvbnMoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBjaGVjayB0aGUgdXNlcidzIGxhbmd1
YWdlIHByZWZlcmVuY2UgLSBidWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MTIxCi0g
ICAgcmV0dXJuIHRydWU7CisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAg
ICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlbmRlclRoZW1lKiB0
aGVtZSA9IHBhZ2UtPnRoZW1lKCk7CisgICAgcmV0dXJuIHRoZW1lLT51c2VySGFzQ2FwdGlvblBy
ZWZlcmVuY2VzKCkgJiYgdGhlbWUtPnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKIH0KIAogYm9vbCBI
VE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tLaW5kKFN0cmluZyBr
aW5kKSBjb25zdAogewotICAgIC8vIElmIC4uLiB0aGUgdXNlciBoYXMgaW5kaWNhdGVkIGFuIGlu
dGVyZXN0IGluIGhhdmluZyBhIHRyYWNrIHdpdGggdGhpcyB0ZXh0IHRyYWNrIGtpbmQsIHRleHQg
dHJhY2sgbGFuZ3VhZ2UsIC4uLiAKICAgICBpZiAobV9kaXNhYmxlQ2FwdGlvbnMpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCktPnNl
dHRpbmdzKCk7Ci0gICAgaWYgKCFzZXR0aW5ncykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGJvb2wgdXNlclByZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzID0gbV9jbG9zZWRDYXB0aW9uc1Zp
c2libGUgfHwgdXNlclByZWZlcnNDYXB0aW9ucygpOwogCiAgICAgaWYgKGtpbmQgPT0gVGV4dFRy
YWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpCi0gICAgICAgIHJldHVybiBzZXR0aW5ncy0+c2hvdWxk
RGlzcGxheVN1YnRpdGxlcygpIHx8IG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlOworICAgICAgICBy
ZXR1cm4gKHNldHRpbmdzICYmIHNldHRpbmdzLT5zaG91bGREaXNwbGF5U3VidGl0bGVzKCkpIHx8
IHVzZXJQcmVmZXJzQ2FwdGlvbnNPclN1YnRpdGxlczsKICAgICBpZiAoa2luZCA9PSBUZXh0VHJh
Y2s6OmNhcHRpb25zS2V5d29yZCgpKQotICAgICAgICByZXR1cm4gc2V0dGluZ3MtPnNob3VsZERp
c3BsYXlDYXB0aW9ucygpIHx8IG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlOworICAgICAgICByZXR1
cm4gKHNldHRpbmdzICYmIHNldHRpbmdzLT5zaG91bGREaXNwbGF5Q2FwdGlvbnMoKSkgfHwgdXNl
clByZWZlcnNDYXB0aW9uc09yU3VidGl0bGVzOwogICAgIGlmIChraW5kID09IFRleHRUcmFjazo6
ZGVzY3JpcHRpb25zS2V5d29yZCgpKQotICAgICAgICByZXR1cm4gc2V0dGluZ3MtPnNob3VsZERp
c3BsYXlUZXh0RGVzY3JpcHRpb25zKCkgfHwgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGU7CisgICAg
ICAgIHJldHVybiBzZXR0aW5ncyAmJiBzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVRleHREZXNjcmlw
dGlvbnMoKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTM5NjksMjIgKzM5OTQsMTIgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRDbG9zZWRDYXB0aW9ucwogI2lmIEVOQUJMRShWSURF
T19UUkFDSykKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkgewogICAgICAgICBtX2Rpc2FibGVDYXB0aW9ucyA9ICFtX2Nsb3NlZENhcHRp
b25zVmlzaWJsZTsKLSAgICAgICAgCi0gICAgICAgIC8vIE1hcmsgYWxsIHRyYWNrIGVsZW1lbnRz
IGFzIG5vdCAiY29uZmlndXJlZCIgc28gdGhhdCBjb25maWd1cmVUZXh0VHJhY2tzKCkKLSAgICAg
ICAgLy8gd2lsbCByZWNvbnNpZGVyIHdoaWNoIHRyYWNrcyB0byBkaXNwbGF5IGluIGxpZ2h0IG9m
IG5ldyB1c2VyIHByZWZlcmVuY2VzCi0gICAgICAgIC8vIChlLmcuIGRlZmF1bHQgdHJhY2tzIHNo
b3VsZCBub3QgYmUgZGlzcGxheWVkIGlmIHRoZSB1c2VyIGhhcyB0dXJuZWQgb2ZmCi0gICAgICAg
IC8vIGNhcHRpb25zIGFuZCBub24tZGVmYXVsdCB0cmFja3Mgc2hvdWxkIGJlIGRpc3BsYXllZCBi
YXNlZCBvbiBsYW5ndWFnZQotICAgICAgICAvLyBwcmVmZXJlbmNlcyBpZiB0aGUgdXNlciBoYXMg
dHVybmVkIGNhcHRpb25zIG9uKS4KLSAgICAgICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RDaGls
ZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYg
KCFub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxUcmFja0VsZW1lbnQqPihub2RlKTsKLSAgICAgICAgICAgIGlmICh0cmFja0VsZW1lbnQt
PmtpbmQoKSA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCi0gICAgICAgICAgICAgICAg
fHwgdHJhY2tFbGVtZW50LT5raW5kKCkgPT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkp
Ci0gICAgICAgICAgICAgICAgdHJhY2tFbGVtZW50LT5zZXRIYXNCZWVuQ29uZmlndXJlZChmYWxz
ZSk7Ci0gICAgICAgIH0KIAorICAgICAgICBtYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNV
bmNvbmZpZ3VyZWQoKTsKICAgICAgICAgY29uZmlndXJlVGV4dFRyYWNrcygpOworCisgICAgICAg
IGlmICghbV9kaXNhYmxlQ2FwdGlvbnMgJiYgKGhhc01lZGlhQ29udHJvbHMoKSB8fCBjcmVhdGVN
ZWRpYUNvbnRyb2xzKCkpKQorICAgICAgICAgICAgbWVkaWFDb250cm9scygpLT51c2VyQ2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZCgpOwogICAgIH0KICNlbHNlCiAgICAgaWYgKGhhc01lZGlhQ29u
dHJvbHMoKSkKQEAgLTQxNzIsNiArNDE4Nyw0MyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVw
ZGF0ZUNsb3NlZENhcHRpCiAgICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnVwZGF0ZVRleHRU
cmFja0Rpc3BsYXkoKTsKICAgICB9CiB9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZCgpCit7CisgICAgaWYgKCFpc1ZpZGVvKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCgp
OworICAgIAorICAgIGlmICghaGFzTWVkaWFDb250cm9scygpICYmICFjcmVhdGVNZWRpYUNvbnRy
b2xzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtZWRpYUNvbnRyb2xzKCktPnVzZXJDYXB0aW9u
UHJlZmVyZW5jZXNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWFya0Nh
cHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKCkKK3sKKyAgICAvLyBNYXJrIGFs
bCB0cmFjayBlbGVtZW50cyBhcyBub3QgImNvbmZpZ3VyZWQiIHNvIHRoYXQgY29uZmlndXJlVGV4
dFRyYWNrcygpCisgICAgLy8gd2lsbCByZWNvbnNpZGVyIHdoaWNoIHRyYWNrcyB0byBkaXNwbGF5
IGluIGxpZ2h0IG9mIG5ldyB1c2VyIHByZWZlcmVuY2VzCisgICAgLy8gKGUuZy4gZGVmYXVsdCB0
cmFja3Mgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWQgaWYgdGhlIHVzZXIgaGFzIHR1cm5lZCBvZmYK
KyAgICAvLyBjYXB0aW9ucyBhbmQgbm9uLWRlZmF1bHQgdHJhY2tzIHNob3VsZCBiZSBkaXNwbGF5
ZWQgYmFzZWQgb24gbGFuZ3VhZ2UKKyAgICAvLyBwcmVmZXJlbmNlcyBpZiB0aGUgdXNlciBoYXMg
dHVybmVkIGNhcHRpb25zIG9uKS4KKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7
IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghbm9kZS0+
aGFzVGFnTmFtZSh0cmFja1RhZykpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisg
ICAgICAgIEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxU
cmFja0VsZW1lbnQqPihub2RlKTsKKyAgICAgICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNr
ID0gdHJhY2tFbGVtZW50LT50cmFjaygpOworICAgICAgICBpZiAoIXRleHRUcmFjaykKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIGtpbmQgPSB0ZXh0VHJh
Y2stPmtpbmQoKTsKKworICAgICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tl
eXdvcmQoKSB8fCBraW5kID09IFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkpCisgICAgICAg
ICAgICB0cmFja0VsZW1lbnQtPnNldEhhc0JlZW5Db25maWd1cmVkKGZhbHNlKTsKKyAgICB9Cisg
ICAgY29uZmlndXJlVGV4dFRyYWNrcygpOworfQorCiAjZW5kaWYKIAogdm9pZCogSFRNTE1lZGlh
RWxlbWVudDo6cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDEyOTgzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5T
dGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgiCkBA
IC03OCw3ICs3OSw3IEBAIHR5cGVkZWYgVmVjdG9yPEN1ZUludGVydmFsVHJlZTo6SW50ZXJ2YWwK
IAogY2xhc3MgSFRNTE1lZGlhRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIE1l
ZGlhUGxheWVyQ2xpZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQsIHBy
aXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJs
aWMgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAg
ICwgcHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQKKyAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50
LCBwcml2YXRlIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcgogI2VuZGlmCiB7CiBw
dWJsaWM6CkBAIC0yNDAsNiArMjQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29uZmlndXJlVGV4
dFRyYWNrcygpOwogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrR3JvdXAoY29uc3QgVHJhY2tH
cm91cCYpIGNvbnN0OwogCisgICAgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3Q7CiAg
ICAgYm9vbCB1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tLaW5kKFN0cmluZykgY29uc3Q7CiAg
ICAgYm9vbCB0ZXh0VHJhY2tzQXJlUmVhZHkoKSBjb25zdDsKICAgICB2b2lkIGNvbmZpZ3VyZVRl
eHRUcmFja0Rpc3BsYXkoKTsKQEAgLTMyNSw3ICszMjcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKICAgICB2aXJ0dWFsIGJvb2wg
aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIGF0dGFjaCgpOworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklERTsKIApA
QCAtNDc0LDEyICs0NzcsMTQgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
ICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoZmxvYXQpOwotICAgIGJvb2wgdXNl
cklzSW50ZXJlc3RlZEluVGhpc0xhbmd1YWdlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIEhU
TUxUcmFja0VsZW1lbnQqIHNob3dpbmdUcmFja1dpdGhTYW1lS2luZChIVE1MVHJhY2tFbGVtZW50
KikgY29uc3Q7CiAKICAgICBib29sIGlnbm9yZVRyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkg
Y29uc3QgeyByZXR1cm4gbV9pZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGUgPiAwOyB9CiAgICAgdm9p
ZCBiZWdpbklnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKSB7ICsrbV9pZ25vcmVU
cmFja0Rpc3BsYXlVcGRhdGU7IH0KICAgICB2b2lkIGVuZElnbm9yaW5nVHJhY2tEaXNwbGF5VXBk
YXRlUmVxdWVzdHMoKSB7IEFTU0VSVChtX2lnbm9yZVRyYWNrRGlzcGxheVVwZGF0ZSk7IC0tbV9p
Z25vcmVUcmFja0Rpc3BsYXlVcGRhdGU7IH0KKworICAgIHZvaWQgbWFya0NhcHRpb25BbmRTdWJ0
aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKCk7CisgICAgdmlydHVhbCB2b2lkIGNhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWQoKSBPVkVSUklERTsKICNlbmRpZgogCiAgICAgLy8gVGhlc2UgImludGVy
bmFsIiBmdW5jdGlvbnMgZG8gbm90IGNoZWNrIHVzZXIgZ2VzdHVyZSByZXN0cmljdGlvbnMuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwCShyZXZpc2lvbiAxMjk4MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDkgKzQ1LDEx
IEBACiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91dFJlcGFp
bnRlci5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKKyNpbmNsdWRlICJNZWRpYUNv
bnRyb2xSb290RWxlbWVudC5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKICNpbmNsdWRl
ICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VHcm91cC5o
IgogI2luY2x1ZGUgIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oIgogI2luY2x1ZGUgIlJl
bmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlck1lZGlhLmgiCkBAIC0xMzEwLDYgKzEzMTIs
MzIgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xUZXh0VHJhYwogICAgIHJldHVy
biBpZDsKIH0KIAordm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1
c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpCit7CisgICAgUGFnZSogcGFnZSA9IGRvY3Vt
ZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoS1VSTCwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMLCAoUGFyc2VkVVJM
U3RyaW5nLCAidXNlci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1RS1B
M0UwMDIzNERDMjMiKSk7CisKKyAgICBSZW5kZXJUaGVtZSogdGhlbWUgPSBwYWdlLT50aGVtZSgp
OworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVt
ZW50KHRoaXMpOworCisgICAgbWVkaWFFbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CisK
KyAgICBwYWdlLT5ncm91cCgpLnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwpOworCisgICAgaWYgKCFtZWRp
YUVsZW1lbnQtPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpICYmICF0aGVtZS0+dXNlckhhc0NhcHRp
b25QcmVmZXJlbmNlcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgY2FwdGlvbnNP
dmVycmlkZVN0eWxlU2hlZXQgPSB0aGVtZS0+Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKTsK
KyAgICBpZiAoY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwYWdlLT5ncm91cCgpLmFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChtYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSwgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQsIGNhcHRpb25z
U3R5bGVTaGVldFVSTCwgYWRvcHRQdHIobmV3IFZlY3RvcjxTdHJpbmc+KSwgYWRvcHRQdHIobmV3
IFZlY3RvcjxTdHJpbmc+KSwgCisgICAgICAgIEluamVjdEluQWxsRnJhbWVzLCBVc2VyU3R5bGVB
dXRob3JMZXZlbCwgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7Cit9CisKIHZvaWQgTWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlRGlzcGxheSgpCiB7CiAgICAg
SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gdG9QYXJlbnRNZWRpYUVsZW1lbnQodGhp
cyk7CkBAIC0xMzc2LDEwICsxNDA0LDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZQogICAgIGhhc0NoaWxkTm9kZXMoKSA/IHNob3coKSA6IGhpZGUoKTsKIH0KIAot
c3RhdGljIGNvbnN0IGZsb2F0IG1pbWltdW1Gb250U2l6ZSA9IDE2Owotc3RhdGljIGNvbnN0IGZs
b2F0IHZpZGVvSGVpZ2h0Rm9udFNpemVQZXJjZW50YWdlID0gLjA1Owotc3RhdGljIGNvbnN0IGZs
b2F0IHRyYWNrQm90dG9tTXVsdGlwbGllciA9IC45OwotCiB2b2lkIE1lZGlhQ29udHJvbFRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKCkKIHsKICAgICBIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxlbWVudCh0aGlzKTsKQEAgLTEzODcs
MTEgKzE0MTEsOCBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgdmlkZW9Cb3ggPSB0b1JlbmRlclZpZGVvKG1l
ZGlhRWxlbWVudC0+cmVuZGVyZXIoKSktPnZpZGVvQm94KCk7Ci0gICAgaWYgKG1fdmlkZW9EaXNw
bGF5U2l6ZSA9PSB2aWRlb0JveCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fdmlkZW9EaXNwbGF5
U2l6ZSA9IHZpZGVvQm94OwogCi0gICAgZmxvYXQgZm9udFNpemUgPSBtX3ZpZGVvRGlzcGxheVNp
emUuc2l6ZSgpLmhlaWdodCgpICogdmlkZW9IZWlnaHRGb250U2l6ZVBlcmNlbnRhZ2U7CisgICAg
ZmxvYXQgZm9udFNpemUgPSB2aWRlb0JveC5zaXplKCkuaGVpZ2h0KCkgKiAoZG9jdW1lbnQoKS0+
cGFnZSgpLT50aGVtZSgpLT5jYXB0aW9uRm9udFNpemVTY2FsZSgpKTsKICAgICBpZiAoZm9udFNp
emUgIT0gbV9mb250U2l6ZSkgewogICAgICAgICBtX2ZvbnRTaXplID0gZm9udFNpemU7CiAgICAg
ICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgU3RyaW5nOjpu
dW1iZXIoZm9udFNpemUpICsgInB4Iik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgJKHJldmlzaW9uIDEyOTgzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzNyw2ICs1MzcsNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKKyAgICB2b2lkIHVz
ZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAgICAgdm9pZCB1cGRhdGVEaXNwbGF5KCk7
CiAgICAgdm9pZCB1cGRhdGVTaXplcygpOwogCkBAIC01NDcsNyArNTQ4LDggQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Qg
eyByZXR1cm4gTWVkaWFUZXh0VHJhY2tEaXNwbGF5Q29udGFpbmVyOyB9CiAgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAKLSAgICBJbnRSZWN0
IG1fdmlkZW9EaXNwbGF5U2l6ZTsKKyAgICB2b2lkIHVwZGF0ZUNhcHRpb25BcHBlYXJhbmNlKCk7
CisKICAgICBmbG9hdCBtX2ZvbnRTaXplOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcAkocmV2aXNp
b24gMTI5ODM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9v
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzAsNiArNjMwLDEyIEBAIHZvaWQgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ6OmNyZWF0ZVRleHQKICAgICBpbnNlcnRCZWZvcmUodGV4dERp
c3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBtX3BhbmVsLCBlYywgdHJ1ZSk7CiB9CiAKK3ZvaWQg
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkK
K3sKKyAgICBpZiAobV90ZXh0RGlzcGxheUNvbnRhaW5lcikKKyAgICAgICAgbV90ZXh0RGlzcGxh
eUNvbnRhaW5lci0+dXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKK30KKwogdm9pZCBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2hvd1RleHRUcmFja0Rpc3BsYXkoKQogewogICAgIGlm
ICghbV90ZXh0RGlzcGxheUNvbnRhaW5lcikKQEAgLTY1MCw3ICs2NTYsNiBAQCB2b2lkIE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50Ojp1cGRhdGVUZXh0CiAgICAgICAgIGNyZWF0ZVRleHRUcmFja0Rp
c3BsYXkoKTsKIAogICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnVwZGF0ZURpc3BsYXkoKTsK
LQogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbFJvb3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaAkocmV2aXNpb24gMTI5ODM0KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA1LDkgKzEwNSwxMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAgICAgdm9pZCBjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCk7Ci0gICAgdm9pZCBzaG93VGV4
dFRyYWNrRGlzcGxheSgpOwotICAgIHZvaWQgaGlkZVRleHRUcmFja0Rpc3BsYXkoKTsKLSAgICB2
b2lkIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXNlckNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1Rl
eHRUcmFja0Rpc3BsYXkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVRleHRUcmFj
a0Rpc3BsYXkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlz
cGxheSgpIE9WRVJSSURFOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGlkZUNv
bnRyb2xzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
cy5oCShyZXZpc2lvbiAxMjk4MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgY2xhc3MgTWVkaWFD
b250cm9scyA6IHB1YmxpYyBIVE1MRGl2RWxlbQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIaWRl
Q29udHJvbHMoKSA9IDA7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgdmlydHVhbCB2
b2lkIHVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkgeyB9OwogICAgIHZpcnR1YWwgdm9p
ZCBzaG93VGV4dFRyYWNrRGlzcGxheSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZVRleHRU
cmFja0Rpc3BsYXkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHRUcmFja0Rpc3Bs
YXkoKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwCShyZXZpc2lvbiAxMjk4MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAgVGV4dFRyYWNrQ3Vl
Qm94OjpUZXh0VHJhY2tDdWVCb3goRG9jdW1lbgogICAgIDogSFRNTEVsZW1lbnQoZGl2VGFnLCBk
b2N1bWVudCkKICAgICAsIG1fY3VlKGN1ZSkKIHsKKyAgICBzZXRTaGFkb3dQc2V1ZG9JZChzaGFk
b3dQc2V1ZG9JZCgpKTsKIH0KIAogVGV4dFRyYWNrQ3VlKiBUZXh0VHJhY2tDdWVCb3g6OmdldEN1
ZSgpIGNvbnN0CkBAIC0xNjcsMTIgKzE2OCwxNyBAQCB2b2lkIFRleHRUcmFja0N1ZUJveDo6YXBw
bHlDU1NQcm9wZXJ0aWVzCiAgICAgfQogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFj
a0N1ZUJveDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0
VHJhY2tDdWVCb3g6OnRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKCkKIHsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhY2tEaXNwbGF5Qm94U2hhZG93
UHNldWRvSWQsICgiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXkiKSk7CiAgICAgcmV0
dXJuIHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkOwogfQogCitjb25zdCBBdG9taWNTdHJp
bmcmIFRleHRUcmFja0N1ZUJveDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIHJldHVy
biB0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpOworfQorCiBSZW5kZXJPYmplY3QqIFRl
eHRUcmFja0N1ZUJveDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRleHRUcmFja0N1ZSh0aGlz
KTsKQEAgLTE4MCw2ICsxODYsMTggQEAgUmVuZGVyT2JqZWN0KiBUZXh0VHJhY2tDdWVCb3g6OmNy
ZWF0ZVJlbgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK2NvbnN0IEF0b21p
Y1N0cmluZyYgVGV4dFRyYWNrQ3VlOjpwYXN0Tm9kZXNTaGFkb3dQc2V1ZG9JZCgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCItd2Vi
a2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gc3VidGl0bGVzOworfQorCitjb25zdCBBdG9taWNT
dHJpbmcmIFRleHRUcmFja0N1ZTo6ZnV0dXJlTm9kZXNTaGFkb3dQc2V1ZG9JZCgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCItd2Vi
a2l0LW1lZGlhLXRleHQtdHJhY2stZnV0dXJlLW5vZGVzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBzdWJ0aXRsZXM7Cit9CisKIFRleHRUcmFja0N1
ZTo6VGV4dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBz
dGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgIDogbV9zdGFydFRp
bWUoc3RhcnQpCiAgICAgLCBtX2VuZFRpbWUoZW5kKQpAQCAtNjUyLDkgKzY3MCw2IEBAIHZvaWQg
VGV4dFRyYWNrQ3VlOjp1cGRhdGVEaXNwbGF5VHJlZShmbG8KICAgICAvLyB0aW1lc3RhbXBzIChw
cm9jZXNzaW5nIGluc3RydWN0aW9ucyksIGFsb25nIHdpdGggZGlzcGxheWFibGUgbm9kZXMuCiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHRpbWVzdGFtcFRhZywgKEFTQ0lJ
TGl0ZXJhbCgidGltZXN0YW1wIikpKTsKIAotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCB0cmFja1Bhc3ROb2Rlc1NoYWRvd1BzZXVkb0lkLCAoIi13ZWJraXQtbWVk
aWEtdGV4dC10cmFjay1wYXN0LW5vZGVzIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCB0cmFja0Z1dHVyZU5vZGVzU2hhZG93UHNldWRvSWQsICgiLXdlYmtp
dC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2RlcyIpKTsKLQogICAgIGlmICghdHJhY2soKS0+
aXNSZW5kZXJlZCgpKQogICAgICAgcmV0dXJuOwogCkBAIC02NjIsMTAgKzY3NywxMCBAQCB2b2lk
IFRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUoZmxvCiAKICAgICAvLyBDbGVhciB0aGUg
Y29udGVudHMgb2YgdGhlIHR3byBzZXRzLgogICAgIG1fZnV0dXJlRG9jdW1lbnROb2Rlcy0+cmVt
b3ZlQ2hpbGRyZW4oKTsKLSAgICBtX2Z1dHVyZURvY3VtZW50Tm9kZXMtPnNldFNoYWRvd1BzZXVk
b0lkKHRyYWNrRnV0dXJlTm9kZXNTaGFkb3dQc2V1ZG9JZCk7CisgICAgbV9mdXR1cmVEb2N1bWVu
dE5vZGVzLT5zZXRTaGFkb3dQc2V1ZG9JZChmdXR1cmVOb2Rlc1NoYWRvd1BzZXVkb0lkKCkpOwog
CiAgICAgbV9wYXN0RG9jdW1lbnROb2Rlcy0+cmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICBtX3Bhc3RE
b2N1bWVudE5vZGVzLT5zZXRTaGFkb3dQc2V1ZG9JZCh0cmFja1Bhc3ROb2Rlc1NoYWRvd1BzZXVk
b0lkKTsKKyAgICBtX3Bhc3REb2N1bWVudE5vZGVzLT5zZXRTaGFkb3dQc2V1ZG9JZChwYXN0Tm9k
ZXNTaGFkb3dQc2V1ZG9JZCgpKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgdHdvIHNldHMgY29udGFp
bmluZyBwYXN0IGFuZCBmdXR1cmUgV2ViVlRUIG9iamVjdHMuCiAgICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IHJlZmVyZW5jZVRyZWUgPSBnZXRDdWVBc0hUTUwoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAkocmV2aXNpb24gMTI5ODM0KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
NjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBseUNTU1Byb3BlcnRpZXMoKTsKIAog
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRleHRUcmFja0N1ZUJveFNo
YWRvd1BzZXVkb0lkKCk7CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlQm94KERvY3VtZW50
KiwgVGV4dFRyYWNrQ3VlKik7CkBAIC04MCw2ICs4MSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgflRleHRUcmFja0N1ZSgpOwogCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGFz
dE5vZGVzU2hhZG93UHNldWRvSWQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBm
dXR1cmVOb2Rlc1NoYWRvd1BzZXVkb0lkKCk7CisKICAgICBUZXh0VHJhY2sqIHRyYWNrKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRUcmFjayhQYXNzUmVmUHRyPFRleHRUcmFjaz4pOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgJKHJldmlzaW9uIDEyOTgzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzMCw2ICszMzAsNDAg
QEAgZXh0ZXJuIENHRmxvYXQgKCp3a05TRWxhc3RpY0RlbHRhRm9yUmVibwogZXh0ZXJuIENHRmxv
YXQgKCp3a05TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKShDR0Zsb2F0IGRlbHRhKTsKICNl
bmRpZgogCit0eXBlZGVmIGVudW0geworICAgIHdrQ2FwdGlvbkZvbnRTdHlsZURlZmF1bHQgPSAw
LAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZU1vbm9zcGFjZWRXaXRoU2VyaWYsCisgICAgd2tDYXB0
aW9uRm9udFN0eWxlUHJvcG9ydGlvbmFsV2l0aFNlcmlmLAorICAgIHdrQ2FwdGlvbkZvbnRTdHls
ZU1vbm9zcGFjZWRXaXRob3V0U2VyaWYsCisgICAgd2tDYXB0aW9uRm9udFN0eWxlUHJvcG9ydGlv
bmFsV2l0aG91dFNlcmlmLAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZUNhc3VhbCwKKyAgICB3a0Nh
cHRpb25Gb250U3R5bGVDdXJzaXZlLAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZVNtYWxsQ2FwaXRh
bCwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVNYXgKK30gd2tDYXB0aW9uRm9udFN0eWxlOworCit0
eXBlZGVmIGVudW0geworICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVVbmRlZmluZWQgPSAwLAor
ICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVOb25lLAorICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5
bGVSYWlzZWQsCisgICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZURlcHJlc3NlZCwKKyAgICB3a0Nh
cHRpb25UZXh0RWRnZVN0eWxlVW5pZm9ybSwKKyAgICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlRHJv
cFNoYWRvdywKKyAgICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlTWF4Cit9IHdrQ2FwdGlvblRleHRF
ZGdlU3R5bGU7CisKK2V4dGVybiBib29sICgqd2tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVm
ZXJlbmNlcykodm9pZCk7CitleHRlcm4gYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2Fw
dGlvbnNXaGVuQXZhaWxhYmxlKSh2b2lkKTsKK2V4dGVybiBDR0NvbG9yUmVmKCp3a0NhcHRpb25B
cHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcikodm9pZCk7CitleHRlcm4gQ0dDb2xvclJlZigq
d2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IpKHZvaWQpOworZXh0ZXJuIENH
Q29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IpKHZvaWQpOworZXh0
ZXJuIGJvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSkoQ0dGbG9h
dCopOworZXh0ZXJuIGJvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0
eSkoQ0dGbG9hdCopOworZXh0ZXJuIGJvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dP
cGFjaXR5KShDR0Zsb2F0Kik7CitleHRlcm4gQ0dGb250UmVmKCp3a0NhcHRpb25BcHBlYXJhbmNl
Q29weUZvbnRGb3JTdHlsZSkoaW50KTsKK2V4dGVybiBib29sKCp3a0NhcHRpb25BcHBlYXJhbmNl
R2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKShDR0Zsb2F0Kik7CitleHRlcm4gaW50KCp3a0NhcHRp
b25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSkodm9pZCk7CitleHRlcm4gQ0ZTdHJpbmdSZWYo
KndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24pKHZvaWQp
OwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCShyZXZpc2lvbiAxMjk4MzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjA5LDMgKzIwOSwxNSBAQCBDR0Zsb2F0ICgqd2tOU0VsYXN0aWNEZWx0YUZv
clJlYm91bmREZWx0CiBDR0Zsb2F0ICgqd2tOU1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSko
Q0dGbG9hdCBkZWx0YSk7CiAjZW5kaWYKIAorYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VIYXNV
c2VyUHJlZmVyZW5jZXMpKHZvaWQpOworYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2Fw
dGlvbnNXaGVuQXZhaWxhYmxlKSh2b2lkKTsKK0NHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFu
Y2VDb3B5Rm9yZWdyb3VuZENvbG9yKSh2b2lkKTsKK0NHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVh
cmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKSh2b2lkKTsKK0NHQ29sb3JSZWYoKndrQ2FwdGlvbkFw
cGVhcmFuY2VDb3B5V2luZG93Q29sb3IpKHZvaWQpOworYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5j
ZUdldEZvcmVncm91bmRPcGFjaXR5KShDR0Zsb2F0Kik7Citib29sKCp3a0NhcHRpb25BcHBlYXJh
bmNlR2V0QmFja2dyb3VuZE9wYWNpdHkpKENHRmxvYXQqKTsKK2Jvb2woKndrQ2FwdGlvbkFwcGVh
cmFuY2VHZXRXaW5kb3dPcGFjaXR5KShDR0Zsb2F0Kik7CitDR0ZvbnRSZWYoKndrQ2FwdGlvbkFw
cGVhcmFuY2VDb3B5Rm9udEZvclN0eWxlKShpbnQpOworYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5j
ZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSkoQ0dGbG9hdCopOworaW50KCp3a0NhcHRpb25BcHBl
YXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSkodm9pZCk7CitDRlN0cmluZ1JlZigqd2tDYXB0aW9uQXBw
ZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbikodm9pZCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWRMaXN0ZW5lci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyX2gKKyNkZWZpbmUg
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyX2gKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIgeworcHVibGljOgor
ICAgIHZpcnR1YWwgdm9pZCBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkgPSAwOworcHJvdGVj
dGVkOgorICAgIHZpcnR1YWwgfkNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcigpIHsg
fQorfTsKKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5oCShyZXZpc2lvbiAxMjk4MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CkBAIC00Niw2ICs0Nyw5IEBAIGNsYXNzIFJl
bmRlck1ldGVyOwogI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQogY2xhc3MgUmVuZGVyUHJv
Z3Jlc3M7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitjbGFzcyBDYXB0aW9uUHJl
ZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXI7CisjZW5kaWYKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiAK
IGNsYXNzIFJlbmRlclRoZW1lIDogcHVibGljIFJlZkNvdW50ZWQ8UmVuZGVyVGhlbWU+IHsKQEAg
LTIyNSw2ICsyMjksMTUgQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnRTbGlkZXJUaWNrcyhSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHVzZXJIYXND
YXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
ZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdCB7IHJldHVybiAwLjA1OyB9CisgICAg
dmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVy
biBlbXB0eVN0cmluZygpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9yQ2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVu
ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgeyB9
CisjZW5kaWYKKwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93UGxhY2Vob2xkZXJXaGVuRm9j
dXNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZEhh
dmVTcGluQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqKSBjb25zdDsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgJKHJldmlzaW9uIDEyOTgzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDEsNiArMTAxLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgdXNlc1Rlc3RNb2Rl
Rm9jdXNSaW5nQ29sb3IoKSBjb25zdDsKICAgICAvLyBBIHZpZXcgYXNzb2NpYXRlZCB0byB0aGUg
Y29udGFpbmVkIGRvY3VtZW50LiBTdWJjbGFzc2VzIG1heSBub3QgaGF2ZSBzdWNoIGEgdmlldyBh
bmQgcmV0dXJuIGEgZmFrZS4KICAgICB2aXJ0dWFsIE5TVmlldyogZG9jdW1lbnRWaWV3Rm9yKFJl
bmRlck9iamVjdCopIGNvbnN0OworCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHZvaWQg
Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBS
ZW5kZXJUaGVtZU1hYygpOwogICAgIHZpcnR1YWwgflJlbmRlclRoZW1lTWFjKCk7CkBAIC0xNzgs
NiArMTgzLDE1IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVkaWFTbGlk
ZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFBvaW50IHZv
bHVtZVNsaWRlck9mZnNldEZyb21NdXRlQnV0dG9uKFJlbmRlckJveCosIGNvbnN0IEludFNpemUm
KSBjb25zdCBPVkVSUklERTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAg
IHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGZsb2F0IGNhcHRpb25Gb250U2l6ZVNjYWxlKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKSBPVkVSUklE
RTsKKyNlbmRpZgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93UGxhY2Vob2xkZXJX
aGVuRm9jdXNlZCgpIGNvbnN0OwogCkBAIC0yMzcsNiArMjUxLDE3IEBAIHByaXZhdGU6CiAgICAg
Y29uc3QgaW50KiBwcm9ncmVzc0Jhck1hcmdpbnMoTlNDb250cm9sU2l6ZSkgY29uc3Q7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBDb2xvciBjYXB0aW9uc1dpbmRvd0Nv
bG9yKCkgY29uc3Q7CisgICAgQ29sb3IgY2FwdGlvbnNCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsK
KyAgICBDb2xvciBjYXB0aW9uc1RleHRDb2xvcigpIGNvbnN0OworICAgIFN0cmluZyBjYXB0aW9u
c0RlZmF1bHRGb250KCkgY29uc3Q7CisgICAgQ29sb3IgY2FwdGlvbnNFZGdlQ29sb3JGb3JUZXh0
Q29sb3IoY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBTdHJpbmcgY2FwdGlvbnNUZXh0RWRnZVN0
eWxlKCkgY29uc3Q7CisgICAgU3RyaW5nIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NT
UHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBTdHJp
bmcgY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBjb25zdCBDb2xvciYpIGNvbnN0Owor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNQb3BVcEJ1dHRvbkNl
bGw+IG1fcG9wdXBCdXR0b247CiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNTZWFyY2hGaWVsZENl
bGw+IG1fc2VhcmNoOwpAQCAtMjUyLDYgKzI3NywxMSBAQCBwcml2YXRlOgogICAgIG11dGFibGUg
SGFzaE1hcDxpbnQsIFJHQkEzMj4gbV9zeXN0ZW1Db2xvckNhY2hlOwogCiAgICAgUmV0YWluUHRy
PFdlYkNvcmVSZW5kZXJUaGVtZU5vdGlmaWNhdGlvbk9ic2VydmVyPiBtX25vdGlmaWNhdGlvbk9i
c2VydmVyOworCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIEhhc2hTZXQ8Q2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKj4gbV9jYXB0aW9uUHJlZmVyZW5jZUNoYW5nZUxpc3Rl
bmVyczsKKyAgICBib29sIG1fbGlzdGVuaW5nRm9yQ2FwdGlvblByZWZlcmVuY2VOb3RpZmljYXRp
b25zOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAxMjk4MzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJFbGVt
ZW50LmgiCiAjaW1wb3J0ICJGaWxlTGlzdC5oIgorI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgi
CiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAj
aW1wb3J0ICJIVE1MSW5wdXRFbGVtZW50LmgiCkBAIC0xNTEsNiArMTUyLDExIEBAIFBhc3NSZWZQ
dHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGUKIH0KICNlbmRpZgogCitzdGF0aWMgdm9p
ZCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKENGTm90
aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZv
aWQgKiwgQ0ZEaWN0aW9uYXJ5UmVmKQoreworICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lTWFj
Kj4ob2JzZXJ2ZXIpLT5jYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7Cit9CisKIFBhc3NSZWZQ
dHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lTWFjOjpjcmVhdGUoKQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVNYWMpOwpAQCAtMTYwLDYgKzE2Niw5IEBAIFJlbmRlclRo
ZW1lTWFjOjpSZW5kZXJUaGVtZU1hYygpCiAgICAgOiBtX2lzU2xpZGVyVGh1bWJIb3Jpem9udGFs
UHJlc3NlZChmYWxzZSkKICAgICAsIG1faXNTbGlkZXJUaHVtYlZlcnRpY2FsUHJlc3NlZChmYWxz
ZSkKICAgICAsIG1fbm90aWZpY2F0aW9uT2JzZXJ2ZXIoQWRvcHROUywgW1tXZWJDb3JlUmVuZGVy
VGhlbWVOb3RpZmljYXRpb25PYnNlcnZlciBhbGxvY10gaW5pdFdpdGhUaGVtZTp0aGlzXSkKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgLCBtX2xpc3RlbmluZ0ZvckNhcHRpb25QcmVmZXJl
bmNlTm90aWZpY2F0aW9ucyhmYWxzZSkKKyNlbmRpZgogewogICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9ub3RpZmljYXRpb25PYnNlcnZlci5n
ZXQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxlY3RvcjpAc2VsZWN0b3Ioc3lzdGVtQ29sb3JzRGlkQ2hhbmdlOikKQEAgLTE3MCw2
ICsxNzksMTEgQEAgUmVuZGVyVGhlbWVNYWM6OlJlbmRlclRoZW1lTWFjKCkKIFJlbmRlclRoZW1l
TWFjOjp+UmVuZGVyVGhlbWVNYWMoKQogewogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9ub3RpZmljYXRpb25PYnNlcnZlci5nZXQoKV07
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKG1fbGlzdGVuaW5nRm9yQ2FwdGlv
blByZWZlcmVuY2VOb3RpZmljYXRpb25zKQorICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJl
bW92ZU9ic2VydmVyKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKSwgdGhpcywg
d2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigpLCBOVUxM
KTsKKyNlbmRpZgogfQogCiBDb2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVTZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdApAQCAtMjEyOCw2ICsyMTQyLDI1NSBAQCBJbnRQ
b2ludCBSZW5kZXJUaGVtZU1hYzo6dm9sdW1lU2xpZGVyT2ZmCiAgICAgcmV0dXJuIFJlbmRlck1l
ZGlhQ29udHJvbHM6OnZvbHVtZVNsaWRlck9mZnNldEZyb21NdXRlQnV0dG9uKG11dGVCdXR0b25C
b3gsIHNpemUpOwogfQogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorYm9vbCBSZW5kZXJUaGVt
ZU1hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdr
Q2FwdGlvbkFwcGVhcmFuY2VIYXNVc2VyUHJlZmVyZW5jZXMoKTsKK30KKworYm9vbCBSZW5kZXJU
aGVtZU1hYzo6dXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdrQ2Fw
dGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKCk7Cit9CisKK0NvbG9yIFJl
bmRlclRoZW1lTWFjOjpjYXB0aW9uc1dpbmRvd0NvbG9yKCkgY29uc3QKK3sKKyAgICBSZXRhaW5Q
dHI8Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5k
b3dDb2xvcigpKTsKKyAgICBDb2xvciB3aW5kb3dDb2xvcihjb2xvci5nZXQoKSk7CisgICAgaWYg
KCF3aW5kb3dDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHdpbmRvd0NvbG9yID0gQ29sb3I6OnRy
YW5zcGFyZW50OworICAgIAorICAgIENHRmxvYXQgb3BhY2l0eTsKKyAgICBpZiAod2tDYXB0aW9u
QXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkoJm9wYWNpdHkpKQorICAgICAgICByZXR1cm4gQ29s
b3Iod2luZG93Q29sb3IucmVkKCksIHdpbmRvd0NvbG9yLmdyZWVuKCksIHdpbmRvd0NvbG9yLmJs
dWUoKSwgb3BhY2l0eSAqIDI1NSk7CisgICAgCisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0
dXJuIENvbG9yKCk7CisKKyAgICByZXR1cm4gd2luZG93Q29sb3I7Cit9CisKK0NvbG9yIFJlbmRl
clRoZW1lTWFjOjpjYXB0aW9uc0JhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgLy8gVGhp
cyBkZWZhdWx0IHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4g
bWVkaWFDb250cm9scy5jc3MgZm9yIC13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZGVz
CisgICAgLy8gYW5kIHdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2Rlcy4KKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBkZWZhdWx0QmFja2dyb3VuZENvbG9yLCAoQ29sb3Io
MCwgMCwgMCwgMC44ICogMjU1KSkpOworCisgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9y
KEFkb3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKCkpOworICAg
IENvbG9yIGJhY2tncm91bmRDb2xvcihjb2xvci5nZXQoKSk7CisgICAgaWYgKCFiYWNrZ3JvdW5k
Q29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGRlZmF1bHRCYWNr
Z3JvdW5kQ29sb3I7CisgICAgfQorCisgICAgQ0dGbG9hdCBvcGFjaXR5OworICAgIGlmICh3a0Nh
cHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkoJm9wYWNpdHkpKQorICAgICAgICBy
ZXR1cm4gQ29sb3IoYmFja2dyb3VuZENvbG9yLnJlZCgpLCBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4o
KSwgYmFja2dyb3VuZENvbG9yLmJsdWUoKSwgb3BhY2l0eSAqIDI1NSk7CisKKyAgICBpZiAoIWNv
bG9yKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gYmFja2dyb3Vu
ZENvbG9yOworfQorCitDb2xvciBSZW5kZXJUaGVtZU1hYzo6Y2FwdGlvbnNUZXh0Q29sb3IoKSBj
b25zdAoreworICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihBZG9wdENGLCB3a0NhcHRp
b25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcigpKTsKKyAgICBDb2xvciB0ZXh0Q29sb3Io
Y29sb3IuZ2V0KCkpOworICAgIGlmICghdGV4dENvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICAv
LyBUaGlzIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHNwZWNpZmll
ZCBpbiBtZWRpYUNvbnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRh
aW5lci4KKyAgICAgICAgdGV4dENvbG9yID0gQ29sb3I6OndoaXRlOworICAgIH0KKyAgICAKKyAg
ICBDR0Zsb2F0IG9wYWNpdHk7CisgICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3Jv
dW5kT3BhY2l0eSgmb3BhY2l0eSkpCisgICAgICAgIHJldHVybiBDb2xvcih0ZXh0Q29sb3IucmVk
KCksIHRleHRDb2xvci5ncmVlbigpLCB0ZXh0Q29sb3IuYmx1ZSgpLCBvcGFjaXR5ICogMjU1KTsK
KyAgICAKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAg
ICByZXR1cm4gdGV4dENvbG9yOworfQorCitDb2xvciBSZW5kZXJUaGVtZU1hYzo6Y2FwdGlvbnNF
ZGdlQ29sb3JGb3JUZXh0Q29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xvcikgY29uc3QKK3sKKyAg
ICBpbnQgZGlzdGFuY2VGcm9tV2hpdGUgPSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIENv
bG9yOjp3aGl0ZSk7CisgICAgaW50IGRpc3RhbmNlRnJvbUJsYWNrID0gZGlmZmVyZW5jZVNxdWFy
ZWQodGV4dENvbG9yLCBDb2xvcjo6YmxhY2spOworICAgIAorICAgIGlmIChkaXN0YW5jZUZyb21X
aGl0ZSA8IGRpc3RhbmNlRnJvbUJsYWNrKQorICAgICAgICByZXR1cm4gdGV4dENvbG9yLmRhcmso
KTsKKyAgICAKKyAgICByZXR1cm4gdGV4dENvbG9yLmxpZ2h0KCk7Cit9CisKK1N0cmluZyBSZW5k
ZXJUaGVtZU1hYzo6Y3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eUlEIGlk
LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBDb2xvciYgdGV4dENvbG9yKSBjb25zdAorewor
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAKKyAgICBidWlsZGVyLmFwcGVuZChnZXRQ
cm9wZXJ0eU5hbWVTdHJpbmcoaWQpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOicpOworICAgIGJ1
aWxkZXIuYXBwZW5kKHZhbHVlKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKHRleHRDb2xvcikuc2VyaWFs
aXplZCgpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOycpOworCisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKK30KKyAgICAKK1N0cmluZyBSZW5kZXJUaGVtZU1hYzo6Y3NzQ29sb3JQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBDb2xvciYgY29sb3IpIGNvbnN0Cit7CisgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIAorICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3Bl
cnR5TmFtZVN0cmluZyhpZCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgYnVpbGRl
ci5hcHBlbmQoY29sb3Iuc2VyaWFsaXplZCgpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOycpOwor
ICAgIAorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBSZW5kZXJU
aGVtZU1hYzo6Y2FwdGlvbnNUZXh0RWRnZVN0eWxlKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlUmFpc2VkLCAoIiAtLjA1ZW0gLS4wNWVt
IDAgIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVEZXByZXNzZWQsICgiIC4wNWVtIC4wNWVtIDAg
IiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVEcm9wU2hhZG93LCAoIiAuMDc1ZW0gLjA3NWVtIDAg
IiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVVbmlmb3JtLCAoIiAuMDNlbSAiLCBTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisKKyAgICBDb2xvciBjb2xvciA9IGNhcHRpb25zVGV4dENv
bG9yKCk7CisgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIGNvbG9yLnNldE5hbWVk
Q29sb3IoImJsYWNrIik7CisgICAgY29sb3IgPSBjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xv
cihjb2xvcik7CisKKyAgICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlIHRleHRFZGdlU3R5bGUgPSBz
dGF0aWNfY2FzdDx3a0NhcHRpb25UZXh0RWRnZVN0eWxlPih3a0NhcHRpb25BcHBlYXJhbmNlR2V0
VGV4dEVkZ2VTdHlsZSgpKTsKKyAgICBzd2l0Y2ggKHRleHRFZGdlU3R5bGUpIHsKKyAgICBjYXNl
IHdrQ2FwdGlvblRleHRFZGdlU3R5bGVVbmRlZmluZWQ6CisgICAgY2FzZSB3a0NhcHRpb25UZXh0
RWRnZVN0eWxlTm9uZToKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBjYXNl
IHdrQ2FwdGlvblRleHRFZGdlU3R5bGVSYWlzZWQ6CisgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0
eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlUmFpc2Vk
LCBjb2xvcik7CisgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlRGVwcmVzc2VkOgorICAg
ICAgICByZXR1cm4gY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVRleHRT
aGFkb3csIGVkZ2VTdHlsZURlcHJlc3NlZCwgY29sb3IpOworICAgIGNhc2Ugd2tDYXB0aW9uVGV4
dEVkZ2VTdHlsZURyb3BTaGFkb3c6CisgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0
RWRnZUNvbG9yKENTU1Byb3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlRHJvcFNoYWRvdywgY29s
b3IpOworICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZVVuaWZvcm06CisgICAgICAgIHJl
dHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZSwgZWRnZVN0eWxlVW5pZm9ybSwgY29sb3IpOworCisgICAgY2FzZSB3a0NhcHRpb25UZXh0
RWRnZVN0eWxlTWF4OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKK1N0cmluZyBSZW5kZXJUaGVtZU1hYzo6
Y2FwdGlvbnNEZWZhdWx0Rm9udCgpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENHRm9udFJlZj4g
Zm9udChBZG9wdENGLCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvbnRGb3JTdHlsZSh3a0NhcHRp
b25Gb250U3R5bGVEZWZhdWx0KSk7CisgICAgaWYgKCFmb250KQorICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKKworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZShBZG9wdENGLCBD
R0ZvbnRDb3B5UG9zdFNjcmlwdE5hbWUoZm9udC5nZXQoKSkpOworICAgIGlmICghbmFtZSkKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CisgICAgCisgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3Bl
cnR5Rm9udEZhbWlseSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCI6IFwiIik7CisgICAgYnVpbGRl
ci5hcHBlbmQobmFtZS5nZXQoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoIlwiOyIpOworICAgIAor
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBSZW5kZXJUaGVtZU1h
Yzo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxk
ZXIgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQ7CisKKyAgICBDb2xvciBjb2xvciA9IGNhcHRp
b25zQmFja2dyb3VuZENvbG9yKCk7CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAgICAg
ICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CisgICAgICAg
IGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWU6OnBhc3ROb2Rl
c1NoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5h
cHBlbmQoJ3snKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGNz
c0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGNvbG9yKSk7CisgICAg
ICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScpOworCisgICAgICAgIGNh
cHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKKyAgICAgICAgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZTo6ZnV0dXJlTm9kZXNT
aGFkb3dQc2V1ZG9JZCgpKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBw
ZW5kKCd7Jyk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChjc3ND
b2xvclByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBjb2xvcikpOworICAgICAg
ICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ30nKTsKKyAgICB9CisKKyAgICBj
b2xvciA9IGNhcHRpb25zV2luZG93Q29sb3IoKTsKKyAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7
CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsK
KyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZUJv
eDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgneycpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgY29sb3IpKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9
Jyk7CisgICAgfQorCisgICAgY29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcigpOworICAgIFN0cmlu
ZyBlZGdlU3R5bGUgPSBjYXB0aW9uc1RleHRFZGdlU3R5bGUoKTsKKyAgICBTdHJpbmcgZm9udE5h
bWUgPSBjYXB0aW9uc0RlZmF1bHRGb250KCk7CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSB8fCAh
ZWRnZVN0eWxlLmlzRW1wdHkoKSB8fCAhZm9udE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGNh
cHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKKyAgICAgICAgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNr
Q3VlQm94U2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNo
ZWV0LmFwcGVuZCgneycpOworCisgICAgICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCisgICAgICAg
ICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9wZXJ0eShD
U1NQcm9wZXJ0eUNvbG9yLCBjb2xvcikpOworICAgICAgICBpZiAoIWVkZ2VTdHlsZS5pc0VtcHR5
KCkpCisgICAgICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoZWRnZVN0
eWxlKTsKKyAgICAgICAgaWYgKCFmb250TmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoZm9udE5hbWUpOworCisgICAgICAgIGNhcHRp
b25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScpOworICAgIH0KKworICAgIHJldHVybiBj
YXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC50b1N0cmluZygpOworfQorCitmbG9hdCBSZW5kZXJU
aGVtZU1hYzo6Y2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdAoreworICAgIENHRmxvYXQgY2hh
cmFjdGVyU2NhbGUgPSBSZW5kZXJUaGVtZTo6Y2FwdGlvbkZvbnRTaXplU2NhbGUoKTsKKyAgICBD
R0Zsb2F0IHNjYWxlQWRqdXN0bWVudDsKKyAgICAKKyAgICBpZiAoIXdrQ2FwdGlvbkFwcGVhcmFu
Y2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUoJnNjYWxlQWRqdXN0bWVudCkpCisgICAgICAgIHJl
dHVybiBjaGFyYWN0ZXJTY2FsZTsKKyAgICAKKyAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9G
bG9hdChzY2FsZUFkanVzdG1lbnQgKiBjaGFyYWN0ZXJTY2FsZSk7Cit9CisKK3ZvaWQgUmVuZGVy
VGhlbWVNYWM6OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQoreworICAgIGZvciAoSGFzaFNl
dDxDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqPjo6aXRlcmF0b3IgaSA9IG1fY2Fw
dGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnMuYmVnaW4oKTsgaSAhPSBtX2NhcHRpb25QcmVm
ZXJlbmNlQ2hhbmdlTGlzdGVuZXJzLmVuZCgpOyArK2kpCisgICAgICAgICgqaSktPmNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWQoKTsKK30KKwordm9pZCBSZW5kZXJUaGVtZU1hYzo6cmVnaXN0ZXJG
b3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0No
YW5nZWRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgaWYgKCF3a0NhcHRpb25BcHBlYXJhbmNl
R2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBpZiAoIW1fbGlzdGVuaW5nRm9yQ2FwdGlvblByZWZlcmVuY2VOb3RpZmljYXRpb25zKSB7
CisgICAgICAgIG1fbGlzdGVuaW5nRm9yQ2FwdGlvblByZWZlcmVuY2VOb3RpZmljYXRpb25zID0g
dHJ1ZTsKKyAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlciAoQ0ZOb3RpZmlj
YXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0aGlzLCB1c2VyQ2FwdGlvblByZWZlcmVuY2Vz
Q2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrLCB3a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGlu
Z3NDaGFuZ2VkTm90aWZpY2F0aW9uKCksIE5VTEwsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJl
aGF2aW9yQ29hbGVzY2UpOworICAgIH0KKyAgICAKKyAgICBtX2NhcHRpb25QcmVmZXJlbmNlQ2hh
bmdlTGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7Cit9CisgICAgCit2b2lkIFJlbmRlclRoZW1lTWFj
Ojp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9u
UHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgICBpZiAod2tDYXB0
aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigpKQorICAgICAgICBt
X2NhcHRpb25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7Cit9Cisj
ZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQorCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQog
CiBib29sIFJlbmRlclRoZW1lTWFjOjpzaG91bGRTaG93UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjk4MzQpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0yNyAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBw
b3J0cyB0byBvdmVycmlkZSB0ZXh0IHRyYWNrIHJlbmRlcmluZyBzdHlsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEyMDQ0OTY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50
ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOiBJbml0aWFs
aXplIG5ldyBXS1NJIGZ1bmN0aW9uIHBvaW50ZXJzLgorCiAyMDEyLTA5LTI3ICBCZXRoIERha2lu
ICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTc4MjMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW0JKHJldmlzaW9uIDEyOTgzNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTg2LDUgKzE4NiwxNyBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAg
ICAgICAgIElOSVQoTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEpOwogI2VuZGlmCiAKKyAg
ICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcyk7CisgICAgICAg
IElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKTsKKyAgICAg
ICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IpOworICAgICAgICBJ
TklUKENhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvcik7CisgICAgICAgIElOSVQo
Q2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IpOworICAgICAgICBJTklUKENhcHRpb25B
cHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkpOworICAgICAgICBJTklUKENhcHRpb25BcHBl
YXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkpOworICAgICAgICBJTklUKENhcHRpb25BcHBlYXJh
bmNlR2V0V2luZG93T3BhY2l0eSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5
Rm9udEZvclN0eWxlKTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZl
Q2hhcmFjdGVyU2l6ZSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRn
ZVN0eWxlKTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdl
ZE5vdGlmaWNhdGlvbik7CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMjk4MzQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyOCBAQAorMjAxMi0wOS0yNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyB0byBvdmVycmlkZSB0ZXh0IHRyYWNr
IHJlbmRlcmluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDQ0OTY0PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5m
b3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFz
ZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UpOiBJbml0aWFsaXplIG5ldyBXS1NJIGZ1bmN0aW9uIHBvaW50
ZXJzLgorCisyMDEyLTA5LTI3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAgICBO
ZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1
Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3Jp
cHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0
ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisK
IDIwMTItMDktMjcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBHZXQgcmlkIG9mIG1vcmUgdW51c2VkIFdLMSBwbHVnLWluIGNvZGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW0JKHJldmlzaW9uIDEyOTgzNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjA1LDYgKzIwNSwx
OSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChOU1Jl
Ym91bmREZWx0YUZvckVsYXN0aWNEZWx0YSk7CiAjZW5kaWYKIAorICAgIElOSVQoQ2FwdGlvbkFw
cGVhcmFuY2VIYXNVc2VyUHJlZmVyZW5jZXMpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VT
aG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlQ29w
eUZvcmVncm91bmRDb2xvcik7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3Jv
dW5kQ29sb3IpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IpOwor
ICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSk7CisgICAgSU5J
VChDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5KTsKKyAgICBJTklUKENhcHRp
b25BcHBlYXJhbmNlR2V0V2luZG93T3BhY2l0eSk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5j
ZUNvcHlGb250Rm9yU3R5bGUpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2
ZUNoYXJhY3RlclNpemUpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0
eWxlKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZp
Y2F0aW9uKTsKKwogI2VuZGlmCiAgICAgZGlkSW5pdCA9IHRydWU7CiB9CkluZGV4OiBXZWJLaXRM
aWJyYXJpZXMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdExpYnJhcmllcy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEyOTgzNCkKKysrIFdlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOS0yNyAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyB0byBvdmVycmlkZSB0
ZXh0IHRyYWNrIHJlbmRlcmluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDQ0OTY0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBXS1NJIHdpdGggU1BJIGZvciBnZXR0aW5nIHRoZSB1c2VyIGNhcHRpb24gYXBwZWFyYW5jZSBw
cmVmZXJlbmNlcy4KKworICAgICAgICAqIFdlYktpdFN5c3RlbUludGVyZmFjZS5oOgorICAgICAg
ICAqIGxpYldlYktpdFN5c3RlbUludGVyZmFjZUxpb24uYToKKyAgICAgICAgKiBsaWJXZWJLaXRT
eXN0ZW1JbnRlcmZhY2VNb3VudGFpbkxpb24uYToKKyAgICAgICAgKiBsaWJXZWJLaXRTeXN0ZW1J
bnRlcmZhY2VTbm93TGVvcGFyZC5hOgorCiAyMDEyLTA5LTI1ICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjM1MTkwNj4g
SGF2ZSBEdW1wUmVuZGVyVHJlZSBhbmQgV2ViS2l0VGVzdFJ1bm5lciBjcmFzaCBsb2dzIHNob3cg
d2hpY2ggdGVzdCBjcmFzaGVkCkluZGV4OiBXZWJLaXRMaWJyYXJpZXMvV2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0TGlicmFyaWVzL1dlYktpdFN5c3RlbUludGVy
ZmFjZS5oCShyZXZpc2lvbiAxMjk4MzQpCisrKyBXZWJLaXRMaWJyYXJpZXMvV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKiAgICAgIAogICAg
IFdlYktpdFN5c3RlbUludGVyZmFjZS5oCi0gICAgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAs
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgUHVibGlj
IGhlYWRlciBmaWxlLgogKi8KQEAgLTUwOSw2ICs1MDksNDEgQEAgQ0dGbG9hdCBXS05TUmVib3Vu
ZERlbHRhRm9yRWxhc3RpY0RlbHRhKAogQm9vbGVhbiBXS0pMSXNSdW50aW1lQW5kV2ViQ29tcG9u
ZW50c0luc3RhbGxlZCh2b2lkKTsKICNlbmRpZgogCit0eXBlZGVmIGVudW0geworICAgIFdLQ2Fw
dGlvbkZvbnRTdHlsZURlZmF1bHQgPSAwLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZU1vbm9zcGFj
ZWRXaXRoU2VyaWYsCisgICAgV0tDYXB0aW9uRm9udFN0eWxlUHJvcG9ydGlvbmFsV2l0aFNlcmlm
LAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZU1vbm9zcGFjZWRXaXRob3V0U2VyaWYsCisgICAgV0tD
YXB0aW9uRm9udFN0eWxlUHJvcG9ydGlvbmFsV2l0aG91dFNlcmlmLAorICAgIFdLQ2FwdGlvbkZv
bnRTdHlsZUNhc3VhbCwKKyAgICBXS0NhcHRpb25Gb250U3R5bGVDdXJzaXZlLAorICAgIFdLQ2Fw
dGlvbkZvbnRTdHlsZVNtYWxsQ2FwaXRhbCwKKyAgICBXS0NhcHRpb25Gb250U3R5bGVNYXgKK30g
V0tDYXB0aW9uRm9udFN0eWxlOworCit0eXBlZGVmIGVudW0geworICAgIFdLQ2FwdGlvblRleHRF
ZGdlU3R5bGVVbmRlZmluZWQgPSAwLAorICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVOb25lLAor
ICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVSYWlzZWQsCisgICAgV0tDYXB0aW9uVGV4dEVkZ2VT
dHlsZURlcHJlc3NlZCwKKyAgICBXS0NhcHRpb25UZXh0RWRnZVN0eWxlVW5pZm9ybSwKKyAgICBX
S0NhcHRpb25UZXh0RWRnZVN0eWxlRHJvcFNoYWRvdywKKyAgICBXS0NhcHRpb25UZXh0RWRnZVN0
eWxlTWF4Cit9IFdLQ2FwdGlvblRleHRFZGdlU3R5bGU7CisKK2Jvb2wgV0tDYXB0aW9uQXBwZWFy
YW5jZUhhc1VzZXJQcmVmZXJlbmNlcyh2b2lkKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZVNo
b3dDYXB0aW9uc1doZW5BdmFpbGFibGUodm9pZCk7CitDR0NvbG9yUmVmIFdLQ2FwdGlvbkFwcGVh
cmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yKHZvaWQpOworQ0dDb2xvclJlZiBXS0NhcHRpb25BcHBl
YXJhbmNlQ29weUJhY2tncm91bmRDb2xvcih2b2lkKTsKK0NHQ29sb3JSZWYgV0tDYXB0aW9uQXBw
ZWFyYW5jZUNvcHlXaW5kb3dDb2xvcih2b2lkKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdl
dEZvcmVncm91bmRPcGFjaXR5KENHRmxvYXQqKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdl
dEJhY2tncm91bmRPcGFjaXR5KENHRmxvYXQqKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdl
dFdpbmRvd09wYWNpdHkoQ0dGbG9hdCopOworQ0dGb250UmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VD
b3B5Rm9udEZvclN0eWxlKGludCBmb250U3R5bGUpOworYm9vbCBXS0NhcHRpb25BcHBlYXJhbmNl
R2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKENHRmxvYXQqKTsKK2ludCBXS0NhcHRpb25BcHBlYXJh
bmNlR2V0VGV4dEVkZ2VTdHlsZSh2b2lkKTsKK0NGU3RyaW5nUmVmIFdLQ2FwdGlvbkFwcGVhcmFu
Y2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24odm9pZCk7CisKICNpZmRlZiBfX2NwbHVz
cGx1cwogfQogI2VuZGlmCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjk4NDIpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0yNyAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBw
b3J0cyB0byBvdmVycmlkZSB0ZXh0IHRyYWNrIHJlbmRlcmluZyBzdHlsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEyMDQ0OTY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50
eHQ6IFVwZGF0ZSByZXN1bHRzIGZvciBjYXB0aW9uIGNzcyBjaGFuZ2VzLgorICAgICAgICAqIG1l
ZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmcuaHRtbDogCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczogU2tpcCB0ZXN0cyB0aGF0IG5lZWQgdG8gYmUgcmVi
YXNlbGluZWQuCisKIDIwMTItMDktMjcgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudCBzaG91bGQgdXNlIExvY2Fs
aXplciBmdW5jdGlvbnMuCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUt
cmVuZGVyaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90
cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTI5ODM0KQor
KysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgUlVOKHZpZGVvLmhlaWdodCA9IDE0
NDApCiBFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2
aWRlbykpLmZvbnRTaXplID09ICc3MnB4JykgT0sKIAogRVhQRUNURUQgKGdldENvbXB1dGVkU3R5
bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5mb250RmFtaWx5ID09ICdzYW5zLXNl
cmlmJykgT0sKLUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVt
ZW50KHZpZGVvKSkuY29sb3IgPT0gJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknKSBPSworRVhQRUNU
RUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5jb2xv
ciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxl
KHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmZpcnN0Q2hpbGQpLmJh
Y2tncm91bmRDb2xvciA9PSAncmdiYSgwLCAwLCAwLCAwLjc5Njg3NSknKSwgT0JTRVJWRUQgJ3Jn
YmEoMCwgMCwgMCwgMC44KScgRkFJTAogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmcuaHRtbAkocmV2aXNpb24gMTI5
ODM0KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAgICAgICAgICAgICB0ZXN0Rm9udFNp
emUoMjU2MCwgMTQ0MCk7CiAKICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmZvbnRGYW1pbHkiLCAic2Fucy1z
ZXJpZiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRU
cmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuY29sb3IiLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
KSIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFj
a0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuY29sb3IiLCAicmdiKDI1NSwgMjU1LCAyNTUpIik7CiAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxh
eUVsZW1lbnQodmlkZW8sICdkaXNwbGF5JykuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIiwg
InJnYmEoMCwgMCwgMCwgMC43OTY4NzUpIik7CiAKICAgICAgICAgICAgIGVuZFRlc3QoKTsKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwko
cmV2aXNpb24gMTI5ODM0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4
cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMzcwMiwzICszNzAyLDggQEAgY3JidWcuY29t
LzE1MjAwNyBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dQogY3JidWcuY29tLzE1MjAwNyBwbGF0Zm9y
bS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvZ2VvbWV0cnkvYm91bmRzLWln
bm9yZXMtaGlkZGVuLWR5bmFtaWMtbmVnemluZGV4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IGNyYnVnLmNvbS8xNTIwMDcgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBv
c2l0aW5nL2dlb21ldHJ5L2NsaXBwaW5nLWZvcmVncm91bmQuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogY3JidWcuY29tLzE1MjAwNyBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJl
Y29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LWltYWdlLWxheWVycy5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCisKKyMgTmVlZCB0byBiZSB1cGRhdGVkIGFmdGVyIHdlYmtpdC5vcmcv
Yi85NzgwMAord2Via2l0Lm9yZy9iLzg5MTY3IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJp
bmctaG9yaXpvbnRhbC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvODkxNjcgbWVkaWEv
dHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy12ZXJ0aWNhbC5odG1sIFsgRmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvODkxNjcgbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy5odG1sIFsgRmFp
bHVyZSBdCg==
</data>
<flag name="commit-queue"
          id="178374"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166291</attachid>
            <date>2012-09-28 12:21:21 -0700</date>
            <delta_ts>2012-10-04 15:40:55 -0700</delta_ts>
            <desc>YAP</desc>
            <filename>user_preferences_patch_27.txt</filename>
            <type>text/plain</type>
            <size>60507</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTkwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBACisyMDEyLTA5LTI4ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHBvcnRzIHRv
IG92ZXJyaWRlIHRleHQgdHJhY2sgcmVuZGVyaW5nIHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTIwNDQ5NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IG5ldyBXZWJraXRTeXN0ZW1JbnRlcmZhY2Ug
ZnVuY3Rpb25zLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
QWRkIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oLgorCisgICAgICAgICogY3Nz
L21lZGlhQ29udHJvbHMuY3NzOiBSZWFycmFuZ2UgdGhlIGNhcHRpb24gQ1NTIHNvIGl0IGlzIHBv
c3NpYmxlIHRvIHN0eWxlIHRoZSBjdWUgd2luZG93LAorICAgICAgICAgICAgYmFja2dyb3VuZCwg
YW5kIHRleHQgaW5kZXBlbmRlbnRseS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVt
ZW50KTogSW5pdGlhbGl6ZSBtX2Rpc2FibGVDYXB0aW9ucyB3aXRoIHRoZW1lLT51c2VyUHJlZmVy
c0NhcHRpb25zKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdHRhY2gp
OiBSZWdpc3RlciBmb3IgY2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2FsbGJhY2tzLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGV0YWNoKTogVW5yZWdpc3RlciBmb3Ig
Y2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2FsbGJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6dXNlclByZWZlcnNDYXB0aW9ucyk6IFJldHVybiB0aGVtZS0+dXNl
clByZWZlcnNDYXB0aW9ucygpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2luZCk6IENvbnNpZGVyIHVzZXJQcmVmZXJzQ2Fw
dGlvbnMoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldENsb3NlZENh
cHRpb25zVmlzaWJsZSk6IE1vdmUgdGhlIGNvZGUgdGhhdCBtYXJrcyBhbGwgdHJhY2tzIGFzCisg
ICAgICAgICAgICB1bi1jb25maWd1cmVkIHRvIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NB
c1VuY29uZmlndXJlZCBzbyBpdCBjYW4gYmUgcmV1c2VkLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6IE5ldywgZm9yY2UgYSBy
ZWV2YWx1YXRpb24gb2YgYWxsIHRleHQgdHJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKTog
TmV3LCBjb2RlIG1vdmVkIGZyb20gCisgICAgICAgICAgICBzZXRDbG9zZWRDYXB0aW9uc1Zpc2li
bGUKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDogSW5oZXJpdCBmcm9tIENhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci4KKworICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKTog
TmV3LCBpZiB0aGVtZQorICAgICAgICAgICAgaGFzIGEgY2FwdGlvbnMgc3R5bGUgc2hlZXQgb3Zl
cnJpZGUsIGluamVjdCBpdCBpbnRvIHRoZSBjdXJyZW50IHBhZ2UgZ3JvdXAsIG90aGVyd2lzZQor
ICAgICAgICAgICAgcmVtb3ZlIGluamVjdGVkIHNoZWV0LgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlU2l6ZXMpOiBHZXQgcmlk
IG9mIHVubmVjZXNzYXJ5IG1lbWJlcgorICAgICAgICAgICAgdmFyaWFibGUuIEdldCBjYXB0aW9u
IGZvbnQgc2NhbGUgZnJvbSB0aGVtZSBpbnN0ZWFkIG9mIGhhcmQgY29kaW5nLgorICAgICAgICAq
IGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6CisKKyAgICAgICAgKiBodG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xSb290RWxlbWVudDo6dXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQpOiBOZXcu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXBkYXRlVGV4dFRy
YWNrRGlzcGxheSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQuaDogQWRkIHVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkLCBtaW5vciBjbGVhbnVwLgor
CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sczo6dXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQpOiBOZXcuCisK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1ZUJveCk6IFNldCB0aGUgc2hhZG93IHBzZXVk
byBpZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94
U2hhZG93UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1cm4gdGhlIAorICAgICAg
ICAgICAgc2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4gYmUgdXNlZCBlbHNld2hlcmUuCisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OnNoYWRvd1BzZXVkb0lkKTogQ2FsbCB0ZXh0
VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1
ZTo6cGFzdE5vZGVzU2hhZG93UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1cm4g
dGhlIAorICAgICAgICAgICAgc2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4gYmUgdXNlZCBlbHNl
d2hlcmUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmZ1dHVyZU5vZGVzU2hhZG93
UHNldWRvSWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6dXBkYXRl
RGlzcGxheVRyZWUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oOiBVcGRhdGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tOiBEaXR0by4K
KworICAgICAgICAqIHJlbmRlcmluZy9DYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIu
aDogQWRkZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lOjp1c2VyUHJlZmVyc0NhcHRpb25zKTogTmV3LCBkZWZhdWx0
IGRvLW5vdGhpbmcgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZTo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWU6OmNhcHRpb25Gb250U2l6ZVNjYWxlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZTo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWRDYWxsYmFja3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
Ojp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6IERpdHRv
LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6dXNlckNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayk6IE5ldywgcmVjZWl2ZXMgcHJl
ZmVyZW5jZSBjaGFuZ2VkIG5vdGlmaWNhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZU1hYzo6UmVuZGVyVGhlbWVNYWMpOiBJbml0aWFsaXplIG1fbGlzdGVuaW5nRm9yQ2FwdGlv
blByZWZlcmVuY2VOb3RpZmljYXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6On5SZW5kZXJUaGVtZU1hYyk6IFVucmVnaXN0ZXIgZm9yIG5vdGlmaWNhdGlvbnMgaWYgbmVj
ZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnVzZXJIYXNDYXB0aW9u
UHJlZmVyZW5jZXMpOiBOZXcsIHBhc3N0aHJvdWdoIHRvIFdLU0kgZnVuY3Rpb24uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6dXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zV2luZG93Q29sb3IpOiBS
ZXR1cm4gQ29sb3Igd2l0aCB1c2VyJ3MgY2FwdGlvbiB3aW5kb3cgY29sb3IgcHJlZmVyZW5jZS4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uc0JhY2tncm91bmRDb2xv
cik6IFJldHVybiBDb2xvciB3aXRoIHVzZXIncyBjYXB0aW9uIAorICAgICAgICAgICAgYmFja2dy
b3VuZCBjb2xvciBwcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OmNhcHRpb25zVGV4dENvbG9yKTogUmV0dXJuIENvbG9yIHdpdGggdXNlcidzIGNhcHRpb24gdGV4
dCBjb2xvciBwcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNh
cHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKTogUmV0dXJuIENvbG9yIGZvciB0ZXh0IGVkZ2Ug
ZWZmZWN0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNzc1Byb3BlcnR5V2l0
aFRleHRFZGdlQ29sb3IpOiBSZXR1cm4gU3RyaW5nIHdpdGggQ1NTIHRvIHNldCBhIHRleHQtc2hh
ZG93CisgICAgICAgICAgICBvciB3ZWJraXQtdGV4dC1zdHJva2UgcHJvcGVydHkuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6Y3NzQ29sb3JQcm9wZXJ0eSk6IFJldHVybiBhIFN0
cmluZyB3aXRoIGNzcyB0byBzZXQgYSBwcm9wZXJ0eSAKKyAgICAgICAgICAgIHdpdGggYSBjb2xv
ciB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uc1RleHRF
ZGdlU3R5bGUpOiBSZXR1cm4gYSBTdHJpbmcgd2l0aCBjc3MgdG8gc3R5bGUgY2FwdGlvbiAKKyAg
ICAgICAgICAgIHRleHQgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCB0ZXh0IGVkZ2Ugc3R5ZS4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uc0RlZmF1bHRGb250KTog
UmV0dXJuIGEgU3RyaW5nIHdpdGggY3NzIHRvIHN0eWxlIGNhcHRpb24KKyAgICAgICAgICAgIHRl
eHQgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCBmb250LgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKTogUmV0dXJuIGEgU3RyaW5n
IHdpdGggY3NzIHRvIHN0eWxlIGNhcHRpb25zCisgICAgICAgICAgICB3aXRoIHRoZSB1c2VyJ3Mg
cHJlZmVycmVkIHN0eWxlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRp
b25Gb250U2l6ZVNjYWxlKTogUmV0dXJuIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGNhcHRpb24gZm9u
dCBzY2FsZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkKTogTm90aWZ5IGxpc3RlbmVycyBvZiBjYXB0aW9uIHByZWZlcmVuY2UgY2hh
bmdlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnJlZ2lzdGVyRm9yQ2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6IEFkZCBhIGNhcHRpb24gcHJlZmVyZW5jZXMg
CisgICAgICAgICAgICBjaGFuZ2VzIGxpc3RlbmVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tz
KTogUmVtb3ZlIGEgY2FwdGlvbiBwcmVmZXJlbmNlcworICAgICAgICAgICAgY2hhbmdlcyBsaXN0
ZW5lci4KKwogMjAxMi0wOS0yOCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgQ2xlYW4gdXAgTG9jYWxpemVyLXJlbGF0ZWQgZnVuY3Rpb25zCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTI5OTA2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI1OTcsMyArMjU5NywxOCBAQCBfX1pON1dlYkNv
cmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlCiBfX1pON1dlYkNvcmUyNFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0aXZlczhfTlNSYW5nZQogX19aTjdXZWJD
b3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlc0VQMThOU0F0dHJpYnV0ZWRTdHJp
bmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlRUxtMEVFRQogI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitfd2tDYXB0aW9uQXBwZWFyYW5jZUhhc1Vz
ZXJQcmVmZXJlbmNlcworX3drQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxh
YmxlCitfd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IKK193a0NhcHRpb25B
cHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvcgorX3drQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2lu
ZG93Q29sb3IKK193a0NhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkKK193a0Nh
cHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkKK193a0NhcHRpb25BcHBlYXJhbmNl
R2V0V2luZG93T3BhY2l0eQorX3drQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxlCitf
d2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZQorX3drQ2FwdGlvbkFw
cGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlCitfd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdz
Q2hhbmdlZE5vdGlmaWNhdGlvbgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjk5MDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMSw2ICsxMzEsNyBAQAogCQkwN0JERDZFQzE0NjlCNEMyMDA5QzlGODUgLyog
SlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3QjVBMzBBMTQ2ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0
b20uY3BwICovOyB9OwogCQkwN0UxMTZCMTE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLzsgfTsK
IAkJMDdFMTE3MDcxNDg5RUJFQjAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNzA2MTQ4
OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgKi87IH07CisJCTA3RUMz
OEI5MTYxNTRDMUEwMEU4MTQ2RCAvKiBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RUMzOEI4
MTYxNTRDMUEwMEU4MTQ2RCAvKiBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODA2RTU3
QTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODA2RTU3OTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0
cml4LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MDgwRTQ5MjYxMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwRTQ5MjIx
MjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5oICovOyB9Owog
CQkwODBFNDkyODEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MEU0OTI0
MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5oICovOyB9OwpA
QCAtNzE1MCw2ICs3MTUxLDcgQEAKIAkJMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4
dFRyYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
VGV4dFRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFMTE3
MDYxNDg5RUJFQjAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFMzhBMEIxNDhGQ0YwQzAwNkUxRUNDIC8qIEpT
VGV4dFRyYWNrQ3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGV4
dFRyYWNrQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3RUMzOEI4MTYx
NTRDMUEwMEU4MTQ2RCAvKiBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExp
c3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MDZFNTc5MTI4OTMwNDUw
MDdDRUQzMiAvKiBTVkdNYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MEU0OTIxMTI1NUYz
QkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgwRTQ5MjIxMjU1RjNCRDAwRUZDQTI3
IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIxMzM1LDYgKzIxMzM3LDcgQEAKIAkJCQlCQ0U3ODk4NTExMjBFN0E2
MDA2MEVDRTUgLyogQmlkaVJ1bi5oICovLAogCQkJCUJDRUE0ODE1MDk3RDkzMDIwMDk0QzlFNCAv
KiBicmVha19saW5lcy5jcHAgKi8sCiAJCQkJQkNFQTQ4MTYwOTdEOTMwMjAwOTRDOUU0IC8qIGJy
ZWFrX2xpbmVzLmggKi8sCisJCQkJMDdFQzM4QjgxNjE1NEMxQTAwRTgxNDZEIC8qIENhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oICovLAogCQkJCUJDREQ0NTREMTIzNkM5NUMwMDlB
Nzk4NSAvKiBDb2x1bW5JbmZvLmggKi8sCiAJCQkJOTM5MkYxNEYwQUQxODYyMzAwNjkxQkQ0IC8q
IENvdW50ZXJOb2RlLmNwcCAqLywKIAkJCQk5MzkyRjE0QjBBRDE4NjFCMDA2OTFCRDQgLyogQ291
bnRlck5vZGUuaCAqLywKQEAgLTI1NTY3LDYgKzI1NTcwLDcgQEAKIAkJCQlGQjkyREY0QjE1RkVE
MDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTRG
N0I0QTY2MTVGRjZENkEwMDZCNUYyMiAvKiBQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMxRDcyRjYxNUZFNjk1MzAwQzRDMDdFIC8qIExheW91dE1p
bGVzdG9uZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3RUMzOEI5MTYxNTRDMUEwMEU4MTQ2RCAv
KiBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHMuY3NzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzLmNzcwkocmV2aXNpb24gMTI5OTA2KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHMuY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTYsNyArMjE2LDcgQEAgdmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZQog
ICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKICAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7Cisg
ICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7CiAKICAgICBsZXR0ZXItc3BhY2luZzog
bm9ybWFsOwogICAgIHdvcmQtc3BhY2luZzogbm9ybWFsOwpAQCAtMjM0LDggKzIzNCw2IEBAIHZp
ZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2QKIAogICAgIGJhY2tncm91bmQt
Y29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICBwYWRkaW5nOiAycHggMnB4OwotCi0gICAg
d2hpdGUtc3BhY2U6IHByZS13cmFwOwogfQogCiB2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRy
YWNrLWZ1dHVyZS1ub2RlcyB7CkBAIC0yNDYsMTEgKzI0NCwxMCBAQCB2aWRlbzo6LXdlYmtpdC1t
ZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1uCiAKICAgICBtYXJnaW4tbGVmdDogLTJweDsKICAgICBw
YWRkaW5nOiAycHggMnB4IDJweCAwcHg7Ci0KLSAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiB9
CiAKIHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSB7CiAgICAgcG9zaXRp
b246IGFic29sdXRlOwotICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOworICAgIG92
ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMjk5MDYpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
IlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgpAQCAtMjgxLDYgKzI4Miwx
NCBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAKICAgICBzZXRI
YXNDdXN0b21DYWxsYmFja3MoKTsKICAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBk
b2N1bWVudCk7CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKGRvY3VtZW50LT5w
YWdlKCkpIHsKKyAgICAgICAgUmVuZGVyVGhlbWUqIHRoZW1lID0gZG9jdW1lbnQtPnBhZ2UoKS0+
dGhlbWUoKTsKKyAgICAgICAgaWYgKHRoZW1lLT51c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkp
CisgICAgICAgICAgICBtX2Rpc2FibGVDYXB0aW9ucyA9ICF0aGVtZS0+dXNlclByZWZlcnNDYXB0
aW9ucygpOworICAgIH0KKyNlbmRpZgogfQogCiBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlh
RWxlbWVudCgpCkBAIC01NDEsNiArNTUwLDIwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXR0
YWNoKCkKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmhpZGVNZWRpYVBs
YXllclByb3h5UGx1Z2luKG1fcHJveHlXaWRnZXQuZ2V0KCkpOwogICAgIH0KICNlbmRpZgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCisgICAg
ICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworI2VuZGlmCit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6ZGV0YWNoKCkKK3sKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKGRv
Y3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpLT51
bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKKyNl
bmRpZgorICAgIEhUTUxFbGVtZW50OjpkZXRhY2goKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpkaWRSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSkKQEAgLTI3ODMsMjggKzI4MDYsMzAgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsUmVtb3ZlVHJhY2soSAogICAgICAgICBtX3RleHRU
cmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbi5yZW1vdmUoaW5kZXgpOwogfQogCi1ib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJJc0ludGVyZXN0ZWRJblRoaXNMYW5ndWFnZShjb25zdCBT
dHJpbmcmKSBjb25zdAorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyUHJlZmVyc0NhcHRpb25z
KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogY2hlY2sgdGhlIHVzZXIncyBsYW5ndWFnZSBwcmVm
ZXJlbmNlIC0gYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDEyMQotICAgIHJldHVy
biB0cnVlOworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFw
YWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZW5kZXJUaGVtZSogdGhlbWUgPSBw
YWdlLT50aGVtZSgpOworICAgIHJldHVybiB0aGVtZS0+dXNlckhhc0NhcHRpb25QcmVmZXJlbmNl
cygpICYmIHRoZW1lLT51c2VyUHJlZmVyc0NhcHRpb25zKCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2luZChTdHJpbmcga2luZCkgY29u
c3QKIHsKLSAgICAvLyBJZiAuLi4gdGhlIHVzZXIgaGFzIGluZGljYXRlZCBhbiBpbnRlcmVzdCBp
biBoYXZpbmcgYSB0cmFjayB3aXRoIHRoaXMgdGV4dCB0cmFjayBraW5kLCB0ZXh0IHRyYWNrIGxh
bmd1YWdlLCAuLi4gCiAgICAgaWYgKG1fZGlzYWJsZUNhcHRpb25zKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLT5zZXR0aW5ncygp
OwotICAgIGlmICghc2V0dGluZ3MpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIHVz
ZXJQcmVmZXJzQ2FwdGlvbnNPclN1YnRpdGxlcyA9IG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlIHx8
IHVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKIAogICAgIGlmIChraW5kID09IFRleHRUcmFjazo6c3Vi
dGl0bGVzS2V5d29yZCgpKQotICAgICAgICByZXR1cm4gc2V0dGluZ3MtPnNob3VsZERpc3BsYXlT
dWJ0aXRsZXMoKSB8fCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsKKyAgICAgICAgcmV0dXJuIChz
ZXR0aW5ncyAmJiBzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVN1YnRpdGxlcygpKSB8fCB1c2VyUHJl
ZmVyc0NhcHRpb25zT3JTdWJ0aXRsZXM7CiAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpjYXB0
aW9uc0tleXdvcmQoKSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzLT5zaG91bGREaXNwbGF5Q2Fw
dGlvbnMoKSB8fCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsKKyAgICAgICAgcmV0dXJuIChzZXR0
aW5ncyAmJiBzZXR0aW5ncy0+c2hvdWxkRGlzcGxheUNhcHRpb25zKCkpIHx8IHVzZXJQcmVmZXJz
Q2FwdGlvbnNPclN1YnRpdGxlczsKICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OmRlc2NyaXB0
aW9uc0tleXdvcmQoKSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzLT5zaG91bGREaXNwbGF5VGV4
dERlc2NyaXB0aW9ucygpIHx8IG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlOworICAgICAgICByZXR1
cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKCk7
CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0zOTY5LDIyICszOTk0LDEyIEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0Q2xvc2VkQ2FwdGlvbnMKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVk
KCkpIHsKICAgICAgICAgbV9kaXNhYmxlQ2FwdGlvbnMgPSAhbV9jbG9zZWRDYXB0aW9uc1Zpc2li
bGU7Ci0gICAgICAgIAotICAgICAgICAvLyBNYXJrIGFsbCB0cmFjayBlbGVtZW50cyBhcyBub3Qg
ImNvbmZpZ3VyZWQiIHNvIHRoYXQgY29uZmlndXJlVGV4dFRyYWNrcygpCi0gICAgICAgIC8vIHdp
bGwgcmVjb25zaWRlciB3aGljaCB0cmFja3MgdG8gZGlzcGxheSBpbiBsaWdodCBvZiBuZXcgdXNl
ciBwcmVmZXJlbmNlcwotICAgICAgICAvLyAoZS5nLiBkZWZhdWx0IHRyYWNrcyBzaG91bGQgbm90
IGJlIGRpc3BsYXllZCBpZiB0aGUgdXNlciBoYXMgdHVybmVkIG9mZgotICAgICAgICAvLyBjYXB0
aW9ucyBhbmQgbm9uLWRlZmF1bHQgdHJhY2tzIHNob3VsZCBiZSBkaXNwbGF5ZWQgYmFzZWQgb24g
bGFuZ3VhZ2UKLSAgICAgICAgLy8gcHJlZmVyZW5jZXMgaWYgdGhlIHVzZXIgaGFzIHR1cm5lZCBj
YXB0aW9ucyBvbikuCi0gICAgICAgIGZvciAoTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9k
ZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmICghbm9kZS0+
aGFzVGFnTmFtZSh0cmFja1RhZykpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICBIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVHJh
Y2tFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgICAgICBpZiAodHJhY2tFbGVtZW50LT5raW5kKCkg
PT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKQotICAgICAgICAgICAgICAgIHx8IHRyYWNr
RWxlbWVudC0+a2luZCgpID09IFRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCgpKQotICAgICAg
ICAgICAgICAgIHRyYWNrRWxlbWVudC0+c2V0SGFzQmVlbkNvbmZpZ3VyZWQoZmFsc2UpOwotICAg
ICAgICB9CiAKKyAgICAgICAgbWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1
cmVkKCk7CiAgICAgICAgIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKKworICAgICAgICBpZiAoIW1f
ZGlzYWJsZUNhcHRpb25zICYmIChoYXNNZWRpYUNvbnRyb2xzKCkgfHwgY3JlYXRlTWVkaWFDb250
cm9scygpKSkKKyAgICAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+dXNlckNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWQoKTsKICAgICB9CiAjZWxzZQogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkp
CkBAIC00MTcyLDYgKzQxODcsNDMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVDbG9z
ZWRDYXB0aQogICAgICAgICAgICAgbWVkaWFDb250cm9scygpLT51cGRhdGVUZXh0VHJhY2tEaXNw
bGF5KCk7CiAgICAgfQogfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWQoKQoreworICAgIGlmICghaXNWaWRlbygpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQoKTsKKyAgICAK
KyAgICBpZiAoIWhhc01lZGlhQ29udHJvbHMoKSAmJiAhY3JlYXRlTWVkaWFDb250cm9scygpKQor
ICAgICAgICByZXR1cm47CisgICAgbWVkaWFDb250cm9scygpLT51c2VyQ2FwdGlvblByZWZlcmVu
Y2VzQ2hhbmdlZCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5k
U3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCgpCit7CisgICAgLy8gTWFyayBhbGwgdHJhY2sg
ZWxlbWVudHMgYXMgbm90ICJjb25maWd1cmVkIiBzbyB0aGF0IGNvbmZpZ3VyZVRleHRUcmFja3Mo
KQorICAgIC8vIHdpbGwgcmVjb25zaWRlciB3aGljaCB0cmFja3MgdG8gZGlzcGxheSBpbiBsaWdo
dCBvZiBuZXcgdXNlciBwcmVmZXJlbmNlcworICAgIC8vIChlLmcuIGRlZmF1bHQgdHJhY2tzIHNo
b3VsZCBub3QgYmUgZGlzcGxheWVkIGlmIHRoZSB1c2VyIGhhcyB0dXJuZWQgb2ZmCisgICAgLy8g
Y2FwdGlvbnMgYW5kIG5vbi1kZWZhdWx0IHRyYWNrcyBzaG91bGQgYmUgZGlzcGxheWVkIGJhc2Vk
IG9uIGxhbmd1YWdlCisgICAgLy8gcHJlZmVyZW5jZXMgaWYgdGhlIHVzZXIgaGFzIHR1cm5lZCBj
YXB0aW9ucyBvbikuCisgICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOyBub2RlOyBu
b2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoIW5vZGUtPmhhc1RhZ05h
bWUodHJhY2tUYWcpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBI
VE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVHJhY2tFbGVt
ZW50Kj4obm9kZSk7CisgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9IHRyYWNr
RWxlbWVudC0+dHJhY2soKTsKKyAgICAgICAgaWYgKCF0ZXh0VHJhY2spCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBraW5kID0gdGV4dFRyYWNrLT5raW5k
KCk7CisKKyAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkg
fHwga2luZCA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpKQorICAgICAgICAgICAgdHJh
Y2tFbGVtZW50LT5zZXRIYXNCZWVuQ29uZmlndXJlZChmYWxzZSk7CisgICAgfQorICAgIGNvbmZp
Z3VyZVRleHRUcmFja3MoKTsKK30KKwogI2VuZGlmCiAKIHZvaWQqIEhUTUxNZWRpYUVsZW1lbnQ6
OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxMjk5MDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJBY3RpdmVET01PYmpl
Y3QuaCIKKyNpbmNsdWRlICJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIuaCIKICNp
bmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0
ZW5lci5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgpAQCAtNzgsNyAr
NzksNyBAQCB0eXBlZGVmIFZlY3RvcjxDdWVJbnRlcnZhbFRyZWU6OkludGVydmFsCiAKIGNsYXNz
IEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBsYXll
ckNsaWVudCwgcHVibGljIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50LCBwcml2YXRlIE1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlh
Q29udHJvbGxlckludGVyZmFjZQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICAsIHByaXZh
dGUgVGV4dFRyYWNrQ2xpZW50CisgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudCwgcHJpdmF0
ZSBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIKICNlbmRpZgogewogcHVibGljOgpA
QCAtMjQwLDYgKzI0MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFja3Mo
KTsKICAgICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFja0dyb3VwKGNvbnN0IFRyYWNrR3JvdXAmKSBj
b25zdDsKIAorICAgIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0OwogICAgIGJvb2wg
dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2luZChTdHJpbmcpIGNvbnN0OwogICAgIGJvb2wg
dGV4dFRyYWNrc0FyZVJlYWR5KCkgY29uc3Q7CiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tE
aXNwbGF5KCk7CkBAIC0zMjUsNyArMzI3LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0
cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRldGFjaCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVU
b05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgT1ZFUlJJREU7CiAKQEAgLTQ3NCwx
MiArNDc3LDE0IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgdm9p
ZCB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGZsb2F0KTsKLSAgICBib29sIHVzZXJJc0ludGVy
ZXN0ZWRJblRoaXNMYW5ndWFnZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBIVE1MVHJhY2tF
bGVtZW50KiBzaG93aW5nVHJhY2tXaXRoU2FtZUtpbmQoSFRNTFRyYWNrRWxlbWVudCopIGNvbnN0
OwogCiAgICAgYm9vbCBpZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygpIGNvbnN0IHsg
cmV0dXJuIG1faWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlID4gMDsgfQogICAgIHZvaWQgYmVnaW5J
Z25vcmluZ1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkgeyArK21faWdub3JlVHJhY2tEaXNw
bGF5VXBkYXRlOyB9CiAgICAgdm9pZCBlbmRJZ25vcmluZ1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVl
c3RzKCkgeyBBU1NFUlQobV9pZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGUpOyAtLW1faWdub3JlVHJh
Y2tEaXNwbGF5VXBkYXRlOyB9CisKKyAgICB2b2lkIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFj
a3NBc1VuY29uZmlndXJlZCgpOworICAgIHZpcnR1YWwgdm9pZCBjYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkKCkgT1ZFUlJJREU7CiAjZW5kaWYKIAogICAgIC8vIFRoZXNlICJpbnRlcm5hbCIgZnVu
Y3Rpb25zIGRvIG5vdCBjaGVjayB1c2VyIGdlc3R1cmUgcmVzdHJpY3Rpb25zLgpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cAkocmV2aXNpb24gMTI5OTA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw5ICs0NSwxMSBAQAogI2lu
Y2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIK
ICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sUm9v
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xzLmgiCiAjaW5jbHVkZSAiTW91c2VF
dmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNs
dWRlICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJJbmxp
bmUuaCIKICNpbmNsdWRlICJSZW5kZXJNZWRpYS5oIgpAQCAtMTMxMCw2ICsxMzEyLDMyIEBAIGNv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGV4dFRyYWMKICAgICByZXR1cm4gaWQ7CiB9
CiAKK3ZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXNlckNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWQoKQoreworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5w
YWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEtVUkwsIGNhcHRpb25zU3R5bGVTaGVldFVSTCwgKFBhcnNlZFVSTFN0cmluZywg
InVzZXItY2FwdGlvbnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzRE
QzIzIikpOworCisgICAgUmVuZGVyVGhlbWUqIHRoZW1lID0gcGFnZS0+dGhlbWUoKTsKKyAgICBI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxlbWVudCh0aGlz
KTsKKworICAgIG1lZGlhRWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworCisgICAgcGFn
ZS0+Z3JvdXAoKS5yZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZChtYWluVGhyZWFkTm9ybWFs
V29ybGQoKSwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMKTsKKworICAgIGlmICghbWVkaWFFbGVtZW50
LT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKSAmJiAhdGhlbWUtPnVzZXJIYXNDYXB0aW9uUHJlZmVy
ZW5jZXMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIGNhcHRpb25zT3ZlcnJpZGVT
dHlsZVNoZWV0ID0gdGhlbWUtPmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCk7CisgICAgaWYg
KGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQobWFpblRocmVhZE5v
cm1hbFdvcmxkKCksIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LCBjYXB0aW9uc1N0eWxlU2hl
ZXRVUkwsIGFkb3B0UHRyKG5ldyBWZWN0b3I8U3RyaW5nPiksIGFkb3B0UHRyKG5ldyBWZWN0b3I8
U3RyaW5nPiksIAorICAgICAgICBJbmplY3RJbkFsbEZyYW1lcywgVXNlclN0eWxlQXV0aG9yTGV2
ZWwsIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOworfQorCiB2b2lkIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogewogICAgIEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KHRoaXMpOwpAQCAt
MTM3NiwxMCArMTQwNCw2IEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWUKICAgICBoYXNDaGlsZE5vZGVzKCkgPyBzaG93KCkgOiBoaWRlKCk7CiB9CiAKLXN0YXRpYyBj
b25zdCBmbG9hdCBtaW1pbXVtRm9udFNpemUgPSAxNjsKLXN0YXRpYyBjb25zdCBmbG9hdCB2aWRl
b0hlaWdodEZvbnRTaXplUGVyY2VudGFnZSA9IC4wNTsKLXN0YXRpYyBjb25zdCBmbG9hdCB0cmFj
a0JvdHRvbU11bHRpcGxpZXIgPSAuOTsKLQogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50Ojp1cGRhdGVTaXplcygpCiB7CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50ID0gdG9QYXJlbnRNZWRpYUVsZW1lbnQodGhpcyk7CkBAIC0xMzg3LDExICsxNDEx
LDggQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZQogICAgICAgICBy
ZXR1cm47CiAKICAgICBJbnRSZWN0IHZpZGVvQm94ID0gdG9SZW5kZXJWaWRlbyhtZWRpYUVsZW1l
bnQtPnJlbmRlcmVyKCkpLT52aWRlb0JveCgpOwotICAgIGlmIChtX3ZpZGVvRGlzcGxheVNpemUg
PT0gdmlkZW9Cb3gpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3ZpZGVvRGlzcGxheVNpemUgPSB2
aWRlb0JveDsKIAotICAgIGZsb2F0IGZvbnRTaXplID0gbV92aWRlb0Rpc3BsYXlTaXplLnNpemUo
KS5oZWlnaHQoKSAqIHZpZGVvSGVpZ2h0Rm9udFNpemVQZXJjZW50YWdlOworICAgIGZsb2F0IGZv
bnRTaXplID0gdmlkZW9Cb3guc2l6ZSgpLmhlaWdodCgpICogKGRvY3VtZW50KCktPnBhZ2UoKS0+
dGhlbWUoKS0+Y2FwdGlvbkZvbnRTaXplU2NhbGUoKSk7CiAgICAgaWYgKGZvbnRTaXplICE9IG1f
Zm9udFNpemUpIHsKICAgICAgICAgbV9mb250U2l6ZSA9IGZvbnRTaXplOwogICAgICAgICBzZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIFN0cmluZzo6bnVtYmVyKGZv
bnRTaXplKSArICJweCIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCShyZXZpc2lvbiAxMjk5MDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MzcsNiArNTM3LDcgQEAgY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxl
bQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCisgICAgdm9pZCB1c2VyQ2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZCgpOwogICAgIHZvaWQgdXBkYXRlRGlzcGxheSgpOwogICAgIHZv
aWQgdXBkYXRlU2l6ZXMoKTsKIApAQCAtNTQ3LDcgKzU0OCw4IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IE1lZGlhVGV4dFRyYWNrRGlzcGxheUNvbnRhaW5lcjsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogCi0gICAgSW50UmVjdCBtX3ZpZGVv
RGlzcGxheVNpemU7CisgICAgdm9pZCB1cGRhdGVDYXB0aW9uQXBwZWFyYW5jZSgpOworCiAgICAg
ZmxvYXQgbV9mb250U2l6ZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAJKHJldmlzaW9uIDEyOTkw
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMwLDYgKzYzMCwxMiBAQCB2b2lkIE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50OjpjcmVhdGVUZXh0CiAgICAgaW5zZXJ0QmVmb3JlKHRleHREaXNwbGF5Q29u
dGFpbmVyLnJlbGVhc2UoKSwgbV9wYW5lbCwgZWMsIHRydWUpOwogfQogCit2b2lkIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50Ojp1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpCit7CisgICAg
aWYgKG1fdGV4dERpc3BsYXlDb250YWluZXIpCisgICAgICAgIG1fdGV4dERpc3BsYXlDb250YWlu
ZXItPnVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7Cit9CisKIHZvaWQgTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQ6OnNob3dUZXh0VHJhY2tEaXNwbGF5KCkKIHsKICAgICBpZiAoIW1fdGV4
dERpc3BsYXlDb250YWluZXIpCkBAIC02NTAsNyArNjU2LDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xS
b290RWxlbWVudDo6dXBkYXRlVGV4dAogICAgICAgICBjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCk7
CiAKICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT51cGRhdGVEaXNwbGF5KCk7Ci0KIH0KICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbFJvb3RFbGVtZW50LmgJKHJldmlzaW9uIDEyOTkwNikKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwNSw5ICsxMDUsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IHZvaWQgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOwotICAgIHZvaWQgc2hvd1RleHRUcmFja0Rp
c3BsYXkoKTsKLSAgICB2b2lkIGhpZGVUZXh0VHJhY2tEaXNwbGF5KCk7Ci0gICAgdm9pZCB1cGRh
dGVUZXh0VHJhY2tEaXNwbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHVzZXJDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNob3dUZXh0VHJhY2tE
aXNwbGF5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGhpZGVUZXh0VHJhY2tEaXNwbGF5
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKSBP
VkVSUklERTsKICNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEhpZGVDb250cm9scygp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaAkocmV2
aXNpb24gMTI5OTA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbHMg
OiBwdWJsaWMgSFRNTERpdkVsZW0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGlkZUNvbnRyb2xz
KCkgPSAwOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHZpcnR1YWwgdm9pZCB1c2Vy
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1Rl
eHRUcmFja0Rpc3BsYXkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVUZXh0VHJhY2tEaXNw
bGF5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCkgPSAw
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAkocmV2
aXNpb24gMTI5OTA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBAIFRleHRUcmFja0N1ZUJveDo6VGV4
dFRyYWNrQ3VlQm94KERvY3VtZW4KICAgICA6IEhUTUxFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQp
CiAgICAgLCBtX2N1ZShjdWUpCiB7CisgICAgc2V0U2hhZG93UHNldWRvSWQoc2hhZG93UHNldWRv
SWQoKSk7CiB9CiAKIFRleHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlQm94OjpnZXRDdWUoKSBjb25z
dApAQCAtMTY3LDEyICsxNjgsMTcgQEAgdm9pZCBUZXh0VHJhY2tDdWVCb3g6OmFwcGx5Q1NTUHJv
cGVydGllcwogICAgIH0KIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tDdWVCb3g6
OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrQ3Vl
Qm94Ojp0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpCiB7CiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lk
LCAoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IikpOwogICAgIHJldHVybiB0cmFj
a0Rpc3BsYXlCb3hTaGFkb3dQc2V1ZG9JZDsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0
VHJhY2tDdWVCb3g6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdGV4dFRy
YWNrQ3VlQm94U2hhZG93UHNldWRvSWQoKTsKK30KKwogUmVuZGVyT2JqZWN0KiBUZXh0VHJhY2tD
dWVCb3g6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQog
ewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0VHJhY2tDdWUodGhpcyk7CkBAIC0x
ODAsNiArMTg2LDE4IEBAIFJlbmRlck9iamVjdCogVGV4dFRyYWNrQ3VlQm94OjpjcmVhdGVSZW4K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitjb25zdCBBdG9taWNTdHJpbmcm
IFRleHRUcmFja0N1ZTo6cGFzdE5vZGVzU2hhZG93UHNldWRvSWQoKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMsICgiLXdlYmtpdC1tZWRp
YS10ZXh0LXRyYWNrLXBhc3Qtbm9kZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgcmV0dXJuIHN1YnRpdGxlczsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBU
ZXh0VHJhY2tDdWU6OmZ1dHVyZU5vZGVzU2hhZG93UHNldWRvSWQoKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMsICgiLXdlYmtpdC1tZWRp
YS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2RlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICByZXR1cm4gc3VidGl0bGVzOworfQorCiBUZXh0VHJhY2tDdWU6OlRleHRU
cmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc3RhcnQsIGRv
dWJsZSBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudCkKICAgICA6IG1fc3RhcnRUaW1lKHN0YXJ0
KQogICAgICwgbV9lbmRUaW1lKGVuZCkKQEAgLTY1Miw5ICs2NzAsNiBAQCB2b2lkIFRleHRUcmFj
a0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUoZmxvCiAgICAgLy8gdGltZXN0YW1wcyAocHJvY2Vzc2lu
ZyBpbnN0cnVjdGlvbnMpLCBhbG9uZyB3aXRoIGRpc3BsYXlhYmxlIG5vZGVzLgogICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCB0aW1lc3RhbXBUYWcsIChBU0NJSUxpdGVyYWwo
InRpbWVzdGFtcCIpKSk7CiAKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgdHJhY2tQYXN0Tm9kZXNTaGFkb3dQc2V1ZG9JZCwgKCItd2Via2l0LW1lZGlhLXRleHQt
dHJhY2stcGFzdC1ub2RlcyIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21p
Y1N0cmluZywgdHJhY2tGdXR1cmVOb2Rlc1NoYWRvd1BzZXVkb0lkLCAoIi13ZWJraXQtbWVkaWEt
dGV4dC10cmFjay1mdXR1cmUtbm9kZXMiKSk7Ci0KICAgICBpZiAoIXRyYWNrKCktPmlzUmVuZGVy
ZWQoKSkKICAgICAgIHJldHVybjsKIApAQCAtNjYyLDEwICs2NzcsMTAgQEAgdm9pZCBUZXh0VHJh
Y2tDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKGZsbwogCiAgICAgLy8gQ2xlYXIgdGhlIGNvbnRlbnRz
IG9mIHRoZSB0d28gc2V0cy4KICAgICBtX2Z1dHVyZURvY3VtZW50Tm9kZXMtPnJlbW92ZUNoaWxk
cmVuKCk7Ci0gICAgbV9mdXR1cmVEb2N1bWVudE5vZGVzLT5zZXRTaGFkb3dQc2V1ZG9JZCh0cmFj
a0Z1dHVyZU5vZGVzU2hhZG93UHNldWRvSWQpOworICAgIG1fZnV0dXJlRG9jdW1lbnROb2Rlcy0+
c2V0U2hhZG93UHNldWRvSWQoZnV0dXJlTm9kZXNTaGFkb3dQc2V1ZG9JZCgpKTsKIAogICAgIG1f
cGFzdERvY3VtZW50Tm9kZXMtPnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgbV9wYXN0RG9jdW1lbnRO
b2Rlcy0+c2V0U2hhZG93UHNldWRvSWQodHJhY2tQYXN0Tm9kZXNTaGFkb3dQc2V1ZG9JZCk7Cisg
ICAgbV9wYXN0RG9jdW1lbnROb2Rlcy0+c2V0U2hhZG93UHNldWRvSWQocGFzdE5vZGVzU2hhZG93
UHNldWRvSWQoKSk7CiAKICAgICAvLyBVcGRhdGUgdGhlIHR3byBzZXRzIGNvbnRhaW5pbmcgcGFz
dCBhbmQgZnV0dXJlIFdlYlZUVCBvYmplY3RzLgogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiByZWZlcmVuY2VUcmVlID0gZ2V0Q3VlQXNIVE1MKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgJKHJldmlzaW9uIDEyOTkwNikKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwbHlDU1NQcm9wZXJ0aWVzKCk7CiAKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsK
KyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1
ZG9JZCgpOwogCiBwcml2YXRlOgogICAgIFRleHRUcmFja0N1ZUJveChEb2N1bWVudCosIFRleHRU
cmFja0N1ZSopOwpAQCAtODAsNiArODEsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UZXh0
VHJhY2tDdWUoKTsKIAorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHBhc3ROb2Rlc1No
YWRvd1BzZXVkb0lkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZnV0dXJlTm9k
ZXNTaGFkb3dQc2V1ZG9JZCgpOworCiAgICAgVGV4dFRyYWNrKiB0cmFjaygpIGNvbnN0OwogICAg
IHZvaWQgc2V0VHJhY2soUGFzc1JlZlB0cjxUZXh0VHJhY2s+KTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCShy
ZXZpc2lvbiAxMjk5MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzAsNiArMzMwLDQwIEBAIGV4dGVy
biBDR0Zsb2F0ICgqd2tOU0VsYXN0aWNEZWx0YUZvclJlYm8KIGV4dGVybiBDR0Zsb2F0ICgqd2tO
U1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSkoQ0dGbG9hdCBkZWx0YSk7CiAjZW5kaWYKIAor
dHlwZWRlZiBlbnVtIHsKKyAgICB3a0NhcHRpb25Gb250U3R5bGVEZWZhdWx0ID0gMCwKKyAgICB3
a0NhcHRpb25Gb250U3R5bGVNb25vc3BhY2VkV2l0aFNlcmlmLAorICAgIHdrQ2FwdGlvbkZvbnRT
dHlsZVByb3BvcnRpb25hbFdpdGhTZXJpZiwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVNb25vc3Bh
Y2VkV2l0aG91dFNlcmlmLAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZVByb3BvcnRpb25hbFdpdGhv
dXRTZXJpZiwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVDYXN1YWwsCisgICAgd2tDYXB0aW9uRm9u
dFN0eWxlQ3Vyc2l2ZSwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVTbWFsbENhcGl0YWwsCisgICAg
d2tDYXB0aW9uRm9udFN0eWxlTWF4Cit9IHdrQ2FwdGlvbkZvbnRTdHlsZTsKKwordHlwZWRlZiBl
bnVtIHsKKyAgICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlVW5kZWZpbmVkID0gMCwKKyAgICB3a0Nh
cHRpb25UZXh0RWRnZVN0eWxlTm9uZSwKKyAgICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlUmFpc2Vk
LAorICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVEZXByZXNzZWQsCisgICAgd2tDYXB0aW9uVGV4
dEVkZ2VTdHlsZVVuaWZvcm0sCisgICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZURyb3BTaGFkb3cs
CisgICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZU1heAorfSB3a0NhcHRpb25UZXh0RWRnZVN0eWxl
OworCitleHRlcm4gYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2VyUHJlZmVyZW5jZXMp
KHZvaWQpOworZXh0ZXJuIGJvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hl
bkF2YWlsYWJsZSkodm9pZCk7CitleHRlcm4gQ0dDb2xvclJlZigqd2tDYXB0aW9uQXBwZWFyYW5j
ZUNvcHlGb3JlZ3JvdW5kQ29sb3IpKHZvaWQpOworZXh0ZXJuIENHQ29sb3JSZWYoKndrQ2FwdGlv
bkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKSh2b2lkKTsKK2V4dGVybiBDR0NvbG9yUmVm
KCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yKSh2b2lkKTsKK2V4dGVybiBib29s
KCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkpKENHRmxvYXQqKTsKK2V4
dGVybiBib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkpKENHRmxv
YXQqKTsKK2V4dGVybiBib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3BhY2l0eSko
Q0dGbG9hdCopOworZXh0ZXJuIENHRm9udFJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250
Rm9yU3R5bGUpKGludCk7CitleHRlcm4gYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0
aXZlQ2hhcmFjdGVyU2l6ZSkoQ0dGbG9hdCopOworZXh0ZXJuIGludCgqd2tDYXB0aW9uQXBwZWFy
YW5jZUdldFRleHRFZGdlU3R5bGUpKHZvaWQpOworZXh0ZXJuIENGU3RyaW5nUmVmKCp3a0NhcHRp
b25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKSh2b2lkKTsKIH0KIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5tbQkocmV2aXNpb24gMTI5OTA2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIwOSwzICsyMDksMTUgQEAgQ0dGbG9hdCAoKndrTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5k
RGVsdAogQ0dGbG9hdCAoKndrTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEpKENHRmxvYXQg
ZGVsdGEpOwogI2VuZGlmCiAKK2Jvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZl
cmVuY2VzKSh2b2lkKTsKK2Jvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hl
bkF2YWlsYWJsZSkodm9pZCk7CitDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZv
cmVncm91bmRDb2xvcikodm9pZCk7CitDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29w
eUJhY2tncm91bmRDb2xvcikodm9pZCk7CitDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNl
Q29weVdpbmRvd0NvbG9yKSh2b2lkKTsKK2Jvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3Jl
Z3JvdW5kT3BhY2l0eSkoQ0dGbG9hdCopOworYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldEJh
Y2tncm91bmRPcGFjaXR5KShDR0Zsb2F0Kik7Citib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0
V2luZG93T3BhY2l0eSkoQ0dGbG9hdCopOworQ0dGb250UmVmKCp3a0NhcHRpb25BcHBlYXJhbmNl
Q29weUZvbnRGb3JTdHlsZSkoaW50KTsKK2Jvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxh
dGl2ZUNoYXJhY3RlclNpemUpKENHRmxvYXQqKTsKK2ludCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdl
dFRleHRFZGdlU3R5bGUpKHZvaWQpOworQ0ZTdHJpbmdSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24pKHZvaWQpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0NhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
TGlzdGVuZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcl9oCisjZGVmaW5lIENhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIHZvaWQgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpID0gMDsKK3Byb3RlY3RlZDoKKyAg
ICB2aXJ0dWFsIH5DYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIoKSB7IH0KK307CisK
K30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAko
cmV2aXNpb24gMTI5OTA2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBFbGVtZW50OwpAQCAtNDYsNiArNDcsOSBAQCBjbGFzcyBSZW5kZXJNZXRl
cjsKICNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKIGNsYXNzIFJlbmRlclByb2dyZXNzOwog
I2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorY2xhc3MgQ2FwdGlvblByZWZlcmVuY2Vz
Q2hhbmdlZExpc3RlbmVyOworI2VuZGlmCiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogCiBjbGFzcyBS
ZW5kZXJUaGVtZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlbmRlclRoZW1lPiB7CkBAIC0yMjUsNiAr
MjI5LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50U2xpZGVyVGlja3MoUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisgICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblBy
ZWZlcmVuY2VzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IGNh
cHRpb25Gb250U2l6ZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gMC4wNTsgfQorICAgIHZpcnR1YWwg
U3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlT
dHJpbmcoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
Q2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsgfQorI2VuZGlm
CisKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3VzZWQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIYXZlU3BpbkJ1
dHRvbihIVE1MSW5wdXRFbGVtZW50KikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCShyZXZpc2lvbiAxMjk5MDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYg
KzEwMSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHVzZXNUZXN0TW9kZUZvY3VzUmlu
Z0NvbG9yKCkgY29uc3Q7CiAgICAgLy8gQSB2aWV3IGFzc29jaWF0ZWQgdG8gdGhlIGNvbnRhaW5l
ZCBkb2N1bWVudC4gU3ViY2xhc3NlcyBtYXkgbm90IGhhdmUgc3VjaCBhIHZpZXcgYW5kIHJldHVy
biBhIGZha2UuCiAgICAgdmlydHVhbCBOU1ZpZXcqIGRvY3VtZW50Vmlld0ZvcihSZW5kZXJPYmpl
Y3QqKSBjb25zdDsKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2b2lkIGNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWQoKTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyVGhl
bWVNYWMoKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUaGVtZU1hYygpOwpAQCAtMTc4LDYgKzE4Mywx
NSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lZGlhU2xpZGVyVGh1bWJT
aXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAgdmlydHVhbCBJbnRQb2ludCB2b2x1bWVTbGlk
ZXJPZmZzZXRGcm9tTXV0ZUJ1dHRvbihSZW5kZXJCb3gqLCBjb25zdCBJbnRTaXplJikgY29uc3Qg
T1ZFUlJJREU7CiAjZW5kaWYKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2aXJ0dWFs
IGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENh
bGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxs
YmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgT1ZFUlJJREU7CisjZW5k
aWYKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3Vz
ZWQoKSBjb25zdDsKIApAQCAtMjM3LDYgKzI1MSwxNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGlu
dCogcHJvZ3Jlc3NCYXJNYXJnaW5zKE5TQ29udHJvbFNpemUpIGNvbnN0OwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgQ29sb3IgY2FwdGlvbnNXaW5kb3dDb2xvcigpIGNv
bnN0OworICAgIENvbG9yIGNhcHRpb25zQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgQ29s
b3IgY2FwdGlvbnNUZXh0Q29sb3IoKSBjb25zdDsKKyAgICBTdHJpbmcgY2FwdGlvbnNEZWZhdWx0
Rm9udCgpIGNvbnN0OworICAgIENvbG9yIGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKGNv
bnN0IENvbG9yJikgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRpb25zVGV4dEVkZ2VTdHlsZSgpIGNv
bnN0OworICAgIFN0cmluZyBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5
SUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IENvbG9yJikgY29uc3Q7CisgICAgU3RyaW5nIGNzc0Nv
bG9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ29sb3ImKSBjb25zdDsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIG11dGFibGUgUmV0YWluUHRyPE5TUG9wVXBCdXR0b25DZWxsPiBtX3Bv
cHVwQnV0dG9uOwogICAgIG11dGFibGUgUmV0YWluUHRyPE5TU2VhcmNoRmllbGRDZWxsPiBtX3Nl
YXJjaDsKQEAgLTI1Miw2ICsyNzcsMTEgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEhhc2hNYXA8
aW50LCBSR0JBMzI+IG1fc3lzdGVtQ29sb3JDYWNoZTsKIAogICAgIFJldGFpblB0cjxXZWJDb3Jl
UmVuZGVyVGhlbWVOb3RpZmljYXRpb25PYnNlcnZlcj4gbV9ub3RpZmljYXRpb25PYnNlcnZlcjsK
KworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBIYXNoU2V0PENhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWRMaXN0ZW5lcio+IG1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnM7Cisg
ICAgYm9vbCBtX2xpc3RlbmluZ0ZvckNhcHRpb25QcmVmZXJlbmNlTm90aWZpY2F0aW9uczsKKyNl
bmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMTI5OTA2KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRWxlbWVudC5oIgog
I2ltcG9ydCAiRmlsZUxpc3QuaCIKKyNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9y
dCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAi
SFRNTElucHV0RWxlbWVudC5oIgpAQCAtMTUxLDYgKzE1MiwxMSBAQCBQYXNzUmVmUHRyPFJlbmRl
clRoZW1lPiBSZW5kZXJUaGVtZTo6dGhlCiB9CiAjZW5kaWYKIAorc3RhdGljIHZvaWQgdXNlckNh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlv
bkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmLCBjb25zdCB2b2lkICosIENG
RGljdGlvbmFyeVJlZikKK3sKKyAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZU1hYyo+KG9ic2Vy
dmVyKS0+Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOworfQorCiBQYXNzUmVmUHRyPFJlbmRl
clRoZW1lPiBSZW5kZXJUaGVtZU1hYzo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFJlbmRlclRoZW1lTWFjKTsKQEAgLTE2MCw2ICsxNjYsOSBAQCBSZW5kZXJUaGVtZU1hYzo6
UmVuZGVyVGhlbWVNYWMoKQogICAgIDogbV9pc1NsaWRlclRodW1iSG9yaXpvbnRhbFByZXNzZWQo
ZmFsc2UpCiAgICAgLCBtX2lzU2xpZGVyVGh1bWJWZXJ0aWNhbFByZXNzZWQoZmFsc2UpCiAgICAg
LCBtX25vdGlmaWNhdGlvbk9ic2VydmVyKEFkb3B0TlMsIFtbV2ViQ29yZVJlbmRlclRoZW1lTm90
aWZpY2F0aW9uT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoVGhlbWU6dGhpc10pCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorICAgICwgbV9saXN0ZW5pbmdGb3JDYXB0aW9uUHJlZmVyZW5jZU5vdGlm
aWNhdGlvbnMoZmFsc2UpCisjZW5kaWYKIHsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fbm90aWZpY2F0aW9uT2JzZXJ2ZXIuZ2V0KCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
ZWN0b3I6QHNlbGVjdG9yKHN5c3RlbUNvbG9yc0RpZENoYW5nZTopCkBAIC0xNzAsNiArMTc5LDEx
IEBAIFJlbmRlclRoZW1lTWFjOjpSZW5kZXJUaGVtZU1hYygpCiBSZW5kZXJUaGVtZU1hYzo6flJl
bmRlclRoZW1lTWFjKCkKIHsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIHJlbW92ZU9ic2VydmVyOm1fbm90aWZpY2F0aW9uT2JzZXJ2ZXIuZ2V0KCldOworCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChtX2xpc3RlbmluZ0ZvckNhcHRpb25QcmVmZXJl
bmNlTm90aWZpY2F0aW9ucykKKyAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZW1vdmVPYnNl
cnZlcihDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCksIHRoaXMsIHdrQ2FwdGlv
bkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKSwgTlVMTCk7CisjZW5k
aWYKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCkgY29uc3QKQEAgLTIxMjgsNiArMjE0MiwyNTUgQEAgSW50UG9pbnQgUmVu
ZGVyVGhlbWVNYWM6OnZvbHVtZVNsaWRlck9mZgogICAgIHJldHVybiBSZW5kZXJNZWRpYUNvbnRy
b2xzOjp2b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1dHRvbihtdXRlQnV0dG9uQm94LCBzaXpl
KTsKIH0KIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2Jvb2wgUmVuZGVyVGhlbWVNYWM6OnVz
ZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdAoreworICAgIHJldHVybiB3a0NhcHRpb25B
cHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzKCk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVNYWM6
OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiB3a0NhcHRpb25BcHBl
YXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJsZSgpOworfQorCitDb2xvciBSZW5kZXJUaGVt
ZU1hYzo6Y2FwdGlvbnNXaW5kb3dDb2xvcigpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENHQ29s
b3JSZWY+IGNvbG9yKEFkb3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3Io
KSk7CisgICAgQ29sb3Igd2luZG93Q29sb3IoY29sb3IuZ2V0KCkpOworICAgIGlmICghd2luZG93
Q29sb3IuaXNWYWxpZCgpKQorICAgICAgICB3aW5kb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVu
dDsKKyAgICAKKyAgICBDR0Zsb2F0IG9wYWNpdHk7CisgICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFu
Y2VHZXRXaW5kb3dPcGFjaXR5KCZvcGFjaXR5KSkKKyAgICAgICAgcmV0dXJuIENvbG9yKHdpbmRv
d0NvbG9yLnJlZCgpLCB3aW5kb3dDb2xvci5ncmVlbigpLCB3aW5kb3dDb2xvci5ibHVlKCksIG9w
YWNpdHkgKiAyNTUpOworICAgIAorICAgIGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBDb2xv
cigpOworCisgICAgcmV0dXJuIHdpbmRvd0NvbG9yOworfQorCitDb2xvciBSZW5kZXJUaGVtZU1h
Yzo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIC8vIFRoaXMgZGVmYXVs
dCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlhQ29u
dHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcworICAgIC8v
IGFuZCB3ZWJraXQtbWVkaWEtdGV4dC10cmFjay1mdXR1cmUtbm9kZXMuCisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvciwgKENvbG9yKDAsIDAsIDAs
IDAuOCAqIDI1NSkpKTsKKworICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihBZG9wdENG
LCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvcigpKTsKKyAgICBDb2xvciBi
YWNrZ3JvdW5kQ29sb3IoY29sb3IuZ2V0KCkpOworICAgIGlmICghYmFja2dyb3VuZENvbG9yLmlz
VmFsaWQoKSkgeworICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBkZWZhdWx0QmFja2dyb3VuZENv
bG9yOworICAgIH0KKworICAgIENHRmxvYXQgb3BhY2l0eTsKKyAgICBpZiAod2tDYXB0aW9uQXBw
ZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5KCZvcGFjaXR5KSkKKyAgICAgICAgcmV0dXJuIENv
bG9yKGJhY2tncm91bmRDb2xvci5yZWQoKSwgYmFja2dyb3VuZENvbG9yLmdyZWVuKCksIGJhY2tn
cm91bmRDb2xvci5ibHVlKCksIG9wYWNpdHkgKiAyNTUpOworCisgICAgaWYgKCFjb2xvcikKKyAg
ICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgCisgICAgcmV0dXJuIGJhY2tncm91bmRDb2xvcjsK
K30KKworQ29sb3IgUmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zVGV4dENvbG9yKCkgY29uc3QKK3sK
KyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgd2tDYXB0aW9uQXBwZWFy
YW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IoKSk7CisgICAgQ29sb3IgdGV4dENvbG9yKGNvbG9yLmdl
dCgpKTsKKyAgICBpZiAoIXRleHRDb2xvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgLy8gVGhpcyBk
ZWZhdWx0IHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4gbWVk
aWFDb250cm9scy5jc3MgZm9yIC13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIuCisg
ICAgICAgIHRleHRDb2xvciA9IENvbG9yOjp3aGl0ZTsKKyAgICB9CisgICAgCisgICAgQ0dGbG9h
dCBvcGFjaXR5OworICAgIGlmICh3a0NhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNp
dHkoJm9wYWNpdHkpKQorICAgICAgICByZXR1cm4gQ29sb3IodGV4dENvbG9yLnJlZCgpLCB0ZXh0
Q29sb3IuZ3JlZW4oKSwgdGV4dENvbG9yLmJsdWUoKSwgb3BhY2l0eSAqIDI1NSk7CisgICAgCisg
ICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgCisgICAgcmV0dXJu
IHRleHRDb2xvcjsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zRWRnZUNvbG9y
Rm9yVGV4dENvbG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IpIGNvbnN0Cit7CisgICAgaW50IGRp
c3RhbmNlRnJvbVdoaXRlID0gZGlmZmVyZW5jZVNxdWFyZWQodGV4dENvbG9yLCBDb2xvcjo6d2hp
dGUpOworICAgIGludCBkaXN0YW5jZUZyb21CbGFjayA9IGRpZmZlcmVuY2VTcXVhcmVkKHRleHRD
b2xvciwgQ29sb3I6OmJsYWNrKTsKKyAgICAKKyAgICBpZiAoZGlzdGFuY2VGcm9tV2hpdGUgPCBk
aXN0YW5jZUZyb21CbGFjaykKKyAgICAgICAgcmV0dXJuIHRleHRDb2xvci5kYXJrKCk7CisgICAg
CisgICAgcmV0dXJuIHRleHRDb2xvci5saWdodCgpOworfQorCitTdHJpbmcgUmVuZGVyVGhlbWVN
YWM6OmNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgY29uc3QgQ29sb3ImIHRleHRDb2xvcikgY29uc3QKK3sKKyAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgCisgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlO
YW1lU3RyaW5nKGlkKSk7CisgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICBidWlsZGVyLmFw
cGVuZCh2YWx1ZSk7CisgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcih0ZXh0Q29sb3IpLnNlcmlhbGl6ZWQoKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7Cit9CisgICAgCitTdHJpbmcgUmVuZGVyVGhlbWVNYWM6OmNzc0NvbG9yUHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBpZCwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdAoreworICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKKyAgICAKKyAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVT
dHJpbmcoaWQpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOicpOworICAgIGJ1aWxkZXIuYXBwZW5k
KGNvbG9yLnNlcmlhbGl6ZWQoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKKyAgICAKKyAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitTdHJpbmcgUmVuZGVyVGhlbWVNYWM6
OmNhcHRpb25zVGV4dEVkZ2VTdHlsZSgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZVJhaXNlZCwgKCIgLS4wNWVtIC0uMDVlbSAwICIsIFN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgZWRnZVN0eWxlRGVwcmVzc2VkLCAoIiAuMDVlbSAuMDVlbSAwICIsIFN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IFN0cmluZywgZWRnZVN0eWxlRHJvcFNoYWRvdywgKCIgLjA3NWVtIC4wNzVlbSAwICIsIFN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IFN0cmluZywgZWRnZVN0eWxlVW5pZm9ybSwgKCIgLjAzZW0gIiwgU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworCisgICAgQ29sb3IgY29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcigpOwor
ICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQorICAgICAgICBjb2xvci5zZXROYW1lZENvbG9yKCJi
bGFjayIpOworICAgIGNvbG9yID0gY2FwdGlvbnNFZGdlQ29sb3JGb3JUZXh0Q29sb3IoY29sb3Ip
OworCisgICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZSB0ZXh0RWRnZVN0eWxlID0gc3RhdGljX2Nh
c3Q8d2tDYXB0aW9uVGV4dEVkZ2VTdHlsZT4od2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdl
U3R5bGUoKSk7CisgICAgc3dpdGNoICh0ZXh0RWRnZVN0eWxlKSB7CisgICAgY2FzZSB3a0NhcHRp
b25UZXh0RWRnZVN0eWxlVW5kZWZpbmVkOgorICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHls
ZU5vbmU6CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgY2FzZSB3a0NhcHRp
b25UZXh0RWRnZVN0eWxlUmFpc2VkOgorICAgICAgICByZXR1cm4gY3NzUHJvcGVydHlXaXRoVGV4
dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVRleHRTaGFkb3csIGVkZ2VTdHlsZVJhaXNlZCwgY29sb3Ip
OworICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZURlcHJlc3NlZDoKKyAgICAgICAgcmV0
dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBl
ZGdlU3R5bGVEZXByZXNzZWQsIGNvbG9yKTsKKyAgICBjYXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5
bGVEcm9wU2hhZG93OgorICAgICAgICByZXR1cm4gY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xv
cihDU1NQcm9wZXJ0eVRleHRTaGFkb3csIGVkZ2VTdHlsZURyb3BTaGFkb3csIGNvbG9yKTsKKyAg
ICBjYXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVVbmlmb3JtOgorICAgICAgICByZXR1cm4gY3Nz
UHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UsIGVk
Z2VTdHlsZVVuaWZvcm0sIGNvbG9yKTsKKworICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHls
ZU1heDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOworfQorCitTdHJpbmcgUmVuZGVyVGhlbWVNYWM6OmNhcHRpb25z
RGVmYXVsdEZvbnQoKSBjb25zdAoreworICAgIFJldGFpblB0cjxDR0ZvbnRSZWY+IGZvbnQoQWRv
cHRDRiwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250Rm9yU3R5bGUod2tDYXB0aW9uRm9udFN0
eWxlRGVmYXVsdCkpOworICAgIGlmICghZm9udCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5hbWUoQWRvcHRDRiwgQ0dGb250Q29w
eVBvc3RTY3JpcHROYW1lKGZvbnQuZ2V0KCkpKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIAor
ICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eUZvbnRG
YW1pbHkpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiOiBcIiIpOworICAgIGJ1aWxkZXIuYXBwZW5k
KG5hbWUuZ2V0KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJcIjsiKTsKKyAgICAKKyAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitTdHJpbmcgUmVuZGVyVGhlbWVNYWM6OmNhcHRp
b25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGNhcHRp
b25zT3ZlcnJpZGVTdHlsZVNoZWV0OworCisgICAgQ29sb3IgY29sb3IgPSBjYXB0aW9uc0JhY2tn
cm91bmRDb2xvcigpOworICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgY2FwdGlv
bnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86OiIpOworICAgICAgICBjYXB0aW9u
c092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNrQ3VlOjpwYXN0Tm9kZXNTaGFkb3dQ
c2V1ZG9JZCgpKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7
Jyk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChjc3NDb2xvclBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBjb2xvcikpOworICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ30nKTsKKworICAgICAgICBjYXB0aW9uc092
ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CisgICAgICAgIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWU6OmZ1dHVyZU5vZGVzU2hhZG93UHNl
dWRvSWQoKSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgneycp
OworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgY29sb3IpKTsKKyAgICAgICAgY2FwdGlv
bnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7CisgICAgfQorCisgICAgY29sb3IgPSBj
YXB0aW9uc1dpbmRvd0NvbG9yKCk7CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAgICAg
ICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CisgICAgICAg
IGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWVCb3g6OnRleHRU
cmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC5hcHBlbmQoJ3snKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQu
YXBwZW5kKGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGNvbG9y
KSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScpOworICAg
IH0KKworICAgIGNvbG9yID0gY2FwdGlvbnNUZXh0Q29sb3IoKTsKKyAgICBTdHJpbmcgZWRnZVN0
eWxlID0gY2FwdGlvbnNUZXh0RWRnZVN0eWxlKCk7CisgICAgU3RyaW5nIGZvbnROYW1lID0gY2Fw
dGlvbnNEZWZhdWx0Rm9udCgpOworICAgIGlmIChjb2xvci5pc1ZhbGlkKCkgfHwgIWVkZ2VTdHls
ZS5pc0VtcHR5KCkgfHwgIWZvbnROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBjYXB0aW9uc092
ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CisgICAgICAgIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWVCb3g6OnRleHRUcmFja0N1ZUJveFNo
YWRvd1BzZXVkb0lkKCkpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBl
bmQoJ3snKTsKKworICAgICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQorICAgICAgICAgICAgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVy
dHlDb2xvciwgY29sb3IpKTsKKyAgICAgICAgaWYgKCFlZGdlU3R5bGUuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGVkZ2VTdHlsZSk7Cisg
ICAgICAgIGlmICghZm9udE5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgY2FwdGlvbnNPdmVy
cmlkZVN0eWxlU2hlZXQuYXBwZW5kKGZvbnROYW1lKTsKKworICAgICAgICBjYXB0aW9uc092ZXJy
aWRlU3R5bGVTaGVldC5hcHBlbmQoJ30nKTsKKyAgICB9CisKKyAgICByZXR1cm4gY2FwdGlvbnNP
dmVycmlkZVN0eWxlU2hlZXQudG9TdHJpbmcoKTsKK30KKworZmxvYXQgUmVuZGVyVGhlbWVNYWM6
OmNhcHRpb25Gb250U2l6ZVNjYWxlKCkgY29uc3QKK3sKKyAgICBDR0Zsb2F0IGNoYXJhY3RlclNj
YWxlID0gUmVuZGVyVGhlbWU6OmNhcHRpb25Gb250U2l6ZVNjYWxlKCk7CisgICAgQ0dGbG9hdCBz
Y2FsZUFkanVzdG1lbnQ7CisgICAgCisgICAgaWYgKCF3a0NhcHRpb25BcHBlYXJhbmNlR2V0UmVs
YXRpdmVDaGFyYWN0ZXJTaXplKCZzY2FsZUFkanVzdG1lbnQpKQorICAgICAgICByZXR1cm4gY2hh
cmFjdGVyU2NhbGU7CisgICAgCisgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc2Nh
bGVBZGp1c3RtZW50ICogY2hhcmFjdGVyU2NhbGUpOworfQorCit2b2lkIFJlbmRlclRoZW1lTWFj
OjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkKK3sKKyAgICBmb3IgKEhhc2hTZXQ8Q2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKj46Oml0ZXJhdG9yIGkgPSBtX2NhcHRpb25QcmVm
ZXJlbmNlQ2hhbmdlTGlzdGVuZXJzLmJlZ2luKCk7IGkgIT0gbV9jYXB0aW9uUHJlZmVyZW5jZUNo
YW5nZUxpc3RlbmVycy5lbmQoKTsgKytpKQorICAgICAgICAoKmkpLT5jYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVNYWM6OnJlZ2lzdGVyRm9yQ2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlz
dGVuZXIqIGxpc3RlbmVyKQoreworICAgIGlmICghd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRp
bmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYg
KCFtX2xpc3RlbmluZ0ZvckNhcHRpb25QcmVmZXJlbmNlTm90aWZpY2F0aW9ucykgeworICAgICAg
ICBtX2xpc3RlbmluZ0ZvckNhcHRpb25QcmVmZXJlbmNlTm90aWZpY2F0aW9ucyA9IHRydWU7Cisg
ICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIgKENGTm90aWZpY2F0aW9uQ2Vu
dGVyR2V0TG9jYWxDZW50ZXIoKSwgdGhpcywgdXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRO
b3RpZmljYXRpb25DYWxsYmFjaywgd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdl
ZE5vdGlmaWNhdGlvbigpLCBOVUxMLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckNv
YWxlc2NlKTsKKyAgICB9CisgICAgCisgICAgbV9jYXB0aW9uUHJlZmVyZW5jZUNoYW5nZUxpc3Rl
bmVycy5hZGQobGlzdGVuZXIpOworfQorICAgIAordm9pZCBSZW5kZXJUaGVtZU1hYzo6dW5yZWdp
c3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVu
Y2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikKK3sKKyAgICAgaWYgKHdrQ2FwdGlvbkFwcGVh
cmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKSkKKyAgICAgICAgbV9jYXB0aW9u
UHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOworfQorI2VuZGlmIC8v
IEVOQUJMRShWSURFT19UUkFDSykKKwogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKIAogYm9vbCBS
ZW5kZXJUaGVtZU1hYzo6c2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3VzZWQoKSBjb25zdApJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5OTA2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMjggIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgcG9ydHMgdG8g
b3ZlcnJpZGUgdGV4dCB0cmFjayByZW5kZXJpbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3ODAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMjA0NDk2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKTogSW5pdGlhbGl6ZSBuZXcg
V0tTSSBmdW5jdGlvbiBwb2ludGVycy4KKwogMjAxMi0wOS0yOCAgTWFyaW8gU2FuY2hleiBQcmFk
YSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dLMl1bR1RLXSBJbXBsZW1lbnQg
bmV3IEZhdmljb25zIEFQSQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bQkocmV2aXNpb24gMTI5OTA2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODYs
NSArMTg2LDE3IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAg
ICAgSU5JVChOU1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSk7CiAjZW5kaWYKIAorICAgICAg
ICBJTklUKENhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzKTsKKyAgICAgICAgSU5J
VChDYXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0aW9uc1doZW5BdmFpbGFibGUpOworICAgICAgICBJ
TklUKENhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcik7CisgICAgICAgIElOSVQo
Q2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgSU5JVChDYXB0
aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcik7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVh
cmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFu
Y2VHZXRCYWNrZ3JvdW5kT3BhY2l0eSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRXaW5kb3dPcGFjaXR5KTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250
Rm9yU3R5bGUpOworICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFy
YWN0ZXJTaXplKTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5
bGUpOworICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90
aWZpY2F0aW9uKTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
OTkwNikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI4IEBACisyMDEyLTA5LTI4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgorCisgICAgICAgIEFsbG93IHBvcnRzIHRvIG92ZXJyaWRlIHRleHQgdHJhY2sgcmVu
ZGVyaW5nIHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzgwMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTIwNDQ5NjQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1h
dGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFk
ZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29y
ZVN5c3RlbUludGVyZmFjZSk6IEluaXRpYWxpemUgbmV3IFdLU0kgZnVuY3Rpb24gcG9pbnRlcnMu
CisKKzIwMTItMDktMjcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIChPT1BTISkuCisgICAgICAgIE5lZWQg
dGhlIGJ1ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBh
cyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlv
bnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUlu
dGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKwogMjAx
Mi0wOS0yNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IEdldCByaWQgb2YgbW9yZSB1bnVzZWQgV0sxIHBsdWctaW4gY29kZQpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5t
bQkocmV2aXNpb24gMTI5OTA2KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNiArMjA1LDE5IEBA
IHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKE5TUmVib3Vu
ZERlbHRhRm9yRWxhc3RpY0RlbHRhKTsKICNlbmRpZgogCisgICAgSU5JVChDYXB0aW9uQXBwZWFy
YW5jZUhhc1VzZXJQcmVmZXJlbmNlcyk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZVNob3dD
YXB0aW9uc1doZW5BdmFpbGFibGUpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9y
ZWdyb3VuZENvbG9yKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRD
b2xvcik7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcik7CisgICAg
SU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KTsKKyAgICBJTklUKENh
cHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkpOworICAgIElOSVQoQ2FwdGlvbkFw
cGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlQ29w
eUZvbnRGb3JTdHlsZSk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hh
cmFjdGVyU2l6ZSk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUp
OworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRp
b24pOworCiAjZW5kaWYKICAgICBkaWRJbml0ID0gdHJ1ZTsKIH0KSW5kZXg6IFdlYktpdExpYnJh
cmllcy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTI5OTE3KQorKysgV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA5LTI4ICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHBvcnRzIHRvIG92ZXJyaWRlIHRleHQg
dHJhY2sgcmVuZGVyaW5nIHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NzgwMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTIwNDQ5NjQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFdL
U0kgaGVhZGVyIHdpdGggU1BJIGZvciBnZXR0aW5nIHRoZSB1c2VyIGNhcHRpb24gYXBwZWFyYW5j
ZSBwcmVmZXJlbmNlcy4KKworICAgICAgICAqIFdlYktpdFN5c3RlbUludGVyZmFjZS5oOgorCiAy
MDEyLTA5LTI4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFsbG93IHBvcnRzIHRvIG92ZXJyaWRlIHRleHQgdHJhY2sgcmVuZGVyaW5nIHN0eWxlCklu
ZGV4OiBXZWJLaXRMaWJyYXJpZXMvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0TGlicmFyaWVzL1dlYktpdFN5c3RlbUludGVyZmFjZS5oCShyZXZpc2lvbiAxMjk5
MDYpCisrKyBXZWJLaXRMaWJyYXJpZXMvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKiAgICAgIAogICAgIFdlYktpdFN5c3RlbUludGVyZmFj
ZS5oCi0gICAgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgUHVibGljIGhlYWRlciBmaWxlLgogKi8KQEAg
LTUwOSw2ICs1MDksNDEgQEAgQ0dGbG9hdCBXS05TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRh
KAogQm9vbGVhbiBXS0pMSXNSdW50aW1lQW5kV2ViQ29tcG9uZW50c0luc3RhbGxlZCh2b2lkKTsK
ICNlbmRpZgogCit0eXBlZGVmIGVudW0geworICAgIFdLQ2FwdGlvbkZvbnRTdHlsZURlZmF1bHQg
PSAwLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZU1vbm9zcGFjZWRXaXRoU2VyaWYsCisgICAgV0tD
YXB0aW9uRm9udFN0eWxlUHJvcG9ydGlvbmFsV2l0aFNlcmlmLAorICAgIFdLQ2FwdGlvbkZvbnRT
dHlsZU1vbm9zcGFjZWRXaXRob3V0U2VyaWYsCisgICAgV0tDYXB0aW9uRm9udFN0eWxlUHJvcG9y
dGlvbmFsV2l0aG91dFNlcmlmLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZUNhc3VhbCwKKyAgICBX
S0NhcHRpb25Gb250U3R5bGVDdXJzaXZlLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZVNtYWxsQ2Fw
aXRhbCwKKyAgICBXS0NhcHRpb25Gb250U3R5bGVNYXgKK30gV0tDYXB0aW9uRm9udFN0eWxlOwor
Cit0eXBlZGVmIGVudW0geworICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVVbmRlZmluZWQgPSAw
LAorICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVOb25lLAorICAgIFdLQ2FwdGlvblRleHRFZGdl
U3R5bGVSYWlzZWQsCisgICAgV0tDYXB0aW9uVGV4dEVkZ2VTdHlsZURlcHJlc3NlZCwKKyAgICBX
S0NhcHRpb25UZXh0RWRnZVN0eWxlVW5pZm9ybSwKKyAgICBXS0NhcHRpb25UZXh0RWRnZVN0eWxl
RHJvcFNoYWRvdywKKyAgICBXS0NhcHRpb25UZXh0RWRnZVN0eWxlTWF4Cit9IFdLQ2FwdGlvblRl
eHRFZGdlU3R5bGU7CisKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNl
cyh2b2lkKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0aW9uc1doZW5BdmFpbGFi
bGUodm9pZCk7CitDR0NvbG9yUmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENv
bG9yKHZvaWQpOworQ0dDb2xvclJlZiBXS0NhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRD
b2xvcih2b2lkKTsKK0NHQ29sb3JSZWYgV0tDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xv
cih2b2lkKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KENH
RmxvYXQqKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5KENH
RmxvYXQqKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkoQ0dGbG9h
dCopOworQ0dGb250UmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxlKGludCBm
b250U3R5bGUpOworYm9vbCBXS0NhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJT
aXplKENHRmxvYXQqKTsKK2ludCBXS0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSh2
b2lkKTsKK0NGU3RyaW5nUmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWRO
b3RpZmljYXRpb24odm9pZCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMjk5MDYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0yOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyB0byBvdmVycmlkZSB0ZXh0
IHRyYWNrIHJlbmRlcmluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDQ0OTY0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEv
dHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQ6IFVwZGF0ZSByZXN1bHRzIGZv
ciBjYXB0aW9uIGNzcyBjaGFuZ2VzLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1y
ZW5kZXJpbmcuaHRtbDogCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0
aW9uczogU2tpcCB0ZXN0cyB0aGF0IG5lZWQgdG8gYmUgcmViYXNlbGluZWQuCisKIDIwMTItMDkt
MjggIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkIENocm9taXVtIGV4cGVjdGF0aW9ucyB1cGRhdGUKSW5kZXg6IExheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxMjk5MDYpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1j
dWUtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBA
QCBSVU4odmlkZW8uaGVpZ2h0ID0gMTQ0MCkKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRl
eHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuZm9udFNpemUgPT0gJzcycHgnKSBPSwogCiBF
WFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykp
LmZvbnRGYW1pbHkgPT0gJ3NhbnMtc2VyaWYnKSBPSwotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5
bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5jb2xvciA9PSAncmdiYSgyNTUsIDI1
NSwgMjU1LCAwKScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNw
bGF5RWxlbWVudCh2aWRlbykpLmNvbG9yID09ICdyZ2IoMjU1LCAyNTUsIDI1NSknKSBPSwogRVhQ
RUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdk
aXNwbGF5JykuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yID09ICdyZ2JhKDAsIDAsIDAsIDAu
Nzk2ODc1KScpLCBPQlNFUlZFRCAncmdiYSgwLCAwLCAwLCAwLjgpJyBGQUlMCiBFTkQgT0YgVEVT
VAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRl
cmluZy5odG1sCShyZXZpc2lvbiAxMjk5MDYpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
cmFjay1jdWUtcmVuZGVyaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAK
ICAgICAgICAgICAgIHRlc3RGb250U2l6ZSgyNTYwLCAxNDQwKTsKIAogICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVv
KSkuZm9udEZhbWlseSIsICJzYW5zLXNlcmlmIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
ImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5jb2xvciIs
ICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdl
dENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5jb2xvciIsICJy
Z2IoMjU1LCAyNTUsIDI1NSkiKTsKICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0
ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5maXJzdENo
aWxkKS5iYWNrZ3JvdW5kQ29sb3IiLCAicmdiYSgwLCAwLCAwLCAwLjc5Njg3NSkiKTsKIAogICAg
ICAgICAgICAgZW5kVGVzdCgpOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
VGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxMjk5MDYpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0zNzE1
LDMgKzM3MTUsOCBAQCBjcmJ1Zy5jb20vMTUyMDA3IHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1CiBj
cmJ1Zy5jb20vMTUyMDA3IHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvc29mdHdhcmVjb21wb3Np
dGluZy9nZW9tZXRyeS9ib3VuZHMtaWdub3Jlcy1oaWRkZW4tZHluYW1pYy1uZWd6aW5kZXguaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogY3JidWcuY29tLzE1MjAwNyBwbGF0Zm9ybS9jaHJvbWl1
bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvZ2VvbWV0cnkvY2xpcHBpbmctZm9yZWdyb3Vu
ZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBjcmJ1Zy5jb20vMTUyMDA3IHBsYXRmb3JtL2No
cm9taXVtL3ZpcnR1YWwvc29mdHdhcmVjb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHkt
aW1hZ2UtbGF5ZXJzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KKworIyBOZWVkIHRvIGJlIHVw
ZGF0ZWQgYWZ0ZXIgd2Via2l0Lm9yZy9iLzk3ODAwCit3ZWJraXQub3JnL2IvODkxNjcgbWVkaWEv
dHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1ob3Jpem9udGFsLmh0bWwgWyBGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi84OTE2NyBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXZlcnRpY2Fs
Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi84OTE2NyBtZWRpYS90cmFjay90cmFjay1j
dWUtcmVuZGVyaW5nLmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167190</attachid>
            <date>2012-10-04 15:40:58 -0700</date>
            <delta_ts>2012-10-05 17:07:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97800-20121004154008.patch</filename>
            <type>text/plain</type>
            <size>67642</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY2NjY0Njk3YTIxODRk
OGJlODEwYTQ1MjExYmMyZDFlODI3NDk3Ni4uNzhiYTU5ODk4MzI3YWFhMzgwODQ4NzUxNGU1Mzc2
ZThmYWY4OTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTEwLTA0ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHBvcnRz
IHRvIG92ZXJyaWRlIHRleHQgdHJhY2sgcmVuZGVyaW5nIHN0eWxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTIwNDQ5NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IG5ldyBXZWJraXRTeXN0ZW1JbnRlcmZh
Y2UgZnVuY3Rpb25zLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogQWRkIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oLgorCisgICAgICAgICog
Y3NzL21lZGlhQ29udHJvbHMuY3NzOiBSZWFycmFuZ2UgdGhlIGNhcHRpb24gQ1NTIHNvIGl0IGlz
IHBvc3NpYmxlIHRvIHN0eWxlIHRoZSBjdWUgd2luZG93LAorICAgICAgICAgICAgYmFja2dyb3Vu
ZCwgYW5kIHRleHQgaW5kZXBlbmRlbnRseS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFF
bGVtZW50KTogSW5pdGlhbGl6ZSBtX2Rpc2FibGVDYXB0aW9ucyB3aXRoIHRoZW1lLT51c2VyUHJl
ZmVyc0NhcHRpb25zKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdHRh
Y2gpOiBSZWdpc3RlciBmb3IgY2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2FsbGJhY2tzLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGV0YWNoKTogVW5yZWdpc3RlciBm
b3IgY2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2FsbGJhY2tzLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlclByZWZlcnNDYXB0aW9ucyk6IFJldHVybiB0aGVtZS0+
dXNlclByZWZlcnNDYXB0aW9ucygpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2luZCk6IENvbnNpZGVyIHVzZXJQcmVmZXJz
Q2FwdGlvbnMoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldENsb3Nl
ZENhcHRpb25zVmlzaWJsZSk6IE1vdmUgdGhlIGNvZGUgdGhhdCBtYXJrcyBhbGwgdHJhY2tzIGFz
CisgICAgICAgICAgICB1bi1jb25maWd1cmVkIHRvIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFj
a3NBc1VuY29uZmlndXJlZCBzbyBpdCBjYW4gYmUgcmV1c2VkLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6IE5ldywgZm9yY2Ug
YSByZWV2YWx1YXRpb24gb2YgYWxsIHRleHQgdHJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVk
KTogTmV3LCBjb2RlIG1vdmVkIGZyb20gCisgICAgICAgICAgICBzZXRDbG9zZWRDYXB0aW9uc1Zp
c2libGUKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDogSW5oZXJpdCBmcm9tIENh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci4KKworICAgICAgICAqIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
KTogTmV3LCBpZiB0aGVtZQorICAgICAgICAgICAgaGFzIGEgY2FwdGlvbnMgc3R5bGUgc2hlZXQg
b3ZlcnJpZGUsIGluamVjdCBpdCBpbnRvIHRoZSBjdXJyZW50IHBhZ2UgZ3JvdXAsIG90aGVyd2lz
ZQorICAgICAgICAgICAgcmVtb3ZlIGluamVjdGVkIHNoZWV0LgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlU2l6ZXMpOiBHZXQg
cmlkIG9mIHVubmVjZXNzYXJ5IG1lbWJlcgorICAgICAgICAgICAgdmFyaWFibGUuIEdldCBjYXB0
aW9uIGZvbnQgc2NhbGUgZnJvbSB0aGVtZSBpbnN0ZWFkIG9mIGhhcmQgY29kaW5nLgorICAgICAg
ICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6CisKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQpOiBO
ZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXBkYXRlVGV4
dFRyYWNrRGlzcGxheSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnQuaDogQWRkIHVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkLCBtaW5vciBjbGVhbnVw
LgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sczo6dXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQpOiBOZXcu
CisKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1ZUJveCk6IFNldCB0aGUgc2hhZG93IHBz
ZXVkbyBpZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3Vl
Qm94U2hhZG93UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1cm4gdGhlIAorICAg
ICAgICAgICAgc2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4gYmUgdXNlZCBlbHNld2hlcmUuCisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OnNoYWRvd1BzZXVkb0lkKTogQ2FsbCB0
ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6cGFzdE5vZGVzU2hhZG93UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1
cm4gdGhlIAorICAgICAgICAgICAgc2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4gYmUgdXNlZCBl
bHNld2hlcmUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmZ1dHVyZU5vZGVzU2hh
ZG93UHNldWRvSWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6dXBk
YXRlRGlzcGxheVRyZWUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oOiBVcGRhdGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tOiBEaXR0
by4KKworICAgICAgICAqIHJlbmRlcmluZy9DYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVu
ZXIuaDogQWRkZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp1c2VyUHJlZmVyc0NhcHRpb25zKTogTmV3LCBkZWZh
dWx0IGRvLW5vdGhpbmcgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OmNhcHRpb25Gb250U2l6ZVNjYWxlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWRDYWxsYmFja3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lOjp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6IERp
dHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6dXNlckNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayk6IE5ldywgcmVjZWl2ZXMg
cHJlZmVyZW5jZSBjaGFuZ2VkIG5vdGlmaWNhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZU1hYzo6UmVuZGVyVGhlbWVNYWMpOiBJbml0aWFsaXplIG1fbGlzdGVuaW5nRm9yQ2Fw
dGlvblByZWZlcmVuY2VOb3RpZmljYXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6On5SZW5kZXJUaGVtZU1hYyk6IFVucmVnaXN0ZXIgZm9yIG5vdGlmaWNhdGlvbnMgaWYg
bmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnVzZXJIYXNDYXB0
aW9uUHJlZmVyZW5jZXMpOiBOZXcsIHBhc3N0aHJvdWdoIHRvIFdLU0kgZnVuY3Rpb24uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6dXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zV2luZG93Q29sb3Ip
OiBSZXR1cm4gQ29sb3Igd2l0aCB1c2VyJ3MgY2FwdGlvbiB3aW5kb3cgY29sb3IgcHJlZmVyZW5j
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uc0JhY2tncm91bmRD
b2xvcik6IFJldHVybiBDb2xvciB3aXRoIHVzZXIncyBjYXB0aW9uIAorICAgICAgICAgICAgYmFj
a2dyb3VuZCBjb2xvciBwcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OmNhcHRpb25zVGV4dENvbG9yKTogUmV0dXJuIENvbG9yIHdpdGggdXNlcidzIGNhcHRpb24g
dGV4dCBjb2xvciBwcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKTogUmV0dXJuIENvbG9yIGZvciB0ZXh0IGVk
Z2UgZWZmZWN0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNzc1Byb3BlcnR5
V2l0aFRleHRFZGdlQ29sb3IpOiBSZXR1cm4gU3RyaW5nIHdpdGggQ1NTIHRvIHNldCBhIHRleHQt
c2hhZG93CisgICAgICAgICAgICBvciB3ZWJraXQtdGV4dC1zdHJva2UgcHJvcGVydHkuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6Y3NzQ29sb3JQcm9wZXJ0eSk6IFJldHVybiBh
IFN0cmluZyB3aXRoIGNzcyB0byBzZXQgYSBwcm9wZXJ0eSAKKyAgICAgICAgICAgIHdpdGggYSBj
b2xvciB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uc1Rl
eHRFZGdlU3R5bGUpOiBSZXR1cm4gYSBTdHJpbmcgd2l0aCBjc3MgdG8gc3R5bGUgY2FwdGlvbiAK
KyAgICAgICAgICAgIHRleHQgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCB0ZXh0IGVkZ2Ugc3R5
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uc0RlZmF1bHRGb250
KTogUmV0dXJuIGEgU3RyaW5nIHdpdGggY3NzIHRvIHN0eWxlIGNhcHRpb24KKyAgICAgICAgICAg
IHRleHQgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCBmb250LgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKTogUmV0dXJuIGEgU3Ry
aW5nIHdpdGggY3NzIHRvIHN0eWxlIGNhcHRpb25zCisgICAgICAgICAgICB3aXRoIHRoZSB1c2Vy
J3MgcHJlZmVycmVkIHN0eWxlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNh
cHRpb25Gb250U2l6ZVNjYWxlKTogUmV0dXJuIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGNhcHRpb24g
Zm9udCBzY2FsZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uUHJl
ZmVyZW5jZXNDaGFuZ2VkKTogTm90aWZ5IGxpc3RlbmVycyBvZiBjYXB0aW9uIHByZWZlcmVuY2Ug
Y2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnJlZ2lzdGVyRm9yQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6IEFkZCBhIGNhcHRpb24gcHJlZmVyZW5j
ZXMgCisgICAgICAgICAgICBjaGFuZ2VzIGxpc3RlbmVyLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJh
Y2tzKTogUmVtb3ZlIGEgY2FwdGlvbiBwcmVmZXJlbmNlcworICAgICAgICAgICAgY2hhbmdlcyBs
aXN0ZW5lci4KKwogMjAxMi0xMC0wNCAgUHJhdmluIEQgIDxwcmF2aW5kLjJrNEBnbWFpbC5jb20+
CiAKICAgICAgICAgTGF5b3V0IGJyb2tlbiBhZnRlciBjbG9uaW5nIGFuZCByZS1pbnNlcnRpbmcg
YSB0YWJsZSB3aXRoIGEgbWlzcGxhY2VkIDxmb3JtPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGI5MjAz
NWMxMmYxMzY4ZTJiMjY0ODAwOWM1NmFkYzQ1N2RjZGU2NmEuLjI3NmEzYzBkYTFmMmVkMjE0Njdh
MGRmODcyY2IwNGMxNWIyZTk3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAor
MjAxMi0xMC0wNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBbGxvdyBwb3J0cyB0byBvdmVycmlkZSB0ZXh0IHRyYWNrIHJlbmRlcmluZyBzdHlsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDQ0OTY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNo
YW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9u
IGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UpOiBJbml0aWFsaXplIG5ldyBXS1NJIGZ1bmN0aW9uIHBvaW50ZXJzLgorCisyMDEyLTA5LTI3
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE5lZWQg
YSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChP
T1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJh
dGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06Cisg
ICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTItMTAtMDMgIEJlbmph
bWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gU3VwcG9y
dCBhbGwgYXR0cmlidXRlcyBvZiBHZW9sb2NhdGlvblBvc2l0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDE2
OTk1MzljZmM5ZDVkMzcxOWRlMjYxMjM2YjQ2ZjczMjNmYzVlZC4uYmFjZmVlZWNlYTAzYmIzZTc1
M2JiOTdhNzllMmY3MDU4YzUyZTBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEy
LTEwLTA0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEFsbG93IHBvcnRzIHRvIG92ZXJyaWRlIHRleHQgdHJhY2sgcmVuZGVyaW5nIHN0eWxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTIwNDQ5NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6
IEluaXRpYWxpemUgbmV3IFdLU0kgZnVuY3Rpb24gcG9pbnRlcnMuCisKIDIwMTItMTAtMDMgIEJl
bmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gU3Vw
cG9ydCBhbGwgYXR0cmlidXRlcyBvZiBHZW9sb2NhdGlvblBvc2l0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IDdjNTFjOTc2ZjA5ZTU3MzY3NTdjZjViNGU5NzEzYmZkYTQ0ZWZjZjguLmE5MTE5
OWIxMmZmNzQyZmEwNjkyN2VkY2ZlYTcxYTAwMzk0YjM1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC0yNTgyLDMgKzI1ODIsMTggQEAgX19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIxNnNob3dBbHRlcm5hdGl2ZXNFUDZOU1ZpZXdSS05TXzlGbG9hdFIKIF9fWk43V2Vi
Q29yZTI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4TlNUZXh0QWx0ZXJuYXRpdmVzOF9O
U1JhbmdlCiBfX1pON1dlYkNvcmUzMmNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzRVAx
OE5TQXR0cmlidXRlZFN0cmluZ1JOM1dURjZWZWN0b3JJTlNfMjRUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2VFTG0wRUVFCiAjZW5kaWYKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKK193a0NhcHRp
b25BcHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzCitfd2tDYXB0aW9uQXBwZWFyYW5jZVNob3dD
YXB0aW9uc1doZW5BdmFpbGFibGUKK193a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRD
b2xvcgorX3drQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yCitfd2tDYXB0aW9u
QXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcgorX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3Jv
dW5kT3BhY2l0eQorX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eQorX3dr
Q2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5Citfd2tDYXB0aW9uQXBwZWFyYW5jZUNv
cHlGb250Rm9yU3R5bGUKK193a0NhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJT
aXplCitfd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUKK193a0NhcHRpb25BcHBl
YXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODlmM2Fk
OTlmNjQyNmY4YWIzYjcxZjcyN2RmODA0ZGQ1ZmMyOTQ4Li5hZTQyMjM4MmJjNTE3YWRjOTllOGVm
MTBkMmVmNDMwMjY2YzMwZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01ODUwLDYgKzU4NTAsNyBAQAogCQlDQUU5RjkxMDE0
NjQ0MUYwMDBDMjQ1QjEgLyogQ1NTVmFyaWFibGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIxIC8qIENT
U1ZhcmlhYmxlVmFsdWUuaCAqLzsgfTsKIAkJQ0QxMjdERUQxNEYzMDk3RDAwRTg0Nzc5IC8qIFdl
YkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QxMjdERUIxNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2Ny
ZWVuV2luZG93Lm1tICovOyB9OwogCQlDRDEyN0RFRTE0RjMwOTg0MDBFODQ3NzkgLyogV2ViQ29y
ZUZ1bGxTY3JlZW5XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldp
bmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUNEMjU2NUJBMTYxRTQ2QTkwMDU1NjM0RCAvKiBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
RUMzOEI4MTYxNTRDMUEwMEU4MTQ2RCAvKiBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVu
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
RDI3RjZFNTE0NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTIxNDU3Njc1ODAw
NzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0QyN0Y2RTcxNDU3NzBE
MzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFD
b250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0QzN0IzOTgxNUMxQjk3MTAwNkRDODk4IC8qIERpYWdu
b3N0aWNMb2dnaW5nS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDM3QjM3NDE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzLmNwcCAqLzsgfTsKQEAgLTcxNDEsNiArNzE0Miw3IEBACiAJCTA3RTExNkIwMTQ4OUM5QTEw
MEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1RleHRUcmFja0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3RTExNzA2MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RleHRUcmFja0N1
ZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RTM4QTBCMTQ4RkNG
MEMwMDZFMUVDQyAvKiBKU1RleHRUcmFja0N1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1RleHRUcmFja0N1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwN0VDMzhCODE2MTU0QzFBMDBFODE0NkQgLyogQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdl
ZExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
ODA2RTU3OTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODBFNDkyMTEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5l
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RleHRMYXlvdXRF
bmdpbmVCYXNlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MEU0OTIy
MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTI4Nyw2ICsyMTI4OSw3IEBACiAJCQkJ
QkNFNzg5ODUxMTIwRTdBNjAwNjBFQ0U1IC8qIEJpZGlSdW4uaCAqLywKIAkJCQlCQ0VBNDgxNTA5
N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuY3BwICovLAogCQkJCUJDRUE0ODE2MDk3RDkz
MDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5oICovLAorCQkJCTA3RUMzOEI4MTYxNTRDMUEwMEU4
MTQ2RCAvKiBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIuaCAqLywKIAkJCQlCQ0RE
NDU0RDEyMzZDOTVDMDA5QTc5ODUgLyogQ29sdW1uSW5mby5oICovLAogCQkJCTkzOTJGMTRGMEFE
MTg2MjMwMDY5MUJENCAvKiBDb3VudGVyTm9kZS5jcHAgKi8sCiAJCQkJOTM5MkYxNEIwQUQxODYx
QjAwNjkxQkQ0IC8qIENvdW50ZXJOb2RlLmggKi8sCkBAIC0yNTUxNiw2ICsyNTUxOSw3IEBACiAJ
CQkJOTMxQ0JEMEQxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlTm9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTMxQ0JEMEYxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMxQ0JEMTExNjFBNDRFOTAwRTRD
ODc0IC8qIFNjcm9sbGluZ1N0YXRlVHJlZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QyNTY1QkEx
NjFFNDZBOTAwNTU2MzREIC8qIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9s
cy5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9scy5jc3MKaW5kZXggODFiMGUx
NmI5MDVmYzQ1NGNiYTA2ODIxZWVkNjBjNDVkMTIzYTJiZS4uNmRmMDM0MDJkM2E0YzllNzhhYmY4
Zjc3ZWM0YWIxM2JmYmJmODRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21lZGlh
Q29udHJvbHMuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzLmNzcwpA
QCAtMjE2LDcgKzIxNiw3IEBAIHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFp
bmVyIHsKICAgICBmb250LXNpemU6IDIycHg7CiAgICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7
CiAgICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUs
IDApOworICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOwogCiAgICAgbGV0dGVyLXNw
YWNpbmc6IG5vcm1hbDsKICAgICB3b3JkLXNwYWNpbmc6IG5vcm1hbDsKQEAgLTIzNCw4ICsyMzQs
NiBAQCB2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXBhc3Qtbm9kZXMgewogCiAgICAg
YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpOwogICAgIHBhZGRpbmc6IDJweCAy
cHg7Ci0KLSAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiB9CiAKIHZpZGVvOjotd2Via2l0LW1l
ZGlhLXRleHQtdHJhY2stZnV0dXJlLW5vZGVzIHsKQEAgLTI0NiwxMSArMjQ0LDEwIEBAIHZpZGVv
Ojotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZnV0dXJlLW5vZGVzIHsKIAogICAgIG1hcmdpbi1s
ZWZ0OiAtMnB4OwogICAgIHBhZGRpbmc6IDJweCAycHggMnB4IDBweDsKLQotICAgIHdoaXRlLXNw
YWNlOiBwcmUtd3JhcDsKIH0KIAogdmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNw
bGF5IHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUs
IDI1NSwgMSk7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB3aGl0ZS1zcGFjZTogcHJlLXdy
YXA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA0NzE2
MTZhMDA2MGFjODIyOWI3YmE2MzA2MzUwZWM4NThjYTYwMGNkLi4wMjViYjdlNGU1ZTFkNDQzY2Vi
NjFlNzVmYjg1MDExNjAyZDVhMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisj
aW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCkBAIC0yODEs
NiArMjgyLDE0IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAKICAgICBzZXRIYXNDdXN0b21D
YWxsYmFja3MoKTsKICAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVudCk7
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkpIHsK
KyAgICAgICAgUmVuZGVyVGhlbWUqIHRoZW1lID0gZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKTsK
KyAgICAgICAgaWYgKHRoZW1lLT51c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkpCisgICAgICAg
ICAgICBtX2Rpc2FibGVDYXB0aW9ucyA9ICF0aGVtZS0+dXNlclByZWZlcnNDYXB0aW9ucygpOwor
ICAgIH0KKyNlbmRpZgogfQogCiBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgp
CkBAIC01NDEsNiArNTUwLDIwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXR0YWNoKCkKICAg
ICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmhpZGVNZWRpYVBsYXllclByb3h5
UGx1Z2luKG1fcHJveHlXaWRnZXQuZ2V0KCkpOwogICAgIH0KICNlbmRpZgorCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgIGRvY3Vt
ZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkQ2FsbGJhY2tzKHRoaXMpOworI2VuZGlmCit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
ZGV0YWNoKCkKK3sKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKGRvY3VtZW50KCkt
PnBhZ2UoKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpLT51bnJlZ2lzdGVy
Rm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKKyNlbmRpZgorICAg
IEhUTUxFbGVtZW50OjpkZXRhY2goKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRS
ZWNhbGNTdHlsZShTdHlsZUNoYW5nZSkKQEAgLTI3ODMsMjggKzI4MDYsMzAgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp3aWxsUmVtb3ZlVHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVt
ZW50KQogICAgICAgICBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbi5yZW1v
dmUoaW5kZXgpOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJJc0ludGVyZXN0ZWRJ
blRoaXNMYW5ndWFnZShjb25zdCBTdHJpbmcmKSBjb25zdAorYm9vbCBIVE1MTWVkaWFFbGVtZW50
Ojp1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogY2hlY2sgdGhl
IHVzZXIncyBsYW5ndWFnZSBwcmVmZXJlbmNlIC0gYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NDEyMQotICAgIHJldHVybiB0cnVlOworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgp
LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBS
ZW5kZXJUaGVtZSogdGhlbWUgPSBwYWdlLT50aGVtZSgpOworICAgIHJldHVybiB0aGVtZS0+dXNl
ckhhc0NhcHRpb25QcmVmZXJlbmNlcygpICYmIHRoZW1lLT51c2VyUHJlZmVyc0NhcHRpb25zKCk7
CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNr
S2luZChTdHJpbmcga2luZCkgY29uc3QKIHsKLSAgICAvLyBJZiAuLi4gdGhlIHVzZXIgaGFzIGlu
ZGljYXRlZCBhbiBpbnRlcmVzdCBpbiBoYXZpbmcgYSB0cmFjayB3aXRoIHRoaXMgdGV4dCB0cmFj
ayBraW5kLCB0ZXh0IHRyYWNrIGxhbmd1YWdlLCAuLi4gCiAgICAgaWYgKG1fZGlzYWJsZUNhcHRp
b25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBk
b2N1bWVudCgpLT5zZXR0aW5ncygpOwotICAgIGlmICghc2V0dGluZ3MpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnNPclN1YnRpdGxlcyA9IG1fY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlIHx8IHVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKIAogICAgIGlmIChr
aW5kID09IFRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCgpKQotICAgICAgICByZXR1cm4gc2V0
dGluZ3MtPnNob3VsZERpc3BsYXlTdWJ0aXRsZXMoKSB8fCBtX2Nsb3NlZENhcHRpb25zVmlzaWJs
ZTsKKyAgICAgICAgcmV0dXJuIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVN1
YnRpdGxlcygpKSB8fCB1c2VyUHJlZmVyc0NhcHRpb25zT3JTdWJ0aXRsZXM7CiAgICAgaWYgKGtp
bmQgPT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAgcmV0dXJuIHNldHRp
bmdzLT5zaG91bGREaXNwbGF5Q2FwdGlvbnMoKSB8fCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsK
KyAgICAgICAgcmV0dXJuIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+c2hvdWxkRGlzcGxheUNhcHRp
b25zKCkpIHx8IHVzZXJQcmVmZXJzQ2FwdGlvbnNPclN1YnRpdGxlczsKICAgICBpZiAoa2luZCA9
PSBUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAgcmV0dXJuIHNldHRp
bmdzLT5zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygpIHx8IG1fY2xvc2VkQ2FwdGlvbnNW
aXNpYmxlOworICAgICAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnNob3VsZERpc3Bs
YXlUZXh0RGVzY3JpcHRpb25zKCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0zOTY5LDIy
ICszOTk0LDEyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNp
YmxlKGJvb2wgY2xvc2VkQ2FwdGlvblZpc2libGUpCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQog
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
KSB7CiAgICAgICAgIG1fZGlzYWJsZUNhcHRpb25zID0gIW1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxl
OwotICAgICAgICAKLSAgICAgICAgLy8gTWFyayBhbGwgdHJhY2sgZWxlbWVudHMgYXMgbm90ICJj
b25maWd1cmVkIiBzbyB0aGF0IGNvbmZpZ3VyZVRleHRUcmFja3MoKQotICAgICAgICAvLyB3aWxs
IHJlY29uc2lkZXIgd2hpY2ggdHJhY2tzIHRvIGRpc3BsYXkgaW4gbGlnaHQgb2YgbmV3IHVzZXIg
cHJlZmVyZW5jZXMKLSAgICAgICAgLy8gKGUuZy4gZGVmYXVsdCB0cmFja3Mgc2hvdWxkIG5vdCBi
ZSBkaXNwbGF5ZWQgaWYgdGhlIHVzZXIgaGFzIHR1cm5lZCBvZmYKLSAgICAgICAgLy8gY2FwdGlv
bnMgYW5kIG5vbi1kZWZhdWx0IHRyYWNrcyBzaG91bGQgYmUgZGlzcGxheWVkIGJhc2VkIG9uIGxh
bmd1YWdlCi0gICAgICAgIC8vIHByZWZlcmVuY2VzIGlmIHRoZSB1c2VyIGhhcyB0dXJuZWQgY2Fw
dGlvbnMgb24pLgotICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7
IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICBpZiAoIW5vZGUtPmhh
c1RhZ05hbWUodHJhY2tUYWcpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFRyYWNr
RWxlbWVudCo+KG5vZGUpOwotICAgICAgICAgICAgaWYgKHRyYWNrRWxlbWVudC0+a2luZCgpID09
IFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkKLSAgICAgICAgICAgICAgICB8fCB0cmFja0Vs
ZW1lbnQtPmtpbmQoKSA9PSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSkKLSAgICAgICAg
ICAgICAgICB0cmFja0VsZW1lbnQtPnNldEhhc0JlZW5Db25maWd1cmVkKGZhbHNlKTsKLSAgICAg
ICAgfQogCisgICAgICAgIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJl
ZCgpOwogICAgICAgICBjb25maWd1cmVUZXh0VHJhY2tzKCk7CisKKyAgICAgICAgaWYgKCFtX2Rp
c2FibGVDYXB0aW9ucyAmJiAoaGFzTWVkaWFDb250cm9scygpIHx8IGNyZWF0ZU1lZGlhQ29udHJv
bHMoKSkpCisgICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnVzZXJDYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkKCk7CiAgICAgfQogI2Vsc2UKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQpA
QCAtNDE3Miw2ICs0MTg3LDQzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQ2xvc2Vk
Q2FwdGlvbnNDb250cm9scygpCiAgICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnVwZGF0ZVRl
eHRUcmFja0Rpc3BsYXkoKTsKICAgICB9CiB9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpCit7CisgICAgaWYgKCFpc1ZpZGVvKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJl
ZCgpOworICAgIAorICAgIGlmICghaGFzTWVkaWFDb250cm9scygpICYmICFjcmVhdGVNZWRpYUNv
bnRyb2xzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtZWRpYUNvbnRyb2xzKCktPnVzZXJDYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWFy
a0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKCkKK3sKKyAgICAvLyBNYXJr
IGFsbCB0cmFjayBlbGVtZW50cyBhcyBub3QgImNvbmZpZ3VyZWQiIHNvIHRoYXQgY29uZmlndXJl
VGV4dFRyYWNrcygpCisgICAgLy8gd2lsbCByZWNvbnNpZGVyIHdoaWNoIHRyYWNrcyB0byBkaXNw
bGF5IGluIGxpZ2h0IG9mIG5ldyB1c2VyIHByZWZlcmVuY2VzCisgICAgLy8gKGUuZy4gZGVmYXVs
dCB0cmFja3Mgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWQgaWYgdGhlIHVzZXIgaGFzIHR1cm5lZCBv
ZmYKKyAgICAvLyBjYXB0aW9ucyBhbmQgbm9uLWRlZmF1bHQgdHJhY2tzIHNob3VsZCBiZSBkaXNw
bGF5ZWQgYmFzZWQgb24gbGFuZ3VhZ2UKKyAgICAvLyBwcmVmZXJlbmNlcyBpZiB0aGUgdXNlciBo
YXMgdHVybmVkIGNhcHRpb25zIG9uKS4KKyAgICBmb3IgKFJlZlB0cjxOb2RlPiBub2RlID0gZmly
c3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBp
ZiAoIW5vZGUtPmhhc1RhZ05hbWUodHJhY2tUYWcpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIAorICAgICAgICBIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxIVE1MVHJhY2tFbGVtZW50Kj4obm9kZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxUZXh0
VHJhY2s+IHRleHRUcmFjayA9IHRyYWNrRWxlbWVudC0+dHJhY2soKTsKKyAgICAgICAgaWYgKCF0
ZXh0VHJhY2spCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIFN0cmlu
ZyBraW5kID0gdGV4dFRyYWNrLT5raW5kKCk7CisKKyAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRy
YWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkgfHwga2luZCA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5
d29yZCgpKQorICAgICAgICAgICAgdHJhY2tFbGVtZW50LT5zZXRIYXNCZWVuQ29uZmlndXJlZChm
YWxzZSk7CisgICAgfQorICAgIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKK30KKwogI2VuZGlmCiAK
IHZvaWQqIEhUTUxNZWRpYUVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggODIxZTIyODVi
NDFjZGNlYjA1NjM3Y2RjYjUwMTg1ODk4ZTViZDlkMC4uN2U4NGI3NWQ5MjlmMTcyZTdjYzY4MTAy
OGUyZDZkZDMyY2I0ZmJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
QEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKICNpbmNsdWRlICJNZWRp
YUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2Uu
aCIKQEAgLTc4LDcgKzc5LDcgQEAgdHlwZWRlZiBWZWN0b3I8Q3VlSW50ZXJ2YWxUcmVlOjpJbnRl
cnZhbFR5cGU+IEN1ZUxpc3Q7CiAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQgOiBwdWJsaWMgSFRN
TEVsZW1lbnQsIHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxheWVyU3Vw
cG9ydHNUeXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZQogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKLSAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CisgICAgLCBwcml2
YXRlIFRleHRUcmFja0NsaWVudCwgcHJpdmF0ZSBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlz
dGVuZXIKICNlbmRpZgogewogcHVibGljOgpAQCAtMjQwLDYgKzI0MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKICAgICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFj
a0dyb3VwKGNvbnN0IFRyYWNrR3JvdXAmKSBjb25zdDsKIAorICAgIGJvb2wgdXNlclByZWZlcnND
YXB0aW9ucygpIGNvbnN0OwogICAgIGJvb2wgdXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2lu
ZChTdHJpbmcpIGNvbnN0OwogICAgIGJvb2wgdGV4dFRyYWNrc0FyZVJlYWR5KCkgY29uc3Q7CiAg
ICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KCk7CkBAIC0zMjUsNyArMzI3LDggQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7
CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YXR0YWNoKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpIE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1
bWVudCkgT1ZFUlJJREU7CiAKQEAgLTQ3NCwxMiArNDc3LDE0IEBAIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAgICAgdm9pZCB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGZs
b2F0KTsKLSAgICBib29sIHVzZXJJc0ludGVyZXN0ZWRJblRoaXNMYW5ndWFnZShjb25zdCBTdHJp
bmcmKSBjb25zdDsKICAgICBIVE1MVHJhY2tFbGVtZW50KiBzaG93aW5nVHJhY2tXaXRoU2FtZUtp
bmQoSFRNTFRyYWNrRWxlbWVudCopIGNvbnN0OwogCiAgICAgYm9vbCBpZ25vcmVUcmFja0Rpc3Bs
YXlVcGRhdGVSZXF1ZXN0cygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlVHJhY2tEaXNwbGF5VXBk
YXRlID4gMDsgfQogICAgIHZvaWQgYmVnaW5JZ25vcmluZ1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVl
c3RzKCkgeyArK21faWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlOyB9CiAgICAgdm9pZCBlbmRJZ25v
cmluZ1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkgeyBBU1NFUlQobV9pZ25vcmVUcmFja0Rp
c3BsYXlVcGRhdGUpOyAtLW1faWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlOyB9CisKKyAgICB2b2lk
IG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCgpOworICAgIHZpcnR1
YWwgdm9pZCBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkgT1ZFUlJJREU7CiAjZW5kaWYKIAog
ICAgIC8vIFRoZXNlICJpbnRlcm5hbCIgZnVuY3Rpb25zIGRvIG5vdCBjaGVjayB1c2VyIGdlc3R1
cmUgcmVzdHJpY3Rpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IDg4MWMyZGViNWNjYTJlN2E5YjhmMTRmNGRmMGM1
YjU2NWExYWNlOWIuLmM1MTkzMWJhMjE3NzBjNjA4ODE2NWU5OTljMTU5MjJhN2Q1NzNhMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAKQEAgLTQ1LDkgKzQ1LDExIEBACiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgog
I2luY2x1ZGUgIkxheW91dFJlcGFpbnRlci5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3Mu
aCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xSb290RWxlbWVudC5oIgogI2luY2x1ZGUgIk1lZGlh
Q29udHJvbHMuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgor
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlck1lZGlh
LmgiCkBAIC0xMzEwLDYgKzEzMTIsMzIgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnMKICAgICBy
ZXR1cm4gaWQ7CiB9CiAKK3ZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVu
dDo6dXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoS1VSTCwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAidXNl
ci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMi
KSk7CisKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFn
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyVGhlbWUqIHRoZW1lID0gcGFnZS0+dGhl
bWUoKTsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlh
RWxlbWVudCh0aGlzKTsKKworICAgIG1lZGlhRWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygp
OworCisgICAgcGFnZS0+Z3JvdXAoKS5yZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZChtYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMKTsKKworICAgIGlmICgh
bWVkaWFFbGVtZW50LT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKSAmJiAhdGhlbWUtPnVzZXJIYXND
YXB0aW9uUHJlZmVyZW5jZXMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIGNhcHRp
b25zT3ZlcnJpZGVTdHlsZVNoZWV0ID0gdGhlbWUtPmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRl
KCk7CisgICAgaWYgKGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LCBjYXB0
aW9uc1N0eWxlU2hlZXRVUkwsIGFkb3B0UHRyKG5ldyBWZWN0b3I8U3RyaW5nPiksIGFkb3B0UHRy
KG5ldyBWZWN0b3I8U3RyaW5nPiksIAorICAgICAgICBJbmplY3RJbkFsbEZyYW1lcywgVXNlclN0
eWxlQXV0aG9yTGV2ZWwsIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOworfQorCiB2b2lkIE1l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogewog
ICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50
KHRoaXMpOwpAQCAtMTM3NiwyMiArMTQwNCwxOCBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFj
a0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogICAgIGhhc0NoaWxkTm9kZXMoKSA/
IHNob3coKSA6IGhpZGUoKTsKIH0KIAotc3RhdGljIGNvbnN0IGZsb2F0IG1pbWltdW1Gb250U2l6
ZSA9IDE2Owotc3RhdGljIGNvbnN0IGZsb2F0IHZpZGVvSGVpZ2h0Rm9udFNpemVQZXJjZW50YWdl
ID0gLjA1Owotc3RhdGljIGNvbnN0IGZsb2F0IHRyYWNrQm90dG9tTXVsdGlwbGllciA9IC45Owot
CiB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVz
KCkKIHsKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlh
RWxlbWVudCh0aGlzKTsKICAgICBpZiAoIW1lZGlhRWxlbWVudCB8fCAhbWVkaWFFbGVtZW50LT5y
ZW5kZXJlcigpIHx8ICFtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCktPmlzVmlkZW8oKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCB2aWRlb0JveCA9IHRvUmVuZGVyVmlkZW8obWVkaWFF
bGVtZW50LT5yZW5kZXJlcigpKS0+dmlkZW9Cb3goKTsKLSAgICBpZiAobV92aWRlb0Rpc3BsYXlT
aXplID09IHZpZGVvQm94KQorICAgIGlmICghZG9jdW1lbnQoKS0+cGFnZSgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV92aWRlb0Rpc3BsYXlTaXplID0gdmlkZW9Cb3g7CiAKLSAgICBmbG9hdCBm
b250U2l6ZSA9IG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCkuaGVpZ2h0KCkgKiB2aWRlb0hlaWdo
dEZvbnRTaXplUGVyY2VudGFnZTsKKyAgICBJbnRSZWN0IHZpZGVvQm94ID0gdG9SZW5kZXJWaWRl
byhtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCkpLT52aWRlb0JveCgpOworCisgICAgZmxvYXQgZm9u
dFNpemUgPSB2aWRlb0JveC5zaXplKCkuaGVpZ2h0KCkgKiAoZG9jdW1lbnQoKS0+cGFnZSgpLT50
aGVtZSgpLT5jYXB0aW9uRm9udFNpemVTY2FsZSgpKTsKICAgICBpZiAoZm9udFNpemUgIT0gbV9m
b250U2l6ZSkgewogICAgICAgICBtX2ZvbnRTaXplID0gZm9udFNpemU7CiAgICAgICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgU3RyaW5nOjpudW1iZXIoZm9u
dFNpemUpICsgInB4Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuaAppbmRleCBlZmZkY2VlN2YxYzdmNTI3NWFhYjJjYTFjZmJmOWYwNmNh
NDQ0MTE0Li43YzdjNWRkNTIxOWVjNWI0NjJjMjIzMjk1MmM1NjZmZDVkNWI5ODhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAg
LTUzNyw2ICs1MzcsNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50IDogcHVibGljIE1lZGlhQ29udHJvbEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShE
b2N1bWVudCopOwogCisgICAgdm9pZCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwog
ICAgIHZvaWQgdXBkYXRlRGlzcGxheSgpOwogICAgIHZvaWQgdXBkYXRlU2l6ZXMoKTsKIApAQCAt
NTQ3LDcgKzU0OCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50
VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhVGV4dFRyYWNrRGlzcGxheUNv
bnRhaW5lcjsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9J
ZCgpIGNvbnN0OwogCi0gICAgSW50UmVjdCBtX3ZpZGVvRGlzcGxheVNpemU7CisgICAgdm9pZCB1
cGRhdGVDYXB0aW9uQXBwZWFyYW5jZSgpOworCiAgICAgZmxvYXQgbV9mb250U2l6ZTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RF
bGVtZW50LmNwcAppbmRleCBlZjU0MWJhYTMzYjFlOGJkZjBmMDkzMjJjNWZlMDk3NmIyNzE3Nzg4
Li4wMzY4ZTg3ZmMxNjdhMWZlOTdlZjA2ODE1YTdiZTRlMDUwM2FmN2RmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3Bw
CkBAIC02MzAsNiArNjMwLDEyIEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNyZWF0
ZVRleHRUcmFja0Rpc3BsYXkoKQogICAgIGluc2VydEJlZm9yZSh0ZXh0RGlzcGxheUNvbnRhaW5l
ci5yZWxlYXNlKCksIG1fcGFuZWwsIGVjLCB0cnVlKTsKIH0KIAordm9pZCBNZWRpYUNvbnRyb2xS
b290RWxlbWVudDo6dXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQoreworICAgIGlmICht
X3RleHREaXNwbGF5Q29udGFpbmVyKQorICAgICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT51
c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOworfQorCiB2b2lkIE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50OjpzaG93VGV4dFRyYWNrRGlzcGxheSgpCiB7CiAgICAgaWYgKCFtX3RleHREaXNw
bGF5Q29udGFpbmVyKQpAQCAtNjUwLDcgKzY1Niw2IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnQ6OnVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKQogICAgICAgICBjcmVhdGVUZXh0VHJhY2tE
aXNwbGF5KCk7CiAKICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT51cGRhdGVEaXNwbGF5KCk7
Ci0KIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xSb290RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQuaAppbmRleCBhMGIwOWQ4NzQ1YjdhYzYxYTdkNTk2ZDQxYTIz
ODk2NmI2MWY0YjRiLi45MDEwZTEwNTE1OTc2MDVlYmFjOGVkZGIwYWQxY2IyYWQ4Y2YxNjA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RF
bGVtZW50LmgKQEAgLTEwNSw5ICsxMDUsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogICAgIHZvaWQgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOwotICAgIHZvaWQgc2hv
d1RleHRUcmFja0Rpc3BsYXkoKTsKLSAgICB2b2lkIGhpZGVUZXh0VHJhY2tEaXNwbGF5KCk7Ci0g
ICAgdm9pZCB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHVzZXJD
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNo
b3dUZXh0VHJhY2tEaXNwbGF5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGhpZGVUZXh0
VHJhY2tEaXNwbGF5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHRUcmFj
a0Rpc3BsYXkoKSBPVkVSUklERTsKICNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEhp
ZGVDb250cm9scygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9scy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5o
CmluZGV4IDI4OTA4YTlhMTA3ZTQ1NzAzOTI4NjgzMjAzM2RiYTI4ZDAzN2I2MzYuLjhhOTliYzE4
ZTQ2OGU2YzE3NTliYjIzNDljODA1MDE0MGFhNjYyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgKQEAgLTczLDYgKzczLDcgQEAgY2xhc3MgTWVkaWFDb250
cm9scyA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEhp
ZGVDb250cm9scygpID0gMDsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2aXJ0dWFs
IHZvaWQgdXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKSB7IH07CiAgICAgdmlydHVhbCB2
b2lkIHNob3dUZXh0VHJhY2tEaXNwbGF5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlVGV4
dFRyYWNrRGlzcGxheSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlz
cGxheSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAppbmRleCA2
YWJjYWNjZDg3NjBmYTVlMTQ1YWQwY2E4MWVlYWRiYTA5OGFhN2E1Li4xYjM1ZWZjYWQ4NGU2YzNh
ZjNhZDM5ZDk4N2NjYzQwZDkxNDJhYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwCkBAIC05NCw3ICs5NCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNr
OjpzaG93aW5nS2V5d29yZCgpCiAgICAgcmV0dXJuIGVuZGVkOwogfQogCi1UZXh0VHJhY2s6OlRl
eHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQq
IGNsaWVudCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBT
dHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlIHR5cGUpCitUZXh0VHJhY2s6OlRleHRUcmFj
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBj
b25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlIHR5cGUpCiAgICAgOiBU
cmFja0Jhc2UoY29udGV4dCwgVHJhY2tCYXNlOjpUZXh0VHJhY2spCiAgICAgLCBtX2N1ZXMoMCkK
ICAgICAsIG1fbWVkaWFFbGVtZW50KDApCkBAIC0xMTcsNyArMTE3LDcgQEAgVGV4dFRyYWNrOjp+
VGV4dFRyYWNrKCkKICAgICBjbGVhckNsaWVudCgpOwogfQogCi1ib29sIFRleHRUcmFjazo6aXNW
YWxpZEtpbmRLZXl3b3JkKGNvbnN0IFN0cmluZyYgdmFsdWUpCitib29sIFRleHRUcmFjazo6aXNW
YWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKHZhbHVlLCBzdWJ0aXRsZXNLZXl3b3JkKCkpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBib29sIFRleHRUcmFjazo6aXNWYWxpZEtpbmRL
ZXl3b3JkKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IFRleHRUcmFjazo6c2V0S2luZChjb25zdCBTdHJpbmcmIGtpbmQpCit2b2lkIFRleHRUcmFjazo6
c2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQpCiB7CiAgICAgU3RyaW5nIG9sZEtpbmQg
PSBtX2tpbmQ7CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFRleHRUcmFjazo6c2V0S2luZChj
b25zdCBTdHJpbmcmIGtpbmQpCiAgICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tLaW5kQ2hhbmdl
ZCh0aGlzKTsKIH0KIAotdm9pZCBUZXh0VHJhY2s6OnNldE1vZGUoY29uc3QgU3RyaW5nJiBtb2Rl
KQordm9pZCBUZXh0VHJhY2s6OnNldE1vZGUoY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlKQogewog
ICAgIC8vIE9uIHNldHRpbmcsIGlmIHRoZSBuZXcgdmFsdWUgaXNuJ3QgZXF1YWwgdG8gd2hhdCB0
aGUgYXR0cmlidXRlIHdvdWxkIGN1cnJlbnRseQogICAgIC8vIHJldHVybiwgdGhlIG5ldyB2YWx1
ZSBtdXN0IGJlIHByb2Nlc3NlZCBhcyBmb2xsb3dzIC4uLgpAQCAtMTc0LDcgKzE3NCw3IEBAIHZv
aWQgVGV4dFRyYWNrOjpzZXRNb2RlKGNvbnN0IFN0cmluZyYgbW9kZSkKICAgICAgICAgbV9jbGll
bnQtPnRleHRUcmFja01vZGVDaGFuZ2VkKHRoaXMpOwogfQogCi1TdHJpbmcgVGV4dFRyYWNrOjpt
b2RlKCkgY29uc3QKK0F0b21pY1N0cmluZyBUZXh0VHJhY2s6Om1vZGUoKSBjb25zdAogewogICAg
IC8vIFRoZSB0ZXh0IHRyYWNrICJzaG93aW5nIiBhbmQgInNob3dpbmcgYnkgZGVmYXVsdCIgbW9k
ZXMgcmV0dXJuIHRoZSBzdHJpbmcgInNob3dpbmciLgogICAgIGlmIChtX3Nob3dpbmdCeURlZmF1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAppbmRleCAyYzc5OWVkMDQ3MGY1
OGY2NDNhMmJjNzljN2M2NDE0YzdjMjEyYjZiLi4zYmE0ZDM3YmE5YmZhNDYwMGYwZGQxZWVlMDdj
YmI4MjU4ZTRkMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTU0
LDcgKzU0LDcgQEAgcHVibGljOgogCiBjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29u
c3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1
YWdlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0
cmluZyYgbGFuZ3VhZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRU
cmFjayhjb250ZXh0LCBjbGllbnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwgQWRkVHJhY2spKTsK
ICAgICB9CkBAIC02MywyOCArNjMsMjggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVkaWFFbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpIHsgbV9tZWRpYUVsZW1lbnQgPSBlbGVtZW50
OyB9CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgeyByZXR1cm4gbV9tZWRp
YUVsZW1lbnQ7IH0KIAotICAgIFN0cmluZyBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9
Ci0gICAgdm9pZCBzZXRLaW5kKGNvbnN0IFN0cmluZyYpOworICAgIEF0b21pY1N0cmluZyBraW5k
KCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21p
Y1N0cmluZyYpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VidGl0bGVzS2V5
d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNhcHRpb25zS2V5d29yZCgp
OwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRlc2NyaXB0aW9uc0tleXdvcmQoKTsK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjaGFwdGVyc0tleXdvcmQoKTsKICAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtZXRhZGF0YUtleXdvcmQoKTsKLSAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIGJvb2wg
aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCi0gICAgU3RyaW5nIGxh
YmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIHZvaWQgc2V0TGFiZWwoY29uc3Qg
U3RyaW5nJiBsYWJlbCkgeyBtX2xhYmVsID0gbGFiZWw7IH0KKyAgICBBdG9taWNTdHJpbmcgbGFi
ZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBB
dG9taWNTdHJpbmcmIGxhYmVsKSB7IG1fbGFiZWwgPSBsYWJlbDsgfQogCi0gICAgU3RyaW5nIGxh
bmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQotICAgIHZvaWQgc2V0TGFuZ3Vh
Z2UoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkgeyBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7IH0KKyAg
ICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdlOyB9Cisg
ICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKSB7IG1fbGFu
Z3VhZ2UgPSBsYW5ndWFnZTsgfQogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlz
YWJsZWRLZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaGlkZGVuS2V5
d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNob3dpbmdLZXl3b3JkKCk7
CiAKLSAgICBTdHJpbmcgbW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0TW9kZShjb25zdCBTdHJp
bmcmKTsKKyAgICBBdG9taWNTdHJpbmcgbW9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0TW9kZShj
b25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIGJvb2wgc2hvd2luZ0J5RGVmYXVsdCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2hvd2luZ0J5RGVmYXVsdDsgfQogICAgIHZvaWQgc2V0U2hvd2luZ0J5RGVm
YXVsdChib29sIHNob3dpbmcpIHsgbV9zaG93aW5nQnlEZWZhdWx0ID0gc2hvd2luZzsgfQpAQCAt
MTE2LDE3ICsxMTYsMTcgQEAgcHVibGljOgogICAgIGJvb2wgaXNSZW5kZXJlZCgpOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUZXh0VHJhY2tD
bGllbnQqLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0
cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOworICAgIFRleHRUcmFjayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBraW5k
LCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdl
LCBUZXh0VHJhY2tUeXBlKTsKIAogICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBtX2N1ZXM7
CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogZW5zdXJlVGV4dFRyYWNrQ3VlTGlz
dCgpOwogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50OwotICAgIFN0cmluZyBt
X2tpbmQ7Ci0gICAgU3RyaW5nIG1fbGFiZWw7Ci0gICAgU3RyaW5nIG1fbGFuZ3VhZ2U7Ci0gICAg
U3RyaW5nIG1fbW9kZTsKKyAgICBBdG9taWNTdHJpbmcgbV9raW5kOworICAgIEF0b21pY1N0cmlu
ZyBtX2xhYmVsOworICAgIEF0b21pY1N0cmluZyBtX2xhbmd1YWdlOworICAgIEF0b21pY1N0cmlu
ZyBtX21vZGU7CiAgICAgVGV4dFRyYWNrQ2xpZW50KiBtX2NsaWVudDsKICAgICBUZXh0VHJhY2tU
eXBlIG1fdHJhY2tUeXBlOwogICAgIFJlYWRpbmVzc1N0YXRlIG1fcmVhZGluZXNzU3RhdGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggMmZkNGYxZDRi
Y2QwOWQ1ZTRiZTMzZjc0NmI1ZTJkNmU1ZWJjYWQ0Yy4uYmI3MzQ0NWU1NzM5OTI4N2E4Y2RjMjJk
NTQyZjBmYjRmMDg1YjFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmNwcApAQCAtOTUsNiArOTUsNyBAQCBUZXh0VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1ZUJv
eChEb2N1bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0N1ZSogY3VlKQogICAgIDogSFRNTEVsZW1l
bnQoZGl2VGFnLCBkb2N1bWVudCkKICAgICAsIG1fY3VlKGN1ZSkKIHsKKyAgICBzZXRTaGFkb3dQ
c2V1ZG9JZChzaGFkb3dQc2V1ZG9JZCgpKTsKIH0KIAogVGV4dFRyYWNrQ3VlKiBUZXh0VHJhY2tD
dWVCb3g6OmdldEN1ZSgpIGNvbnN0CkBAIC0xNjcsMTIgKzE2OCwxNyBAQCB2b2lkIFRleHRUcmFj
a0N1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKCkKICAgICB9CiB9CiAKLWNvbnN0IEF0b21pY1N0
cmluZyYgVGV4dFRyYWNrQ3VlQm94OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Citjb25zdCBBdG9t
aWNTdHJpbmcmIFRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93UHNldWRvSWQo
KQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFja0Rp
c3BsYXlCb3hTaGFkb3dQc2V1ZG9JZCwgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxh
eSIpKTsKICAgICByZXR1cm4gdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRvSWQ7CiB9CiAKK2Nv
bnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrQ3VlQm94OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKCk7Cit9CisKIFJl
bmRlck9iamVjdCogVGV4dFRyYWNrQ3VlQm94OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVGV4
dFRyYWNrQ3VlKHRoaXMpOwpAQCAtMTgwLDYgKzE4NiwxOCBAQCBSZW5kZXJPYmplY3QqIFRleHRU
cmFja0N1ZUJveDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSopCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorY29uc3QgQXRvbWljU3Ry
aW5nJiBUZXh0VHJhY2tDdWU6OnBhc3ROb2Rlc1NoYWRvd1BzZXVkb0lkKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VidGl0bGVzLCAoIi13ZWJraXQt
bWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZGVzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJldHVybiBzdWJ0aXRsZXM7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgVGV4dFRyYWNrQ3VlOjpmdXR1cmVOb2Rlc1NoYWRvd1BzZXVkb0lkKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VidGl0bGVzLCAoIi13ZWJraXQt
bWVkaWEtdGV4dC10cmFjay1mdXR1cmUtbm9kZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgcmV0dXJuIHN1YnRpdGxlczsKK30KKwogVGV4dFRyYWNrQ3VlOjpU
ZXh0VHJhY2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgZG91YmxlIHN0YXJ0
LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAgICAgOiBtX3N0YXJ0VGltZShz
dGFydCkKICAgICAsIG1fZW5kVGltZShlbmQpCkBAIC02NTIsOSArNjcwLDYgQEAgdm9pZCBUZXh0
VHJhY2tDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKGZsb2F0IG1vdmllVGltZSkKICAgICAvLyB0aW1l
c3RhbXBzIChwcm9jZXNzaW5nIGluc3RydWN0aW9ucyksIGFsb25nIHdpdGggZGlzcGxheWFibGUg
bm9kZXMuCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHRpbWVzdGFtcFRh
ZywgKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIikpKTsKIAotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFja1Bhc3ROb2Rlc1NoYWRvd1BzZXVkb0lkLCAoIi13
ZWJraXQtbWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZGVzIikpOwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFja0Z1dHVyZU5vZGVzU2hhZG93UHNldWRvSWQs
ICgiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2RlcyIpKTsKLQogICAgIGlmICgh
dHJhY2soKS0+aXNSZW5kZXJlZCgpKQogICAgICAgcmV0dXJuOwogCkBAIC02NjIsMTAgKzY3Nywx
MCBAQCB2b2lkIFRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUoZmxvYXQgbW92aWVUaW1l
KQogCiAgICAgLy8gQ2xlYXIgdGhlIGNvbnRlbnRzIG9mIHRoZSB0d28gc2V0cy4KICAgICBtX2Z1
dHVyZURvY3VtZW50Tm9kZXMtPnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgbV9mdXR1cmVEb2N1bWVu
dE5vZGVzLT5zZXRTaGFkb3dQc2V1ZG9JZCh0cmFja0Z1dHVyZU5vZGVzU2hhZG93UHNldWRvSWQp
OworICAgIG1fZnV0dXJlRG9jdW1lbnROb2Rlcy0+c2V0U2hhZG93UHNldWRvSWQoZnV0dXJlTm9k
ZXNTaGFkb3dQc2V1ZG9JZCgpKTsKIAogICAgIG1fcGFzdERvY3VtZW50Tm9kZXMtPnJlbW92ZUNo
aWxkcmVuKCk7Ci0gICAgbV9wYXN0RG9jdW1lbnROb2Rlcy0+c2V0U2hhZG93UHNldWRvSWQodHJh
Y2tQYXN0Tm9kZXNTaGFkb3dQc2V1ZG9JZCk7CisgICAgbV9wYXN0RG9jdW1lbnROb2Rlcy0+c2V0
U2hhZG93UHNldWRvSWQocGFzdE5vZGVzU2hhZG93UHNldWRvSWQoKSk7CiAKICAgICAvLyBVcGRh
dGUgdGhlIHR3byBzZXRzIGNvbnRhaW5pbmcgcGFzdCBhbmQgZnV0dXJlIFdlYlZUVCBvYmplY3Rz
LgogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiByZWZlcmVuY2VUcmVlID0gZ2V0Q3VlQXNI
VE1MKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCAxMTVh
ODY4MDlmNmY2MDZiMzEyZGE1MGUxYTg4YjgxNDcyMDI1YTFlLi4zZTI5ZDFlNzQyNThmNzMxOGMw
YjcxMWMwOTk4NzAxZDRlZGJmMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwbHlDU1NQcm9w
ZXJ0aWVzKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRv
SWQoKSBjb25zdCBPVkVSUklERTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0
VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpOwogCiBwcml2YXRlOgogICAgIFRleHRUcmFja0N1
ZUJveChEb2N1bWVudCosIFRleHRUcmFja0N1ZSopOwpAQCAtODAsNiArODEsOSBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIH5UZXh0VHJhY2tDdWUoKTsKIAorICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIHBhc3ROb2Rlc1NoYWRvd1BzZXVkb0lkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgZnV0dXJlTm9kZXNTaGFkb3dQc2V1ZG9JZCgpOworCiAgICAgVGV4dFRyYWNr
KiB0cmFjaygpIGNvbnN0OwogICAgIHZvaWQgc2V0VHJhY2soUGFzc1JlZlB0cjxUZXh0VHJhY2s+
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgKaW5kZXggOTQwZTRhNjI1NTQzZjIzNGI5MTFhZTZjNzBkNjA3NTQwZWVkYzFk
ZS4uZjczODFhNjY1YmRmNDA1ZDQ2NTY4YzU2MTg1OGYyOWEzN2NjYmNiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCkBA
IC0zMzAsNiArMzMwLDQwIEBAIGV4dGVybiBDR0Zsb2F0ICgqd2tOU0VsYXN0aWNEZWx0YUZvclJl
Ym91bmREZWx0YSkoQ0dGbG9hdCBkZWx0YSk7CiBleHRlcm4gQ0dGbG9hdCAoKndrTlNSZWJvdW5k
RGVsdGFGb3JFbGFzdGljRGVsdGEpKENHRmxvYXQgZGVsdGEpOwogI2VuZGlmCiAKK3R5cGVkZWYg
ZW51bSB7CisgICAgd2tDYXB0aW9uRm9udFN0eWxlRGVmYXVsdCA9IDAsCisgICAgd2tDYXB0aW9u
Rm9udFN0eWxlTW9ub3NwYWNlZFdpdGhTZXJpZiwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVQcm9w
b3J0aW9uYWxXaXRoU2VyaWYsCisgICAgd2tDYXB0aW9uRm9udFN0eWxlTW9ub3NwYWNlZFdpdGhv
dXRTZXJpZiwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVQcm9wb3J0aW9uYWxXaXRob3V0U2VyaWYs
CisgICAgd2tDYXB0aW9uRm9udFN0eWxlQ2FzdWFsLAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZUN1
cnNpdmUsCisgICAgd2tDYXB0aW9uRm9udFN0eWxlU21hbGxDYXBpdGFsLAorICAgIHdrQ2FwdGlv
bkZvbnRTdHlsZU1heAorfSB3a0NhcHRpb25Gb250U3R5bGU7CisKK3R5cGVkZWYgZW51bSB7Cisg
ICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZVVuZGVmaW5lZCA9IDAsCisgICAgd2tDYXB0aW9uVGV4
dEVkZ2VTdHlsZU5vbmUsCisgICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZVJhaXNlZCwKKyAgICB3
a0NhcHRpb25UZXh0RWRnZVN0eWxlRGVwcmVzc2VkLAorICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5
bGVVbmlmb3JtLAorICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVEcm9wU2hhZG93LAorICAgIHdr
Q2FwdGlvblRleHRFZGdlU3R5bGVNYXgKK30gd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZTsKKworZXh0
ZXJuIGJvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzKSh2b2lkKTsK
K2V4dGVybiBib29sICgqd2tDYXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0aW9uc1doZW5BdmFpbGFi
bGUpKHZvaWQpOworZXh0ZXJuIENHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9y
ZWdyb3VuZENvbG9yKSh2b2lkKTsKK2V4dGVybiBDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJh
bmNlQ29weUJhY2tncm91bmRDb2xvcikodm9pZCk7CitleHRlcm4gQ0dDb2xvclJlZigqd2tDYXB0
aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcikodm9pZCk7CitleHRlcm4gYm9vbCgqd2tDYXB0
aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KShDR0Zsb2F0Kik7CitleHRlcm4gYm9v
bCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5KShDR0Zsb2F0Kik7Citl
eHRlcm4gYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkpKENHRmxvYXQq
KTsKK2V4dGVybiBDR0ZvbnRSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxl
KShpbnQpOworZXh0ZXJuIGJvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJh
Y3RlclNpemUpKENHRmxvYXQqKTsKK2V4dGVybiBpbnQoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRU
ZXh0RWRnZVN0eWxlKSh2b2lkKTsKK2V4dGVybiBDRlN0cmluZ1JlZigqd2tDYXB0aW9uQXBwZWFy
YW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbikodm9pZCk7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5tbQppbmRleCAzNzliNjgzMGU1NDdhYzcyYmFhNTJiNjY3Yzc2ODFmYzYyOTkyZjQwLi45
OTI0OWVlMWE4NDBlNWU0ODBmYzQ1MGE4YTFiMGYxMTdkNWQzN2JiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAt
MjA5LDMgKzIwOSwxNSBAQCBDR0Zsb2F0ICgqd2tOU0VsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0
YSkoQ0dGbG9hdCBkZWx0YSk7CiBDR0Zsb2F0ICgqd2tOU1JlYm91bmREZWx0YUZvckVsYXN0aWNE
ZWx0YSkoQ0dGbG9hdCBkZWx0YSk7CiAjZW5kaWYKIAorYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFu
Y2VIYXNVc2VyUHJlZmVyZW5jZXMpKHZvaWQpOworYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VT
aG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKSh2b2lkKTsKK0NHQ29sb3JSZWYoKndrQ2FwdGlvbkFw
cGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yKSh2b2lkKTsKK0NHQ29sb3JSZWYoKndrQ2FwdGlv
bkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKSh2b2lkKTsKK0NHQ29sb3JSZWYoKndrQ2Fw
dGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IpKHZvaWQpOworYm9vbCgqd2tDYXB0aW9uQXBw
ZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KShDR0Zsb2F0Kik7Citib29sKCp3a0NhcHRpb25B
cHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkpKENHRmxvYXQqKTsKK2Jvb2woKndrQ2FwdGlv
bkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KShDR0Zsb2F0Kik7CitDR0ZvbnRSZWYoKndrQ2Fw
dGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxlKShpbnQpOworYm9vbCgqd2tDYXB0aW9uQXBw
ZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSkoQ0dGbG9hdCopOworaW50KCp3a0NhcHRp
b25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSkodm9pZCk7CitDRlN0cmluZ1JlZigqd2tDYXB0
aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbikodm9pZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdl
ZExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FwdGlvblByZWZlcmVuY2Vz
Q2hhbmdlZExpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY4ZjIxOTFlNjg0YjIwNzA2OGIwNTg5Yjky
ZWUxMTQ4NDYwMTc2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9DYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIuaApAQCAtMCwwICsxLDQwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyX2gKKyNkZWZpbmUgQ2FwdGlvblByZWZlcmVu
Y2VzQ2hhbmdlZExpc3RlbmVyX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9p
ZCBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkgPSAwOworcHJvdGVjdGVkOgorICAgIHZpcnR1
YWwgfkNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcigpIHsgfQorfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKaW5kZXggMzZlNDlmMjZj
ZGJjYWU4ZGNkZTk2MTcxNjUwMGMwZGJiNGJlMDVkNC4uMzIxNzA0NGQwMzZmZjU4ODczZTRhNWNm
MTBmNDdiZTkxNjgzNGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgK
QEAgLTQ2LDYgKzQ2LDkgQEAgY2xhc3MgUmVuZGVyTWV0ZXI7CiAjaWYgRU5BQkxFKFBST0dSRVNT
X0VMRU1FTlQpCiBjbGFzcyBSZW5kZXJQcm9ncmVzczsKICNlbmRpZgorI2lmIEVOQUJMRShWSURF
T19UUkFDSykKK2NsYXNzIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcjsKKyNlbmRp
ZgogY2xhc3MgQ1NTU3R5bGVTaGVldDsKIAogY2xhc3MgUmVuZGVyVGhlbWUgOiBwdWJsaWMgUmVm
Q291bnRlZDxSZW5kZXJUaGVtZT4gewpAQCAtMjMwLDYgKzIzMywxNSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwYWludFNsaWRlclRpY2tzKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHZp
cnR1YWwgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgdXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZSgpIGNv
bnN0IHsgcmV0dXJuIDAuMDU7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBjYXB0aW9uc1N0eWxlU2hl
ZXRPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCBib29sIHNo
b3VsZFNob3dQbGFjZWhvbGRlcldoZW5Gb2N1c2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24oSFRNTElucHV0RWxlbWVudCop
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCmluZGV4
IDdhZDQ5YmQzNDc4ODViNTg0MDJiNzhlMmZmNTMyZDdiNzZjMTEzMzkuLjQ0ZjFkNjJjNDE3NDFm
NTM1OTNhNzA5NTY5ZDRkODYwMDVlZWJlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5oCkBAIC0xMDEsNiArMTAxLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgdXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3IoKSBjb25zdDsKICAgICAvLyBBIHZpZXcg
YXNzb2NpYXRlZCB0byB0aGUgY29udGFpbmVkIGRvY3VtZW50LiBTdWJjbGFzc2VzIG1heSBub3Qg
aGF2ZSBzdWNoIGEgdmlldyBhbmQgcmV0dXJuIGEgZmFrZS4KICAgICB2aXJ0dWFsIE5TVmlldyog
ZG9jdW1lbnRWaWV3Rm9yKFJlbmRlck9iamVjdCopIGNvbnN0OworCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorICAgIHZvaWQgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOworI2VuZGlmCisK
IHByb3RlY3RlZDoKICAgICBSZW5kZXJUaGVtZU1hYygpOwogICAgIHZpcnR1YWwgflJlbmRlclRo
ZW1lTWFjKCk7CkBAIC0xNzgsNiArMTgzLDE1IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0TWVkaWFTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKICAgICB2
aXJ0dWFsIEludFBvaW50IHZvbHVtZVNsaWRlck9mZnNldEZyb21NdXRlQnV0dG9uKFJlbmRlckJv
eCosIGNvbnN0IEludFNpemUmKSBjb25zdCBPVkVSUklERTsKICNlbmRpZgorCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGZsb2F0IGNhcHRpb25Gb250U2l6ZVNjYWxl
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0
T3ZlcnJpZGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JD
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRMaXN0ZW5lciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyRm9yQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
TGlzdGVuZXIqKSBPVkVSUklERTsKKyNlbmRpZgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRTaG93UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgpIGNvbnN0OwogCkBAIC0yMzcsNiArMjUxLDE3
IEBAIHByaXZhdGU6CiAgICAgY29uc3QgaW50KiBwcm9ncmVzc0Jhck1hcmdpbnMoTlNDb250cm9s
U2l6ZSkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBDb2xv
ciBjYXB0aW9uc1dpbmRvd0NvbG9yKCkgY29uc3Q7CisgICAgQ29sb3IgY2FwdGlvbnNCYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdDsKKyAgICBDb2xvciBjYXB0aW9uc1RleHRDb2xvcigpIGNvbnN0Owor
ICAgIFN0cmluZyBjYXB0aW9uc0RlZmF1bHRGb250KCkgY29uc3Q7CisgICAgQ29sb3IgY2FwdGlv
bnNFZGdlQ29sb3JGb3JUZXh0Q29sb3IoY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBTdHJpbmcg
Y2FwdGlvbnNUZXh0RWRnZVN0eWxlKCkgY29uc3Q7CisgICAgU3RyaW5nIGNzc1Byb3BlcnR5V2l0
aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgQ29sb3Im
KSBjb25zdDsKKyAgICBTdHJpbmcgY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBjb25z
dCBDb2xvciYpIGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZXRhaW5Q
dHI8TlNQb3BVcEJ1dHRvbkNlbGw+IG1fcG9wdXBCdXR0b247CiAgICAgbXV0YWJsZSBSZXRhaW5Q
dHI8TlNTZWFyY2hGaWVsZENlbGw+IG1fc2VhcmNoOwpAQCAtMjUyLDYgKzI3NywxMSBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgSGFzaE1hcDxpbnQsIFJHQkEzMj4gbV9zeXN0ZW1Db2xvckNhY2hl
OwogCiAgICAgUmV0YWluUHRyPFdlYkNvcmVSZW5kZXJUaGVtZU5vdGlmaWNhdGlvbk9ic2VydmVy
PiBtX25vdGlmaWNhdGlvbk9ic2VydmVyOworCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAg
IEhhc2hTZXQ8Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKj4gbV9jYXB0aW9uUHJl
ZmVyZW5jZUNoYW5nZUxpc3RlbmVyczsKKyAgICBib29sIG1fbGlzdGVuaW5nRm9yQ2FwdGlvblBy
ZWZlcmVuY2VOb3RpZmljYXRpb25zOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggMGJj
OTgwNGZiNzU5YjExZWQ5NmE0MDkxMDZhMDExNjc5OGMyMDRiZS4uOGI4YTk3ZWQxYjQ0MTU0OTZi
OWE3NjQzZDFkZTg3NGZhYTZjYTZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiRG9jdW1lbnQuaCIKICNp
bXBvcnQgIkVsZW1lbnQuaCIKICNpbXBvcnQgIkZpbGVMaXN0LmgiCisjaW1wb3J0ICJGbG9hdENv
bnZlcnNpb24uaCIKICNpbXBvcnQgIkZyYW1lVmlldy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0Q0cuaCIKICNpbXBvcnQgIkhUTUxJbnB1dEVsZW1lbnQuaCIKQEAgLTE1MSw2ICsxNTIsMTEg
QEAgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdl
KikKIH0KICNlbmRpZgogCitzdGF0aWMgdm9pZCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdl
ZE5vdGlmaWNhdGlvbkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNl
cnZlciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQgKiwgQ0ZEaWN0aW9uYXJ5UmVmKQoreworICAg
IHN0YXRpY19jYXN0PFJlbmRlclRoZW1lTWFjKj4ob2JzZXJ2ZXIpLT5jYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkKCk7Cit9CisKIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lTWFj
OjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVNYWMpOwpA
QCAtMTYwLDYgKzE2Niw5IEBAIFJlbmRlclRoZW1lTWFjOjpSZW5kZXJUaGVtZU1hYygpCiAgICAg
OiBtX2lzU2xpZGVyVGh1bWJIb3Jpem9udGFsUHJlc3NlZChmYWxzZSkKICAgICAsIG1faXNTbGlk
ZXJUaHVtYlZlcnRpY2FsUHJlc3NlZChmYWxzZSkKICAgICAsIG1fbm90aWZpY2F0aW9uT2JzZXJ2
ZXIoQWRvcHROUywgW1tXZWJDb3JlUmVuZGVyVGhlbWVOb3RpZmljYXRpb25PYnNlcnZlciBhbGxv
Y10gaW5pdFdpdGhUaGVtZTp0aGlzXSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgLCBt
X2xpc3RlbmluZ0ZvckNhcHRpb25QcmVmZXJlbmNlTm90aWZpY2F0aW9ucyhmYWxzZSkKKyNlbmRp
ZgogewogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2
ZXI6bV9ub3RpZmljYXRpb25PYnNlcnZlci5nZXQoKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjpAc2VsZWN0b3Ioc3lzdGVt
Q29sb3JzRGlkQ2hhbmdlOikKQEAgLTE3MCw2ICsxNzksMTEgQEAgUmVuZGVyVGhlbWVNYWM6OlJl
bmRlclRoZW1lTWFjKCkKIFJlbmRlclRoZW1lTWFjOjp+UmVuZGVyVGhlbWVNYWMoKQogewogICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9u
b3RpZmljYXRpb25PYnNlcnZlci5nZXQoKV07CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisg
ICAgaWYgKG1fbGlzdGVuaW5nRm9yQ2FwdGlvblByZWZlcmVuY2VOb3RpZmljYXRpb25zKQorICAg
ICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlbW92ZU9ic2VydmVyKENGTm90aWZpY2F0aW9uQ2Vu
dGVyR2V0TG9jYWxDZW50ZXIoKSwgdGhpcywgd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdz
Q2hhbmdlZE5vdGlmaWNhdGlvbigpLCBOVUxMKTsKKyNlbmRpZgogfQogCiBDb2xvciBSZW5kZXJU
aGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdApA
QCAtMjEyOCw2ICsyMTQyLDI1NSBAQCBJbnRQb2ludCBSZW5kZXJUaGVtZU1hYzo6dm9sdW1lU2xp
ZGVyT2Zmc2V0RnJvbU11dGVCdXR0b24oUmVuZGVyQm94KiBtdXRlQnV0dG9uQgogICAgIHJldHVy
biBSZW5kZXJNZWRpYUNvbnRyb2xzOjp2b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1dHRvbiht
dXRlQnV0dG9uQm94LCBzaXplKTsKIH0KIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2Jvb2wg
UmVuZGVyVGhlbWVNYWM6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdAoreworICAg
IHJldHVybiB3a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzKCk7Cit9CisKK2Jv
b2wgUmVuZGVyVGhlbWVNYWM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdAoreworICAgIHJl
dHVybiB3a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJsZSgpOworfQor
CitDb2xvciBSZW5kZXJUaGVtZU1hYzo6Y2FwdGlvbnNXaW5kb3dDb2xvcigpIGNvbnN0Cit7Cisg
ICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yKEFkb3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFu
Y2VDb3B5V2luZG93Q29sb3IoKSk7CisgICAgQ29sb3Igd2luZG93Q29sb3IoY29sb3IuZ2V0KCkp
OworICAgIGlmICghd2luZG93Q29sb3IuaXNWYWxpZCgpKQorICAgICAgICB3aW5kb3dDb2xvciA9
IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICAKKyAgICBDR0Zsb2F0IG9wYWNpdHk7CisgICAgaWYg
KHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KCZvcGFjaXR5KSkKKyAgICAgICAg
cmV0dXJuIENvbG9yKHdpbmRvd0NvbG9yLnJlZCgpLCB3aW5kb3dDb2xvci5ncmVlbigpLCB3aW5k
b3dDb2xvci5ibHVlKCksIG9wYWNpdHkgKiAyNTUpOworICAgIAorICAgIGlmICghY29sb3IpCisg
ICAgICAgIHJldHVybiBDb2xvcigpOworCisgICAgcmV0dXJuIHdpbmRvd0NvbG9yOworfQorCitD
b2xvciBSZW5kZXJUaGVtZU1hYzo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorewor
ICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3Bl
Y2lmaWVkIGluIG1lZGlhQ29udHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2st
cGFzdC1ub2RlcworICAgIC8vIGFuZCB3ZWJraXQtbWVkaWEtdGV4dC10cmFjay1mdXR1cmUtbm9k
ZXMuCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xv
ciwgKENvbG9yKDAsIDAsIDAsIDAuOCAqIDI1NSkpKTsKKworICAgIFJldGFpblB0cjxDR0NvbG9y
UmVmPiBjb2xvcihBZG9wdENGLCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xv
cigpKTsKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoY29sb3IuZ2V0KCkpOworICAgIGlmICgh
YmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBk
ZWZhdWx0QmFja2dyb3VuZENvbG9yOworICAgIH0KKworICAgIENHRmxvYXQgb3BhY2l0eTsKKyAg
ICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5KCZvcGFjaXR5KSkK
KyAgICAgICAgcmV0dXJuIENvbG9yKGJhY2tncm91bmRDb2xvci5yZWQoKSwgYmFja2dyb3VuZENv
bG9yLmdyZWVuKCksIGJhY2tncm91bmRDb2xvci5ibHVlKCksIG9wYWNpdHkgKiAyNTUpOworCisg
ICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgCisgICAgcmV0dXJu
IGJhY2tncm91bmRDb2xvcjsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zVGV4
dENvbG9yKCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRD
Riwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IoKSk7CisgICAgQ29sb3Ig
dGV4dENvbG9yKGNvbG9yLmdldCgpKTsKKyAgICBpZiAoIXRleHRDb2xvci5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgLy8gVGhpcyBkZWZhdWx0IHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9u
ZSBzcGVjaWZpZWQgaW4gbWVkaWFDb250cm9scy5jc3MgZm9yIC13ZWJraXQtbWVkaWEtdGV4dC10
cmFjay1jb250YWluZXIuCisgICAgICAgIHRleHRDb2xvciA9IENvbG9yOjp3aGl0ZTsKKyAgICB9
CisgICAgCisgICAgQ0dGbG9hdCBvcGFjaXR5OworICAgIGlmICh3a0NhcHRpb25BcHBlYXJhbmNl
R2V0Rm9yZWdyb3VuZE9wYWNpdHkoJm9wYWNpdHkpKQorICAgICAgICByZXR1cm4gQ29sb3IodGV4
dENvbG9yLnJlZCgpLCB0ZXh0Q29sb3IuZ3JlZW4oKSwgdGV4dENvbG9yLmJsdWUoKSwgb3BhY2l0
eSAqIDI1NSk7CisgICAgCisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7
CisgICAgCisgICAgcmV0dXJuIHRleHRDb2xvcjsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVNYWM6
OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IpIGNv
bnN0Cit7CisgICAgaW50IGRpc3RhbmNlRnJvbVdoaXRlID0gZGlmZmVyZW5jZVNxdWFyZWQodGV4
dENvbG9yLCBDb2xvcjo6d2hpdGUpOworICAgIGludCBkaXN0YW5jZUZyb21CbGFjayA9IGRpZmZl
cmVuY2VTcXVhcmVkKHRleHRDb2xvciwgQ29sb3I6OmJsYWNrKTsKKyAgICAKKyAgICBpZiAoZGlz
dGFuY2VGcm9tV2hpdGUgPCBkaXN0YW5jZUZyb21CbGFjaykKKyAgICAgICAgcmV0dXJuIHRleHRD
b2xvci5kYXJrKCk7CisgICAgCisgICAgcmV0dXJuIHRleHRDb2xvci5saWdodCgpOworfQorCitT
dHJpbmcgUmVuZGVyVGhlbWVNYWM6OmNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJv
cGVydHlJRCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgQ29sb3ImIHRleHRDb2xvcikg
Y29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgCisgICAgYnVpbGRlci5h
cHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGlkKSk7CisgICAgYnVpbGRlci5hcHBlbmQoJzon
KTsKKyAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZSk7CisgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
KyAgICBidWlsZGVyLmFwcGVuZChjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcih0ZXh0Q29s
b3IpLnNlcmlhbGl6ZWQoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKKworICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisgICAgCitTdHJpbmcgUmVuZGVyVGhlbWVNYWM6OmNz
c0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25z
dAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAKKyAgICBidWlsZGVyLmFwcGVu
ZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoaWQpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOicpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKGNvbG9yLnNlcmlhbGl6ZWQoKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoJzsnKTsKKyAgICAKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitTdHJp
bmcgUmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zVGV4dEVkZ2VTdHlsZSgpIGNvbnN0Cit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZVJhaXNlZCwgKCIgLS4w
NWVtIC0uMDVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlRGVwcmVzc2VkLCAoIiAuMDVl
bSAuMDVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlRHJvcFNoYWRvdywgKCIgLjA3NWVt
IC4wNzVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlVW5pZm9ybSwgKCIgLjAzZW0gIiwg
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworCisgICAgQ29sb3IgY29sb3IgPSBjYXB0
aW9uc1RleHRDb2xvcigpOworICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQorICAgICAgICBjb2xv
ci5zZXROYW1lZENvbG9yKCJibGFjayIpOworICAgIGNvbG9yID0gY2FwdGlvbnNFZGdlQ29sb3JG
b3JUZXh0Q29sb3IoY29sb3IpOworCisgICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZSB0ZXh0RWRn
ZVN0eWxlID0gc3RhdGljX2Nhc3Q8d2tDYXB0aW9uVGV4dEVkZ2VTdHlsZT4od2tDYXB0aW9uQXBw
ZWFyYW5jZUdldFRleHRFZGdlU3R5bGUoKSk7CisgICAgc3dpdGNoICh0ZXh0RWRnZVN0eWxlKSB7
CisgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlVW5kZWZpbmVkOgorICAgIGNhc2Ugd2tD
YXB0aW9uVGV4dEVkZ2VTdHlsZU5vbmU6CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwor
CisgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlUmFpc2VkOgorICAgICAgICByZXR1cm4g
Y3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVRleHRTaGFkb3csIGVkZ2VT
dHlsZVJhaXNlZCwgY29sb3IpOworICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZURlcHJl
c3NlZDoKKyAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJv
cGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVEZXByZXNzZWQsIGNvbG9yKTsKKyAgICBjYXNlIHdr
Q2FwdGlvblRleHRFZGdlU3R5bGVEcm9wU2hhZG93OgorICAgICAgICByZXR1cm4gY3NzUHJvcGVy
dHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVRleHRTaGFkb3csIGVkZ2VTdHlsZURyb3BT
aGFkb3csIGNvbG9yKTsKKyAgICBjYXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVVbmlmb3JtOgor
ICAgICAgICByZXR1cm4gY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVdl
YmtpdFRleHRTdHJva2UsIGVkZ2VTdHlsZVVuaWZvcm0sIGNvbG9yKTsKKworICAgIGNhc2Ugd2tD
YXB0aW9uVGV4dEVkZ2VTdHlsZU1heDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitTdHJpbmcgUmVuZGVy
VGhlbWVNYWM6OmNhcHRpb25zRGVmYXVsdEZvbnQoKSBjb25zdAoreworICAgIFJldGFpblB0cjxD
R0ZvbnRSZWY+IGZvbnQoQWRvcHRDRiwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250Rm9yU3R5
bGUod2tDYXB0aW9uRm9udFN0eWxlRGVmYXVsdCkpOworICAgIGlmICghZm9udCkKKyAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5hbWUo
QWRvcHRDRiwgQ0dGb250Q29weVBvc3RTY3JpcHROYW1lKGZvbnQuZ2V0KCkpKTsKKyAgICBpZiAo
IW5hbWUpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOworICAgIAorICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmlu
ZyhDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiOiBcIiIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKG5hbWUuZ2V0KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJcIjsi
KTsKKyAgICAKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitTdHJpbmcgUmVu
ZGVyVGhlbWVNYWM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0OworCisgICAgQ29sb3IgY29s
b3IgPSBjYXB0aW9uc0JhY2tncm91bmRDb2xvcigpOworICAgIGlmIChjb2xvci5pc1ZhbGlkKCkp
IHsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86OiIp
OworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNrQ3Vl
OjpwYXN0Tm9kZXNTaGFkb3dQc2V1ZG9JZCgpKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0
eWxlU2hlZXQuYXBwZW5kKCd7Jyk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0
LmFwcGVuZChjc3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBjb2xv
cikpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ30nKTsKKwor
ICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7Cisg
ICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWU6OmZ1
dHVyZU5vZGVzU2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZCgneycpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5h
cHBlbmQoY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgY29sb3Ip
KTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7CisgICAg
fQorCisgICAgY29sb3IgPSBjYXB0aW9uc1dpbmRvd0NvbG9yKCk7CisgICAgaWYgKGNvbG9yLmlz
VmFsaWQoKSkgeworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2
aWRlbzo6Iik7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0
VHJhY2tDdWVCb3g6OnRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBj
YXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsKKyAgICAgICAgY2FwdGlvbnNP
dmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IsIGNvbG9yKSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0
LmFwcGVuZCgnfScpOworICAgIH0KKworICAgIGNvbG9yID0gY2FwdGlvbnNUZXh0Q29sb3IoKTsK
KyAgICBTdHJpbmcgZWRnZVN0eWxlID0gY2FwdGlvbnNUZXh0RWRnZVN0eWxlKCk7CisgICAgU3Ry
aW5nIGZvbnROYW1lID0gY2FwdGlvbnNEZWZhdWx0Rm9udCgpOworICAgIGlmIChjb2xvci5pc1Zh
bGlkKCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5KCkgfHwgIWZvbnROYW1lLmlzRW1wdHkoKSkgewor
ICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7Cisg
ICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWVCb3g6
OnRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBjYXB0aW9uc092ZXJy
aWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsKKworICAgICAgICBpZiAoY29sb3IuaXNWYWxpZCgp
KQorICAgICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGNzc0NvbG9y
UHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgY29sb3IpKTsKKyAgICAgICAgaWYgKCFlZGdlU3R5
bGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBw
ZW5kKGVkZ2VTdHlsZSk7CisgICAgICAgIGlmICghZm9udE5hbWUuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGZvbnROYW1lKTsKKworICAg
ICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ30nKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQudG9TdHJpbmcoKTsKK30KKworZmxv
YXQgUmVuZGVyVGhlbWVNYWM6OmNhcHRpb25Gb250U2l6ZVNjYWxlKCkgY29uc3QKK3sKKyAgICBD
R0Zsb2F0IGNoYXJhY3RlclNjYWxlID0gUmVuZGVyVGhlbWU6OmNhcHRpb25Gb250U2l6ZVNjYWxl
KCk7CisgICAgQ0dGbG9hdCBzY2FsZUFkanVzdG1lbnQ7CisgICAgCisgICAgaWYgKCF3a0NhcHRp
b25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKCZzY2FsZUFkanVzdG1lbnQpKQor
ICAgICAgICByZXR1cm4gY2hhcmFjdGVyU2NhbGU7CisgICAgCisgICAgcmV0dXJuIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoc2NhbGVBZGp1c3RtZW50ICogY2hhcmFjdGVyU2NhbGUpOworfQorCit2
b2lkIFJlbmRlclRoZW1lTWFjOjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkKK3sKKyAgICBm
b3IgKEhhc2hTZXQ8Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKj46Oml0ZXJhdG9y
IGkgPSBtX2NhcHRpb25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXJzLmJlZ2luKCk7IGkgIT0gbV9j
YXB0aW9uUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVycy5lbmQoKTsgKytpKQorICAgICAgICAoKmkp
LT5jYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVNYWM6
OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJl
ZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgIGlmICghd2tDYXB0aW9u
QXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigpKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgaWYgKCFtX2xpc3RlbmluZ0ZvckNhcHRpb25QcmVmZXJlbmNlTm90aWZp
Y2F0aW9ucykgeworICAgICAgICBtX2xpc3RlbmluZ0ZvckNhcHRpb25QcmVmZXJlbmNlTm90aWZp
Y2F0aW9ucyA9IHRydWU7CisgICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIg
KENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKSwgdGhpcywgdXNlckNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjaywgd2tDYXB0aW9uQXBwZWFyYW5j
ZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigpLCBOVUxMLCBDRk5vdGlmaWNhdGlvblN1
c3BlbnNpb25CZWhhdmlvckNvYWxlc2NlKTsKKyAgICB9CisgICAgCisgICAgbV9jYXB0aW9uUHJl
ZmVyZW5jZUNoYW5nZUxpc3RlbmVycy5hZGQobGlzdGVuZXIpOworfQorICAgIAordm9pZCBSZW5k
ZXJUaGVtZU1hYzo6dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFj
a3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikKK3sKKyAgICAg
aWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKSkK
KyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVycy5yZW1vdmUobGlzdGVu
ZXIpOworfQorI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKKwogI2VuZGlmIC8vIEVOQUJM
RShWSURFTykKIAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6c2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hl
bkZvY3VzZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IGUyNWJiNDRmNTJlZmI0MWM1ZTFhZGRh
YTk1ZDc3MmEzN2U4MjNkMWIuLjMzODZkOTRkZTc5NzZkZTIxNGE3ODE2ZWYzZjYzN2YzOTMzYzk0
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3Rl
bUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KQEAgLTIwNSw2ICsyMDUsMTkgQEAgdm9pZCBJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVs
dGEpOwogI2VuZGlmCiAKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZlcmVu
Y2VzKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJs
ZSk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IpOworICAg
IElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKTsKKyAgICBJTklUKENh
cHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJh
bmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRC
YWNrZ3JvdW5kT3BhY2l0eSk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09w
YWNpdHkpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxlKTsKKyAg
ICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKTsKKyAgICBJ
TklUKENhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSk7CisgICAgSU5JVChDYXB0aW9u
QXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbik7CisKICNlbmRpZgogICAg
IGRpZEluaXQgPSB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmlu
ZGV4IDE4OTc2NzVkYzI2NjE2ODZkNWM3MDljNTIwYzc4MDE2YjdlNGM1ZWEuLjBmYzZlY2U5NGZh
ZWU5MzNhMjk2OTQ5YmI3ODQ0N2ZlZjZjYjk1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0KQEAgLTE4Niw1ICsxODYsMTcgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUlu
dGVyZmFjZSh2b2lkKQogICAgICAgICBJTklUKE5TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRh
KTsKICNlbmRpZgogCisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2VyUHJlZmVy
ZW5jZXMpOworICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2
YWlsYWJsZSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENv
bG9yKTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3Ip
OworICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yKTsKKyAgICAg
ICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KTsKKyAgICAgICAg
SU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5KTsKKyAgICAgICAgSU5J
VChDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkpOworICAgICAgICBJTklUKENhcHRp
b25BcHBlYXJhbmNlQ29weUZvbnRGb3JTdHlsZSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVh
cmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUpOworICAgICAgICBJTklUKENhcHRpb25BcHBl
YXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJhMGE3
YmRmNTc5YzJlNjM5N2Q4MTQxYjgxZDRhNjU5OWNlYmY4NzEuLjI2M2JjNDkyYTYzMjYzZjE4ZDg2
ZjZlMGNhMTMzZmU3NTY2NjcwZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0wNCAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBw
b3J0cyB0byBvdmVycmlkZSB0ZXh0IHRyYWNrIHJlbmRlcmluZyBzdHlsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEyMDQ0OTY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50
eHQ6IFVwZGF0ZSByZXN1bHRzIGZvciBjYXB0aW9uIGNzcyBjaGFuZ2VzLgorICAgICAgICAqIG1l
ZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmcuaHRtbDogCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczogU2tpcCB0ZXN0cyB0aGF0IG5lZWQgdG8gYmUgcmVi
YXNlbGluZWQuCisKIDIwMTItMTAtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQ2hyb21pdW0gcmViYXNlbGluZXMgYWZ0ZXIgcjEzMDQxMS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3Rl
ZC50eHQKaW5kZXggYzA2ZmJkMGQwMjdjYmE1MGZhOWYwOTliZmVjNDE2ZmM2MWQ5ZWZmOS4uMzZj
N2Y0N2EyNTg4MTRkNzQwYzdiNDE0OTViZmExZTAxYjgyZjZmOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQK
QEAgLTQ5LDcgKzQ5LDcgQEAgUlVOKHZpZGVvLmhlaWdodCA9IDE0NDApCiBFWFBFQ1RFRCAoZ2V0
Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmZvbnRTaXplID09
ICc3MnB4JykgT0sKIAogRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxh
eUVsZW1lbnQodmlkZW8pKS5mb250RmFtaWx5ID09ICdzYW5zLXNlcmlmJykgT0sKLUVYUEVDVEVE
IChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuY29sb3Ig
PT0gJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5
bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1
LCAyNTUpJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlF
bGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciA9PSAn
cmdiYSgwLCAwLCAwLCAwLjc5Njg3NSknKSwgT0JTRVJWRUQgJ3JnYmEoMCwgMCwgMCwgMC44KScg
RkFJTAogRU5EIE9GIFRFU1QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dHJhY2stY3VlLXJlbmRlcmluZy5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2st
Y3VlLXJlbmRlcmluZy5odG1sCmluZGV4IDVhN2U4ZTY1ZDhlYjFlMzQwYjBlOTRmNDExNWNhODc2
ZWJjOTg2NTguLmNkZjFiMDgzYTNlOTdkOTEzYzVkYzUwMjJiMDk4OTYzNWYyMmE1NTUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmcuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0bWwKQEAg
LTMyLDcgKzMyLDcgQEAKICAgICAgICAgICAgIHRlc3RGb250U2l6ZSgyNTYwLCAxNDQwKTsKIAog
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3Bs
YXlFbGVtZW50KHZpZGVvKSkuZm9udEZhbWlseSIsICJzYW5zLXNlcmlmIik7Ci0gICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQo
dmlkZW8pKS5jb2xvciIsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApIik7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlk
ZW8pKS5jb2xvciIsICJyZ2IoMjU1LCAyNTUsIDI1NSkiKTsKICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgiZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rp
c3BsYXknKS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3IiLCAicmdiYSgwLCAwLCAwLCAwLjc5
Njg3NSkiKTsKIAogICAgICAgICAgICAgZW5kVGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMjkwYTk5MDc3ZTdiZmU5ZGRkYzYx
MTc4YzYyNGRkNjZlZjJmNjM2Mi4uNDFlZDM5ZTVjOTYwYzQ4NDU3MTAyYWRjMTYyNGEwN2MzNGQy
M2I2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRp
b25zCkBAIC0zNzkyLDMgKzM3OTIsOCBAQCB3ZWJraXQub3JnL2IvOTUxMjEgZmFzdC9pbWFnZXMv
cGl4ZWwtY3JhY2staW1hZ2UtYmFja2dyb3VuZC13ZWJraXQtdHJhbnNmb3JtLXNjYQogCiAjIFRo
aXMgaXMgY2F1c2VkIGJ5IG1pc2FsaWdubWVudCB3aXRoIGJpdG1hcCB0aWxpbmcgd2hpY2ggaXMg
bm90IHlldCBmaXhlZCBieSA5NTEyMS4KIHdlYmtpdC5vcmcvYi85NTEyMSBmYXN0L2JvcmRlcnMv
Ym9yZGVyLWltYWdlLXNpZGUtcmVkdWN0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0gCisK
KyMgTmVlZCB0byBiZSB1cGRhdGVkIGFmdGVyIHdlYmtpdC5vcmcvYi85NzgwMAord2Via2l0Lm9y
Zy9iLzg5MTY3IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctaG9yaXpvbnRhbC5odG1s
IFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvODkxNjcgbWVkaWEvdHJhY2svdHJhY2stY3VlLXJl
bmRlcmluZy12ZXJ0aWNhbC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvODkxNjcgbWVk
aWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy5odG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQg
YS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwpp
bmRleCA4ZDMyNDE1M2NjMTJkNjBkYmZkZTQwMWU2NDE0Njk1Y2Q4OWI5MTEzLi4wOWI5YmVhZjAy
NzE5Y2ZmZjQ3MWNhM2IzMWYxZmE3NmZjMTllY2U3IDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJp
ZXMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMi0xMC0wNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBBbGxvdyBwb3J0cyB0byBvdmVycmlkZSB0ZXh0IHRyYWNrIHJlbmRlcmluZyBz
dHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4
MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDQ0OTY0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBXS1NJIGhlYWRlciB3aXRoIFNQ
SSBmb3IgZ2V0dGluZyB0aGUgdXNlciBjYXB0aW9uIGFwcGVhcmFuY2UgcHJlZmVyZW5jZXMuCisK
KyAgICAgICAgKiBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaDoKKwogMjAxMi0wOS0yOCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBwb3J0cyB0
byBvdmVycmlkZSB0ZXh0IHRyYWNrIHJlbmRlcmluZyBzdHlsZQpkaWZmIC0tZ2l0IGEvV2ViS2l0
TGlicmFyaWVzL1dlYktpdFN5c3RlbUludGVyZmFjZS5oIGIvV2ViS2l0TGlicmFyaWVzL1dlYktp
dFN5c3RlbUludGVyZmFjZS5oCmluZGV4IDk4ZmNhZWI2NDAyYzE1NmQ0Yjk2MDE5YmUzODFhYWFl
OWJjNDQ5YTMuLjM2OGIyZWNjYTE0ODkxMTU5NGM0NWUyNWJhYzMzZDMxYjUyZDYyY2MgMTAwNjQ0
Ci0tLSBhL1dlYktpdExpYnJhcmllcy9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaAorKysgYi9XZWJL
aXRMaWJyYXJpZXMvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgKQEAgLTEsNiArMSw2IEBACiAvKiAg
ICAgIAogICAgIFdlYktpdFN5c3RlbUludGVyZmFjZS5oCi0gICAgQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAg
ICAgUHVibGljIGhlYWRlciBmaWxlLgogKi8KQEAgLTUwOSw2ICs1MDksNDEgQEAgQ0dGbG9hdCBX
S05TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKENHRmxvYXQgZGVsdGEpOwogQm9vbGVhbiBX
S0pMSXNSdW50aW1lQW5kV2ViQ29tcG9uZW50c0luc3RhbGxlZCh2b2lkKTsKICNlbmRpZgogCit0
eXBlZGVmIGVudW0geworICAgIFdLQ2FwdGlvbkZvbnRTdHlsZURlZmF1bHQgPSAwLAorICAgIFdL
Q2FwdGlvbkZvbnRTdHlsZU1vbm9zcGFjZWRXaXRoU2VyaWYsCisgICAgV0tDYXB0aW9uRm9udFN0
eWxlUHJvcG9ydGlvbmFsV2l0aFNlcmlmLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZU1vbm9zcGFj
ZWRXaXRob3V0U2VyaWYsCisgICAgV0tDYXB0aW9uRm9udFN0eWxlUHJvcG9ydGlvbmFsV2l0aG91
dFNlcmlmLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZUNhc3VhbCwKKyAgICBXS0NhcHRpb25Gb250
U3R5bGVDdXJzaXZlLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZVNtYWxsQ2FwaXRhbCwKKyAgICBX
S0NhcHRpb25Gb250U3R5bGVNYXgKK30gV0tDYXB0aW9uRm9udFN0eWxlOworCit0eXBlZGVmIGVu
dW0geworICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVVbmRlZmluZWQgPSAwLAorICAgIFdLQ2Fw
dGlvblRleHRFZGdlU3R5bGVOb25lLAorICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVSYWlzZWQs
CisgICAgV0tDYXB0aW9uVGV4dEVkZ2VTdHlsZURlcHJlc3NlZCwKKyAgICBXS0NhcHRpb25UZXh0
RWRnZVN0eWxlVW5pZm9ybSwKKyAgICBXS0NhcHRpb25UZXh0RWRnZVN0eWxlRHJvcFNoYWRvdywK
KyAgICBXS0NhcHRpb25UZXh0RWRnZVN0eWxlTWF4Cit9IFdLQ2FwdGlvblRleHRFZGdlU3R5bGU7
CisKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcyh2b2lkKTsKK2Jv
b2wgV0tDYXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0aW9uc1doZW5BdmFpbGFibGUodm9pZCk7CitD
R0NvbG9yUmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yKHZvaWQpOwor
Q0dDb2xvclJlZiBXS0NhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvcih2b2lkKTsK
K0NHQ29sb3JSZWYgV0tDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcih2b2lkKTsKK2Jv
b2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KENHRmxvYXQqKTsKK2Jv
b2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5KENHRmxvYXQqKTsKK2Jv
b2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkoQ0dGbG9hdCopOworQ0dGb250
UmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxlKGludCBmb250U3R5bGUpOwor
Ym9vbCBXS0NhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKENHRmxvYXQq
KTsKK2ludCBXS0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSh2b2lkKTsKK0NGU3Ry
aW5nUmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24o
dm9pZCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167418</attachid>
            <date>2012-10-05 17:07:49 -0700</date>
            <delta_ts>2012-10-17 22:01:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97800-20121005170657.patch</filename>
            <type>text/plain</type>
            <size>67782</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjMjE2MzBjMThmYmU4
MjA4MDFhYWEwMjhlYjZlOWEzZmVlZmUwZC4uODIzMjg0Nzk4NDE4YjY5MmQ5MzU4MzIxYjUwZDAy
YzFkYjgwN2M5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTEwLTA1ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHBvcnRz
IHRvIG92ZXJyaWRlIHRleHQgdHJhY2sgcmVuZGVyaW5nIHN0eWxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTIwNDQ5NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IG5ldyBXZWJraXRTeXN0ZW1JbnRlcmZh
Y2UgZnVuY3Rpb25zLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogQWRkIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oLgorCisgICAgICAgICog
Y3NzL21lZGlhQ29udHJvbHMuY3NzOiBSZWFycmFuZ2UgdGhlIGNhcHRpb24gQ1NTIHNvIGl0IGlz
IHBvc3NpYmxlIHRvIHN0eWxlIHRoZSBjdWUgd2luZG93LAorICAgICAgICAgICAgYmFja2dyb3Vu
ZCwgYW5kIHRleHQgaW5kZXBlbmRlbnRseS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFF
bGVtZW50KTogSW5pdGlhbGl6ZSBtX2Rpc2FibGVDYXB0aW9ucyB3aXRoIHRoZW1lLT51c2VyUHJl
ZmVyc0NhcHRpb25zKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdHRh
Y2gpOiBSZWdpc3RlciBmb3IgY2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2FsbGJhY2tzLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGV0YWNoKTogVW5yZWdpc3RlciBm
b3IgY2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2FsbGJhY2tzLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlclByZWZlcnNDYXB0aW9ucyk6IFJldHVybiB0aGVtZS0+
dXNlclByZWZlcnNDYXB0aW9ucygpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2luZCk6IENvbnNpZGVyIHVzZXJQcmVmZXJz
Q2FwdGlvbnMoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldENsb3Nl
ZENhcHRpb25zVmlzaWJsZSk6IE1vdmUgdGhlIGNvZGUgdGhhdCBtYXJrcyBhbGwgdHJhY2tzIGFz
CisgICAgICAgICAgICB1bi1jb25maWd1cmVkIHRvIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFj
a3NBc1VuY29uZmlndXJlZCBzbyBpdCBjYW4gYmUgcmV1c2VkLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6IE5ldywgZm9yY2Ug
YSByZWV2YWx1YXRpb24gb2YgYWxsIHRleHQgdHJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVk
KTogTmV3LCBjb2RlIG1vdmVkIGZyb20gCisgICAgICAgICAgICBzZXRDbG9zZWRDYXB0aW9uc1Zp
c2libGUKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDogSW5oZXJpdCBmcm9tIENh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci4KKworICAgICAgICAqIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
KTogTmV3LCBpZiB0aGVtZQorICAgICAgICAgICAgaGFzIGEgY2FwdGlvbnMgc3R5bGUgc2hlZXQg
b3ZlcnJpZGUsIGluamVjdCBpdCBpbnRvIHRoZSBjdXJyZW50IHBhZ2UgZ3JvdXAsIG90aGVyd2lz
ZQorICAgICAgICAgICAgcmVtb3ZlIGluamVjdGVkIHNoZWV0LgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlU2l6ZXMpOiBHZXQg
cmlkIG9mIHVubmVjZXNzYXJ5IG1lbWJlcgorICAgICAgICAgICAgdmFyaWFibGUuIEdldCBjYXB0
aW9uIGZvbnQgc2NhbGUgZnJvbSB0aGVtZSBpbnN0ZWFkIG9mIGhhcmQgY29kaW5nLgorICAgICAg
ICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6CisKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQpOiBO
ZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXBkYXRlVGV4
dFRyYWNrRGlzcGxheSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnQuaDogQWRkIHVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkLCBtaW5vciBjbGVhbnVw
LgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sczo6dXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQpOiBOZXcu
CisKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1ZUJveCk6IFNldCB0aGUgc2hhZG93IHBz
ZXVkbyBpZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3Vl
Qm94U2hhZG93UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1cm4gdGhlIAorICAg
ICAgICAgICAgc2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4gYmUgdXNlZCBlbHNld2hlcmUuCisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OnNoYWRvd1BzZXVkb0lkKTogQ2FsbCB0
ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6cGFzdE5vZGVzU2hhZG93UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1
cm4gdGhlIAorICAgICAgICAgICAgc2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4gYmUgdXNlZCBl
bHNld2hlcmUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmZ1dHVyZU5vZGVzU2hh
ZG93UHNldWRvSWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6dXBk
YXRlRGlzcGxheVRyZWUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oOiBVcGRhdGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tOiBEaXR0
by4KKworICAgICAgICAqIHJlbmRlcmluZy9DYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVu
ZXIuaDogQWRkZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp1c2VyUHJlZmVyc0NhcHRpb25zKTogTmV3LCBkZWZh
dWx0IGRvLW5vdGhpbmcgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OmNhcHRpb25Gb250U2l6ZVNjYWxlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWRDYWxsYmFja3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lOjp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6IERp
dHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6dXNlckNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayk6IE5ldywgcmVjZWl2ZXMg
cHJlZmVyZW5jZSBjaGFuZ2VkIG5vdGlmaWNhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZU1hYzo6UmVuZGVyVGhlbWVNYWMpOiBJbml0aWFsaXplIG1fbGlzdGVuaW5nRm9yQ2Fw
dGlvblByZWZlcmVuY2VOb3RpZmljYXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6On5SZW5kZXJUaGVtZU1hYyk6IFVucmVnaXN0ZXIgZm9yIG5vdGlmaWNhdGlvbnMgaWYg
bmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnVzZXJIYXNDYXB0
aW9uUHJlZmVyZW5jZXMpOiBOZXcsIHBhc3N0aHJvdWdoIHRvIFdLU0kgZnVuY3Rpb24uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6dXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zV2luZG93Q29sb3Ip
OiBSZXR1cm4gQ29sb3Igd2l0aCB1c2VyJ3MgY2FwdGlvbiB3aW5kb3cgY29sb3IgcHJlZmVyZW5j
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uc0JhY2tncm91bmRD
b2xvcik6IFJldHVybiBDb2xvciB3aXRoIHVzZXIncyBjYXB0aW9uIAorICAgICAgICAgICAgYmFj
a2dyb3VuZCBjb2xvciBwcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OmNhcHRpb25zVGV4dENvbG9yKTogUmV0dXJuIENvbG9yIHdpdGggdXNlcidzIGNhcHRpb24g
dGV4dCBjb2xvciBwcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKTogUmV0dXJuIENvbG9yIGZvciB0ZXh0IGVk
Z2UgZWZmZWN0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNzc1Byb3BlcnR5
V2l0aFRleHRFZGdlQ29sb3IpOiBSZXR1cm4gU3RyaW5nIHdpdGggQ1NTIHRvIHNldCBhIHRleHQt
c2hhZG93CisgICAgICAgICAgICBvciB3ZWJraXQtdGV4dC1zdHJva2UgcHJvcGVydHkuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6Y3NzQ29sb3JQcm9wZXJ0eSk6IFJldHVybiBh
IFN0cmluZyB3aXRoIGNzcyB0byBzZXQgYSBwcm9wZXJ0eSAKKyAgICAgICAgICAgIHdpdGggYSBj
b2xvciB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uc1Rl
eHRFZGdlU3R5bGUpOiBSZXR1cm4gYSBTdHJpbmcgd2l0aCBjc3MgdG8gc3R5bGUgY2FwdGlvbiAK
KyAgICAgICAgICAgIHRleHQgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCB0ZXh0IGVkZ2Ugc3R5
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uc0RlZmF1bHRGb250
KTogUmV0dXJuIGEgU3RyaW5nIHdpdGggY3NzIHRvIHN0eWxlIGNhcHRpb24KKyAgICAgICAgICAg
IHRleHQgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCBmb250LgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKTogUmV0dXJuIGEgU3Ry
aW5nIHdpdGggY3NzIHRvIHN0eWxlIGNhcHRpb25zCisgICAgICAgICAgICB3aXRoIHRoZSB1c2Vy
J3MgcHJlZmVycmVkIHN0eWxlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNh
cHRpb25Gb250U2l6ZVNjYWxlKTogUmV0dXJuIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGNhcHRpb24g
Zm9udCBzY2FsZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uUHJl
ZmVyZW5jZXNDaGFuZ2VkKTogTm90aWZ5IGxpc3RlbmVycyBvZiBjYXB0aW9uIHByZWZlcmVuY2Ug
Y2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnJlZ2lzdGVyRm9yQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6IEFkZCBhIGNhcHRpb24gcHJlZmVyZW5j
ZXMgCisgICAgICAgICAgICBjaGFuZ2VzIGxpc3RlbmVyLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJh
Y2tzKTogUmVtb3ZlIGEgY2FwdGlvbiBwcmVmZXJlbmNlcworICAgICAgICAgICAgY2hhbmdlcyBs
aXN0ZW5lci4KKwogMjAxMi0xMC0wNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzMDU1NiBhbmQg
cjEzMDU2NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBiNDkxY2MwYWQwZmViYzM4YTJmMzg0MThkMWQ3
ZTJiMzc2YzRjZjM4Li4zODg1MDQ1MDZjZWRmZDRhOTgxYmYwOTY2OGIzNjdlNWUyNzM1MjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMTAtMDUgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgcG9ydHMgdG8gb3Zl
cnJpZGUgdGV4dCB0cmFjayByZW5kZXJpbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3ODAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MjA0NDk2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwg
cmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbToK
KyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKTogSW5pdGlhbGl6ZSBuZXcgV0tT
SSBmdW5jdGlvbiBwb2ludGVycy4KKworMjAxMi0wOS0yNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gKE9P
UFMhKS4KKyAgICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24g
b2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVy
LWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UpOgorCiAyMDEyLTEwLTA1ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMwNTU2
IGFuZCByMTMwNTY0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGEyNDNiMzhjZjNiMjEzNDc2MGE5NDA1MjcyY2Rj
MjRmMWU4NWZhMTQuLjZkZTcwMTk4NTQ2ZWUzMTNkNTAyNWRiYjRjYjY3NmEyOTNhYjFkYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMC0wNSAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyB0byBvdmVycmlkZSB0
ZXh0IHRyYWNrIHJlbmRlcmluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDQ0OTY0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAg
ICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOiBJbml0aWFsaXplIG5ldyBXS1NJIGZ1bmN0
aW9uIHBvaW50ZXJzLgorCiAyMDEyLTEwLTA1ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMwNTU2
IGFuZCByMTMwNTY0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4g
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA1Zjg3YWFiNWFkMTI4ZDc2YmVm
MDdkNGUzOTA0ODNiMjAwZGJmYzhmLi44YzUxMjYxZjJlY2RmOTcxMmM5OTgxODBiMThhMDYyZDM1
YzZiOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjU4NSwzICsyNTg1LDE4IEBAIF9fWk43
V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTZzaG93QWx0ZXJuYXRpdmVzRVA2
TlNWaWV3UktOU185RmxvYXRSCiBfX1pON1dlYkNvcmUyNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZUMxRVAxOE5TVGV4dEFsdGVybmF0aXZlczhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzJjb2xsZWN0
RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlc0VQMThOU0F0dHJpYnV0ZWRTdHJpbmdSTjNXVEY2VmVj
dG9ySU5TXzI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlRUxtMEVFRQogI2VuZGlmCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCitfd2tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNl
cworX3drQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlCitfd2tDYXB0
aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IKK193a0NhcHRpb25BcHBlYXJhbmNlQ29w
eUJhY2tncm91bmRDb2xvcgorX3drQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IKK193
a0NhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkKK193a0NhcHRpb25BcHBlYXJh
bmNlR2V0QmFja2dyb3VuZE9wYWNpdHkKK193a0NhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3Bh
Y2l0eQorX3drQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxlCitfd2tDYXB0aW9uQXBw
ZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZQorX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRU
ZXh0RWRnZVN0eWxlCitfd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlm
aWNhdGlvbgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggY2I3YmQ2NTEwZThjNjIzMzgzNjFmNTE5NTc3ZGU0MTQyOTIw
YTRlZC4uZTA0MTFkNGRmYzdjOTkwY2I0Y2ZkN2RkYzY5NTcxMDQxZjVlMDVjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTg1
Niw2ICs1ODU2LDcgQEAKIAkJQ0FFOUY5MTAxNDY0NDFGMDAwQzI0NUIxIC8qIENTU1ZhcmlhYmxl
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENB
RTlGOTBFMTQ2NDQxRjAwMEMyNDVCMSAvKiBDU1NWYXJpYWJsZVZhbHVlLmggKi87IH07CiAJCUNE
MTI3REVEMTRGMzA5N0QwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTI3REVCMTRGMzA5
NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbSAqLzsgfTsKIAkJQ0QxMjdE
RUUxNEYzMDk4NDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBF
ODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDI1NjVCQTE2MUU0NkE5MDA1NTYzNEQgLyog
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0VDMzhCODE2MTU0QzFBMDBFODE0NkQgLyogQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QyN0Y2RTUxNDU3Njg1QTAwNzgyMDdEIC8qIEpT
TWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEMjdGNkUyMTQ1NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5j
cHAgKi87IH07CiAJCUNEMjdGNkU3MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2
RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUNEMzdC
Mzk4MTVDMUI5NzEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzN0IzNzQxNUMxQTdFMTAw
NkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgKi87IH07CkBAIC03MTQ3LDYgKzcx
NDgsNyBAQAogCQkwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UxMTcwNjE0ODlFQkVCMDBF
QzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0UzOEEwQjE0OEZDRjBDMDA2RTFFQ0MgLyogSlNUZXh0VHJhY2tDdXN0
b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0b20u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdFQzM4QjgxNjE1NEMxQTAwRTgxNDZE
IC8qIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgwNkU1NzkxMjg5MzA0NTAwN0NFRDMyIC8qIFNW
R01hdHJpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdNYXRyaXguaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgwRTQ5MjExMjU1RjNCRDAwRUZDQTI3IC8q
IFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwODBFNDkyMjEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExh
eW91dEVuZ2luZUJhc2VsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjEzMDUsNiArMjEzMDcsNyBAQAogCQkJCUJDRTc4OTg1MTEyMEU3QTYwMDYwRUNFNSAvKiBC
aWRpUnVuLmggKi8sCiAJCQkJQkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVz
LmNwcCAqLywKIAkJCQlCQ0VBNDgxNjA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtfbGluZXMuaCAq
LywKKwkJCQkwN0VDMzhCODE2MTU0QzFBMDBFODE0NkQgLyogQ2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZExpc3RlbmVyLmggKi8sCiAJCQkJQkNERDQ1NEQxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVt
bkluZm8uaCAqLywKIAkJCQk5MzkyRjE0RjBBRDE4NjIzMDA2OTFCRDQgLyogQ291bnRlck5vZGUu
Y3BwICovLAogCQkJCTkzOTJGMTRCMEFEMTg2MUIwMDY5MUJENCAvKiBDb3VudGVyTm9kZS5oICov
LApAQCAtMjU1MzcsNiArMjU1NDAsNyBAQAogCQkJCTkzMUNCRDBEMTYxQTQ0RTkwMEU0Qzg3NCAv
KiBTY3JvbGxpbmdTdGF0ZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUNCRDBGMTYxQTQ0
RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMUNCRDExMTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZVRyZWUuaCBp
biBIZWFkZXJzICovLAorCQkJCUNEMjU2NUJBMTYxRTQ2QTkwMDU1NjM0RCAvKiBDYXB0aW9uUHJl
ZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHMuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL21l
ZGlhQ29udHJvbHMuY3NzCmluZGV4IDgxYjBlMTZiOTA1ZmM0NTRjYmEwNjgyMWVlZDYwYzQ1ZDEy
M2EyYmUuLjZkZjAzNDAyZDNhNGM5ZTc4YWJmOGY3N2VjNGFiMTNiZmJiZjg0ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzLmNzcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvbWVkaWFDb250cm9scy5jc3MKQEAgLTIxNiw3ICsyMTYsNyBAQCB2aWRlbzo6LXdl
YmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciB7CiAgICAgZm9udC1zaXplOiAyMnB4Owog
ICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOwogICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAg
ICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwKTsKKyAgICBjb2xvcjogcmdiYSgyNTUsIDI1
NSwgMjU1LCAxKTsKIAogICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CiAgICAgd29yZC1zcGFj
aW5nOiBub3JtYWw7CkBAIC0yMzQsOCArMjM0LDYgQEAgdmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4
dC10cmFjay1wYXN0LW5vZGVzIHsKIAogICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwg
MCwgMC44KTsKICAgICBwYWRkaW5nOiAycHggMnB4OwotCi0gICAgd2hpdGUtc3BhY2U6IHByZS13
cmFwOwogfQogCiB2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2RlcyB7
CkBAIC0yNDYsMTEgKzI0NCwxMCBAQCB2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1
dHVyZS1ub2RlcyB7CiAKICAgICBtYXJnaW4tbGVmdDogLTJweDsKICAgICBwYWRkaW5nOiAycHgg
MnB4IDJweCAwcHg7Ci0KLSAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiB9CiAKIHZpZGVvOjot
d2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSB7CiAgICAgcG9zaXRpb246IGFic29sdXRl
OwotICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOworICAgIG92ZXJmbG93OiBoaWRk
ZW47CisgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNDcxNjE2YTAwNjBhYzgyMjliN2JhNjMwNjM1MGVjODU4
Y2E2MDBjZC4uMDI1YmI3ZTRlNWUxZDQ0M2NlYjYxZTc1ZmI4NTAxMTYwMmQ1YTA3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC02OSw2ICs2OSw3IEBACiAj
aW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVmlkZW8uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAi
U2NyaXB0Q29udHJvbGxlci5oIgpAQCAtMjgxLDYgKzI4MiwxNCBAQCBIVE1MTWVkaWFFbGVtZW50
OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bQogCiAgICAgc2V0SGFzQ3VzdG9tQ2FsbGJhY2tzKCk7CiAgICAgYWRkRWxlbWVudFRv
RG9jdW1lbnRNYXAodGhpcywgZG9jdW1lbnQpOworCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
ICAgIGlmIChkb2N1bWVudC0+cGFnZSgpKSB7CisgICAgICAgIFJlbmRlclRoZW1lKiB0aGVtZSA9
IGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCk7CisgICAgICAgIGlmICh0aGVtZS0+dXNlckhhc0Nh
cHRpb25QcmVmZXJlbmNlcygpKQorICAgICAgICAgICAgbV9kaXNhYmxlQ2FwdGlvbnMgPSAhdGhl
bWUtPnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKKyAgICB9CisjZW5kaWYKIH0KIAogSFRNTE1lZGlh
RWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQpAQCAtNTQxLDYgKzU1MCwyMCBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNs
aWVudCgpLT5oaWRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihtX3Byb3h5V2lkZ2V0LmdldCgpKTsK
ICAgICB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAoZG9jdW1l
bnQoKS0+cGFnZSgpKQorICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPnJlZ2lz
dGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKKyNlbmRpZgor
fQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRldGFjaCgpCit7CisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgIGRvY3VtZW50KCkt
PnBhZ2UoKS0+dGhlbWUoKS0+dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRD
YWxsYmFja3ModGhpcyk7CisjZW5kaWYKKyAgICBIVE1MRWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpCkBAIC0y
NzgzLDI4ICsyODA2LDMwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbFJlbW92ZVRyYWNr
KEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKICAgICAgICAgbV90ZXh0VHJhY2tzV2hl
blJlc291cmNlU2VsZWN0aW9uQmVnYW4ucmVtb3ZlKGluZGV4KTsKIH0KIAotYm9vbCBIVE1MTWVk
aWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzTGFuZ3VhZ2UoY29uc3QgU3RyaW5nJikg
Y29uc3QKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6dXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0
CiB7Ci0gICAgLy8gRklYTUU6IGNoZWNrIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgcHJlZmVyZW5jZSAt
IGJ1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxMjEKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVuZGVyVGhlbWUqIHRoZW1lID0gcGFnZS0+dGhl
bWUoKTsKKyAgICByZXR1cm4gdGhlbWUtPnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSAmJiB0
aGVtZS0+dXNlclByZWZlcnNDYXB0aW9ucygpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OnVzZXJJc0ludGVyZXN0ZWRJblRoaXNUcmFja0tpbmQoU3RyaW5nIGtpbmQpIGNvbnN0CiB7Ci0g
ICAgLy8gSWYgLi4uIHRoZSB1c2VyIGhhcyBpbmRpY2F0ZWQgYW4gaW50ZXJlc3QgaW4gaGF2aW5n
IGEgdHJhY2sgd2l0aCB0aGlzIHRleHQgdHJhY2sga2luZCwgdGV4dCB0cmFjayBsYW5ndWFnZSwg
Li4uIAogICAgIGlmIChtX2Rpc2FibGVDYXB0aW9ucykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKLSAgICBp
ZiAoIXNldHRpbmdzKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCB1c2VyUHJlZmVy
c0NhcHRpb25zT3JTdWJ0aXRsZXMgPSBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZSB8fCB1c2VyUHJl
ZmVyc0NhcHRpb25zKCk7CiAKICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tl
eXdvcmQoKSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzLT5zaG91bGREaXNwbGF5U3VidGl0bGVz
KCkgfHwgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGU7CisgICAgICAgIHJldHVybiAoc2V0dGluZ3Mg
JiYgc2V0dGluZ3MtPnNob3VsZERpc3BsYXlTdWJ0aXRsZXMoKSkgfHwgdXNlclByZWZlcnNDYXB0
aW9uc09yU3VidGl0bGVzOwogICAgIGlmIChraW5kID09IFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3
b3JkKCkpCi0gICAgICAgIHJldHVybiBzZXR0aW5ncy0+c2hvdWxkRGlzcGxheUNhcHRpb25zKCkg
fHwgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGU7CisgICAgICAgIHJldHVybiAoc2V0dGluZ3MgJiYg
c2V0dGluZ3MtPnNob3VsZERpc3BsYXlDYXB0aW9ucygpKSB8fCB1c2VyUHJlZmVyc0NhcHRpb25z
T3JTdWJ0aXRsZXM7CiAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpkZXNjcmlwdGlvbnNLZXl3
b3JkKCkpCi0gICAgICAgIHJldHVybiBzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVRleHREZXNjcmlw
dGlvbnMoKSB8fCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsKKyAgICAgICAgcmV0dXJuIHNldHRp
bmdzICYmIHNldHRpbmdzLT5zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygpOwogCiAgICAg
cmV0dXJuIGZhbHNlOwogfQpAQCAtMzk2OSwyMiArMzk5NCwxMiBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sIGNsb3NlZENhcHRpb25WaXNpYmxl
KQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkgewogICAgICAgICBtX2Rpc2FibGVDYXB0aW9u
cyA9ICFtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsKLSAgICAgICAgCi0gICAgICAgIC8vIE1hcmsg
YWxsIHRyYWNrIGVsZW1lbnRzIGFzIG5vdCAiY29uZmlndXJlZCIgc28gdGhhdCBjb25maWd1cmVU
ZXh0VHJhY2tzKCkKLSAgICAgICAgLy8gd2lsbCByZWNvbnNpZGVyIHdoaWNoIHRyYWNrcyB0byBk
aXNwbGF5IGluIGxpZ2h0IG9mIG5ldyB1c2VyIHByZWZlcmVuY2VzCi0gICAgICAgIC8vIChlLmcu
IGRlZmF1bHQgdHJhY2tzIHNob3VsZCBub3QgYmUgZGlzcGxheWVkIGlmIHRoZSB1c2VyIGhhcyB0
dXJuZWQgb2ZmCi0gICAgICAgIC8vIGNhcHRpb25zIGFuZCBub24tZGVmYXVsdCB0cmFja3Mgc2hv
dWxkIGJlIGRpc3BsYXllZCBiYXNlZCBvbiBsYW5ndWFnZQotICAgICAgICAvLyBwcmVmZXJlbmNl
cyBpZiB0aGUgdXNlciBoYXMgdHVybmVkIGNhcHRpb25zIG9uKS4KLSAgICAgICAgZm9yIChOb2Rl
KiBub2RlID0gZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkg
ewotICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxUcmFja0VsZW1lbnQqPihub2RlKTsKLSAgICAgICAgICAg
IGlmICh0cmFja0VsZW1lbnQtPmtpbmQoKSA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgp
Ci0gICAgICAgICAgICAgICAgfHwgdHJhY2tFbGVtZW50LT5raW5kKCkgPT0gVGV4dFRyYWNrOjpz
dWJ0aXRsZXNLZXl3b3JkKCkpCi0gICAgICAgICAgICAgICAgdHJhY2tFbGVtZW50LT5zZXRIYXNC
ZWVuQ29uZmlndXJlZChmYWxzZSk7Ci0gICAgICAgIH0KIAorICAgICAgICBtYXJrQ2FwdGlvbkFu
ZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQoKTsKICAgICAgICAgY29uZmlndXJlVGV4dFRy
YWNrcygpOworCisgICAgICAgIGlmICghbV9kaXNhYmxlQ2FwdGlvbnMgJiYgKGhhc01lZGlhQ29u
dHJvbHMoKSB8fCBjcmVhdGVNZWRpYUNvbnRyb2xzKCkpKQorICAgICAgICAgICAgbWVkaWFDb250
cm9scygpLT51c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwogICAgIH0KICNlbHNlCiAg
ICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKQEAgLTQxNzIsNiArNDE4Nyw0MyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUNsb3NlZENhcHRpb25zQ29udHJvbHMoKQogICAgICAgICAg
ICAgbWVkaWFDb250cm9scygpLT51cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CiAgICAgfQogfQor
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQorewor
ICAgIGlmICghaXNWaWRlbygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtYXJrQ2FwdGlvbkFu
ZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQoKTsKKyAgICAKKyAgICBpZiAoIWhhc01lZGlh
Q29udHJvbHMoKSAmJiAhY3JlYXRlTWVkaWFDb250cm9scygpKQorICAgICAgICByZXR1cm47Cisg
ICAgbWVkaWFDb250cm9scygpLT51c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOworfQor
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1Vu
Y29uZmlndXJlZCgpCit7CisgICAgLy8gTWFyayBhbGwgdHJhY2sgZWxlbWVudHMgYXMgbm90ICJj
b25maWd1cmVkIiBzbyB0aGF0IGNvbmZpZ3VyZVRleHRUcmFja3MoKQorICAgIC8vIHdpbGwgcmVj
b25zaWRlciB3aGljaCB0cmFja3MgdG8gZGlzcGxheSBpbiBsaWdodCBvZiBuZXcgdXNlciBwcmVm
ZXJlbmNlcworICAgIC8vIChlLmcuIGRlZmF1bHQgdHJhY2tzIHNob3VsZCBub3QgYmUgZGlzcGxh
eWVkIGlmIHRoZSB1c2VyIGhhcyB0dXJuZWQgb2ZmCisgICAgLy8gY2FwdGlvbnMgYW5kIG5vbi1k
ZWZhdWx0IHRyYWNrcyBzaG91bGQgYmUgZGlzcGxheWVkIGJhc2VkIG9uIGxhbmd1YWdlCisgICAg
Ly8gcHJlZmVyZW5jZXMgaWYgdGhlIHVzZXIgaGFzIHR1cm5lZCBjYXB0aW9ucyBvbikuCisgICAg
Zm9yIChSZWZQdHI8Tm9kZT4gbm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUt
Pm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFn
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgSFRNTFRyYWNrRWxl
bWVudCogdHJhY2tFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFRyYWNrRWxlbWVudCo+KG5vZGUu
Z2V0KCkpOworICAgICAgICBSZWZQdHI8VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSB0cmFja0VsZW1l
bnQtPnRyYWNrKCk7CisgICAgICAgIGlmICghdGV4dFRyYWNrKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIAorICAgICAgICBTdHJpbmcga2luZCA9IHRleHRUcmFjay0+a2luZCgpOwor
CisgICAgICAgIGlmIChraW5kID09IFRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCgpIHx8IGtp
bmQgPT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSkKKyAgICAgICAgICAgIHRyYWNrRWxl
bWVudC0+c2V0SGFzQmVlbkNvbmZpZ3VyZWQoZmFsc2UpOworICAgIH0KKyAgICBjb25maWd1cmVU
ZXh0VHJhY2tzKCk7Cit9CisKICNlbmRpZgogCiB2b2lkKiBIVE1MTWVkaWFFbGVtZW50OjpwcmVE
aXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCmluZGV4IDgyMWUyMjg1YjQxY2RjZWIwNTYzN2NkY2I1MDE4NTg5OGU1YmQ5
ZDAuLjdlODRiNzVkOTI5ZjE3MmU3Y2M2ODEwMjhlMmQ2ZGQzMmNiNGZiZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUg
IkNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkdlbmVyaWNF
dmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgiCkBAIC03OCw3ICs3OSw3IEBAIHR5cGVkZWYg
VmVjdG9yPEN1ZUludGVydmFsVHJlZTo6SW50ZXJ2YWxUeXBlPiBDdWVMaXN0OwogCiBjbGFzcyBI
VE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJD
bGllbnQsIHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRp
YUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNv
bnRyb2xsZXJJbnRlcmZhY2UKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgLCBwcml2YXRl
IFRleHRUcmFja0NsaWVudAorICAgICwgcHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQsIHByaXZhdGUg
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyCiAjZW5kaWYKIHsKIHB1YmxpYzoKQEAg
LTI0MCw2ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tzKCk7
CiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tHcm91cChjb25zdCBUcmFja0dyb3VwJikgY29u
c3Q7CiAKKyAgICBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdDsKICAgICBib29sIHVz
ZXJJc0ludGVyZXN0ZWRJblRoaXNUcmFja0tpbmQoU3RyaW5nKSBjb25zdDsKICAgICBib29sIHRl
eHRUcmFja3NBcmVSZWFkeSgpIGNvbnN0OwogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrRGlz
cGxheSgpOwpAQCAtMzI1LDcgKzMyNyw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
YXR0YWNoKCk7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2goKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIE9WRVJSSURFOwogCkBAIC00NzQsMTIg
KzQ3NywxNCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIHZvaWQg
dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhmbG9hdCk7Ci0gICAgYm9vbCB1c2VySXNJbnRlcmVz
dGVkSW5UaGlzTGFuZ3VhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgSFRNTFRyYWNrRWxl
bWVudCogc2hvd2luZ1RyYWNrV2l0aFNhbWVLaW5kKEhUTUxUcmFja0VsZW1lbnQqKSBjb25zdDsK
IAogICAgIGJvb2wgaWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKSBjb25zdCB7IHJl
dHVybiBtX2lnbm9yZVRyYWNrRGlzcGxheVVwZGF0ZSA+IDA7IH0KICAgICB2b2lkIGJlZ2luSWdu
b3JpbmdUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygpIHsgKyttX2lnbm9yZVRyYWNrRGlzcGxh
eVVwZGF0ZTsgfQogICAgIHZvaWQgZW5kSWdub3JpbmdUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0
cygpIHsgQVNTRVJUKG1faWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlKTsgLS1tX2lnbm9yZVRyYWNr
RGlzcGxheVVwZGF0ZTsgfQorCisgICAgdm9pZCBtYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tz
QXNVbmNvbmZpZ3VyZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZCgpIE9WRVJSSURFOwogI2VuZGlmCiAKICAgICAvLyBUaGVzZSAiaW50ZXJuYWwiIGZ1bmN0
aW9ucyBkbyBub3QgY2hlY2sgdXNlciBnZXN0dXJlIHJlc3RyaWN0aW9ucy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA4
ODFjMmRlYjVjY2EyZTdhOWI4ZjE0ZjRkZjBjNWI1NjVhMWFjZTliLi5jNTE5MzFiYTIxNzcwYzYw
ODgxNjVlOTk5YzE1OTIyYTdkNTczYTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC00NSw5ICs0NSwxMSBAQAogI2lu
Y2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIK
ICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sUm9v
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xzLmgiCiAjaW5jbHVkZSAiTW91c2VF
dmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNs
dWRlICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJJbmxp
bmUuaCIKICNpbmNsdWRlICJSZW5kZXJNZWRpYS5oIgpAQCAtMTMxMCw2ICsxMzEyLDMyIEBAIGNv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
c2hhZG93UHNldWRvSWQoKSBjb25zCiAgICAgcmV0dXJuIGlkOwogfQogCit2b2lkIE1lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEtVUkwsIGNhcHRpb25zU3R5bGVTaGVl
dFVSTCwgKFBhcnNlZFVSTFN0cmluZywgInVzZXItY2FwdGlvbnMtb3ZlcnJpZGU6MDFGNkFGMTIt
QzNCMC00RjcwLUFGNUUtQTNFMDAyMzREQzIzIikpOworCisgICAgUGFnZSogcGFnZSA9IGRvY3Vt
ZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIFJl
bmRlclRoZW1lKiB0aGVtZSA9IHBhZ2UtPnRoZW1lKCk7CisgICAgSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50ID0gdG9QYXJlbnRNZWRpYUVsZW1lbnQodGhpcyk7CisKKyAgICBtZWRpYUVs
ZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKworICAgIHBhZ2UtPmdyb3VwKCkucmVtb3Zl
VXNlclN0eWxlU2hlZXRGcm9tV29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25z
U3R5bGVTaGVldFVSTCk7CisKKyAgICBpZiAoIW1lZGlhRWxlbWVudC0+Y2xvc2VkQ2FwdGlvbnNW
aXNpYmxlKCkgJiYgIXRoZW1lLT51c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFN0cmluZyBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldCA9IHRoZW1l
LT5jYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpOworICAgIGlmIChjYXB0aW9uc092ZXJyaWRl
U3R5bGVTaGVldC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPmdyb3Vw
KCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldCwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMLCBhZG9wdFB0cihu
ZXcgVmVjdG9yPFN0cmluZz4pLCBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4pLCAKKyAgICAg
ICAgSW5qZWN0SW5BbGxGcmFtZXMsIFVzZXJTdHlsZUF1dGhvckxldmVsLCBJbmplY3RJbkV4aXN0
aW5nRG9jdW1lbnRzKTsKK30KKwogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKIHsKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxlbWVudCh0aGlzKTsKQEAgLTEzNzYsMjIgKzE0MDQsMTgg
QEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNw
bGF5KCkKICAgICBoYXNDaGlsZE5vZGVzKCkgPyBzaG93KCkgOiBoaWRlKCk7CiB9CiAKLXN0YXRp
YyBjb25zdCBmbG9hdCBtaW1pbXVtRm9udFNpemUgPSAxNjsKLXN0YXRpYyBjb25zdCBmbG9hdCB2
aWRlb0hlaWdodEZvbnRTaXplUGVyY2VudGFnZSA9IC4wNTsKLXN0YXRpYyBjb25zdCBmbG9hdCB0
cmFja0JvdHRvbU11bHRpcGxpZXIgPSAuOTsKLQogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50Ojp1cGRhdGVTaXplcygpCiB7CiAgICAgSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50ID0gdG9QYXJlbnRNZWRpYUVsZW1lbnQodGhpcyk7CiAgICAgaWYgKCFtZWRp
YUVsZW1lbnQgfHwgIW1lZGlhRWxlbWVudC0+cmVuZGVyZXIoKSB8fCAhbWVkaWFFbGVtZW50LT5y
ZW5kZXJlcigpLT5pc1ZpZGVvKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFJlY3Qgdmlk
ZW9Cb3ggPSB0b1JlbmRlclZpZGVvKG1lZGlhRWxlbWVudC0+cmVuZGVyZXIoKSktPnZpZGVvQm94
KCk7Ci0gICAgaWYgKG1fdmlkZW9EaXNwbGF5U2l6ZSA9PSB2aWRlb0JveCkKKyAgICBpZiAoIWRv
Y3VtZW50KCktPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fdmlkZW9EaXNwbGF5U2l6
ZSA9IHZpZGVvQm94OwogCi0gICAgZmxvYXQgZm9udFNpemUgPSBtX3ZpZGVvRGlzcGxheVNpemUu
c2l6ZSgpLmhlaWdodCgpICogdmlkZW9IZWlnaHRGb250U2l6ZVBlcmNlbnRhZ2U7CisgICAgSW50
UmVjdCB2aWRlb0JveCA9IHRvUmVuZGVyVmlkZW8obWVkaWFFbGVtZW50LT5yZW5kZXJlcigpKS0+
dmlkZW9Cb3goKTsKKworICAgIGZsb2F0IGZvbnRTaXplID0gdmlkZW9Cb3guc2l6ZSgpLmhlaWdo
dCgpICogKGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+Y2FwdGlvbkZvbnRTaXplU2NhbGUo
KSk7CiAgICAgaWYgKGZvbnRTaXplICE9IG1fZm9udFNpemUpIHsKICAgICAgICAgbV9mb250U2l6
ZSA9IGZvbnRTaXplOwogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFNpemUsIFN0cmluZzo6bnVtYmVyKGZvbnRTaXplKSArICJweCIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKaW5kZXggZWZmZGNl
ZTdmMWM3ZjUyNzVhYWIyY2ExY2ZiZjlmMDZjYTQ0NDExNC4uN2M3YzVkZDUyMTllYzViNDYyYzIy
MzI5NTJjNTY2ZmQ1ZDViOTg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCkBAIC01MzcsNiArNTM3LDcgQEAgY2xhc3MgTWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVt
ZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAorICAgIHZvaWQgdXNlckNh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKICAgICB2b2lkIHVwZGF0ZURpc3BsYXkoKTsKICAg
ICB2b2lkIHVwZGF0ZVNpemVzKCk7CiAKQEAgLTU0Nyw3ICs1NDgsOCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCB7IHJl
dHVybiBNZWRpYVRleHRUcmFja0Rpc3BsYXlDb250YWluZXI7IH0KICAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIAotICAgIEludFJlY3QgbV92
aWRlb0Rpc3BsYXlTaXplOworICAgIHZvaWQgdXBkYXRlQ2FwdGlvbkFwcGVhcmFuY2UoKTsKKwog
ICAgIGZsb2F0IG1fZm9udFNpemU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAKaW5kZXggZWY1NDFiYWEzM2Ix
ZThiZGYwZjA5MzIyYzVmZTA5NzZiMjcxNzc4OC4uMDM2OGU4N2ZjMTY3YTFmZTk3ZWYwNjgxNWE3
YmU0ZTA1MDNhZjdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcApAQCAtNjMwLDYgKzYzMCwxMiBAQCB2b2lkIE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCkKICAgICBpbnNl
cnRCZWZvcmUodGV4dERpc3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBtX3BhbmVsLCBlYywgdHJ1
ZSk7CiB9CiAKK3ZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnVzZXJDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV90ZXh0RGlzcGxheUNvbnRhaW5lcikKKyAgICAg
ICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+dXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQo
KTsKK30KKwogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2hvd1RleHRUcmFja0Rpc3Bs
YXkoKQogewogICAgIGlmICghbV90ZXh0RGlzcGxheUNvbnRhaW5lcikKQEAgLTY1MCw3ICs2NTYs
NiBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojp1cGRhdGVUZXh0VHJhY2tEaXNwbGF5
KCkKICAgICAgICAgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogCiAgICAgbV90ZXh0RGlzcGxh
eUNvbnRhaW5lci0+dXBkYXRlRGlzcGxheSgpOwotCiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmgKaW5kZXgg
YTBiMDlkODc0NWI3YWM2MWE3ZDU5NmQ0MWEyMzg5NjZiNjFmNGI0Yi4uOTAxMGUxMDUxNTk3NjA1
ZWJhYzhlZGRiMGFkMWNiMmFkOGNmMTYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5oCkBAIC0xMDUsOSArMTA1LDEwIEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGNyZWF0ZVRleHRU
cmFja0Rpc3BsYXkoKTsKLSAgICB2b2lkIHNob3dUZXh0VHJhY2tEaXNwbGF5KCk7Ci0gICAgdm9p
ZCBoaWRlVGV4dFRyYWNrRGlzcGxheSgpOwotICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlzcGxh
eSgpOworICAgIHZpcnR1YWwgdm9pZCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzaG93VGV4dFRyYWNrRGlzcGxheSgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBoaWRlVGV4dFRyYWNrRGlzcGxheSgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCkgT1ZFUlJJREU7CiAjZW5kaWYK
IAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIaWRlQ29udHJvbHMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaAppbmRleCAyODkwOGE5YTEwN2U0NTcwMzkyODY4
MzIwMzNkYmEyOGQwMzdiNjM2Li44YTk5YmMxOGU0NjhlNmMxNzU5YmIyMzQ5YzgwNTAxNDBhYTY2
MjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCkBAIC03
Myw2ICs3Myw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbHMgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQg
ewogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIaWRlQ29udHJvbHMoKSA9IDA7CiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisgICAgdmlydHVhbCB2b2lkIHVzZXJDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkKCkgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBzaG93VGV4dFRyYWNrRGlzcGxheSgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZVRleHRUcmFja0Rpc3BsYXkoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggNmFiY2FjY2Q4NzYwZmE1ZTE0NWFkMGNhODFlZWFk
YmEwOThhYTdhNS4uMWIzNWVmY2FkODRlNmMzYWYzYWQzOWQ5ODdjY2M0MGQ5MTQyYWI0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtOTQsNyArOTQsNyBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKQogICAgIHJldHVy
biBlbmRlZDsKIH0KIAotVGV4dFRyYWNrOjpUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlw
ZSB0eXBlKQorVGV4dFRyYWNrOjpUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2luZCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSwg
VGV4dFRyYWNrVHlwZSB0eXBlKQogICAgIDogVHJhY2tCYXNlKGNvbnRleHQsIFRyYWNrQmFzZTo6
VGV4dFRyYWNrKQogICAgICwgbV9jdWVzKDApCiAgICAgLCBtX21lZGlhRWxlbWVudCgwKQpAQCAt
MTE3LDcgKzExNyw3IEBAIFRleHRUcmFjazo6flRleHRUcmFjaygpCiAgICAgY2xlYXJDbGllbnQo
KTsKIH0KIAotYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBTdHJpbmcm
IHZhbHVlKQorYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQogewogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgc3VidGl0
bGVzS2V5d29yZCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzMsNyArMTMzLDcgQEAg
Ym9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBTdHJpbmcmIHZhbHVlKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBUZXh0VHJhY2s6OnNldEtpbmQoY29uc3QgU3Ry
aW5nJiBraW5kKQordm9pZCBUZXh0VHJhY2s6OnNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBr
aW5kKQogewogICAgIFN0cmluZyBvbGRLaW5kID0gbV9raW5kOwogCkBAIC0xNDYsNyArMTQ2LDcg
QEAgdm9pZCBUZXh0VHJhY2s6OnNldEtpbmQoY29uc3QgU3RyaW5nJiBraW5kKQogICAgICAgICBt
X2NsaWVudC0+dGV4dFRyYWNrS2luZENoYW5nZWQodGhpcyk7CiB9CiAKLXZvaWQgVGV4dFRyYWNr
OjpzZXRNb2RlKGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgVGV4dFRyYWNrOjpzZXRNb2RlKGNv
bnN0IEF0b21pY1N0cmluZyYgbW9kZSkKIHsKICAgICAvLyBPbiBzZXR0aW5nLCBpZiB0aGUgbmV3
IHZhbHVlIGlzbid0IGVxdWFsIHRvIHdoYXQgdGhlIGF0dHJpYnV0ZSB3b3VsZCBjdXJyZW50bHkK
ICAgICAvLyByZXR1cm4sIHRoZSBuZXcgdmFsdWUgbXVzdCBiZSBwcm9jZXNzZWQgYXMgZm9sbG93
cyAuLi4KQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFRleHRUcmFjazo6c2V0TW9kZShjb25zdCBT
dHJpbmcmIG1vZGUpCiAgICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tNb2RlQ2hhbmdlZCh0aGlz
KTsKIH0KIAotU3RyaW5nIFRleHRUcmFjazo6bW9kZSgpIGNvbnN0CitBdG9taWNTdHJpbmcgVGV4
dFRyYWNrOjptb2RlKCkgY29uc3QKIHsKICAgICAvLyBUaGUgdGV4dCB0cmFjayAic2hvd2luZyIg
YW5kICJzaG93aW5nIGJ5IGRlZmF1bHQiIG1vZGVzIHJldHVybiB0aGUgc3RyaW5nICJzaG93aW5n
Ii4KICAgICBpZiAobV9zaG93aW5nQnlEZWZhdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmgKaW5kZXggMmM3OTllZDA0NzBmNThmNjQzYTJiYzc5YzdjNjQxNGM3YzIxMmI2Yi4u
M2JhNGQzN2JhOWJmYTQ2MDBmMGRkMWVlZTA3Y2JiODI1OGU0ZDJmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogY2xhc3Mg
VGV4dFRyYWNrIDogcHVibGljIFRyYWNrQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGV4dFRyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
VGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJh
Y2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBraW5kLCBjb25zdCBBdG9taWNT
dHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2soY29udGV4dCwgY2xpZW50LCBraW5kLCBs
YWJlbCwgbGFuZ3VhZ2UsIEFkZFRyYWNrKSk7CiAgICAgfQpAQCAtNjMsMjggKzYzLDI4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50
KSB7IG1fbWVkaWFFbGVtZW50ID0gZWxlbWVudDsgfQogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1l
ZGlhRWxlbWVudCgpIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9CiAKLSAgICBTdHJpbmcga2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQotICAgIHZvaWQgc2V0S2luZChjb25zdCBTdHJp
bmcmKTsKKyAgICBBdG9taWNTdHJpbmcga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQor
ICAgIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBjYXB0aW9uc0tleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBkZXNjcmlwdGlvbnNLZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgY2hhcHRlcnNLZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWV0
YWRhdGFLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0
IFN0cmluZyYpOworICAgIHN0YXRpYyBib29sIGlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9t
aWNTdHJpbmcmKTsKIAotICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7
IH0KLSAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxh
YmVsOyB9CisgICAgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsg
fQorICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCkgeyBtX2xhYmVs
ID0gbGFiZWw7IH0KIAotICAgIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFu
Z3VhZ2U7IH0KLSAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpIHsg
bV9sYW5ndWFnZSA9IGxhbmd1YWdlOyB9CisgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29u
c3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQorICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRv
bWljU3RyaW5nJiBsYW5ndWFnZSkgeyBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7IH0KIAogICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpc2FibGVkS2V5d29yZCgpOwogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGhpZGRlbktleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBzaG93aW5nS2V5d29yZCgpOwogCi0gICAgU3RyaW5nIG1vZGUoKSBjb25zdDsK
LSAgICB2b2lkIHNldE1vZGUoY29uc3QgU3RyaW5nJik7CisgICAgQXRvbWljU3RyaW5nIG1vZGUo
KSBjb25zdDsKKyAgICB2b2lkIHNldE1vZGUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKICAgICBi
b29sIHNob3dpbmdCeURlZmF1bHQoKSBjb25zdCB7IHJldHVybiBtX3Nob3dpbmdCeURlZmF1bHQ7
IH0KICAgICB2b2lkIHNldFNob3dpbmdCeURlZmF1bHQoYm9vbCBzaG93aW5nKSB7IG1fc2hvd2lu
Z0J5RGVmYXVsdCA9IHNob3dpbmc7IH0KQEAgLTExNiwxNyArMTE2LDE3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzUmVuZGVyZWQoKTsKIAogcHJvdGVjdGVkOgotICAgIFRleHRUcmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBraW5kLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBl
KTsKKyAgICBUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVu
dCosIGNvbnN0IEF0b21pY1N0cmluZyYga2luZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSk7CiAKICAgICBSZWZQ
dHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwogCiBwcml2YXRlOgogICAgIFRleHRUcmFja0N1
ZUxpc3QqIGVuc3VyZVRleHRUcmFja0N1ZUxpc3QoKTsKICAgICBIVE1MTWVkaWFFbGVtZW50KiBt
X21lZGlhRWxlbWVudDsKLSAgICBTdHJpbmcgbV9raW5kOwotICAgIFN0cmluZyBtX2xhYmVsOwot
ICAgIFN0cmluZyBtX2xhbmd1YWdlOwotICAgIFN0cmluZyBtX21vZGU7CisgICAgQXRvbWljU3Ry
aW5nIG1fa2luZDsKKyAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKKyAgICBBdG9taWNTdHJpbmcg
bV9sYW5ndWFnZTsKKyAgICBBdG9taWNTdHJpbmcgbV9tb2RlOwogICAgIFRleHRUcmFja0NsaWVu
dCogbV9jbGllbnQ7CiAgICAgVGV4dFRyYWNrVHlwZSBtX3RyYWNrVHlwZTsKICAgICBSZWFkaW5l
c3NTdGF0ZSBtX3JlYWRpbmVzc1N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuY3BwCmluZGV4IDJmZDRmMWQ0YmNkMDlkNWU0YmUzM2Y3NDZiNWUyZDZlNWViY2Fk
NGMuLmJiNzM0NDVlNTczOTkyODdhOGNkYzIyZDU0MmYwZmI0ZjA4NWIxZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTk1LDYgKzk1LDcgQEAgVGV4
dFRyYWNrQ3VlQm94OjpUZXh0VHJhY2tDdWVCb3goRG9jdW1lbnQqIGRvY3VtZW50LCBUZXh0VHJh
Y2tDdWUqIGN1ZSkKICAgICA6IEhUTUxFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpCiAgICAgLCBt
X2N1ZShjdWUpCiB7CisgICAgc2V0U2hhZG93UHNldWRvSWQoc2hhZG93UHNldWRvSWQoKSk7CiB9
CiAKIFRleHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlQm94OjpnZXRDdWUoKSBjb25zdApAQCAtMTY3
LDEyICsxNjgsMTcgQEAgdm9pZCBUZXh0VHJhY2tDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcygp
CiAgICAgfQogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0N1ZUJveDo6c2hhZG93
UHNldWRvSWQoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tDdWVCb3g6OnRl
eHRUcmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRvSWQsICgiLXdl
YmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXkiKSk7CiAgICAgcmV0dXJuIHRyYWNrRGlzcGxh
eUJveFNoYWRvd1BzZXVkb0lkOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0N1
ZUJveDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIHJldHVybiB0ZXh0VHJhY2tDdWVC
b3hTaGFkb3dQc2V1ZG9JZCgpOworfQorCiBSZW5kZXJPYmplY3QqIFRleHRUcmFja0N1ZUJveDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRleHRUcmFja0N1ZSh0aGlzKTsKQEAgLTE4MCw2ICsx
ODYsMTggQEAgUmVuZGVyT2JqZWN0KiBUZXh0VHJhY2tDdWVCb3g6OmNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKK2NvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrQ3VlOjpwYXN0Tm9kZXNT
aGFkb3dQc2V1ZG9JZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIHN1YnRpdGxlcywgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcyIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gc3VidGl0
bGVzOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0N1ZTo6ZnV0dXJlTm9kZXNT
aGFkb3dQc2V1ZG9JZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIHN1YnRpdGxlcywgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZnV0dXJlLW5vZGVz
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBzdWJ0
aXRsZXM7Cit9CisKIFRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBj
b250ZW50KQogICAgIDogbV9zdGFydFRpbWUoc3RhcnQpCiAgICAgLCBtX2VuZFRpbWUoZW5kKQpA
QCAtNjUyLDkgKzY3MCw2IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjp1cGRhdGVEaXNwbGF5VHJlZShm
bG9hdCBtb3ZpZVRpbWUpCiAgICAgLy8gdGltZXN0YW1wcyAocHJvY2Vzc2luZyBpbnN0cnVjdGlv
bnMpLCBhbG9uZyB3aXRoIGRpc3BsYXlhYmxlIG5vZGVzLgogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgU3RyaW5nLCB0aW1lc3RhbXBUYWcsIChBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIp
KSk7CiAKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhY2tQ
YXN0Tm9kZXNTaGFkb3dQc2V1ZG9JZCwgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1u
b2RlcyIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJh
Y2tGdXR1cmVOb2Rlc1NoYWRvd1BzZXVkb0lkLCAoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1m
dXR1cmUtbm9kZXMiKSk7Ci0KICAgICBpZiAoIXRyYWNrKCktPmlzUmVuZGVyZWQoKSkKICAgICAg
IHJldHVybjsKIApAQCAtNjYyLDEwICs2NzcsMTAgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OnVwZGF0
ZURpc3BsYXlUcmVlKGZsb2F0IG1vdmllVGltZSkKIAogICAgIC8vIENsZWFyIHRoZSBjb250ZW50
cyBvZiB0aGUgdHdvIHNldHMuCiAgICAgbV9mdXR1cmVEb2N1bWVudE5vZGVzLT5yZW1vdmVDaGls
ZHJlbigpOwotICAgIG1fZnV0dXJlRG9jdW1lbnROb2Rlcy0+c2V0U2hhZG93UHNldWRvSWQodHJh
Y2tGdXR1cmVOb2Rlc1NoYWRvd1BzZXVkb0lkKTsKKyAgICBtX2Z1dHVyZURvY3VtZW50Tm9kZXMt
PnNldFNoYWRvd1BzZXVkb0lkKGZ1dHVyZU5vZGVzU2hhZG93UHNldWRvSWQoKSk7CiAKICAgICBt
X3Bhc3REb2N1bWVudE5vZGVzLT5yZW1vdmVDaGlsZHJlbigpOwotICAgIG1fcGFzdERvY3VtZW50
Tm9kZXMtPnNldFNoYWRvd1BzZXVkb0lkKHRyYWNrUGFzdE5vZGVzU2hhZG93UHNldWRvSWQpOwor
ICAgIG1fcGFzdERvY3VtZW50Tm9kZXMtPnNldFNoYWRvd1BzZXVkb0lkKHBhc3ROb2Rlc1NoYWRv
d1BzZXVkb0lkKCkpOwogCiAgICAgLy8gVXBkYXRlIHRoZSB0d28gc2V0cyBjb250YWluaW5nIHBh
c3QgYW5kIGZ1dHVyZSBXZWJWVFQgb2JqZWN0cy4KICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gcmVmZXJlbmNlVHJlZSA9IGdldEN1ZUFzSFRNTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmgKaW5kZXggMTE1YTg2ODA5ZjZmNjA2YjMxMmRhNTBlMWE4OGI4MTQ3
MjAyNWExZS4uM2UyOWQxZTc0MjU4ZjczMThjMGI3MTFjMDk5ODcwMWQ0ZWRiZjBhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCkBAIC02MCw2ICs2MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFwcGx5Q1NTUHJvcGVydGllcygpOwogCiAgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dFRyYWNrQ3VlQm94U2hhZG93UHNldWRvSWQoKTsK
IAogcHJpdmF0ZToKICAgICBUZXh0VHJhY2tDdWVCb3goRG9jdW1lbnQqLCBUZXh0VHJhY2tDdWUq
KTsKQEAgLTgwLDYgKzgxLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGV4dFRyYWNrQ3Vl
KCk7CiAKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBwYXN0Tm9kZXNTaGFkb3dQc2V1
ZG9JZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGZ1dHVyZU5vZGVzU2hhZG93
UHNldWRvSWQoKTsKKwogICAgIFRleHRUcmFjayogdHJhY2soKSBjb25zdDsKICAgICB2b2lkIHNl
dFRyYWNrKFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IGU5Y2EzN2E3M2Ex
YmZhNDU1MTkxODE1ZTM2NmQ3MjI3YjhlMWZjODIuLmQ4ZjYxNTY5NGQ2MGM5NGM0MjFjZDk5OTE1
ZGVhMDY5OTE5OWQzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApAQCAtMzMzLDYgKzMzMyw0MCBAQCBleHRlcm4gQ0dG
bG9hdCAoKndrTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEpKENHRmxvYXQgZGVsdGEpOwog
ZXh0ZXJuIENHRmxvYXQgKCp3a05TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKShDR0Zsb2F0
IGRlbHRhKTsKICNlbmRpZgogCit0eXBlZGVmIGVudW0geworICAgIHdrQ2FwdGlvbkZvbnRTdHls
ZURlZmF1bHQgPSAwLAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZU1vbm9zcGFjZWRXaXRoU2VyaWYs
CisgICAgd2tDYXB0aW9uRm9udFN0eWxlUHJvcG9ydGlvbmFsV2l0aFNlcmlmLAorICAgIHdrQ2Fw
dGlvbkZvbnRTdHlsZU1vbm9zcGFjZWRXaXRob3V0U2VyaWYsCisgICAgd2tDYXB0aW9uRm9udFN0
eWxlUHJvcG9ydGlvbmFsV2l0aG91dFNlcmlmLAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZUNhc3Vh
bCwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVDdXJzaXZlLAorICAgIHdrQ2FwdGlvbkZvbnRTdHls
ZVNtYWxsQ2FwaXRhbCwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVNYXgKK30gd2tDYXB0aW9uRm9u
dFN0eWxlOworCit0eXBlZGVmIGVudW0geworICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVVbmRl
ZmluZWQgPSAwLAorICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVOb25lLAorICAgIHdrQ2FwdGlv
blRleHRFZGdlU3R5bGVSYWlzZWQsCisgICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZURlcHJlc3Nl
ZCwKKyAgICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlVW5pZm9ybSwKKyAgICB3a0NhcHRpb25UZXh0
RWRnZVN0eWxlRHJvcFNoYWRvdywKKyAgICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlTWF4Cit9IHdr
Q2FwdGlvblRleHRFZGdlU3R5bGU7CisKK2V4dGVybiBib29sICgqd2tDYXB0aW9uQXBwZWFyYW5j
ZUhhc1VzZXJQcmVmZXJlbmNlcykodm9pZCk7CitleHRlcm4gYm9vbCAoKndrQ2FwdGlvbkFwcGVh
cmFuY2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKSh2b2lkKTsKK2V4dGVybiBDR0NvbG9yUmVm
KCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcikodm9pZCk7CitleHRlcm4g
Q0dDb2xvclJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IpKHZvaWQp
OworZXh0ZXJuIENHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3Ip
KHZvaWQpOworZXh0ZXJuIGJvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3Bh
Y2l0eSkoQ0dGbG9hdCopOworZXh0ZXJuIGJvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNr
Z3JvdW5kT3BhY2l0eSkoQ0dGbG9hdCopOworZXh0ZXJuIGJvb2woKndrQ2FwdGlvbkFwcGVhcmFu
Y2VHZXRXaW5kb3dPcGFjaXR5KShDR0Zsb2F0Kik7CitleHRlcm4gQ0dGb250UmVmKCp3a0NhcHRp
b25BcHBlYXJhbmNlQ29weUZvbnRGb3JTdHlsZSkoaW50KTsKK2V4dGVybiBib29sKCp3a0NhcHRp
b25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKShDR0Zsb2F0Kik7CitleHRlcm4g
aW50KCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSkodm9pZCk7CitleHRlcm4g
Q0ZTdHJpbmdSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmlj
YXRpb24pKHZvaWQpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggZjFhZWYyN2I0OTYzM2Ez
YjZmM2Q4ZGM1Njc0YTA0MTY3ZGQ5Y2ViZS4uNTIyZjVlY2Q4MDI4YTIzZjgxNjUyMjQ4YTAwMzli
NzU5ZTQ1NDFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTIxMiwzICsyMTIsMTUgQEAgQ0dGbG9hdCAoKndr
TlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEpKENHRmxvYXQgZGVsdGEpOwogQ0dGbG9hdCAo
KndrTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEpKENHRmxvYXQgZGVsdGEpOwogI2VuZGlm
CiAKK2Jvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzKSh2b2lkKTsK
K2Jvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJsZSkodm9p
ZCk7CitDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvciko
dm9pZCk7CitDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xv
cikodm9pZCk7CitDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9y
KSh2b2lkKTsKK2Jvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSko
Q0dGbG9hdCopOworYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5
KShDR0Zsb2F0Kik7Citib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3BhY2l0eSko
Q0dGbG9hdCopOworQ0dGb250UmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvbnRGb3JTdHls
ZSkoaW50KTsKK2Jvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNp
emUpKENHRmxvYXQqKTsKK2ludCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUp
KHZvaWQpOworQ0ZTdHJpbmdSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5n
ZWROb3RpZmljYXRpb24pKHZvaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0NhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ2OGYyMTkxZTY4NGIyMDcwNjhiMDU4OWI5MmVlMTE0ODQ2MDE3NjEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExp
c3RlbmVyLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5l
cl9oCisjZGVmaW5lIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcl9oCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVy
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgp
ID0gMDsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5DYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
TGlzdGVuZXIoKSB7IH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5oCmluZGV4IDM2ZTQ5ZjI2Y2RiY2FlOGRjZGU5NjE3MTY1MDBjMGRiYjRiZTA1
ZDQuLjQ0YTIxMWRmNzg4Y2E4OTI3NWYzMzU1M2M4NDIzNTdjZGEzOTIyZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC00Niw2ICs0Niw5IEBAIGNsYXNzIFJlbmRl
ck1ldGVyOwogI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQogY2xhc3MgUmVuZGVyUHJvZ3Jl
c3M7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitjbGFzcyBDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkTGlzdGVuZXI7CisjZW5kaWYKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiAKIGNs
YXNzIFJlbmRlclRoZW1lIDogcHVibGljIFJlZkNvdW50ZWQ8UmVuZGVyVGhlbWU+IHsKQEAgLTIz
MCw2ICsyMzMsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnRTbGlkZXJUaWNrcyhSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0
aW9uUHJlZmVyZW5jZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgZmxv
YXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdCB7IHJldHVybiAwLjA1ZjsgfQorICAgIHZp
cnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVy
KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsgfQor
I2VuZGlmCisKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1BsYWNlaG9sZGVyV2hlbkZvY3Vz
ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIYXZl
U3BpbkJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKaW5kZXggN2FkNDliZDM0Nzg4NWI1ODQwMmI3OGUyZmY1
MzJkN2I3NmMxMTMzOS4uNDRmMWQ2MmM0MTc0MWY1MzU5M2E3MDk1NjlkNGQ4NjAwNWVlYmUwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKQEAgLTEwMSw2ICsx
MDEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1c2VzVGVzdE1vZGVGb2N1c1JpbmdD
b2xvcigpIGNvbnN0OwogICAgIC8vIEEgdmlldyBhc3NvY2lhdGVkIHRvIHRoZSBjb250YWluZWQg
ZG9jdW1lbnQuIFN1YmNsYXNzZXMgbWF5IG5vdCBoYXZlIHN1Y2ggYSB2aWV3IGFuZCByZXR1cm4g
YSBmYWtlLgogICAgIHZpcnR1YWwgTlNWaWV3KiBkb2N1bWVudFZpZXdGb3IoUmVuZGVyT2JqZWN0
KikgY29uc3Q7CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgdm9pZCBjYXB0aW9uUHJl
ZmVyZW5jZXNDaGFuZ2VkKCk7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFJlbmRlclRoZW1l
TWFjKCk7CiAgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVNYWMoKTsKQEAgLTE3OCw2ICsxODMsMTUg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZWRpYVNsaWRlclRodW1iU2l6
ZShSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZpcnR1YWwgSW50UG9pbnQgdm9sdW1lU2xpZGVy
T2Zmc2V0RnJvbU11dGVCdXR0b24oUmVuZGVyQm94KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IE9W
RVJSSURFOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgdmlydHVhbCBi
b29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgdXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxs
YmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJh
Y2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIE9WRVJSSURFOworI2VuZGlm
CiAgICAgCiAgICAgdmlydHVhbCBib29sIHNob3VsZFNob3dQbGFjZWhvbGRlcldoZW5Gb2N1c2Vk
KCkgY29uc3Q7CiAKQEAgLTIzNyw2ICsyNTEsMTcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBpbnQq
IHByb2dyZXNzQmFyTWFyZ2lucyhOU0NvbnRyb2xTaXplKSBjb25zdDsKICNlbmRpZgogCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorICAgIENvbG9yIGNhcHRpb25zV2luZG93Q29sb3IoKSBjb25z
dDsKKyAgICBDb2xvciBjYXB0aW9uc0JhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIENvbG9y
IGNhcHRpb25zVGV4dENvbG9yKCkgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRpb25zRGVmYXVsdEZv
bnQoKSBjb25zdDsKKyAgICBDb2xvciBjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb25z
dCBDb2xvciYpIGNvbnN0OworICAgIFN0cmluZyBjYXB0aW9uc1RleHRFZGdlU3R5bGUoKSBjb25z
dDsKKyAgICBTdHJpbmcgY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eUlE
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBDb2xvciYpIGNvbnN0OworICAgIFN0cmluZyBjc3NDb2xv
clByb3BlcnR5KENTU1Byb3BlcnR5SUQsIGNvbnN0IENvbG9yJikgY29uc3Q7CisjZW5kaWYKKwog
cHJpdmF0ZToKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU1BvcFVwQnV0dG9uQ2VsbD4gbV9wb3B1
cEJ1dHRvbjsKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU1NlYXJjaEZpZWxkQ2VsbD4gbV9zZWFy
Y2g7CkBAIC0yNTIsNiArMjc3LDExIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBIYXNoTWFwPGlu
dCwgUkdCQTMyPiBtX3N5c3RlbUNvbG9yQ2FjaGU7CiAKICAgICBSZXRhaW5QdHI8V2ViQ29yZVJl
bmRlclRoZW1lTm90aWZpY2F0aW9uT2JzZXJ2ZXI+IG1fbm90aWZpY2F0aW9uT2JzZXJ2ZXI7CisK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgSGFzaFNldDxDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkTGlzdGVuZXIqPiBtX2NhcHRpb25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXJzOworICAg
IGJvb2wgbV9saXN0ZW5pbmdGb3JDYXB0aW9uUHJlZmVyZW5jZU5vdGlmaWNhdGlvbnM7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCAwYmM5ODA0ZmI3NTliMTFlZDk2YTQwOTEwNmEwMTE2
Nzk4YzIwNGJlLi5hOWJlYWZkNzFiZmNlZjE5OWUyODczZTEzNTM4NDJjZmZkZjcwNmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRWxlbWVudC5oIgogI2ltcG9ydCAi
RmlsZUxpc3QuaCIKKyNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiRnJhbWVW
aWV3LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiSFRNTElucHV0
RWxlbWVudC5oIgpAQCAtMTUxLDYgKzE1MiwxMSBAQCBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBS
ZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKFBhZ2UqKQogfQogI2VuZGlmCiAKK3N0YXRpYyB2b2lk
IHVzZXJDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uQ2FsbGJhY2soQ0ZOb3Rp
ZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDRlN0cmluZ1JlZiwgY29uc3Qgdm9p
ZCAqLCBDRkRpY3Rpb25hcnlSZWYpCit7CisgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVNYWMq
PihvYnNlcnZlciktPmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKK30KKwogUGFzc1JlZlB0
cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVNYWM6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZW5kZXJUaGVtZU1hYyk7CkBAIC0xNjAsNiArMTY2LDkgQEAgUmVuZGVyVGhl
bWVNYWM6OlJlbmRlclRoZW1lTWFjKCkKICAgICA6IG1faXNTbGlkZXJUaHVtYkhvcml6b250YWxQ
cmVzc2VkKGZhbHNlKQogICAgICwgbV9pc1NsaWRlclRodW1iVmVydGljYWxQcmVzc2VkKGZhbHNl
KQogICAgICwgbV9ub3RpZmljYXRpb25PYnNlcnZlcihBZG9wdE5TLCBbW1dlYkNvcmVSZW5kZXJU
aGVtZU5vdGlmaWNhdGlvbk9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFRoZW1lOnRoaXNdKQorI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyAgICAsIG1fbGlzdGVuaW5nRm9yQ2FwdGlvblByZWZlcmVu
Y2VOb3RpZmljYXRpb25zKGZhbHNlKQorI2VuZGlmCiB7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjptX25vdGlmaWNhdGlvbk9ic2VydmVyLmdl
dCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdG9yOkBzZWxlY3RvcihzeXN0ZW1Db2xvcnNEaWRDaGFuZ2U6KQpAQCAtMTcwLDYg
KzE3OSwxMSBAQCBSZW5kZXJUaGVtZU1hYzo6UmVuZGVyVGhlbWVNYWMoKQogUmVuZGVyVGhlbWVN
YWM6On5SZW5kZXJUaGVtZU1hYygpCiB7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX25vdGlmaWNhdGlvbk9ic2VydmVyLmdldCgpXTsK
KworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAobV9saXN0ZW5pbmdGb3JDYXB0aW9u
UHJlZmVyZW5jZU5vdGlmaWNhdGlvbnMpCisgICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVt
b3ZlT2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0aGlzLCB3
a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCksIE5VTEwp
OworI2VuZGlmCiB9CiAKIENvbG9yIFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUFjdGl2ZVNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CkBAIC0yMTI4LDYgKzIxNDIsMjU1IEBAIEludFBv
aW50IFJlbmRlclRoZW1lTWFjOjp2b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1dHRvbihSZW5k
ZXJCb3gqIG11dGVCdXR0b25CCiAgICAgcmV0dXJuIFJlbmRlck1lZGlhQ29udHJvbHM6OnZvbHVt
ZVNsaWRlck9mZnNldEZyb21NdXRlQnV0dG9uKG11dGVCdXR0b25Cb3gsIHNpemUpOwogfQogCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorYm9vbCBSZW5kZXJUaGVtZU1hYzo6dXNlckhhc0NhcHRp
b25QcmVmZXJlbmNlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdrQ2FwdGlvbkFwcGVhcmFuY2VI
YXNVc2VyUHJlZmVyZW5jZXMoKTsKK30KKworYm9vbCBSZW5kZXJUaGVtZU1hYzo6dXNlclByZWZl
cnNDYXB0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdrQ2FwdGlvbkFwcGVhcmFuY2VTaG93
Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKCk7Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lTWFjOjpjYXB0
aW9uc1dpbmRvd0NvbG9yKCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29s
b3IoQWRvcHRDRiwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcigpKTsKKyAgICBD
b2xvciB3aW5kb3dDb2xvcihjb2xvci5nZXQoKSk7CisgICAgaWYgKCF3aW5kb3dDb2xvci5pc1Zh
bGlkKCkpCisgICAgICAgIHdpbmRvd0NvbG9yID0gQ29sb3I6OnRyYW5zcGFyZW50OworICAgIAor
ICAgIENHRmxvYXQgb3BhY2l0eTsKKyAgICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRv
d09wYWNpdHkoJm9wYWNpdHkpKQorICAgICAgICByZXR1cm4gQ29sb3Iod2luZG93Q29sb3IucmVk
KCksIHdpbmRvd0NvbG9yLmdyZWVuKCksIHdpbmRvd0NvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8
aW50PihvcGFjaXR5ICogMjU1KSk7CisgICAgCisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0
dXJuIENvbG9yKCk7CisKKyAgICByZXR1cm4gd2luZG93Q29sb3I7Cit9CisKK0NvbG9yIFJlbmRl
clRoZW1lTWFjOjpjYXB0aW9uc0JhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgLy8gVGhp
cyBkZWZhdWx0IHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4g
bWVkaWFDb250cm9scy5jc3MgZm9yIC13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZGVz
CisgICAgLy8gYW5kIHdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2Rlcy4KKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBkZWZhdWx0QmFja2dyb3VuZENvbG9yLCAoQ29sb3Io
MCwgMCwgMCwgMC44ICogMjU1KSkpOworCisgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9y
KEFkb3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKCkpOworICAg
IENvbG9yIGJhY2tncm91bmRDb2xvcihjb2xvci5nZXQoKSk7CisgICAgaWYgKCFiYWNrZ3JvdW5k
Q29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGRlZmF1bHRCYWNr
Z3JvdW5kQ29sb3I7CisgICAgfQorCisgICAgQ0dGbG9hdCBvcGFjaXR5OworICAgIGlmICh3a0Nh
cHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkoJm9wYWNpdHkpKQorICAgICAgICBy
ZXR1cm4gQ29sb3IoYmFja2dyb3VuZENvbG9yLnJlZCgpLCBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4o
KSwgYmFja2dyb3VuZENvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1
KSk7CisKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAg
ICByZXR1cm4gYmFja2dyb3VuZENvbG9yOworfQorCitDb2xvciBSZW5kZXJUaGVtZU1hYzo6Y2Fw
dGlvbnNUZXh0Q29sb3IoKSBjb25zdAoreworICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xv
cihBZG9wdENGLCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcigpKTsKKyAg
ICBDb2xvciB0ZXh0Q29sb3IoY29sb3IuZ2V0KCkpOworICAgIGlmICghdGV4dENvbG9yLmlzVmFs
aWQoKSkgeworICAgICAgICAvLyBUaGlzIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBh
cyB0aGUgb25lIHNwZWNpZmllZCBpbiBtZWRpYUNvbnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRp
YS10ZXh0LXRyYWNrLWNvbnRhaW5lci4KKyAgICAgICAgdGV4dENvbG9yID0gQ29sb3I6OndoaXRl
OworICAgIH0KKyAgICAKKyAgICBDR0Zsb2F0IG9wYWNpdHk7CisgICAgaWYgKHdrQ2FwdGlvbkFw
cGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSgmb3BhY2l0eSkpCisgICAgICAgIHJldHVybiBD
b2xvcih0ZXh0Q29sb3IucmVkKCksIHRleHRDb2xvci5ncmVlbigpLCB0ZXh0Q29sb3IuYmx1ZSgp
LCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKTsKKyAgICAKKyAgICBpZiAoIWNvbG9y
KQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gdGV4dENvbG9yOwor
fQorCitDb2xvciBSZW5kZXJUaGVtZU1hYzo6Y2FwdGlvbnNFZGdlQ29sb3JGb3JUZXh0Q29sb3Io
Y29uc3QgQ29sb3ImIHRleHRDb2xvcikgY29uc3QKK3sKKyAgICBpbnQgZGlzdGFuY2VGcm9tV2hp
dGUgPSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIENvbG9yOjp3aGl0ZSk7CisgICAgaW50
IGRpc3RhbmNlRnJvbUJsYWNrID0gZGlmZmVyZW5jZVNxdWFyZWQodGV4dENvbG9yLCBDb2xvcjo6
YmxhY2spOworICAgIAorICAgIGlmIChkaXN0YW5jZUZyb21XaGl0ZSA8IGRpc3RhbmNlRnJvbUJs
YWNrKQorICAgICAgICByZXR1cm4gdGV4dENvbG9yLmRhcmsoKTsKKyAgICAKKyAgICByZXR1cm4g
dGV4dENvbG9yLmxpZ2h0KCk7Cit9CisKK1N0cmluZyBSZW5kZXJUaGVtZU1hYzo6Y3NzUHJvcGVy
dHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBjb25zdCBDb2xvciYgdGV4dENvbG9yKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICAKKyAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoaWQp
KTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOicpOworICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgIGJ1aWxkZXIuYXBwZW5kKGNhcHRpb25zRWRn
ZUNvbG9yRm9yVGV4dENvbG9yKHRleHRDb2xvcikuc2VyaWFsaXplZCgpKTsKKyAgICBidWlsZGVy
LmFwcGVuZCgnOycpOworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKyAgICAK
K1N0cmluZyBSZW5kZXJUaGVtZU1hYzo6Y3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlk
LCBjb25zdCBDb2xvciYgY29sb3IpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OworICAgIAorICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmluZyhpZCkpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgYnVpbGRlci5hcHBlbmQoY29sb3Iuc2VyaWFs
aXplZCgpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOycpOworICAgIAorICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBSZW5kZXJUaGVtZU1hYzo6Y2FwdGlvbnNUZXh0
RWRnZVN0eWxlKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
ZywgZWRnZVN0eWxlUmFpc2VkLCAoIiAtLjA1ZW0gLS4wNWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBl
ZGdlU3R5bGVEZXByZXNzZWQsICgiIC4wNWVtIC4wNWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdl
U3R5bGVEcm9wU2hhZG93LCAoIiAuMDc1ZW0gLjA3NWVtIDAgIiwgU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdl
U3R5bGVVbmlmb3JtLCAoIiAuMDNlbSAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisKKyAgICBDb2xvciBjb2xvciA9IGNhcHRpb25zVGV4dENvbG9yKCk7CisgICAgaWYgKCFjb2xv
ci5pc1ZhbGlkKCkpCisgICAgICAgIGNvbG9yLnNldE5hbWVkQ29sb3IoImJsYWNrIik7CisgICAg
Y29sb3IgPSBjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb2xvcik7CisKKyAgICB3a0Nh
cHRpb25UZXh0RWRnZVN0eWxlIHRleHRFZGdlU3R5bGUgPSBzdGF0aWNfY2FzdDx3a0NhcHRpb25U
ZXh0RWRnZVN0eWxlPih3a0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSgpKTsKKyAg
ICBzd2l0Y2ggKHRleHRFZGdlU3R5bGUpIHsKKyAgICBjYXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5
bGVVbmRlZmluZWQ6CisgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlTm9uZToKKyAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBjYXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5
bGVSYWlzZWQ6CisgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENT
U1Byb3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlUmFpc2VkLCBjb2xvcik7CisgICAgY2FzZSB3
a0NhcHRpb25UZXh0RWRnZVN0eWxlRGVwcmVzc2VkOgorICAgICAgICByZXR1cm4gY3NzUHJvcGVy
dHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVRleHRTaGFkb3csIGVkZ2VTdHlsZURlcHJl
c3NlZCwgY29sb3IpOworICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZURyb3BTaGFkb3c6
CisgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5
VGV4dFNoYWRvdywgZWRnZVN0eWxlRHJvcFNoYWRvdywgY29sb3IpOworICAgIGNhc2Ugd2tDYXB0
aW9uVGV4dEVkZ2VTdHlsZVVuaWZvcm06CisgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhU
ZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSwgZWRnZVN0eWxlVW5pZm9y
bSwgY29sb3IpOworCisgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlTWF4OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBSZW5kZXJUaGVtZU1hYzo6Y2FwdGlvbnNEZWZhdWx0Rm9udCgp
IGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENHRm9udFJlZj4gZm9udChBZG9wdENGLCB3a0NhcHRp
b25BcHBlYXJhbmNlQ29weUZvbnRGb3JTdHlsZSh3a0NhcHRpb25Gb250U3R5bGVEZWZhdWx0KSk7
CisgICAgaWYgKCFmb250KQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZShBZG9wdENGLCBDR0ZvbnRDb3B5UG9zdFNjcmlwdE5h
bWUoZm9udC5nZXQoKSkpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgCisgICAgYnVpbGRlci5h
cHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5Rm9udEZhbWlseSkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKCI6IFwiIik7CisgICAgYnVpbGRlci5hcHBlbmQobmFtZS5nZXQoKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoIlwiOyIpOworICAgIAorICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBSZW5kZXJUaGVtZU1hYzo6Y2FwdGlvbnNTdHlsZVNoZWV0
T3ZlcnJpZGUoKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgY2FwdGlvbnNPdmVycmlkZVN0
eWxlU2hlZXQ7CisKKyAgICBDb2xvciBjb2xvciA9IGNhcHRpb25zQmFja2dyb3VuZENvbG9yKCk7
CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWU6OnBhc3ROb2Rlc1NoYWRvd1BzZXVkb0lkKCkpOwor
ICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsKKyAgICAgICAg
Y2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IsIGNvbG9yKSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVT
dHlsZVNoZWV0LmFwcGVuZCgnfScpOworCisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNo
ZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQuYXBwZW5kKFRleHRUcmFja0N1ZTo6ZnV0dXJlTm9kZXNTaGFkb3dQc2V1ZG9JZCgpKTsKKyAg
ICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7CisgICAgICAgIGNh
cHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChjc3NDb2xvclByb3BlcnR5KENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yLCBjb2xvcikpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC5hcHBlbmQoJ30nKTsKKyAgICB9CisKKyAgICBjb2xvciA9IGNhcHRpb25zV2luZG93
Q29sb3IoKTsKKyAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKKyAgICAgICAgY2FwdGlvbnNPdmVy
cmlkZVN0eWxlU2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hh
ZG93UHNldWRvSWQoKSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVu
ZCgneycpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29s
b3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgY29sb3IpKTsKKyAgICAgICAg
Y2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7CisgICAgfQorCisgICAgY29s
b3IgPSBjYXB0aW9uc1RleHRDb2xvcigpOworICAgIFN0cmluZyBlZGdlU3R5bGUgPSBjYXB0aW9u
c1RleHRFZGdlU3R5bGUoKTsKKyAgICBTdHJpbmcgZm9udE5hbWUgPSBjYXB0aW9uc0RlZmF1bHRG
b250KCk7CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSB8fCAhZWRnZVN0eWxlLmlzRW1wdHkoKSB8
fCAhZm9udE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNo
ZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQuYXBwZW5kKFRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93UHNldWRvSWQo
KSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgneycpOworCisg
ICAgICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICBjYXB0aW9uc092ZXJyaWRl
U3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xv
cikpOworICAgICAgICBpZiAoIWVkZ2VTdHlsZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoZWRnZVN0eWxlKTsKKyAgICAgICAgaWYgKCFm
b250TmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVl
dC5hcHBlbmQoZm9udE5hbWUpOworCisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0
LmFwcGVuZCgnfScpOworICAgIH0KKworICAgIHJldHVybiBjYXB0aW9uc092ZXJyaWRlU3R5bGVT
aGVldC50b1N0cmluZygpOworfQorCitmbG9hdCBSZW5kZXJUaGVtZU1hYzo6Y2FwdGlvbkZvbnRT
aXplU2NhbGUoKSBjb25zdAoreworICAgIENHRmxvYXQgY2hhcmFjdGVyU2NhbGUgPSBSZW5kZXJU
aGVtZTo6Y2FwdGlvbkZvbnRTaXplU2NhbGUoKTsKKyAgICBDR0Zsb2F0IHNjYWxlQWRqdXN0bWVu
dDsKKyAgICAKKyAgICBpZiAoIXdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3Rl
clNpemUoJnNjYWxlQWRqdXN0bWVudCkpCisgICAgICAgIHJldHVybiBjaGFyYWN0ZXJTY2FsZTsK
KyAgICAKKyAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzY2FsZUFkanVzdG1lbnQg
KiBjaGFyYWN0ZXJTY2FsZSk7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVNYWM6OmNhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWQoKQoreworICAgIGZvciAoSGFzaFNldDxDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkTGlzdGVuZXIqPjo6aXRlcmF0b3IgaSA9IG1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VM
aXN0ZW5lcnMuYmVnaW4oKTsgaSAhPSBtX2NhcHRpb25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXJz
LmVuZCgpOyArK2kpCisgICAgICAgICgqaSktPmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsK
K30KKwordm9pZCBSZW5kZXJUaGVtZU1hYzo6cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVu
ZXIpCit7CisgICAgaWYgKCF3a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90
aWZpY2F0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoIW1fbGlzdGVuaW5n
Rm9yQ2FwdGlvblByZWZlcmVuY2VOb3RpZmljYXRpb25zKSB7CisgICAgICAgIG1fbGlzdGVuaW5n
Rm9yQ2FwdGlvblByZWZlcmVuY2VOb3RpZmljYXRpb25zID0gdHJ1ZTsKKyAgICAgICAgQ0ZOb3Rp
ZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlciAoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENl
bnRlcigpLCB0aGlzLCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbkNh
bGxiYWNrLCB3a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9u
KCksIE5VTEwsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yQ29hbGVzY2UpOworICAg
IH0KKyAgICAKKyAgICBtX2NhcHRpb25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXJzLmFkZChsaXN0
ZW5lcik7Cit9CisgICAgCit2b2lkIFJlbmRlclRoZW1lTWFjOjp1bnJlZ2lzdGVyRm9yQ2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlz
dGVuZXIqIGxpc3RlbmVyKQoreworICAgICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRp
bmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigpKQorICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlQ2hh
bmdlTGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7Cit9CisjZW5kaWYgLy8gRU5BQkxFKFZJREVP
X1RSQUNLKQorCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQogCiBib29sIFJlbmRlclRoZW1lTWFj
OjpzaG91bGRTaG93UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5k
ZXggOGMzNWU4ZjA4OWZlYWUxMDcwZjEwZmRhZjg2MWMyODIwYWE5ZDBjMy4uM2I2ZTFkOWNkZmM4
OGUxN2U1OGQ0YjFiNzFhYTFlZTgyODJlNzBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMjA4LDYgKzIw
OCwxOSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChO
U1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSk7CiAjZW5kaWYKIAorICAgIElOSVQoQ2FwdGlv
bkFwcGVhcmFuY2VIYXNVc2VyUHJlZmVyZW5jZXMpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFu
Y2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNl
Q29weUZvcmVncm91bmRDb2xvcik7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNr
Z3JvdW5kQ29sb3IpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3Ip
OworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSk7CisgICAg
SU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5KTsKKyAgICBJTklUKENh
cHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3BhY2l0eSk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFy
YW5jZUNvcHlGb250Rm9yU3R5bGUpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxh
dGl2ZUNoYXJhY3RlclNpemUpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRn
ZVN0eWxlKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90
aWZpY2F0aW9uKTsKKwogI2VuZGlmCiAgICAgZGlkSW5pdCA9IHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggYTAwNGE4Y2M3ZGZlMDgwNjY1ZTJkMDU1OWQ4
NmJhNzNkYjdhNGFmZS4uNzk1YTEzZTM5YzU4ZmIxYWVhYmQ0ZDg3ZDIxOTQ5ODJlMjVlYTc4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMTg5LDUgKzE4OSwxNyBA
QCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoTlNS
ZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEpOwogI2VuZGlmCiAKKyAgICAgICAgSU5JVChDYXB0
aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcyk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFw
cGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKTsKKyAgICAgICAgSU5JVChDYXB0aW9u
QXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IpOworICAgICAgICBJTklUKENhcHRpb25BcHBl
YXJhbmNlQ29weUJhY2tncm91bmRDb2xvcik7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFu
Y2VDb3B5V2luZG93Q29sb3IpOworICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0Rm9y
ZWdyb3VuZE9wYWNpdHkpOworICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dy
b3VuZE9wYWNpdHkpOworICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3Bh
Y2l0eSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxlKTsK
KyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSk7
CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKTsKKyAgICAg
ICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbik7
CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGMwOGFlNjFmNzRjMmMzYTIxZjdlYWMwMjBhMTkyZWZlODEw
NWNiZi4uZjY2YzE5YzViZTk1Y2MyMjVhYjk3NzU2YjgwMjIyZmZjMzk5MWZiYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEyLTEwLTA1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgorCisgICAgICAgIEFsbG93IHBvcnRzIHRvIG92ZXJyaWRlIHRleHQgdHJhY2sgcmVu
ZGVyaW5nIHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzgwMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTIwNDQ5NjQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFj
ay1jdWUtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dDogVXBkYXRlIHJlc3VsdHMgZm9yIGNhcHRpb24g
Y3NzIGNoYW5nZXMuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy5o
dG1sOiAKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOiBTa2lw
IHRlc3RzIHRoYXQgbmVlZCB0byBiZSByZWJhc2VsaW5lZC4KKwogMjAxMi0xMC0wNSAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEzMDU1NiBhbmQgcjEzMDU2NC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQKaW5kZXgg
YzA2ZmJkMGQwMjdjYmE1MGZhOWYwOTliZmVjNDE2ZmM2MWQ5ZWZmOS4uMzZjN2Y0N2EyNTg4MTRk
NzQwYzdiNDE0OTViZmExZTAxYjgyZjZmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQKQEAgLTQ5LDcgKzQ5
LDcgQEAgUlVOKHZpZGVvLmhlaWdodCA9IDE0NDApCiBFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHls
ZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmZvbnRTaXplID09ICc3MnB4JykgT0sK
IAogRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlk
ZW8pKS5mb250RmFtaWx5ID09ICdzYW5zLXNlcmlmJykgT0sKLUVYUEVDVEVEIChnZXRDb21wdXRl
ZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuY29sb3IgPT0gJ3JnYmEoMjU1
LCAyNTUsIDI1NSwgMCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNr
RGlzcGxheUVsZW1lbnQodmlkZW8pKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sK
IEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVv
LCAnZGlzcGxheScpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciA9PSAncmdiYSgwLCAwLCAw
LCAwLjc5Njg3NSknKSwgT0JTRVJWRUQgJ3JnYmEoMCwgMCwgMCwgMC44KScgRkFJTAogRU5EIE9G
IFRFU1QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJl
bmRlcmluZy5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmlu
Zy5odG1sCmluZGV4IDVhN2U4ZTY1ZDhlYjFlMzQwYjBlOTRmNDExNWNhODc2ZWJjOTg2NTguLmNk
ZjFiMDgzYTNlOTdkOTEzYzVkYzUwMjJiMDk4OTYzNWYyMmE1NTUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmcuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0bWwKQEAgLTMyLDcgKzMyLDcg
QEAKICAgICAgICAgICAgIHRlc3RGb250U2l6ZSgyNTYwLCAxNDQwKTsKIAogICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZp
ZGVvKSkuZm9udEZhbWlseSIsICJzYW5zLXNlcmlmIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5jb2xv
ciIsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
ImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5jb2xvciIs
ICJyZ2IoMjU1LCAyNTUsIDI1NSkiKTsKICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29t
cHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5maXJz
dENoaWxkKS5iYWNrZ3JvdW5kQ29sb3IiLCAicmdiYSgwLCAwLCAwLCAwLjc5Njg3NSkiKTsKIAog
ICAgICAgICAgICAgZW5kVGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOThlZjE1ZGIxNGE4YjJhZmM2NTBhZWJiYzRmYmUzY2Fl
M2VhMWQwMi4uMzUxODQyOTVkOGVmZmQ3ZjM3YTQ0YmE1MTI1OWExNmYwYjJjNTBhZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNzg2
LDMgKzM3ODYsOCBAQCB3ZWJraXQub3JnL2IvOTUxMjEgZmFzdC9ib3JkZXJzL2JvcmRlci1pbWFn
ZS1zaWRlLXJlZHVjdGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbAogIyBmYWlsaW5nIGFmdGVyIHIx
MzA0NDMgYnV0IHdlJ3JlIG5vdCBzdXJlIGlmIHRoaXMgaXMgYSByZWFsIGJ1ZyBvciBqdXN0IG5l
ZWRzIHJlYmFzZWxpbmluZwogd2Via2l0Lm9yZy9iLzk4NTQ1IFsgTWFjIF0gZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwvdGV4dC1zcGxpY2VkLWZvbnQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzk4NTQ1IFsgTWFjIF0gZmFzdC93cml0aW5nLW1vZGUvS3VzYS1NYWt1cmEtYmFja2dyb3Vu
ZC1jYW52YXMuaHRtbCBbIEZhaWx1cmUgXQorCisjIE5lZWQgdG8gYmUgdXBkYXRlZCBhZnRlciB3
ZWJraXQub3JnL2IvOTc4MDAKK3dlYmtpdC5vcmcvYi84OTE2NyBtZWRpYS90cmFjay90cmFjay1j
dWUtcmVuZGVyaW5nLWhvcml6b250YWwuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzg5
MTY3IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctdmVydGljYWwuaHRtbCBbIEZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzg5MTY3IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmcu
aHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBi
L1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggY2QzNjRkMDdmY2FlN2E2M2E4ZmQ4ZGZl
NGFiMTViNDZjMTk1NmQxYS4uYjAxZDM5YzM4ZTdkNWI0OGFmMmE5MDQxZTRjMzNlOTEyNDM4YTE3
MiAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJy
YXJpZXMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMDUgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgcG9ydHMgdG8gb3Zl
cnJpZGUgdGV4dCB0cmFjayByZW5kZXJpbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3ODAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MjA0NDk2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgV0tTSSBoZWFkZXIgd2l0aCBTUEkgZm9yIGdldHRpbmcgdGhlIHVzZXIgY2FwdGlv
biBhcHBlYXJhbmNlIHByZWZlcmVuY2VzLgorCisgICAgICAgICogV2ViS2l0U3lzdGVtSW50ZXJm
YWNlLmg6CisKIDIwMTItMTAtMDUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzA1NTYgYW5kIHIx
MzA1NjQuCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0U3lzdGVtSW50ZXJmYWNl
LmggYi9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggYWNmNDA2
MWJjYTIwODViNTQ1NmEzOTBhMmMwODMxOGViYmQ2ZTE2NS4uNDcyNzlmMzg3ZGJhZDkxNzgwZmY3
ZDYyMDZjYTRkZTQ3NDdjMjY0YiAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL1dlYktpdFN5
c3RlbUludGVyZmFjZS5oCisrKyBiL1dlYktpdExpYnJhcmllcy9XZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaApAQCAtMSw2ICsxLDYgQEAKIC8qICAgICAgCiAgICAgV2ViS2l0U3lzdGVtSW50ZXJmYWNl
LmgKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBQdWJsaWMgaGVhZGVyIGZpbGUuCiAqLwpAQCAt
NTEzLDYgKzUxMyw0MSBAQCBDR0Zsb2F0IFdLTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEo
Q0dGbG9hdCBkZWx0YSk7CiBCb29sZWFuIFdLSkxJc1J1bnRpbWVBbmRXZWJDb21wb25lbnRzSW5z
dGFsbGVkKHZvaWQpOwogI2VuZGlmCiAKK3R5cGVkZWYgZW51bSB7CisgICAgV0tDYXB0aW9uRm9u
dFN0eWxlRGVmYXVsdCA9IDAsCisgICAgV0tDYXB0aW9uRm9udFN0eWxlTW9ub3NwYWNlZFdpdGhT
ZXJpZiwKKyAgICBXS0NhcHRpb25Gb250U3R5bGVQcm9wb3J0aW9uYWxXaXRoU2VyaWYsCisgICAg
V0tDYXB0aW9uRm9udFN0eWxlTW9ub3NwYWNlZFdpdGhvdXRTZXJpZiwKKyAgICBXS0NhcHRpb25G
b250U3R5bGVQcm9wb3J0aW9uYWxXaXRob3V0U2VyaWYsCisgICAgV0tDYXB0aW9uRm9udFN0eWxl
Q2FzdWFsLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZUN1cnNpdmUsCisgICAgV0tDYXB0aW9uRm9u
dFN0eWxlU21hbGxDYXBpdGFsLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZU1heAorfSBXS0NhcHRp
b25Gb250U3R5bGU7CisKK3R5cGVkZWYgZW51bSB7CisgICAgV0tDYXB0aW9uVGV4dEVkZ2VTdHls
ZVVuZGVmaW5lZCA9IDAsCisgICAgV0tDYXB0aW9uVGV4dEVkZ2VTdHlsZU5vbmUsCisgICAgV0tD
YXB0aW9uVGV4dEVkZ2VTdHlsZVJhaXNlZCwKKyAgICBXS0NhcHRpb25UZXh0RWRnZVN0eWxlRGVw
cmVzc2VkLAorICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVVbmlmb3JtLAorICAgIFdLQ2FwdGlv
blRleHRFZGdlU3R5bGVEcm9wU2hhZG93LAorICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVNYXgK
K30gV0tDYXB0aW9uVGV4dEVkZ2VTdHlsZTsKKworYm9vbCBXS0NhcHRpb25BcHBlYXJhbmNlSGFz
VXNlclByZWZlcmVuY2VzKHZvaWQpOworYm9vbCBXS0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRp
b25zV2hlbkF2YWlsYWJsZSh2b2lkKTsKK0NHQ29sb3JSZWYgV0tDYXB0aW9uQXBwZWFyYW5jZUNv
cHlGb3JlZ3JvdW5kQ29sb3Iodm9pZCk7CitDR0NvbG9yUmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VD
b3B5QmFja2dyb3VuZENvbG9yKHZvaWQpOworQ0dDb2xvclJlZiBXS0NhcHRpb25BcHBlYXJhbmNl
Q29weVdpbmRvd0NvbG9yKHZvaWQpOworYm9vbCBXS0NhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdy
b3VuZE9wYWNpdHkoQ0dGbG9hdCopOworYm9vbCBXS0NhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dy
b3VuZE9wYWNpdHkoQ0dGbG9hdCopOworYm9vbCBXS0NhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93
T3BhY2l0eShDR0Zsb2F0Kik7CitDR0ZvbnRSZWYgV0tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250
Rm9yU3R5bGUoaW50IGZvbnRTdHlsZSk7Citib29sIFdLQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxh
dGl2ZUNoYXJhY3RlclNpemUoQ0dGbG9hdCopOworaW50IFdLQ2FwdGlvbkFwcGVhcmFuY2VHZXRU
ZXh0RWRnZVN0eWxlKHZvaWQpOworQ0ZTdHJpbmdSZWYgV0tDYXB0aW9uQXBwZWFyYW5jZUdldFNl
dHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbih2b2lkKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CiAjZW5kaWYK
</data>
<flag name="review"
          id="180090"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169339</attachid>
            <date>2012-10-17 22:01:43 -0700</date>
            <delta_ts>2012-10-18 13:59:57 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>user_preferences_patch_34.txt</filename>
            <type>text/plain</type>
            <size>68362</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTY5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNiBAQAorMjAxMi0xMC0xNyAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyB0
byBvdmVycmlkZSB0ZXh0IHRyYWNrIHJlbmRlcmluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzEyMDQ0OTY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBuZXcgV2Via2l0U3lzdGVtSW50ZXJmYWNl
IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
IEFkZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgsIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMu
bW0sCisgICAgICAgICAgICBhbmQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oLgorCisgICAg
ICAgICogY3NzL21lZGlhQ29udHJvbHMuY3NzOiBSZWFycmFuZ2UgdGhlIGNhcHRpb24gQ1NTIHNv
IGl0IGlzIHBvc3NpYmxlIHRvIHN0eWxlIHRoZSBjdWUgd2luZG93LAorICAgICAgICAgICAgYmFj
a2dyb3VuZCwgYW5kIHRleHQgaW5kZXBlbmRlbnRseS4KKworICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1M
TWVkaWFFbGVtZW50KTogSW5pdGlhbGl6ZSBtX2Rpc2FibGVDYXB0aW9ucyB3aXRoIHRoZW1lLT51
c2VyUHJlZmVyc0NhcHRpb25zKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjphdHRhY2gpOiBSZWdpc3RlciBmb3IgY2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2FsbGJh
Y2tzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGV0YWNoKTogVW5yZWdp
c3RlciBmb3IgY2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2FsbGJhY2tzLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlclByZWZlcnNDYXB0aW9ucyk6IFJldHVybiB0
aGVtZS0+dXNlclByZWZlcnNDYXB0aW9ucygpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2luZCk6IENvbnNpZGVyIHVzZXJQ
cmVmZXJzQ2FwdGlvbnMoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dENsb3NlZENhcHRpb25zVmlzaWJsZSk6IE1vdmUgdGhlIGNvZGUgdGhhdCBtYXJrcyBhbGwgdHJh
Y2tzIGFzCisgICAgICAgICAgICB1bi1jb25maWd1cmVkIHRvIG1hcmtDYXB0aW9uQW5kU3VidGl0
bGVUcmFja3NBc1VuY29uZmlndXJlZCBzbyBpdCBjYW4gYmUgcmV1c2VkLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6IE5ldywg
Zm9yY2UgYSByZWV2YWx1YXRpb24gb2YgYWxsIHRleHQgdHJhY2tzLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25m
aWd1cmVkKTogTmV3LCBjb2RlIG1vdmVkIGZyb20gCisgICAgICAgICAgICBzZXRDbG9zZWRDYXB0
aW9uc1Zpc2libGUKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDogSW5oZXJpdCBm
cm9tIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci4KKworICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKTogR2V0IHJpZCBv
ZiB1bm5lY2Vzc2FyeSBtZW1iZXIKKyAgICAgICAgICAgIHZhcmlhYmxlLiBHZXQgY2FwdGlvbiBm
b250IHNjYWxlIGZyb20gdGhlbWUgaW5zdGVhZCBvZiBoYXJkIGNvZGluZy4KKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorCisgICAgICAgICogaHRtbC90cmFj
ay9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2sp
OiBDaGFuZ2UgYXR0cmlidXRlcyBmcm9tIFN0cmluZyB0byBBdG9taWNTdHJpbmcuCisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRLaW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2s6OnNldE1vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6bW9kZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjpraW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OmxhYmVsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldExhYmVsKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6Omxhbmd1YWdlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldExhbmd1YWdlKTogRGl0dG8uCisKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1ZUJveCk6IFNldCB0aGUgc2hhZG93IHBzZXVkbyBpZC4K
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93
UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1cm4gdGhlIAorICAgICAgICAgICAg
c2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4gYmUgdXNlZCBlbHNld2hlcmUuCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OnNoYWRvd1BzZXVkb0lkKTogQ2FsbCB0ZXh0VHJhY2tD
dWVCb3hTaGFkb3dQc2V1ZG9JZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6cGFz
dE5vZGVzU2hhZG93UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1cm4gdGhlIAor
ICAgICAgICAgICAgc2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4gYmUgdXNlZCBlbHNld2hlcmUu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmZ1dHVyZU5vZGVzU2hhZG93UHNldWRv
SWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxh
eVRyZWUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisKKyAgICAgICAg
KiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp1c2VyQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6fkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcyk6IE5ldywgcGFzc3Rocm91Z2gg
dG8gV0tTSSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zV2luZG93Q29sb3IpOiBSZXR1cm4gQ29s
b3Igd2l0aCB1c2VyJ3MgY2FwdGlvbiB3aW5kb3cgY29sb3IgcHJlZmVyZW5jZS4KKyAgICAgICAg
KFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zQmFja2dyb3VuZENv
bG9yKTogUmV0dXJuIENvbG9yIHdpdGggdXNlcidzIGNhcHRpb24gCisgICAgICAgICAgICBiYWNr
Z3JvdW5kIGNvbG9yIHByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRDb2xvcik6IFJldHVybiBDb2xvciB3aXRoIHVzZXIn
cyBjYXB0aW9uIHRleHQgY29sb3IgcHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKTogUmV0
dXJuIENvbG9yIGZvciB0ZXh0IGVkZ2UgZWZmZWN0LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6Y3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcik6IFJldHVy
biBTdHJpbmcgd2l0aCBDU1MgdG8gc2V0IGEgdGV4dC1zaGFkb3cKKyAgICAgICAgICAgIG9yIHdl
YmtpdC10ZXh0LXN0cm9rZSBwcm9wZXJ0eS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWM6OmNzc0NvbG9yUHJvcGVydHkpOiBSZXR1cm4gYSBTdHJpbmcgd2l0aCBj
c3MgdG8gc2V0IGEgcHJvcGVydHkgCisgICAgICAgICAgICB3aXRoIGEgY29sb3IgdmFsdWUuCisg
ICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRF
ZGdlU3R5bGUpOiBSZXR1cm4gYSBTdHJpbmcgd2l0aCBjc3MgdG8gc3R5bGUgY2FwdGlvbiAKKyAg
ICAgICAgICAgIHRleHQgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCB0ZXh0IGVkZ2Ugc3R5ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zRGVm
YXVsdEZvbnQpOiBSZXR1cm4gYSBTdHJpbmcgd2l0aCBjc3MgdG8gc3R5bGUgY2FwdGlvbgorICAg
ICAgICAgICAgdGV4dCB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGZvbnQuCisgICAgICAgIChX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVy
cmlkZSk6IFJldHVybiBhIFN0cmluZyB3aXRoIGNzcyB0byBzdHlsZSBjYXB0aW9ucworICAgICAg
ICAgICAgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6
OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25Gb250U2l6ZVNjYWxlKTogUmV0dXJu
IHRoZSB1c2VyJ3MgcHJlZmVycmVkIGNhcHRpb24gZm9udCBzY2FsZS4KKyAgICAgICAgKFdlYkNv
cmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQp
OiBOb3RpZnkgbGlzdGVuZXJzIG9mIGNhcHRpb24gcHJlZmVyZW5jZSBjaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpyZWdpc3RlckZvckNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBBZGQgYSBjYXB0aW9uIHByZWZlcmVuY2VzIAor
ICAgICAgICAgICAgY2hhbmdlcyBsaXN0ZW5lci4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWM6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
Q2FsbGJhY2tzKTogUmVtb3ZlIGEgY2FwdGlvbiBwcmVmZXJlbmNlcworICAgICAgICAgICAgY2hh
bmdlcyBsaXN0ZW5lci4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OnVwZGF0ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcmlkZSk6IE5ldywgaWYgdGhlbWUgaGFzIGEg
Y2FwdGlvbnMgc3R5bGUgc2hlZXQgb3ZlcnJpZGUsCisgICAgICAgICAgICBpbmplY3QgaXQgaW50
byB0aGUgY3VycmVudCBwYWdlIGdyb3VwLCBvdGhlcndpc2UgcmVtb3ZlIGluamVjdGVkIHNoZWV0
LgorCisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3Vw
OjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBOZXcsIHBh
c3N0aHJvdWdoIHRvIHBsYXRmb3JtIHNwZWNpZmljIGZ1bmN0aW9uCisgICAgICAgICAgICBvZiB0
aGUgc2FtZSBuYW1lLgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjp1bnJlZ2lzdGVyRm9y
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZUdyb3VwOjp1c2VyUHJlZmVyc0NhcHRpb25zKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpQYWdlR3JvdXA6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6Y2FwdGlvbkZvbnRTaXplU2NhbGUpOiBEaXR0by4K
KyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5oOgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDogVXBkYXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbTogRGl0dG8uCisKIDIwMTItMTAtMTcgIEphbWVzIFJv
Ymluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGNsYW5n
IGNvbXBpbGUgZml4IC0gR3JhcGhpY3NMYXllclVwZGF0ZXIgbmVlZHMgYSB2aXJ0dWFsIGRlc3Ry
dWN0b3IuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTMxNjQ5KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI2MjEsMyArMjYy
MSwxOCBAQCBfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlCiBfX1pON1dl
YkNvcmUyNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0aXZlczhf
TlNSYW5nZQogX19aTjdXZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlc0VQ
MThOU0F0dHJpYnV0ZWRTdHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlRUxtMEVFRQogI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitfd2tDYXB0
aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcworX3drQ2FwdGlvbkFwcGVhcmFuY2VTaG93
Q2FwdGlvbnNXaGVuQXZhaWxhYmxlCitfd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5k
Q29sb3IKK193a0NhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvcgorX3drQ2FwdGlv
bkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IKK193a0NhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdy
b3VuZE9wYWNpdHkKK193a0NhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkKK193
a0NhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3BhY2l0eQorX3drQ2FwdGlvbkFwcGVhcmFuY2VD
b3B5Rm9udEZvclN0eWxlCitfd2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVy
U2l6ZQorX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlCitfd2tDYXB0aW9uQXBw
ZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbgorI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxMzE2NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOSBAQAogCQkwNzg0NjM0MjE0
NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1Ry
YWNrRXZlbnQuY3BwICovOyB9OwogCQkwNzg0NjM0MzE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFj
a0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
Nzg0NjM0MTE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi87IH07CiAJCTA3ODQ2
Mzg1MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyog
SlNUcmFja0N1c3RvbS5oICovOyB9OworCQkwNzlEMDg2ODE2MkYyMEU4MDBEQjg2NTggLyogQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDc5RDA4NjcxNjJGMjBFODAwREI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwNzlEMDg2QjE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5RDA4Njkx
NjJGMjFGOTAwREI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaCAqLzsgfTsKKwkJ
MDc5RDA4NkMxNjJGMjFGOTAwREI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlEMDg2QTE2
MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbSAqLzsgfTsKIAkJ
MDdBNkQxRUIxNDkxMTM3NzAwMDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBNkQxRTkxNDkx
MTM3NzAwMDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwICovOyB9OwogCQkwN0E2
RDFFQzE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBNkQxRUExNDkxMTM3NzAw
MDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCAqLzsgfTsKIAkJMDdCMDExM0YxMDMy
MjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0IwMTEzRTEwMzIyNDIyMDBGQkRD
MzMgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCAqLzsgfTsKQEAgLTcxNTAsNiArNzE1
Myw5IEBACiAJCTA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpT
VHJhY2tFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RyYWNrRXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4NDYzODQxNDVCMUI4RTAwQTU4
REYxIC8qIEpTVHJhY2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNUcmFja0N1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzlEMDg2NzE2
MkYyMEU4MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3OUQwODY5MTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5
RDA4NkExNjJGMjFGOTAwREI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzlGNUU0QjBGM0JFQkVB
MDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0E2RDFFOTE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUZyYWdtZW50VVJJ
UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdBNkQxRUExNDkxMTM3
NzAwMDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTU3NzUsNiArMTU3ODEsOSBAQAogCQkJCUJDMTI0RUU0MEMyNjQxQ0Qw
MDlFMjM0OSAvKiBCYXJJbmZvLmNwcCAqLywKIAkJCQlCQzEyNEVFNTBDMjY0MUNEMDA5RTIzNDkg
LyogQmFySW5mby5oICovLAogCQkJCUJDMTI0RUU2MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZv
LmlkbCAqLywKKwkJCQkwNzlEMDg2NzE2MkYyMEU4MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcy5oICovLAorCQkJCTA3OUQwODY5MTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjLmggKi8sCisJCQkJMDc5RDA4NkExNjJGMjFGOTAwREI4NjU4IC8qIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0gKi8sCiAJCQkJMTREODIzOEEwQUY5MkRGNjAwMDRG
MDU3IC8qIENocm9tZS5jcHAgKi8sCiAJCQkJMTREODIzNTAwQUY5MkE3OTAwMDRGMDU3IC8qIENo
cm9tZS5oICovLAogCQkJCTE0RDgyNDA2MEFGOTNBRUIwMDA0RjA1NyAvKiBDaHJvbWVDbGllbnQu
aCAqLywKQEAgLTI1NjA1LDYgKzI1NjE0LDggQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5
NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBG
QzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1MzczNTMx
MzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzlEMDg2
ODE2MkYyMEU4MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMDc5RDA4NkIxNjJGMjFGOTAwREI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTFBOTlEMTYyOUQ3MDAwMDI5NzMzMCAvKiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDNEE0MTUx
NjI5REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CkBAIC0yODcxMCw2ICsyODcyMSw3IEBACiAJCQkJRTFCRTUxMkQwQ0Y2
QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMDc5RDA4NkMxNjJGMjFGOTAwREI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzkxQTk5QzE2MjlENzAwMDAyOTczMzAgLyog
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNDNEE0
MTYxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJv
bHMuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzLmNz
cwkocmV2aXNpb24gMTMxNjQ5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHMu
Y3NzCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAgdmlkZW86Oi13ZWJraXQtbWVk
aWEtdGV4dC10cmFjay1jb250YWluZQogICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICBmb250LWZh
bWlseTogc2Fucy1zZXJpZjsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY29sb3I6IHJn
YmEoMjU1LCAyNTUsIDI1NSwgMCk7CisgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7
CiAKICAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogICAgIHdvcmQtc3BhY2luZzogbm9ybWFs
OwpAQCAtMjM0LDggKzIzNCw2IEBAIHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFz
dC1ub2QKIAogICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICBw
YWRkaW5nOiAycHggMnB4OwotCi0gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogfQogCiB2aWRl
bzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2RlcyB7CkBAIC0yNDYsMTEgKzI0
NCwxMCBAQCB2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1uCiAKICAgICBt
YXJnaW4tbGVmdDogLTJweDsKICAgICBwYWRkaW5nOiAycHggMnB4IDJweCAwcHg7Ci0KLSAgICB3
aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiB9CiAKIHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJh
Y2stZGlzcGxheSB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGNvbG9yOiByZ2JhKDI1
NSwgMjU1LCAyNTUsIDEpOworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUtc3BhY2U6
IHByZS13cmFwOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMzE2NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiTUlN
RVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlJlbmRlclZp
ZGVvLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKQEAgLTI4MSw2ICsyODIsMTQgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxl
bWVudChjb25zdAogCiAgICAgc2V0SGFzQ3VzdG9tQ2FsbGJhY2tzKCk7CiAgICAgYWRkRWxlbWVu
dFRvRG9jdW1lbnRNYXAodGhpcywgZG9jdW1lbnQpOworCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgIGlmIChkb2N1bWVudC0+cGFnZSgpKSB7CisgICAgICAgIFBhZ2VHcm91cCYgZ3JvdXAg
PSBkb2N1bWVudC0+cGFnZSgpLT5ncm91cCgpOworICAgICAgICBpZiAoZ3JvdXAudXNlckhhc0Nh
cHRpb25QcmVmZXJlbmNlcygpKQorICAgICAgICAgICAgbV9kaXNhYmxlQ2FwdGlvbnMgPSAhZ3Jv
dXAudXNlclByZWZlcnNDYXB0aW9ucygpOworICAgIH0KKyNlbmRpZgogfQogCiBIVE1MTWVkaWFF
bGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCkBAIC01NDEsNiArNTUwLDIwIEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xp
ZW50KCktPmhpZGVNZWRpYVBsYXllclByb3h5UGx1Z2luKG1fcHJveHlXaWRnZXQuZ2V0KCkpOwog
ICAgIH0KICNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChkb2N1bWVu
dCgpLT5wYWdlKCkpCisgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS5yZWdpc3Rl
ckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CisjZW5kaWYKK30K
Kwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkZXRhY2goKQoreworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKyAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICBkb2N1bWVudCgpLT5w
YWdlKCktPmdyb3VwKCkudW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxs
YmFja3ModGhpcyk7CisjZW5kaWYKKyAgICBIVE1MRWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpCkBAIC0yNzkw
LDI4ICsyODEzLDMwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbFJlbW92ZVRyYWNrKEgK
ICAgICAgICAgbV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4ucmVtb3ZlKGlu
ZGV4KTsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlz
TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJikgY29uc3QKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6dXNl
clByZWZlcnNDYXB0aW9ucygpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IGNoZWNrIHRoZSB1c2Vy
J3MgbGFuZ3VhZ2UgcHJlZmVyZW5jZSAtIGJ1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQxMjEKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUGFnZUdy
b3VwJiBncm91cCA9IHBhZ2UtPmdyb3VwKCk7CisgICAgcmV0dXJuIGdyb3VwLnVzZXJIYXNDYXB0
aW9uUHJlZmVyZW5jZXMoKSAmJiBncm91cC51c2VyUHJlZmVyc0NhcHRpb25zKCk7CiB9CiAKIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2luZChTdHJp
bmcga2luZCkgY29uc3QKIHsKLSAgICAvLyBJZiAuLi4gdGhlIHVzZXIgaGFzIGluZGljYXRlZCBh
biBpbnRlcmVzdCBpbiBoYXZpbmcgYSB0cmFjayB3aXRoIHRoaXMgdGV4dCB0cmFjayBraW5kLCB0
ZXh0IHRyYWNrIGxhbmd1YWdlLCAuLi4gCiAgICAgaWYgKG1fZGlzYWJsZUNhcHRpb25zKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgp
LT5zZXR0aW5ncygpOwotICAgIGlmICghc2V0dGluZ3MpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnNPclN1YnRpdGxlcyA9IG1fY2xvc2VkQ2FwdGlv
bnNWaXNpYmxlIHx8IHVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKIAogICAgIGlmIChraW5kID09IFRl
eHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCgpKQotICAgICAgICByZXR1cm4gc2V0dGluZ3MtPnNo
b3VsZERpc3BsYXlTdWJ0aXRsZXMoKSB8fCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsKKyAgICAg
ICAgcmV0dXJuIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVN1YnRpdGxlcygp
KSB8fCB1c2VyUHJlZmVyc0NhcHRpb25zT3JTdWJ0aXRsZXM7CiAgICAgaWYgKGtpbmQgPT0gVGV4
dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzLT5zaG91
bGREaXNwbGF5Q2FwdGlvbnMoKSB8fCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsKKyAgICAgICAg
cmV0dXJuIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+c2hvdWxkRGlzcGxheUNhcHRpb25zKCkpIHx8
IHVzZXJQcmVmZXJzQ2FwdGlvbnNPclN1YnRpdGxlczsKICAgICBpZiAoa2luZCA9PSBUZXh0VHJh
Y2s6OmRlc2NyaXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzLT5zaG91
bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygpIHx8IG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlOwor
ICAgICAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnNob3VsZERpc3BsYXlUZXh0RGVz
Y3JpcHRpb25zKCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0zOTc2LDIxICs0MDAxLDgg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRDbG9zZWRDYXB0aW9ucwogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSkgewogICAgICAgICBtX2Rpc2FibGVDYXB0aW9ucyA9ICFtX2Nsb3NlZENh
cHRpb25zVmlzaWJsZTsKLSAgICAgICAgCi0gICAgICAgIC8vIE1hcmsgYWxsIHRyYWNrIGVsZW1l
bnRzIGFzIG5vdCAiY29uZmlndXJlZCIgc28gdGhhdCBjb25maWd1cmVUZXh0VHJhY2tzKCkKLSAg
ICAgICAgLy8gd2lsbCByZWNvbnNpZGVyIHdoaWNoIHRyYWNrcyB0byBkaXNwbGF5IGluIGxpZ2h0
IG9mIG5ldyB1c2VyIHByZWZlcmVuY2VzCi0gICAgICAgIC8vIChlLmcuIGRlZmF1bHQgdHJhY2tz
IHNob3VsZCBub3QgYmUgZGlzcGxheWVkIGlmIHRoZSB1c2VyIGhhcyB0dXJuZWQgb2ZmCi0gICAg
ICAgIC8vIGNhcHRpb25zIGFuZCBub24tZGVmYXVsdCB0cmFja3Mgc2hvdWxkIGJlIGRpc3BsYXll
ZCBiYXNlZCBvbiBsYW5ndWFnZQotICAgICAgICAvLyBwcmVmZXJlbmNlcyBpZiB0aGUgdXNlciBo
YXMgdHVybmVkIGNhcHRpb25zIG9uKS4KLSAgICAgICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RD
aGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAg
aWYgKCFub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCA9IHN0YXRpY19j
YXN0PEhUTUxUcmFja0VsZW1lbnQqPihub2RlKTsKLSAgICAgICAgICAgIGlmICh0cmFja0VsZW1l
bnQtPmtpbmQoKSA9PSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCi0gICAgICAgICAgICAg
ICAgfHwgdHJhY2tFbGVtZW50LT5raW5kKCkgPT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3Jk
KCkpCi0gICAgICAgICAgICAgICAgdHJhY2tFbGVtZW50LT5zZXRIYXNCZWVuQ29uZmlndXJlZChm
YWxzZSk7Ci0gICAgICAgIH0KIAorICAgICAgICBtYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tz
QXNVbmNvbmZpZ3VyZWQoKTsKICAgICAgICAgY29uZmlndXJlVGV4dFRyYWNrcygpOwogICAgIH0K
ICNlbHNlCkBAIC00MTc5LDYgKzQxOTEsMzkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVDbG9zZWRDYXB0aQogICAgICAgICAgICAgbWVkaWFDb250cm9scygpLT51cGRhdGVUZXh0VHJh
Y2tEaXNwbGF5KCk7CiAgICAgfQogfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWQoKQoreworICAgIGlmICghaXNWaWRlbygpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQoKTsK
K30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tz
QXNVbmNvbmZpZ3VyZWQoKQoreworICAgIC8vIE1hcmsgYWxsIHRyYWNrIGVsZW1lbnRzIGFzIG5v
dCAiY29uZmlndXJlZCIgc28gdGhhdCBjb25maWd1cmVUZXh0VHJhY2tzKCkKKyAgICAvLyB3aWxs
IHJlY29uc2lkZXIgd2hpY2ggdHJhY2tzIHRvIGRpc3BsYXkgaW4gbGlnaHQgb2YgbmV3IHVzZXIg
cHJlZmVyZW5jZXMKKyAgICAvLyAoZS5nLiBkZWZhdWx0IHRyYWNrcyBzaG91bGQgbm90IGJlIGRp
c3BsYXllZCBpZiB0aGUgdXNlciBoYXMgdHVybmVkIG9mZgorICAgIC8vIGNhcHRpb25zIGFuZCBu
b24tZGVmYXVsdCB0cmFja3Mgc2hvdWxkIGJlIGRpc3BsYXllZCBiYXNlZCBvbiBsYW5ndWFnZQor
ICAgIC8vIHByZWZlcmVuY2VzIGlmIHRoZSB1c2VyIGhhcyB0dXJuZWQgY2FwdGlvbnMgb24pLgor
ICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBu
b2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZSh0cmFj
a1RhZykpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIEhUTUxUcmFj
a0VsZW1lbnQqIHRyYWNrRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxUcmFja0VsZW1lbnQqPihu
b2RlLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gdHJhY2tF
bGVtZW50LT50cmFjaygpOworICAgICAgICBpZiAoIXRleHRUcmFjaykKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIGtpbmQgPSB0ZXh0VHJhY2stPmtpbmQo
KTsKKworICAgICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSB8
fCBraW5kID09IFRleHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkpCisgICAgICAgICAgICB0cmFj
a0VsZW1lbnQtPnNldEhhc0JlZW5Db25maWd1cmVkKGZhbHNlKTsKKyAgICB9CisgICAgY29uZmln
dXJlVGV4dFRyYWNrcygpOworfQorCiAjZW5kaWYKIAogdm9pZCogSFRNTE1lZGlhRWxlbWVudDo6
cHJlRGlzcGF0Y2hFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDEzMTY0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3
IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJDYXB0aW9u
VXNlclByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiUE9ESW50ZXJ2YWxUcmVlLmgiCiAjaW5jbHVk
ZSAiVGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCkBAIC03OCw3ICs3OSw3
IEBAIHR5cGVkZWYgVmVjdG9yPEN1ZUludGVydmFsVHJlZTo6SW50ZXJ2YWwKIAogY2xhc3MgSFRN
TE1lZGlhRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIE1lZGlhUGxheWVyQ2xp
ZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQsIHByaXZhdGUgTWVkaWFD
YW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgTWVkaWFDb250
cm9sbGVySW50ZXJmYWNlCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgICwgcHJpdmF0ZSBU
ZXh0VHJhY2tDbGllbnQKKyAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50LCBwcml2YXRlIENh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcgogI2VuZGlmCiB7CiBwdWJsaWM6CkBAIC0y
NDAsNiArMjQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrcygpOwog
ICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrR3JvdXAoY29uc3QgVHJhY2tHcm91cCYpIGNvbnN0
OwogCisgICAgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3Q7CiAgICAgYm9vbCB1c2Vy
SXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tLaW5kKFN0cmluZykgY29uc3Q7CiAgICAgYm9vbCB0ZXh0
VHJhY2tzQXJlUmVhZHkoKSBjb25zdDsKICAgICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFja0Rpc3Bs
YXkoKTsKQEAgLTMyNSw3ICszMjcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1
dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGF0
dGFjaCgpOworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGV0YWNoKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklERTsKIApAQCAtNDc0LDEyICs0
NzcsMTQgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIHVw
ZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoZmxvYXQpOwotICAgIGJvb2wgdXNlcklzSW50ZXJlc3Rl
ZEluVGhpc0xhbmd1YWdlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIEhUTUxUcmFja0VsZW1l
bnQqIHNob3dpbmdUcmFja1dpdGhTYW1lS2luZChIVE1MVHJhY2tFbGVtZW50KikgY29uc3Q7CiAK
ICAgICBib29sIGlnbm9yZVRyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkgY29uc3QgeyByZXR1
cm4gbV9pZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGUgPiAwOyB9CiAgICAgdm9pZCBiZWdpbklnbm9y
aW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKSB7ICsrbV9pZ25vcmVUcmFja0Rpc3BsYXlV
cGRhdGU7IH0KICAgICB2b2lkIGVuZElnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMo
KSB7IEFTU0VSVChtX2lnbm9yZVRyYWNrRGlzcGxheVVwZGF0ZSk7IC0tbV9pZ25vcmVUcmFja0Rp
c3BsYXlVcGRhdGU7IH0KKworICAgIHZvaWQgbWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0Fz
VW5jb25maWd1cmVkKCk7CisgICAgdmlydHVhbCB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWQoKSBPVkVSUklERTsKICNlbmRpZgogCiAgICAgLy8gVGhlc2UgImludGVybmFsIiBmdW5jdGlv
bnMgZG8gbm90IGNoZWNrIHVzZXIgZ2VzdHVyZSByZXN0cmljdGlvbnMuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShy
ZXZpc2lvbiAxMzE2NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDkgKzQ1LDExIEBACiAjaW5jbHVk
ZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91dFJlcGFpbnRlci5oIgogI2lu
Y2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xSb290RWxl
bWVudC5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUg
IlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5o
IgogI2luY2x1ZGUgIlJlbmRlck1lZGlhLmgiCkBAIC0xMzc4LDIyICsxMzgwLDE4IEBAIHZvaWQg
TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWUKICAgICBoYXNDaGlsZE5vZGVzKCkg
PyBzaG93KCkgOiBoaWRlKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBmbG9hdCBtaW1pbXVtRm9udFNp
emUgPSAxNjsKLXN0YXRpYyBjb25zdCBmbG9hdCB2aWRlb0hlaWdodEZvbnRTaXplUGVyY2VudGFn
ZSA9IC4wNTsKLXN0YXRpYyBjb25zdCBmbG9hdCB0cmFja0JvdHRvbU11bHRpcGxpZXIgPSAuOTsK
LQogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVTaXpl
cygpCiB7CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gdG9QYXJlbnRNZWRp
YUVsZW1lbnQodGhpcyk7CiAgICAgaWYgKCFtZWRpYUVsZW1lbnQgfHwgIW1lZGlhRWxlbWVudC0+
cmVuZGVyZXIoKSB8fCAhbWVkaWFFbGVtZW50LT5yZW5kZXJlcigpLT5pc1ZpZGVvKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEludFJlY3QgdmlkZW9Cb3ggPSB0b1JlbmRlclZpZGVvKG1lZGlh
RWxlbWVudC0+cmVuZGVyZXIoKSktPnZpZGVvQm94KCk7Ci0gICAgaWYgKG1fdmlkZW9EaXNwbGF5
U2l6ZSA9PSB2aWRlb0JveCkKKyAgICBpZiAoIWRvY3VtZW50KCktPnBhZ2UoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fdmlkZW9EaXNwbGF5U2l6ZSA9IHZpZGVvQm94OwogCi0gICAgZmxvYXQg
Zm9udFNpemUgPSBtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLmhlaWdodCgpICogdmlkZW9IZWln
aHRGb250U2l6ZVBlcmNlbnRhZ2U7CisgICAgSW50UmVjdCB2aWRlb0JveCA9IHRvUmVuZGVyVmlk
ZW8obWVkaWFFbGVtZW50LT5yZW5kZXJlcigpKS0+dmlkZW9Cb3goKTsKKworICAgIGZsb2F0IGZv
bnRTaXplID0gdmlkZW9Cb3guc2l6ZSgpLmhlaWdodCgpICogKGRvY3VtZW50KCktPnBhZ2UoKS0+
Z3JvdXAoKS5jYXB0aW9uRm9udFNpemVTY2FsZSgpKTsKICAgICBpZiAoZm9udFNpemUgIT0gbV9m
b250U2l6ZSkgewogICAgICAgICBtX2ZvbnRTaXplID0gZm9udFNpemU7CiAgICAgICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgU3RyaW5nOjpudW1iZXIoZm9u
dFNpemUpICsgInB4Iik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2su
Y3BwCShyZXZpc2lvbiAxMzE2NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBUZXh0VHJhY2s6OnNob3dpbmdLZQogICAgIHJldHVybiBlbmRlZDsKIH0KIAotVGV4dFRy
YWNrOjpUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNr
Q2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwg
Y29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQorVGV4dFRyYWNrOjpU
ZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50
KiBjbGllbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2luZCwgY29uc3QgQXRvbWljU3RyaW5nJiBs
YWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQog
ICAgIDogVHJhY2tCYXNlKGNvbnRleHQsIFRyYWNrQmFzZTo6VGV4dFRyYWNrKQogICAgICwgbV9j
dWVzKDApCiAgICAgLCBtX21lZGlhRWxlbWVudCgwKQpAQCAtMTE3LDcgKzExNyw3IEBAIFRleHRU
cmFjazo6flRleHRUcmFjaygpCiAgICAgY2xlYXJDbGllbnQoKTsKIH0KIAotYm9vbCBUZXh0VHJh
Y2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBTdHJpbmcmIHZhbHVlKQorYm9vbCBUZXh0VHJh
Y2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgc3VidGl0bGVzS2V5d29yZCgpKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xMzMsNyArMTMzLDcgQEAgYm9vbCBUZXh0VHJhY2s6OmlzVmFs
aWRLaW5kS2V5d29yZChjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBUZXh0VHJh
Y2s6OnNldEtpbmQoY29uc3QgU3RyaW5nJiBraW5kKQordm9pZCBUZXh0VHJhY2s6OnNldEtpbmQo
Y29uc3QgQXRvbWljU3RyaW5nJiBraW5kKQogewogICAgIFN0cmluZyBvbGRLaW5kID0gbV9raW5k
OwogCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBUZXh0VHJhY2s6OnNldEtpbmQoY29uc3QgU3Ry
aW5nJiBraQogICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrS2luZENoYW5nZWQodGhpcyk7CiB9
CiAKLXZvaWQgVGV4dFRyYWNrOjpzZXRNb2RlKGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgVGV4
dFRyYWNrOjpzZXRNb2RlKGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZSkKIHsKICAgICAvLyBPbiBz
ZXR0aW5nLCBpZiB0aGUgbmV3IHZhbHVlIGlzbid0IGVxdWFsIHRvIHdoYXQgdGhlIGF0dHJpYnV0
ZSB3b3VsZCBjdXJyZW50bHkKICAgICAvLyByZXR1cm4sIHRoZSBuZXcgdmFsdWUgbXVzdCBiZSBw
cm9jZXNzZWQgYXMgZm9sbG93cyAuLi4KQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFRleHRUcmFj
azo6c2V0TW9kZShjb25zdCBTdHJpbmcmIG1vCiAgICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tN
b2RlQ2hhbmdlZCh0aGlzKTsKIH0KIAotU3RyaW5nIFRleHRUcmFjazo6bW9kZSgpIGNvbnN0CitB
dG9taWNTdHJpbmcgVGV4dFRyYWNrOjptb2RlKCkgY29uc3QKIHsKICAgICAvLyBUaGUgdGV4dCB0
cmFjayAic2hvd2luZyIgYW5kICJzaG93aW5nIGJ5IGRlZmF1bHQiIG1vZGVzIHJldHVybiB0aGUg
c3RyaW5nICJzaG93aW5nIi4KICAgICBpZiAobV9zaG93aW5nQnlEZWZhdWx0KQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCShyZXZpc2lvbiAxMzE2NDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKIAogY2xhc3MgVGV4dFRyYWNrIDogcHVibGljIFRyYWNrQmFzZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0
IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJp
bmcmIGxhbmd1YWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJh
Y2soY29udGV4dCwgY2xpZW50LCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIEFkZFRyYWNrKSk7CiAg
ICAgfQpAQCAtNjMsMjggKzYzLDI4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1lZGlhRWxlbWVu
dChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7IG1fbWVkaWFFbGVtZW50ID0gZWxlbWVudDsg
fQogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIHsgcmV0dXJuIG1fbWVkaWFF
bGVtZW50OyB9CiAKLSAgICBTdHJpbmcga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQot
ICAgIHZvaWQgc2V0S2luZChjb25zdCBTdHJpbmcmKTsKKyAgICBBdG9taWNTdHJpbmcga2luZCgp
IGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorICAgIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNT
dHJpbmcmKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1YnRpdGxlc0tleXdv
cmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjYXB0aW9uc0tleXdvcmQoKTsK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkZXNjcmlwdGlvbnNLZXl3b3JkKCk7CiAg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2hhcHRlcnNLZXl3b3JkKCk7CiAgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWV0YWRhdGFLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGJv
b2wgaXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBib29sIGlz
VmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9taWNTdHJpbmcmKTsKIAotICAgIFN0cmluZyBsYWJl
bCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KLSAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0
cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9CisgICAgQXRvbWljU3RyaW5nIGxhYmVs
KCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRv
bWljU3RyaW5nJiBsYWJlbCkgeyBtX2xhYmVsID0gbGFiZWw7IH0KIAotICAgIFN0cmluZyBsYW5n
dWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KLSAgICB2b2lkIHNldExhbmd1YWdl
KGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpIHsgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOyB9CisgICAg
QXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQorICAg
IHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSkgeyBtX2xhbmd1
YWdlID0gbGFuZ3VhZ2U7IH0KIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpc2Fi
bGVkS2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGhpZGRlbktleXdv
cmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzaG93aW5nS2V5d29yZCgpOwog
Ci0gICAgU3RyaW5nIG1vZGUoKSBjb25zdDsKLSAgICB2b2lkIHNldE1vZGUoY29uc3QgU3RyaW5n
Jik7CisgICAgQXRvbWljU3RyaW5nIG1vZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldE1vZGUoY29u
c3QgQXRvbWljU3RyaW5nJik7CiAKICAgICBib29sIHNob3dpbmdCeURlZmF1bHQoKSBjb25zdCB7
IHJldHVybiBtX3Nob3dpbmdCeURlZmF1bHQ7IH0KICAgICB2b2lkIHNldFNob3dpbmdCeURlZmF1
bHQoYm9vbCBzaG93aW5nKSB7IG1fc2hvd2luZ0J5RGVmYXVsdCA9IHNob3dpbmc7IH0KQEAgLTEx
NiwxNyArMTE2LDE3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVuZGVyZWQoKTsKIAogcHJvdGVj
dGVkOgotICAgIFRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xp
ZW50KiwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJp
bmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlKTsKKyAgICBUZXh0VHJhY2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYga2luZCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSwg
VGV4dFRyYWNrVHlwZSk7CiAKICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwog
CiBwcml2YXRlOgogICAgIFRleHRUcmFja0N1ZUxpc3QqIGVuc3VyZVRleHRUcmFja0N1ZUxpc3Qo
KTsKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKLSAgICBTdHJpbmcgbV9r
aW5kOwotICAgIFN0cmluZyBtX2xhYmVsOwotICAgIFN0cmluZyBtX2xhbmd1YWdlOwotICAgIFN0
cmluZyBtX21vZGU7CisgICAgQXRvbWljU3RyaW5nIG1fa2luZDsKKyAgICBBdG9taWNTdHJpbmcg
bV9sYWJlbDsKKyAgICBBdG9taWNTdHJpbmcgbV9sYW5ndWFnZTsKKyAgICBBdG9taWNTdHJpbmcg
bV9tb2RlOwogICAgIFRleHRUcmFja0NsaWVudCogbV9jbGllbnQ7CiAgICAgVGV4dFRyYWNrVHlw
ZSBtX3RyYWNrVHlwZTsKICAgICBSZWFkaW5lc3NTdGF0ZSBtX3JlYWRpbmVzc1N0YXRlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAkocmV2aXNpb24g
MTMxNjQ5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBAIFRleHRUcmFja0N1ZUJveDo6VGV4dFRyYWNr
Q3VlQm94KERvY3VtZW4KICAgICA6IEhUTUxFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpCiAgICAg
LCBtX2N1ZShjdWUpCiB7CisgICAgc2V0U2hhZG93UHNldWRvSWQoc2hhZG93UHNldWRvSWQoKSk7
CiB9CiAKIFRleHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlQm94OjpnZXRDdWUoKSBjb25zdApAQCAt
MTY3LDEyICsxNjgsMTcgQEAgdm9pZCBUZXh0VHJhY2tDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGll
cwogICAgIH0KIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tDdWVCb3g6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrQ3VlQm94Ojp0
ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkLCAoIi13
ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IikpOwogICAgIHJldHVybiB0cmFja0Rpc3Bs
YXlCb3hTaGFkb3dQc2V1ZG9JZDsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tD
dWVCb3g6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdGV4dFRyYWNrQ3Vl
Qm94U2hhZG93UHNldWRvSWQoKTsKK30KKwogUmVuZGVyT2JqZWN0KiBUZXh0VHJhY2tDdWVCb3g6
OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAg
IHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0VHJhY2tDdWUodGhpcyk7CkBAIC0xODAsNiAr
MTg2LDE4IEBAIFJlbmRlck9iamVjdCogVGV4dFRyYWNrQ3VlQm94OjpjcmVhdGVSZW4KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitjb25zdCBBdG9taWNTdHJpbmcmIFRleHRU
cmFja0N1ZTo6cGFzdE5vZGVzU2hhZG93UHNldWRvSWQoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMsICgiLXdlYmtpdC1tZWRpYS10ZXh0
LXRyYWNrLXBhc3Qtbm9kZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgcmV0dXJuIHN1YnRpdGxlczsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJh
Y2tDdWU6OmZ1dHVyZU5vZGVzU2hhZG93UHNldWRvSWQoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdWJ0aXRsZXMsICgiLXdlYmtpdC1tZWRpYS10ZXh0
LXRyYWNrLWZ1dHVyZS1ub2RlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICByZXR1cm4gc3VidGl0bGVzOworfQorCiBUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc3RhcnQsIGRvdWJsZSBl
bmQsIGNvbnN0IFN0cmluZyYgY29udGVudCkKICAgICA6IG1fc3RhcnRUaW1lKHN0YXJ0KQogICAg
ICwgbV9lbmRUaW1lKGVuZCkKQEAgLTY1Miw5ICs2NzAsNiBAQCB2b2lkIFRleHRUcmFja0N1ZTo6
dXBkYXRlRGlzcGxheVRyZWUoZmxvCiAgICAgLy8gdGltZXN0YW1wcyAocHJvY2Vzc2luZyBpbnN0
cnVjdGlvbnMpLCBhbG9uZyB3aXRoIGRpc3BsYXlhYmxlIG5vZGVzLgogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RyaW5nLCB0aW1lc3RhbXBUYWcsIChBU0NJSUxpdGVyYWwoInRpbWVz
dGFtcCIpKSk7CiAKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
dHJhY2tQYXN0Tm9kZXNTaGFkb3dQc2V1ZG9JZCwgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2st
cGFzdC1ub2RlcyIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgdHJhY2tGdXR1cmVOb2Rlc1NoYWRvd1BzZXVkb0lkLCAoIi13ZWJraXQtbWVkaWEtdGV4dC10
cmFjay1mdXR1cmUtbm9kZXMiKSk7Ci0KICAgICBpZiAoIXRyYWNrKCktPmlzUmVuZGVyZWQoKSkK
ICAgICAgIHJldHVybjsKIApAQCAtNjYyLDEwICs2NzcsMTAgQEAgdm9pZCBUZXh0VHJhY2tDdWU6
OnVwZGF0ZURpc3BsYXlUcmVlKGZsbwogCiAgICAgLy8gQ2xlYXIgdGhlIGNvbnRlbnRzIG9mIHRo
ZSB0d28gc2V0cy4KICAgICBtX2Z1dHVyZURvY3VtZW50Tm9kZXMtPnJlbW92ZUNoaWxkcmVuKCk7
Ci0gICAgbV9mdXR1cmVEb2N1bWVudE5vZGVzLT5zZXRTaGFkb3dQc2V1ZG9JZCh0cmFja0Z1dHVy
ZU5vZGVzU2hhZG93UHNldWRvSWQpOworICAgIG1fZnV0dXJlRG9jdW1lbnROb2Rlcy0+c2V0U2hh
ZG93UHNldWRvSWQoZnV0dXJlTm9kZXNTaGFkb3dQc2V1ZG9JZCgpKTsKIAogICAgIG1fcGFzdERv
Y3VtZW50Tm9kZXMtPnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgbV9wYXN0RG9jdW1lbnROb2Rlcy0+
c2V0U2hhZG93UHNldWRvSWQodHJhY2tQYXN0Tm9kZXNTaGFkb3dQc2V1ZG9JZCk7CisgICAgbV9w
YXN0RG9jdW1lbnROb2Rlcy0+c2V0U2hhZG93UHNldWRvSWQocGFzdE5vZGVzU2hhZG93UHNldWRv
SWQoKSk7CiAKICAgICAvLyBVcGRhdGUgdGhlIHR3byBzZXRzIGNvbnRhaW5pbmcgcGFzdCBhbmQg
ZnV0dXJlIFdlYlZUVCBvYmplY3RzLgogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiByZWZl
cmVuY2VUcmVlID0gZ2V0Q3VlQXNIVE1MKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmgJKHJldmlzaW9uIDEzMTY0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgYXBwbHlDU1NQcm9wZXJ0aWVzKCk7CiAKICAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKKyAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgp
OwogCiBwcml2YXRlOgogICAgIFRleHRUcmFja0N1ZUJveChEb2N1bWVudCosIFRleHRUcmFja0N1
ZSopOwpAQCAtODAsNiArODEsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UZXh0VHJhY2tD
dWUoKTsKIAorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHBhc3ROb2Rlc1NoYWRvd1Bz
ZXVkb0lkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZnV0dXJlTm9kZXNTaGFk
b3dQc2V1ZG9JZCgpOworCiAgICAgVGV4dFRyYWNrKiB0cmFjaygpIGNvbnN0OwogICAgIHZvaWQg
c2V0VHJhY2soUGFzc1JlZlB0cjxUZXh0VHJhY2s+KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcl9oCisjZGVmaW5lIENh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcl9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2VHcm91cDsK
KworY2xhc3MgQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIHZvaWQgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpID0gMDsKK3Byb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIH5DYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIoKSB7IH0K
K307CisKK2NsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzT3duUHRyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+IGNyZWF0ZShQYWdlR3JvdXAqIGdy
b3VwKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyhncm91cCkp
OyB9CisgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVmZXJlbmNlcygpIHsgfQorCisgICAgdmly
dHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IGNhcHRpb25Gb250U2l6ZVNjYWxlKCkgY29u
c3QgeyByZXR1cm4gMC4wNWY7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBjYXB0aW9uc1N0eWxlU2hl
ZXRPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKSB7IH0KKworICAgIFBhZ2VHcm91cCogcGFnZUdyb3VwKCkg
eyByZXR1cm4gbV9wYWdlR3JvdXA7IH0KKworcHJvdGVjdGVkOgorICAgIENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXMoUGFnZUdyb3VwKiBncm91cCkgOiBtX3BhZ2VHcm91cChncm91cCkgeyB9CisKK3By
aXZhdGU6CisgICAgUGFnZUdyb3VwKiBtX3BhZ2VHcm91cDsKK307CisgICAgCit9CisjZW5kaWYK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hY19oCisjZGVmaW5lIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWNf
aAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcy5oIgorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1l
cy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYyA6IHB1YmxpYyBDYXB0aW9uVXNlclByZWZl
cmVuY2VzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjPiBjcmVhdGUoUGFnZUdyb3VwKiBncm91cCkgeyByZXR1cm4gYWRvcHRQdHIobmV3
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMoZ3JvdXApKTsgfQorICAgIHZpcnR1YWwgfkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWMoKTsKKworICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc0Nh
cHRpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9u
UHJlZmVyZW5jZXMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGZsb2F0IGNhcHRpb25G
b250U2l6ZVNjYWxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlv
bnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKSBPVkVSUklERTsKKworICAgIHZvaWQgY2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZCgpOworCitwcml2YXRlOgorICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWMoUGFnZUdyb3VwKiBncm91cCk7CisKKyAgICBDb2xvciBjYXB0aW9uc1dpbmRvd0NvbG9yKCkg
Y29uc3Q7CisgICAgQ29sb3IgY2FwdGlvbnNCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICBD
b2xvciBjYXB0aW9uc1RleHRDb2xvcigpIGNvbnN0OworICAgIFN0cmluZyBjYXB0aW9uc0RlZmF1
bHRGb250KCkgY29uc3Q7CisgICAgQ29sb3IgY2FwdGlvbnNFZGdlQ29sb3JGb3JUZXh0Q29sb3Io
Y29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBTdHJpbmcgY2FwdGlvbnNUZXh0RWRnZVN0eWxlKCkg
Y29uc3Q7CisgICAgU3RyaW5nIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVy
dHlJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBTdHJpbmcgY3Nz
Q29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBjb25zdCBDb2xvciYpIGNvbnN0OworCisgICAg
dm9pZCB1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKTsKKworICAgIEhhc2hTZXQ8Q2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKj4gbV9jYXB0aW9uUHJlZmVyZW5jZUNoYW5n
ZUxpc3RlbmVyczsKKyAgICBpbnQgbV9tZWRpYUVsZW1lbnRzTGlzdGVuaW5nRm9yQ2FwdGlvbnNQ
cmVmZXJlbmNlQ2hhbmdlOworfTsKKyAgICAKK30KKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0JKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWMubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorCisjaW1wb3J0ICJDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmgi
CisKKyNpbXBvcnQgIkNvbG9yTWFjLmgiCisjaW1wb3J0ICJET01XcmFwcGVyV29ybGQuaCIKKyNp
bXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgorI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiUGFn
ZUdyb3VwLmgiCisjaW1wb3J0ICJUZXh0VHJhY2tDdWUuaCIKKyNpbXBvcnQgIlVzZXJTdHlsZVNo
ZWV0VHlwZXMuaCIKKyNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdm9p
ZCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKENGTm90
aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZv
aWQgKiwgQ0ZEaWN0aW9uYXJ5UmVmKQoreworICAgIHN0YXRpY19jYXN0PENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWMqPihvYnNlcnZlciktPmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKK30K
KworCitDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
KFBhZ2VHcm91cCogZ3JvdXApCisgICAgOiBDYXB0aW9uVXNlclByZWZlcmVuY2VzKGdyb3VwKQor
ICAgICwgbV9tZWRpYUVsZW1lbnRzTGlzdGVuaW5nRm9yQ2FwdGlvbnNQcmVmZXJlbmNlQ2hhbmdl
KDApCit7Cit9CisKK0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6On5DYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjKCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnRzTGlzdGVuaW5nRm9yQ2FwdGlv
bnNQcmVmZXJlbmNlQ2hhbmdlKQorICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlbW92ZU9i
c2VydmVyKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKSwgdGhpcywgd2tDYXB0
aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigpLCBOVUxMKTsKK30K
KworYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1c2VySGFzQ2FwdGlvblByZWZlcmVu
Y2VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gd2tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVm
ZXJlbmNlcygpOworfQorCitib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVm
ZXJzQ2FwdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiB3a0NhcHRpb25BcHBlYXJhbmNlU2hv
d0NhcHRpb25zV2hlbkF2YWlsYWJsZSgpOworfQorCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWM6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgIGlmICghd2tD
YXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigpKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgaWYgKCFtX21lZGlhRWxlbWVudHNMaXN0ZW5pbmdGb3JDYXB0
aW9uc1ByZWZlcmVuY2VDaGFuZ2UpIHsKKyAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRP
YnNlcnZlciAoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0aGlzLCB1c2Vy
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrLCB3a0NhcHRpb25B
cHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCksIE5VTEwsIENGTm90aWZp
Y2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yQ29hbGVzY2UpOworICAgICAgICB1cGRhdGVDYXB0aW9u
U3R5bGVTaGVldE92ZXJpZGUoKTsKKyAgICB9CisgICAgKyttX21lZGlhRWxlbWVudHNMaXN0ZW5p
bmdGb3JDYXB0aW9uc1ByZWZlcmVuY2VDaGFuZ2U7CisgICAgCisgICAgbV9jYXB0aW9uUHJlZmVy
ZW5jZUNoYW5nZUxpc3RlbmVycy5hZGQobGlzdGVuZXIpOworfQorCit2b2lkIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWM6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2Fs
bGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIpCit7Cisg
ICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50c0xpc3RlbmluZ0ZvckNhcHRpb25zUHJlZmVyZW5jZUNo
YW5nZSk7CisgICAgLS1tX21lZGlhRWxlbWVudHNMaXN0ZW5pbmdGb3JDYXB0aW9uc1ByZWZlcmVu
Y2VDaGFuZ2U7CisgICAgCisgICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0No
YW5nZWROb3RpZmljYXRpb24oKSkKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZUNoYW5nZUxp
c3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOworfQorCitDb2xvciBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uc1dpbmRvd0NvbG9yKCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0dD
b2xvclJlZj4gY29sb3IoQWRvcHRDRiwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xv
cigpKTsKKyAgICBDb2xvciB3aW5kb3dDb2xvcihjb2xvci5nZXQoKSk7CisgICAgaWYgKCF3aW5k
b3dDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHdpbmRvd0NvbG9yID0gQ29sb3I6OnRyYW5zcGFy
ZW50OworICAgIAorICAgIENHRmxvYXQgb3BhY2l0eTsKKyAgICBpZiAod2tDYXB0aW9uQXBwZWFy
YW5jZUdldFdpbmRvd09wYWNpdHkoJm9wYWNpdHkpKQorICAgICAgICByZXR1cm4gQ29sb3Iod2lu
ZG93Q29sb3IucmVkKCksIHdpbmRvd0NvbG9yLmdyZWVuKCksIHdpbmRvd0NvbG9yLmJsdWUoKSwg
c3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSk7CisgICAgCisgICAgaWYgKCFjb2xvcikK
KyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgCisgICAgcmV0dXJuIHdpbmRvd0NvbG9yOwor
fQorCitDb2xvciBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc0JhY2tncm91bmRD
b2xvcigpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBkZWZhdWx0IHZhbHVlIG11c3QgYmUgdGhlIHNh
bWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4gbWVkaWFDb250cm9scy5jc3MgZm9yIC13ZWJraXQt
bWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZGVzCisgICAgLy8gYW5kIHdlYmtpdC1tZWRpYS10ZXh0
LXRyYWNrLWZ1dHVyZS1ub2Rlcy4KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBkZWZh
dWx0QmFja2dyb3VuZENvbG9yLCAoQ29sb3IoMCwgMCwgMCwgMC44ICogMjU1KSkpOworICAgIAor
ICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihBZG9wdENGLCB3a0NhcHRpb25BcHBlYXJh
bmNlQ29weUJhY2tncm91bmRDb2xvcigpKTsKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoY29s
b3IuZ2V0KCkpOworICAgIGlmICghYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkgeworICAgICAg
ICBiYWNrZ3JvdW5kQ29sb3IgPSBkZWZhdWx0QmFja2dyb3VuZENvbG9yOworICAgIH0KKyAgICAK
KyAgICBDR0Zsb2F0IG9wYWNpdHk7CisgICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNr
Z3JvdW5kT3BhY2l0eSgmb3BhY2l0eSkpCisgICAgICAgIHJldHVybiBDb2xvcihiYWNrZ3JvdW5k
Q29sb3IucmVkKCksIGJhY2tncm91bmRDb2xvci5ncmVlbigpLCBiYWNrZ3JvdW5kQ29sb3IuYmx1
ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKTsKKyAgICAKKyAgICBpZiAoIWNv
bG9yKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gYmFja2dyb3Vu
ZENvbG9yOworfQorCitDb2xvciBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1Rl
eHRDb2xvcigpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yKEFkb3B0
Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yKCkpOworICAgIENvbG9y
IHRleHRDb2xvcihjb2xvci5nZXQoKSk7CisgICAgaWYgKCF0ZXh0Q29sb3IuaXNWYWxpZCgpKSB7
CisgICAgICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBv
bmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQt
dHJhY2stY29udGFpbmVyLgorICAgICAgICB0ZXh0Q29sb3IgPSBDb2xvcjo6d2hpdGU7CisgICAg
fQorICAgIAorICAgIENHRmxvYXQgb3BhY2l0eTsKKyAgICBpZiAod2tDYXB0aW9uQXBwZWFyYW5j
ZUdldEZvcmVncm91bmRPcGFjaXR5KCZvcGFjaXR5KSkKKyAgICAgICAgcmV0dXJuIENvbG9yKHRl
eHRDb2xvci5yZWQoKSwgdGV4dENvbG9yLmdyZWVuKCksIHRleHRDb2xvci5ibHVlKCksIHN0YXRp
Y19jYXN0PGludD4ob3BhY2l0eSAqIDI1NSkpOworICAgIAorICAgIGlmICghY29sb3IpCisgICAg
ICAgIHJldHVybiBDb2xvcigpOworICAgIAorICAgIHJldHVybiB0ZXh0Q29sb3I7Cit9CisKK0Nv
bG9yIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENv
bG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IpIGNvbnN0Cit7CisgICAgaW50IGRpc3RhbmNlRnJv
bVdoaXRlID0gZGlmZmVyZW5jZVNxdWFyZWQodGV4dENvbG9yLCBDb2xvcjo6d2hpdGUpOworICAg
IGludCBkaXN0YW5jZUZyb21CbGFjayA9IGRpZmZlcmVuY2VTcXVhcmVkKHRleHRDb2xvciwgQ29s
b3I6OmJsYWNrKTsKKyAgICAKKyAgICBpZiAoZGlzdGFuY2VGcm9tV2hpdGUgPCBkaXN0YW5jZUZy
b21CbGFjaykKKyAgICAgICAgcmV0dXJuIHRleHRDb2xvci5kYXJrKCk7CisgICAgCisgICAgcmV0
dXJuIHRleHRDb2xvci5saWdodCgpOworfQorCitTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYzo6Y3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eUlEIGlkLCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBjb25zdCBDb2xvciYgdGV4dENvbG9yKSBjb25zdAoreworICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAKKyAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0
eU5hbWVTdHJpbmcoaWQpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOicpOworICAgIGJ1aWxkZXIu
YXBwZW5kKHZhbHVlKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKHRleHRDb2xvcikuc2VyaWFsaXplZCgp
KTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOycpOworICAgIAorICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjc3NDb2xv
clByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKK3sK
KyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgCisgICAgYnVpbGRlci5hcHBlbmQoZ2V0
UHJvcGVydHlOYW1lU3RyaW5nKGlkKSk7CisgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChjb2xvci5zZXJpYWxpemVkKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCc7
Jyk7CisgICAgCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zVGV4dEVkZ2VTdHlsZSgpIGNvbnN0Cit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZVJhaXNlZCwg
KCIgLS4wNWVtIC0uMDVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlRGVwcmVzc2VkLCAo
IiAuMDVlbSAuMDVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlRHJvcFNoYWRvdywgKCIg
LjA3NWVtIC4wNzVlbSAwICIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZWRnZVN0eWxlVW5pZm9ybSwgKCIgLjAz
ZW0gIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIAorICAgIENvbG9yIGNv
bG9yID0gY2FwdGlvbnNUZXh0Q29sb3IoKTsKKyAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKKyAg
ICAgICAgY29sb3Iuc2V0TmFtZWRDb2xvcigiYmxhY2siKTsKKyAgICBjb2xvciA9IGNhcHRpb25z
RWRnZUNvbG9yRm9yVGV4dENvbG9yKGNvbG9yKTsKKyAgICAKKyAgICB3a0NhcHRpb25UZXh0RWRn
ZVN0eWxlIHRleHRFZGdlU3R5bGUgPSBzdGF0aWNfY2FzdDx3a0NhcHRpb25UZXh0RWRnZVN0eWxl
Pih3a0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSgpKTsKKyAgICBzd2l0Y2ggKHRl
eHRFZGdlU3R5bGUpIHsKKyAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlVW5kZWZp
bmVkOgorICAgICAgICBjYXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVOb25lOgorICAgICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSB3a0Nh
cHRpb25UZXh0RWRnZVN0eWxlUmFpc2VkOgorICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5
V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVSYWlzZWQs
IGNvbG9yKTsKKyAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlRGVwcmVzc2VkOgor
ICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVy
dHlUZXh0U2hhZG93LCBlZGdlU3R5bGVEZXByZXNzZWQsIGNvbG9yKTsKKyAgICAgICAgY2FzZSB3
a0NhcHRpb25UZXh0RWRnZVN0eWxlRHJvcFNoYWRvdzoKKyAgICAgICAgICAgIHJldHVybiBjc3NQ
cm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxl
RHJvcFNoYWRvdywgY29sb3IpOworICAgICAgICBjYXNlIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVV
bmlmb3JtOgorICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3Io
Q1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBlZGdlU3R5bGVVbmlmb3JtLCBjb2xvcik7Cisg
ICAgICAgICAgICAKKyAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlTWF4OgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworU3RyaW5nIENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWM6OmNhcHRpb25zRGVmYXVsdEZvbnQoKSBjb25zdAoreworICAgIFJldGFpblB0
cjxDR0ZvbnRSZWY+IGZvbnQoQWRvcHRDRiwgd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250Rm9y
U3R5bGUod2tDYXB0aW9uRm9udFN0eWxlRGVmYXVsdCkpOworICAgIGlmICghZm9udCkKKyAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBuYW1lKEFkb3B0Q0YsIENHRm9udENvcHlQb3N0U2NyaXB0TmFtZShmb250LmdldCgpKSk7Cisg
ICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAKKyAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgCisgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVy
dHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5Rm9udEZhbWlseSkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KCI6IFwiIik7CisgICAgYnVpbGRlci5hcHBlbmQobmFtZS5nZXQoKSk7CisgICAgYnVpbGRlci5h
cHBlbmQoIlwiOyIpOworICAgIAorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVy
cmlkZSgpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBjYXB0aW9uc092ZXJyaWRlU3R5bGVT
aGVldDsKKyAgICAKKyAgICBDb2xvciBjb2xvciA9IGNhcHRpb25zQmFja2dyb3VuZENvbG9yKCk7
CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWU6OnBhc3ROb2Rlc1NoYWRvd1BzZXVkb0lkKCkpOwor
ICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsKKyAgICAgICAg
Y2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IsIGNvbG9yKSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVT
dHlsZVNoZWV0LmFwcGVuZCgnfScpOworICAgICAgICAKKyAgICAgICAgY2FwdGlvbnNPdmVycmlk
ZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86OiIpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRl
U3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNrQ3VlOjpmdXR1cmVOb2Rlc1NoYWRvd1BzZXVkb0lk
KCkpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsKKyAg
ICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGNzc0NvbG9yUHJvcGVydHko
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGNvbG9yKSk7CisgICAgICAgIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScpOworICAgIH0KKyAgICAKKyAgICBjb2xvciA9IGNh
cHRpb25zV2luZG93Q29sb3IoKTsKKyAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAg
IGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKKyAgICAgICAg
Y2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZUJveDo6dGV4dFRy
YWNrQ3VlQm94U2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZCgneycpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5h
cHBlbmQoY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgY29sb3Ip
KTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7CisgICAg
fQorICAgIAorICAgIGNvbG9yID0gY2FwdGlvbnNUZXh0Q29sb3IoKTsKKyAgICBTdHJpbmcgZWRn
ZVN0eWxlID0gY2FwdGlvbnNUZXh0RWRnZVN0eWxlKCk7CisgICAgU3RyaW5nIGZvbnROYW1lID0g
Y2FwdGlvbnNEZWZhdWx0Rm9udCgpOworICAgIGlmIChjb2xvci5pc1ZhbGlkKCkgfHwgIWVkZ2VT
dHlsZS5pc0VtcHR5KCkgfHwgIWZvbnROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBjYXB0aW9u
c092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CisgICAgICAgIGNhcHRpb25z
T3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWVCb3g6OnRleHRUcmFja0N1ZUJv
eFNoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5h
cHBlbmQoJ3snKTsKKyAgICAgICAgCisgICAgICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCisgICAg
ICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9wZXJ0
eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xvcikpOworICAgICAgICBpZiAoIWVkZ2VTdHlsZS5pc0Vt
cHR5KCkpCisgICAgICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoZWRn
ZVN0eWxlKTsKKyAgICAgICAgaWYgKCFmb250TmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBj
YXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoZm9udE5hbWUpOworICAgICAgICAKKyAg
ICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7CisgICAgfQorICAg
IAorICAgIHJldHVybiBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC50b1N0cmluZygpOworfQor
CitmbG9hdCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uRm9udFNpemVTY2FsZSgp
IGNvbnN0Cit7CisgICAgQ0dGbG9hdCBjaGFyYWN0ZXJTY2FsZSA9IENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OmNhcHRpb25Gb250U2l6ZVNjYWxlKCk7CisgICAgQ0dGbG9hdCBzY2FsZUFkanVzdG1l
bnQ7CisgICAgCisgICAgaWYgKCF3a0NhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0
ZXJTaXplKCZzY2FsZUFkanVzdG1lbnQpKQorICAgICAgICByZXR1cm4gY2hhcmFjdGVyU2NhbGU7
CisgICAgCisgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc2NhbGVBZGp1c3RtZW50
ICogY2hhcmFjdGVyU2NhbGUpOworfQorCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQoreworICAgIGlmICghbV9tZWRpYUVsZW1lbnRz
TGlzdGVuaW5nRm9yQ2FwdGlvbnNQcmVmZXJlbmNlQ2hhbmdlKQorICAgICAgICByZXR1cm47CisK
KyAgICB1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKTsKKworICAgIGZvciAoSGFzaFNl
dDxDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqPjo6aXRlcmF0b3IgaSA9IG1fY2Fw
dGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnMuYmVnaW4oKTsgaSAhPSBtX2NhcHRpb25QcmVm
ZXJlbmNlQ2hhbmdlTGlzdGVuZXJzLmVuZCgpOyArK2kpCisgICAgICAgICgqaSktPmNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWQoKTsKK30KKwordm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Ojp1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKQoreworICAgIC8vIElkZW50aWZ5IG91
ciBvdmVycmlkZSBzdHlsZSBzaGVldCB3aXRoIGEgdW5pcXVlIFVSTCAtIGEgbmV3IHNjaGVtZSBh
bmQgYSBVVUlELgorICAgIERFRklORV9TVEFUSUNfTE9DQUwoS1VSTCwgY2FwdGlvbnNTdHlsZVNo
ZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAidXNlci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYx
Mi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMiKSk7CisgICAgCisgICAgcGFnZUdyb3VwKCkt
PnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBj
YXB0aW9uc1N0eWxlU2hlZXRVUkwpOworICAgIAorICAgIGlmICghdXNlckhhc0NhcHRpb25QcmVm
ZXJlbmNlcygpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgU3RyaW5nIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0ID0gY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKTsKKyAgICBpZiAo
Y2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgcGFnZUdyb3VwKCktPmFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSwgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQsIGNhcHRpb25zU3R5bGVT
aGVldFVSTCwgVmVjdG9yPFN0cmluZz4oKSwKKyAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPigp
LCBJbmplY3RJbkFsbEZyYW1lcywgVXNlclN0eWxlQXV0aG9yTGV2ZWwsIEluamVjdEluRXhpc3Rp
bmdEb2N1bWVudHMpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAxMzE2NDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4
LDE0IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNl
LmgiCiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1
ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaCIKKyNlbHNlCisjaW5jbHVkZSAiQ2FwdGlv
blVzZXJQcmVmZXJlbmNlcy5oIgorI2VuZGlmCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rcy5oIgogI2VuZGlmCkBAIC0zOTYsNCArNDA0LDQ2
IEBAIHZvaWQgUGFnZUdyb3VwOjpyZXNldFVzZXJTdHlsZUNhY2hlSW5BbGwKICAgICB9CiB9CiAK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBQYWdlR3Jv
dXA6OmNhcHRpb25QcmVmZXJlbmNlcygpCit7CisgICAgaWYgKCFtX2NhcHRpb25QcmVmZXJlbmNl
cykKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y3JlYXRlKHRoaXMpOworI2Vsc2UKKyAgICAgICAgbV9j
YXB0aW9uUHJlZmVyZW5jZXMgPSBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpjcmVhdGUodGhpcyk7
CisjZW5kaWYKKworICAgIHJldHVybiBtX2NhcHRpb25QcmVmZXJlbmNlcy5nZXQoKTsKK30KKyAg
ICAKK3ZvaWQgUGFnZUdyb3VwOjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRD
YWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikKK3sK
KyAgICBjYXB0aW9uUHJlZmVyZW5jZXMoKS0+cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkQ2FsbGJhY2tzKGxpc3RlbmVyKTsKK30KKwordm9pZCBQYWdlR3JvdXA6OnVucmVnaXN0
ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgaWYgKCFtX2NhcHRpb25QcmVmZXJl
bmNlcykKKyAgICAgICAgcmV0dXJuOworICAgIGNhcHRpb25QcmVmZXJlbmNlcygpLT51bnJlZ2lz
dGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhsaXN0ZW5lcik7Cit9Cisg
ICAgCitib29sIFBhZ2VHcm91cDo6dXNlclByZWZlcnNDYXB0aW9ucygpCit7CisgICAgcmV0dXJu
IGNhcHRpb25QcmVmZXJlbmNlcygpLT51c2VyUHJlZmVyc0NhcHRpb25zKCk7Cit9CisKK2Jvb2wg
UGFnZUdyb3VwOjp1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkKK3sKKyAgICByZXR1cm4gY2Fw
dGlvblByZWZlcmVuY2VzKCktPnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKK30KKworZmxvYXQgUGFn
ZUdyb3VwOjpjYXB0aW9uRm9udFNpemVTY2FsZSgpCit7CisgICAgcmV0dXJuIGNhcHRpb25QcmVm
ZXJlbmNlcygpLT5jYXB0aW9uRm9udFNpemVTY2FsZSgpOworfQorCisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCShyZXZpc2lvbiAx
MzE2NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw2ICszNiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisgICAgY2xhc3MgQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVy
OworICAgIGNsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM7CisjZW5kaWYKICAgICBjbGFzcyBL
VVJMOwogICAgIGNsYXNzIEdyb3VwU2V0dGluZ3M7CiAgICAgY2xhc3MgSURCRmFjdG9yeUJhY2tl
bmRJbnRlcmZhY2U7CkBAIC0xMDMsMTIgKzEwNywyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgR3JvdXBTZXR0aW5ncyogZ3JvdXBTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1f
Z3JvdXBTZXR0aW5ncy5nZXQoKTsgfQogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICAg
ICBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKKyAgICAgICAgYm9vbCB1c2VySGFzQ2FwdGlv
blByZWZlcmVuY2VzKCk7CisgICAgICAgIGZsb2F0IGNhcHRpb25Gb250U2l6ZVNjYWxlKCk7Cisg
ICAgICAgIHZvaWQgcmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tz
KENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopOworICAgICAgICB2b2lkIHVucmVn
aXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWRMaXN0ZW5lciopOworI2VuZGlmCisKICAgICBwcml2YXRlOgogICAgICAgICBQ
YWdlR3JvdXAoUGFnZSopOwogCiAgICAgICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoTGlua0hhc2gg
c3RyaW5nSGFzaCk7CiAgICAgICAgIHZvaWQgcmVzZXRVc2VyU3R5bGVDYWNoZUluQWxsRnJhbWVz
KCk7CiAgIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAgICAgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcyogY2FwdGlvblByZWZlcmVuY2VzKCk7CisjZW5kaWYKICAgICAgICAgU3RyaW5nIG1f
bmFtZTsKIAogICAgICAgICBIYXNoU2V0PFBhZ2UqPiBtX3BhZ2VzOwpAQCAtMTIzLDYgKzEzOCwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE93blB0cjxVc2VyU3R5bGVTaGVldE1h
cD4gbV91c2VyU3R5bGVTaGVldHM7CiAKICAgICAgICAgT3duUHRyPEdyb3VwU2V0dGluZ3M+IG1f
Z3JvdXBTZXR0aW5nczsKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAgICAgT3duUHRy
PENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+IG1fY2FwdGlvblByZWZlcmVuY2VzOworI2VuZGlmCiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCShyZXZpc2lvbiAx
MzE2NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsNiArMzQ0LDQwIEBAIGV4dGVybiBDR0Zsb2F0
ICgqd2tOU0VsYXN0aWNEZWx0YUZvclJlYm8KIGV4dGVybiBDR0Zsb2F0ICgqd2tOU1JlYm91bmRE
ZWx0YUZvckVsYXN0aWNEZWx0YSkoQ0dGbG9hdCBkZWx0YSk7CiAjZW5kaWYKIAordHlwZWRlZiBl
bnVtIHsKKyAgICB3a0NhcHRpb25Gb250U3R5bGVEZWZhdWx0ID0gMCwKKyAgICB3a0NhcHRpb25G
b250U3R5bGVNb25vc3BhY2VkV2l0aFNlcmlmLAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZVByb3Bv
cnRpb25hbFdpdGhTZXJpZiwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVNb25vc3BhY2VkV2l0aG91
dFNlcmlmLAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZVByb3BvcnRpb25hbFdpdGhvdXRTZXJpZiwK
KyAgICB3a0NhcHRpb25Gb250U3R5bGVDYXN1YWwsCisgICAgd2tDYXB0aW9uRm9udFN0eWxlQ3Vy
c2l2ZSwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVTbWFsbENhcGl0YWwsCisgICAgd2tDYXB0aW9u
Rm9udFN0eWxlTWF4Cit9IHdrQ2FwdGlvbkZvbnRTdHlsZTsKKwordHlwZWRlZiBlbnVtIHsKKyAg
ICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlVW5kZWZpbmVkID0gMCwKKyAgICB3a0NhcHRpb25UZXh0
RWRnZVN0eWxlTm9uZSwKKyAgICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlUmFpc2VkLAorICAgIHdr
Q2FwdGlvblRleHRFZGdlU3R5bGVEZXByZXNzZWQsCisgICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHls
ZVVuaWZvcm0sCisgICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZURyb3BTaGFkb3csCisgICAgd2tD
YXB0aW9uVGV4dEVkZ2VTdHlsZU1heAorfSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlOworCitleHRl
cm4gYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2VyUHJlZmVyZW5jZXMpKHZvaWQpOwor
ZXh0ZXJuIGJvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJs
ZSkodm9pZCk7CitleHRlcm4gQ0dDb2xvclJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3Jl
Z3JvdW5kQ29sb3IpKHZvaWQpOworZXh0ZXJuIENHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFu
Y2VDb3B5QmFja2dyb3VuZENvbG9yKSh2b2lkKTsKK2V4dGVybiBDR0NvbG9yUmVmKCp3a0NhcHRp
b25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yKSh2b2lkKTsKK2V4dGVybiBib29sKCp3a0NhcHRp
b25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkpKENHRmxvYXQqKTsKK2V4dGVybiBib29s
KCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkpKENHRmxvYXQqKTsKK2V4
dGVybiBib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3BhY2l0eSkoQ0dGbG9hdCop
OworZXh0ZXJuIENHRm9udFJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250Rm9yU3R5bGUp
KGludCk7CitleHRlcm4gYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFj
dGVyU2l6ZSkoQ0dGbG9hdCopOworZXh0ZXJuIGludCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRl
eHRFZGdlU3R5bGUpKHZvaWQpOworZXh0ZXJuIENGU3RyaW5nUmVmKCp3a0NhcHRpb25BcHBlYXJh
bmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKSh2b2lkKTsKIH0KIAogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5tbQkocmV2aXNpb24gMTMxNjQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNiwz
ICsyMTYsMTUgQEAgQ0dGbG9hdCAoKndrTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdAogQ0dG
bG9hdCAoKndrTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEpKENHRmxvYXQgZGVsdGEpOwog
I2VuZGlmCiAKK2Jvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzKSh2
b2lkKTsKK2Jvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJs
ZSkodm9pZCk7CitDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRD
b2xvcikodm9pZCk7CitDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91
bmRDb2xvcikodm9pZCk7CitDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRv
d0NvbG9yKSh2b2lkKTsKK2Jvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3Bh
Y2l0eSkoQ0dGbG9hdCopOworYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRP
cGFjaXR5KShDR0Zsb2F0Kik7Citib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3Bh
Y2l0eSkoQ0dGbG9hdCopOworQ0dGb250UmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvbnRG
b3JTdHlsZSkoaW50KTsKK2Jvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJh
Y3RlclNpemUpKENHRmxvYXQqKTsKK2ludCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdl
U3R5bGUpKHZvaWQpOworQ0ZTdHJpbmdSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5n
c0NoYW5nZWROb3RpZmljYXRpb24pKHZvaWQpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTMx
NjkyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMTAtMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgQWxsb3cgcG9ydHMgdG8gb3ZlcnJpZGUgdGV4dCB0cmFjayByZW5kZXJp
bmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk3ODAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjA0NDk2ND4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlKTogSW5pdGlhbGl6ZSBuZXcgV0tTSSBmdW5jdGlvbiBwb2ludGVycy4KKwog
MjAxMi0xMC0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFr
ZSBzdWJjbGFzc2luZyBvZiBXS1ZpZXcgc2FmZXIgYnkgbmFtZXNwYWNpbmcgbWV0aG9kcyBhbmQg
ZWxpbWluYXRpbmcgaXRzIHVzZSBhcyBhbiBvYnNlcnZlciBhbmQgZGVsZWdhdGUKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVy
ZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDEzMTY0OSkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVy
ZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTkyLDUgKzE5MiwxNyBAQCB2b2lkIEluaXRXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoTlNSZWJvdW5kRGVsdGFGb3JF
bGFzdGljRGVsdGEpOwogI2VuZGlmCiAKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUhh
c1VzZXJQcmVmZXJlbmNlcyk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2Fw
dGlvbnNXaGVuQXZhaWxhYmxlKTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlG
b3JlZ3JvdW5kQ29sb3IpOworICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tn
cm91bmRDb2xvcik7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29s
b3IpOworICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkp
OworICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkpOwor
ICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93T3BhY2l0eSk7CisgICAgICAg
IElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxlKTsKKyAgICAgICAgSU5JVChD
YXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSk7CisgICAgICAgIElOSVQo
Q2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKTsKKyAgICAgICAgSU5JVChDYXB0aW9u
QXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbik7CiAgICAgfSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzE2OTIpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMC0xNyAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBw
b3J0cyB0byBvdmVycmlkZSB0ZXh0IHRyYWNrIHJlbmRlcmluZyBzdHlsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEyMDQ0OTY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFz
IGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9u
cyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50
ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOiBJbml0aWFs
aXplIG5ldyBXS1NJIGZ1bmN0aW9uIHBvaW50ZXJzLgorCiAyMDEyLTEwLTE3ICBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVW5pbml0aWFsaXpl
ZCBNZW1iZXJzIGluIFdlYkRhdGFTb3VyY2VQcml2YXRlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCShyZXZp
c2lvbiAxMzE2NDkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0
ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMSw2ICsyMTEsMTkgQEAgdm9pZCBJ
bml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoTlNSZWJvdW5kRGVsdGFG
b3JFbGFzdGljRGVsdGEpOwogI2VuZGlmCiAKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlSGFz
VXNlclByZWZlcmVuY2VzKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25z
V2hlbkF2YWlsYWJsZSk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5k
Q29sb3IpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKTsK
KyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yKTsKKyAgICBJTklUKENh
cHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkpOworICAgIElOSVQoQ2FwdGlvbkFw
cGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eSk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5j
ZUdldFdpbmRvd09wYWNpdHkpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZv
clN0eWxlKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJT
aXplKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSk7CisgICAg
SU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbik7CisK
ICNlbmRpZgogICAgIGRpZEluaXQgPSB0cnVlOwogfQpJbmRleDogV2ViS2l0TGlicmFyaWVzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMzE2OTIpCisrKyBXZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTItMTAtMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIChPT1BTISkuCisg
ICAgICAgIE5lZWQgdGhlIGJ1ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBj
aGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlv
biBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN5c3RlbUlu
dGVyZmFjZS5oOgorCiAyMDEyLTEwLTA4ICBLaXJhbiBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUu
Y29tPgogCiAgICAgICAgIFRocm90dGxlIERPTSB0aW1lcnMgb24gaGlkZGVuIHBhZ2VzLgpJbmRl
eDogV2ViS2l0TGlicmFyaWVzL1dlYktpdFN5c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdExpYnJhcmllcy9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaAkocmV2aXNpb24gMTMxNjQ5
KQorKysgV2ViS2l0TGlicmFyaWVzL1dlYktpdFN5c3RlbUludGVyZmFjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNiBAQAogLyogICAgICAKICAgICBXZWJLaXRTeXN0ZW1JbnRlcmZhY2Uu
aAotICAgIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFB1YmxpYyBoZWFkZXIgZmlsZS4KICovCkBAIC01
MTMsNiArNTEzLDQxIEBAIENHRmxvYXQgV0tOU1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSgK
IEJvb2xlYW4gV0tKTElzUnVudGltZUFuZFdlYkNvbXBvbmVudHNJbnN0YWxsZWQodm9pZCk7CiAj
ZW5kaWYKIAordHlwZWRlZiBlbnVtIHsKKyAgICBXS0NhcHRpb25Gb250U3R5bGVEZWZhdWx0ID0g
MCwKKyAgICBXS0NhcHRpb25Gb250U3R5bGVNb25vc3BhY2VkV2l0aFNlcmlmLAorICAgIFdLQ2Fw
dGlvbkZvbnRTdHlsZVByb3BvcnRpb25hbFdpdGhTZXJpZiwKKyAgICBXS0NhcHRpb25Gb250U3R5
bGVNb25vc3BhY2VkV2l0aG91dFNlcmlmLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZVByb3BvcnRp
b25hbFdpdGhvdXRTZXJpZiwKKyAgICBXS0NhcHRpb25Gb250U3R5bGVDYXN1YWwsCisgICAgV0tD
YXB0aW9uRm9udFN0eWxlQ3Vyc2l2ZSwKKyAgICBXS0NhcHRpb25Gb250U3R5bGVTbWFsbENhcGl0
YWwsCisgICAgV0tDYXB0aW9uRm9udFN0eWxlTWF4Cit9IFdLQ2FwdGlvbkZvbnRTdHlsZTsKKwor
dHlwZWRlZiBlbnVtIHsKKyAgICBXS0NhcHRpb25UZXh0RWRnZVN0eWxlVW5kZWZpbmVkID0gMCwK
KyAgICBXS0NhcHRpb25UZXh0RWRnZVN0eWxlTm9uZSwKKyAgICBXS0NhcHRpb25UZXh0RWRnZVN0
eWxlUmFpc2VkLAorICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVEZXByZXNzZWQsCisgICAgV0tD
YXB0aW9uVGV4dEVkZ2VTdHlsZVVuaWZvcm0sCisgICAgV0tDYXB0aW9uVGV4dEVkZ2VTdHlsZURy
b3BTaGFkb3csCisgICAgV0tDYXB0aW9uVGV4dEVkZ2VTdHlsZU1heAorfSBXS0NhcHRpb25UZXh0
RWRnZVN0eWxlOworCitib29sIFdLQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2VyUHJlZmVyZW5jZXMo
dm9pZCk7Citib29sIFdLQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxl
KHZvaWQpOworQ0dDb2xvclJlZiBXS0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xv
cih2b2lkKTsKK0NHQ29sb3JSZWYgV0tDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29s
b3Iodm9pZCk7CitDR0NvbG9yUmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3Io
dm9pZCk7Citib29sIFdLQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eShDR0Zs
b2F0Kik7Citib29sIFdLQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eShDR0Zs
b2F0Kik7Citib29sIFdLQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KENHRmxvYXQq
KTsKK0NHRm9udFJlZiBXS0NhcHRpb25BcHBlYXJhbmNlQ29weUZvbnRGb3JTdHlsZShpbnQgZm9u
dFN0eWxlKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6
ZShDR0Zsb2F0Kik7CitpbnQgV0tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUodm9p
ZCk7CitDRlN0cmluZ1JlZiBXS0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90
aWZpY2F0aW9uKHZvaWQpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTMxNjkyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIChPT1BT
ISkuCisgICAgICAgIE5lZWQgdGhlIGJ1ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9m
IHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1m
dW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL3Ry
YWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmcuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTEwLTE3ICBEaXJrIFByYW5rZSAgPGRwcmFua2VA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIENsb25lIGJhc2VsaW5lcyBmcm9tIHBsYXRmb3JtL21h
YyB0byBwbGF0Zm9ybS9jaHJvbWl1bSBbMyBvZiA3XQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDEzMTY0OSkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5k
ZXJpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIFJVTih2
aWRlby5oZWlnaHQgPSAxNDQwKQogRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNr
RGlzcGxheUVsZW1lbnQodmlkZW8pKS5mb250U2l6ZSA9PSAnNzJweCcpIE9LCiAKIEVYUEVDVEVE
IChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuZm9udEZh
bWlseSA9PSAnc2Fucy1zZXJpZicpIE9LCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0
VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmNvbG9yID09ICdyZ2JhKDI1NSwgMjU1LCAyNTUs
IDApJykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVt
ZW50KHZpZGVvKSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCiBFWFBFQ1RFRCAo
Z2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXkn
KS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3IgPT0gJ3JnYmEoMCwgMCwgMCwgMC43OTY4NzUp
JyksIE9CU0VSVkVEICdyZ2JhKDAsIDAsIDAsIDAuOCknIEZBSUwKIEVORCBPRiBURVNUCiAKSW5k
ZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmcuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0
bWwJKHJldmlzaW9uIDEzMTY0OSkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1
ZS1yZW5kZXJpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogICAgICAg
ICAgICAgdGVzdEZvbnRTaXplKDI1NjAsIDE0NDApOwogCiAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5mb250
RmFtaWx5IiwgInNhbnMtc2VyaWYiKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29t
cHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmNvbG9yIiwgInJnYmEo
MjU1LCAyNTUsIDI1NSwgMCkiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0
ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmNvbG9yIiwgInJnYigyNTUs
IDI1NSwgMjU1KSIpOwogICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxl
KHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmZpcnN0Q2hpbGQpLmJh
Y2tncm91bmRDb2xvciIsICJyZ2JhKDAsIDAsIDAsIDAuNzk2ODc1KSIpOwogCiAgICAgICAgICAg
ICBlbmRUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhw
ZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDEzMTY0OSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTQwNDUsNiArNDA0
NSwxMSBAQCB3ZWJraXQub3JnL2IvOTUxMjEgZmFzdC9ib3JkZXJzL2JvcmRlci1pCiB3ZWJraXQu
b3JnL2IvOTg1NDUgWyBNYWMgXSBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC90ZXh0LXNwbGljZWQt
Zm9udC5odG1sIFsgRmFpbHVyZSBdIAogd2Via2l0Lm9yZy9iLzk4NTQ1IFsgTWFjIF0gZmFzdC93
cml0aW5nLW1vZGUvS3VzYS1NYWt1cmEtYmFja2dyb3VuZC1jYW52YXMuaHRtbCBbIEZhaWx1cmUg
XSAKIAorICMgUmVxdWlyZSByZWJhc2VsaW5pbmcgYWZ0ZXIgd2Via2l0Lm9yZy9iLzk3ODAwCisg
d2Via2l0Lm9yZy9iLzg5MTY3IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctaG9yaXpv
bnRhbC5odG1sIFsgRmFpbHVyZSBdCisgd2Via2l0Lm9yZy9iLzg5MTY3IG1lZGlhL3RyYWNrL3Ry
YWNrLWN1ZS1yZW5kZXJpbmctdmVydGljYWwuaHRtbCBbIEZhaWx1cmUgXQorIHdlYmtpdC5vcmcv
Yi84OTE2NyBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0bWwgWyBGYWlsdXJlIF0K
Kwogd2Via2l0Lm9yZy9iLzk4Njg2IGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0
ZW1zLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIzMTY2IFsgQW5kcm9pZCBNYWMg
V2luIF0gZmFzdC9jc3MvYmFja2dyb3VuZC1jbGlwLXJhZGl1cy12YWx1ZXMuaHRtbCBbIFBhc3Mg
SW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169469</attachid>
            <date>2012-10-18 13:59:57 -0700</date>
            <delta_ts>2012-10-18 15:04:03 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>user_preferences_patch_35.txt</filename>
            <type>text/plain</type>
            <size>68185</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNiBAQAorMjAxMi0xMC0xOCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyB0
byBvdmVycmlkZSB0ZXh0IHRyYWNrIHJlbmRlcmluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzEyMDQ0OTY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBuZXcgV2Via2l0U3lzdGVtSW50ZXJmYWNl
IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
IEFkZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgsIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMu
bW0sCisgICAgICAgICAgICBhbmQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oLgorCisgICAg
ICAgICogY3NzL21lZGlhQ29udHJvbHMuY3NzOiBSZWFycmFuZ2UgdGhlIGNhcHRpb24gQ1NTIHNv
IGl0IGlzIHBvc3NpYmxlIHRvIHN0eWxlIHRoZSBjdWUgd2luZG93LAorICAgICAgICAgICAgYmFj
a2dyb3VuZCwgYW5kIHRleHQgaW5kZXBlbmRlbnRseS4KKworICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1M
TWVkaWFFbGVtZW50KTogSW5pdGlhbGl6ZSBtX2Rpc2FibGVDYXB0aW9ucyB3aXRoIHRoZW1lLT51
c2VyUHJlZmVyc0NhcHRpb25zKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjphdHRhY2gpOiBSZWdpc3RlciBmb3IgY2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2FsbGJh
Y2tzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGV0YWNoKTogVW5yZWdp
c3RlciBmb3IgY2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2FsbGJhY2tzLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlclByZWZlcnNDYXB0aW9ucyk6IFJldHVybiB0
aGVtZS0+dXNlclByZWZlcnNDYXB0aW9ucygpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2luZCk6IENvbnNpZGVyIHVzZXJQ
cmVmZXJzQ2FwdGlvbnMoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dENsb3NlZENhcHRpb25zVmlzaWJsZSk6IE1vdmUgdGhlIGNvZGUgdGhhdCBtYXJrcyBhbGwgdHJh
Y2tzIGFzCisgICAgICAgICAgICB1bi1jb25maWd1cmVkIHRvIG1hcmtDYXB0aW9uQW5kU3VidGl0
bGVUcmFja3NBc1VuY29uZmlndXJlZCBzbyBpdCBjYW4gYmUgcmV1c2VkLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6IE5ldywg
Zm9yY2UgYSByZWV2YWx1YXRpb24gb2YgYWxsIHRleHQgdHJhY2tzLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25m
aWd1cmVkKTogTmV3LCBjb2RlIG1vdmVkIGZyb20gCisgICAgICAgICAgICBzZXRDbG9zZWRDYXB0
aW9uc1Zpc2libGUKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDogSW5oZXJpdCBm
cm9tIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci4KKworICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKTogR2V0IHJpZCBv
ZiB1bm5lY2Vzc2FyeSBtZW1iZXIKKyAgICAgICAgICAgIHZhcmlhYmxlLiBHZXQgY2FwdGlvbiBm
b250IHNjYWxlIGZyb20gdGhlbWUgaW5zdGVhZCBvZiBoYXJkIGNvZGluZy4KKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorCisgICAgICAgICogaHRtbC90cmFj
ay9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2sp
OiBDaGFuZ2UgYXR0cmlidXRlcyBmcm9tIFN0cmluZyB0byBBdG9taWNTdHJpbmcuCisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRLaW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2s6OnNldE1vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6bW9kZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjpraW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OmxhYmVsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldExhYmVsKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6Omxhbmd1YWdlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldExhbmd1YWdlKTogRGl0dG8uCisKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1ZUJveCk6IFNldCB0aGUgc2hhZG93IHBzZXVkbyBpZC4K
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93
UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1cm4gdGhlIAorICAgICAgICAgICAg
c2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4gYmUgdXNlZCBlbHNld2hlcmUuCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OnNoYWRvd1BzZXVkb0lkKTogQ2FsbCB0ZXh0VHJhY2tD
dWVCb3hTaGFkb3dQc2V1ZG9JZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6cGFz
dE5vZGVzU2hhZG93UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1cm4gdGhlIAor
ICAgICAgICAgICAgc2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4gYmUgdXNlZCBlbHNld2hlcmUu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmZ1dHVyZU5vZGVzU2hhZG93UHNldWRv
SWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxh
eVRyZWUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisKKyAgICAgICAg
KiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp1c2VyQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6fkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcyk6IE5ldywgcGFzc3Rocm91Z2gg
dG8gV0tTSSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zV2luZG93Q29sb3IpOiBSZXR1cm4gQ29s
b3Igd2l0aCB1c2VyJ3MgY2FwdGlvbiB3aW5kb3cgY29sb3IgcHJlZmVyZW5jZS4KKyAgICAgICAg
KFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zQmFja2dyb3VuZENv
bG9yKTogUmV0dXJuIENvbG9yIHdpdGggdXNlcidzIGNhcHRpb24gCisgICAgICAgICAgICBiYWNr
Z3JvdW5kIGNvbG9yIHByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRDb2xvcik6IFJldHVybiBDb2xvciB3aXRoIHVzZXIn
cyBjYXB0aW9uIHRleHQgY29sb3IgcHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKTogUmV0
dXJuIENvbG9yIGZvciB0ZXh0IGVkZ2UgZWZmZWN0LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6Y3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcik6IFJldHVy
biBTdHJpbmcgd2l0aCBDU1MgdG8gc2V0IGEgdGV4dC1zaGFkb3cKKyAgICAgICAgICAgIG9yIHdl
YmtpdC10ZXh0LXN0cm9rZSBwcm9wZXJ0eS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWM6OmNzc0NvbG9yUHJvcGVydHkpOiBSZXR1cm4gYSBTdHJpbmcgd2l0aCBj
c3MgdG8gc2V0IGEgcHJvcGVydHkgCisgICAgICAgICAgICB3aXRoIGEgY29sb3IgdmFsdWUuCisg
ICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRF
ZGdlU3R5bGUpOiBSZXR1cm4gYSBTdHJpbmcgd2l0aCBjc3MgdG8gc3R5bGUgY2FwdGlvbiAKKyAg
ICAgICAgICAgIHRleHQgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCB0ZXh0IGVkZ2Ugc3R5ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zRGVm
YXVsdEZvbnQpOiBSZXR1cm4gYSBTdHJpbmcgd2l0aCBjc3MgdG8gc3R5bGUgY2FwdGlvbgorICAg
ICAgICAgICAgdGV4dCB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGZvbnQuCisgICAgICAgIChX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVy
cmlkZSk6IFJldHVybiBhIFN0cmluZyB3aXRoIGNzcyB0byBzdHlsZSBjYXB0aW9ucworICAgICAg
ICAgICAgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6
OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25Gb250U2l6ZVNjYWxlKTogUmV0dXJu
IHRoZSB1c2VyJ3MgcHJlZmVycmVkIGNhcHRpb24gZm9udCBzY2FsZS4KKyAgICAgICAgKFdlYkNv
cmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQp
OiBOb3RpZnkgbGlzdGVuZXJzIG9mIGNhcHRpb24gcHJlZmVyZW5jZSBjaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpyZWdpc3RlckZvckNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBBZGQgYSBjYXB0aW9uIHByZWZlcmVuY2VzIAor
ICAgICAgICAgICAgY2hhbmdlcyBsaXN0ZW5lci4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWM6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
Q2FsbGJhY2tzKTogUmVtb3ZlIGEgY2FwdGlvbiBwcmVmZXJlbmNlcworICAgICAgICAgICAgY2hh
bmdlcyBsaXN0ZW5lci4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OnVwZGF0ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcmlkZSk6IE5ldywgaWYgdGhlbWUgaGFzIGEg
Y2FwdGlvbnMgc3R5bGUgc2hlZXQgb3ZlcnJpZGUsCisgICAgICAgICAgICBpbmplY3QgaXQgaW50
byB0aGUgY3VycmVudCBwYWdlIGdyb3VwLCBvdGhlcndpc2UgcmVtb3ZlIGluamVjdGVkIHNoZWV0
LgorCisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3Vw
OjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBOZXcsIHBh
c3N0aHJvdWdoIHRvIHBsYXRmb3JtIHNwZWNpZmljIGZ1bmN0aW9uCisgICAgICAgICAgICBvZiB0
aGUgc2FtZSBuYW1lLgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjp1bnJlZ2lzdGVyRm9y
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZUdyb3VwOjp1c2VyUHJlZmVyc0NhcHRpb25zKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpQYWdlR3JvdXA6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6Y2FwdGlvbkZvbnRTaXplU2NhbGUpOiBEaXR0by4K
KyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5oOgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDogVXBkYXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbTogRGl0dG8uCisKIDIwMTItMTAtMTggIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBMb2NhbGl6ZXI6Om1vbnRo
Rm9ybWF0IGFuZCBpbXBsZW1lbnRhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZp
c2lvbiAxMzE3NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBj
b3B5KQpAQCAtMjYyMywzICsyNjIzLDE4IEBAIF9fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGUKIF9fWk43V2ViQ29yZTI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4
TlNUZXh0QWx0ZXJuYXRpdmVzOF9OU1JhbmdlCiBfX1pON1dlYkNvcmUzMmNvbGxlY3REaWN0YXRp
b25UZXh0QWx0ZXJuYXRpdmVzRVAxOE5TQXR0cmlidXRlZFN0cmluZ1JOM1dURjZWZWN0b3JJTlNf
MjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VFTG0wRUVFCiAjZW5kaWYKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKK193a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzCitfd2tD
YXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0aW9uc1doZW5BdmFpbGFibGUKK193a0NhcHRpb25BcHBl
YXJhbmNlQ29weUZvcmVncm91bmRDb2xvcgorX3drQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dy
b3VuZENvbG9yCitfd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcgorX3drQ2FwdGlv
bkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eQorX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRC
YWNrZ3JvdW5kT3BhY2l0eQorX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5Citf
d2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250Rm9yU3R5bGUKK193a0NhcHRpb25BcHBlYXJhbmNl
R2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplCitfd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdl
U3R5bGUKK193a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9u
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzMTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEy
Miw5IEBACiAJCTA3ODQ2MzQyMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzNDAxNDVC
MTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgKi87IH07CiAJCTA3ODQ2MzQzMTQ1QjE1
MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQxMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZl
bnQuaCAqLzsgfTsKIAkJMDc4NDYzODUxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2Mzg0
MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggKi87IH07CisJCTA3OUQwODY4MTYy
RjIwRTgwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlEMDg2NzE2MkYyMEU4MDBEQjg2NTgg
LyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTA3OUQwODZCMTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzlEMDg2OTE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYy5oICovOyB9OworCQkwNzlEMDg2QzE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3OUQwODZBMTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjLm1tICovOyB9OwogCQkwN0E2RDFFQjE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFn
bWVudFVSSVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0E2RDFFOTE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNl
ci5jcHAgKi87IH07CiAJCTA3QTZEMUVDMTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50
VVJJUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwN0E2RDFFQTE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oICov
OyB9OwogCQkwN0IwMTEzRjEwMzIyNDIyMDBGQkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29u
dHJvbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
QjAxMTNFMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oICov
OyB9OwpAQCAtNzE1NCw2ICs3MTU3LDkgQEAKIAkJMDc4NDYzNDAxNDVCMTUxQTAwQTU4REYxIC8q
IEpTVHJhY2tFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1RyYWNrRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzg0NjM0MTE0
NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTVHJhY2tFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
Nzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1RyYWNrQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3OUQwODY3MTYyRjIwRTgwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5RDA4NjkxNjJGMjFGOTAw
REI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzlEMDg2QTE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3OUY1RTRCMEYzQkVCRUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclByaXZhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QTZEMUU5MTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRp
YUZyYWdtZW50VVJJUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0E2RDFFQTE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUZyYWdtZW50VVJJUGFyc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTc4Myw2ICsxNTc4OSw5IEBACiAJ
CQkJQkMxMjRFRTQwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uY3BwICovLAogCQkJCUJDMTI0
RUU1MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZvLmggKi8sCiAJCQkJQkMxMjRFRTYwQzI2NDFD
RDAwOUUyMzQ5IC8qIEJhckluZm8uaWRsICovLAorCQkJCTA3OUQwODY3MTYyRjIwRTgwMERCODY1
OCAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmggKi8sCisJCQkJMDc5RDA4NjkxNjJGMjFGOTAw
REI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaCAqLywKKwkJCQkwNzlEMDg2QTE2
MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbSAqLywKIAkJCQkx
NEQ4MjM4QTBBRjkyREY2MDAwNEYwNTcgLyogQ2hyb21lLmNwcCAqLywKIAkJCQkxNEQ4MjM1MDBB
RjkyQTc5MDAwNEYwNTcgLyogQ2hyb21lLmggKi8sCiAJCQkJMTREODI0MDYwQUY5M0FFQjAwMDRG
MDU3IC8qIENocm9tZUNsaWVudC5oICovLApAQCAtMjI0OTksNiArMjI1MDgsOCBAQAogCQkJCTQ5
QzdCOUREMTA0MkQzMkYwMDA5RDQ0NyAvKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OTQ4NEZDQjEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAxODdERDMg
LyogQ2FudmFzU3R5bGUuaCBpbiBIZWFkZXJzICovLAorIAkJCQkwNzlEMDg2ODE2MkYyMEU4MDBE
Qjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8sCisgCQkJCTA3
OUQwODZCMTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTUwQjY5RTA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNjlERDE1MDVGMDc2MDAxQjc0QUMgLyogQ2hhbmdl
VmVyc2lvbldyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE1RkZGMTJCMDI2NzYwMEMx
QTM1OSAvKiBDaGFubmVsTWVyZ2VyTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjExNiw2ICsy
NjEyNyw3IEBACiAJCQkJNDlDN0I5REMxMDQyRDMyRjAwMDlENDQ3IC8qIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk0ODRGQ0ExMDJDRjIzQzAwMTg3REQz
IC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4
NEZDRDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8sCisg
CQkJCTA3OUQwODZDMTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1MEI2OUQwOTlERjAyNzAwOTBENzgxIC8qIENEQVRB
U2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNjlEQzE1MDVGMDc2MDAxQjc0QUMg
LyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTVGRkUx
MkIwMjY3NjAwQzFBMzU5IC8qIENoYW5uZWxNZXJnZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHMuY3NzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzLmNzcwkocmV2aXNpb24gMTMxNzQ5KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHMuY3NzCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTYsNyArMjE2LDcgQEAgdmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWlu
ZQogICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKICAg
ICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7
CisgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7CiAKICAgICBsZXR0ZXItc3BhY2lu
Zzogbm9ybWFsOwogICAgIHdvcmQtc3BhY2luZzogbm9ybWFsOwpAQCAtMjM0LDggKzIzNCw2IEBA
IHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2QKIAogICAgIGJhY2tncm91
bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICBwYWRkaW5nOiAycHggMnB4OwotCi0g
ICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogfQogCiB2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0
LXRyYWNrLWZ1dHVyZS1ub2RlcyB7CkBAIC0yNDYsMTEgKzI0NCwxMCBAQCB2aWRlbzo6LXdlYmtp
dC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1uCiAKICAgICBtYXJnaW4tbGVmdDogLTJweDsKICAg
ICBwYWRkaW5nOiAycHggMnB4IDJweCAwcHg7Ci0KLSAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7
CiB9CiAKIHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSB7CiAgICAgcG9z
aXRpb246IGFic29sdXRlOwotICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOworICAg
IG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzE3NDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKQEAgLTI4MSw2ICsyODIs
MTQgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdAogCiAgICAgc2V0
SGFzQ3VzdG9tQ2FsbGJhY2tzKCk7CiAgICAgYWRkRWxlbWVudFRvRG9jdW1lbnRNYXAodGhpcywg
ZG9jdW1lbnQpOworCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChkb2N1bWVudC0+
cGFnZSgpKSB7CisgICAgICAgIFBhZ2VHcm91cCYgZ3JvdXAgPSBkb2N1bWVudC0+cGFnZSgpLT5n
cm91cCgpOworICAgICAgICBpZiAoZ3JvdXAudXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpKQor
ICAgICAgICAgICAgbV9kaXNhYmxlQ2FwdGlvbnMgPSAhZ3JvdXAudXNlclByZWZlcnNDYXB0aW9u
cygpOworICAgIH0KKyNlbmRpZgogfQogCiBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxl
bWVudCgpCkBAIC01NDEsNiArNTUwLDIwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXR0YWNo
KCkKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmhpZGVNZWRpYVBsYXll
clByb3h5UGx1Z2luKG1fcHJveHlXaWRnZXQuZ2V0KCkpOwogICAgIH0KICNlbmRpZgorCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAg
IGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CisjZW5kaWYKK30KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpkZXRhY2goKQoreworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAoZG9jdW1l
bnQoKS0+cGFnZSgpKQorICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCkudW5yZWdp
c3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CisjZW5kaWYK
KyAgICBIVE1MRWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
ZGlkUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpCkBAIC0yNzkwLDI4ICsyODEzLDMwIEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6d2lsbFJlbW92ZVRyYWNrKEgKICAgICAgICAgbV90ZXh0VHJhY2tz
V2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4ucmVtb3ZlKGluZGV4KTsKIH0KIAotYm9vbCBIVE1M
TWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzTGFuZ3VhZ2UoY29uc3QgU3RyaW5n
JikgY29uc3QKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6dXNlclByZWZlcnNDYXB0aW9ucygpIGNv
bnN0CiB7Ci0gICAgLy8gRklYTUU6IGNoZWNrIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgcHJlZmVyZW5j
ZSAtIGJ1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxMjEKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUGFnZUdyb3VwJiBncm91cCA9IHBhZ2UtPmdy
b3VwKCk7CisgICAgcmV0dXJuIGdyb3VwLnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSAmJiBn
cm91cC51c2VyUHJlZmVyc0NhcHRpb25zKCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2luZChTdHJpbmcga2luZCkgY29uc3QKIHsKLSAg
ICAvLyBJZiAuLi4gdGhlIHVzZXIgaGFzIGluZGljYXRlZCBhbiBpbnRlcmVzdCBpbiBoYXZpbmcg
YSB0cmFjayB3aXRoIHRoaXMgdGV4dCB0cmFjayBraW5kLCB0ZXh0IHRyYWNrIGxhbmd1YWdlLCAu
Li4gCiAgICAgaWYgKG1fZGlzYWJsZUNhcHRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOwotICAgIGlm
ICghc2V0dGluZ3MpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIHVzZXJQcmVmZXJz
Q2FwdGlvbnNPclN1YnRpdGxlcyA9IG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlIHx8IHVzZXJQcmVm
ZXJzQ2FwdGlvbnMoKTsKIAogICAgIGlmIChraW5kID09IFRleHRUcmFjazo6c3VidGl0bGVzS2V5
d29yZCgpKQotICAgICAgICByZXR1cm4gc2V0dGluZ3MtPnNob3VsZERpc3BsYXlTdWJ0aXRsZXMo
KSB8fCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsKKyAgICAgICAgcmV0dXJuIChzZXR0aW5ncyAm
JiBzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVN1YnRpdGxlcygpKSB8fCB1c2VyUHJlZmVyc0NhcHRp
b25zT3JTdWJ0aXRsZXM7CiAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdv
cmQoKSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzLT5zaG91bGREaXNwbGF5Q2FwdGlvbnMoKSB8
fCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsKKyAgICAgICAgcmV0dXJuIChzZXR0aW5ncyAmJiBz
ZXR0aW5ncy0+c2hvdWxkRGlzcGxheUNhcHRpb25zKCkpIHx8IHVzZXJQcmVmZXJzQ2FwdGlvbnNP
clN1YnRpdGxlczsKICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdv
cmQoKSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzLT5zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0
aW9ucygpIHx8IG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlOworICAgICAgICByZXR1cm4gc2V0dGlu
Z3MgJiYgc2V0dGluZ3MtPnNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKCk7CiAKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC0zOTc2LDIyICs0MDAxLDggQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzZXRDbG9zZWRDYXB0aW9ucwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkgewogICAg
ICAgICBtX2Rpc2FibGVDYXB0aW9ucyA9ICFtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsKLSAgICAg
ICAgCi0gICAgICAgIC8vIE1hcmsgYWxsIHRyYWNrIGVsZW1lbnRzIGFzIG5vdCAiY29uZmlndXJl
ZCIgc28gdGhhdCBjb25maWd1cmVUZXh0VHJhY2tzKCkKLSAgICAgICAgLy8gd2lsbCByZWNvbnNp
ZGVyIHdoaWNoIHRyYWNrcyB0byBkaXNwbGF5IGluIGxpZ2h0IG9mIG5ldyB1c2VyIHByZWZlcmVu
Y2VzCi0gICAgICAgIC8vIChlLmcuIGRlZmF1bHQgdHJhY2tzIHNob3VsZCBub3QgYmUgZGlzcGxh
eWVkIGlmIHRoZSB1c2VyIGhhcyB0dXJuZWQgb2ZmCi0gICAgICAgIC8vIGNhcHRpb25zIGFuZCBu
b24tZGVmYXVsdCB0cmFja3Mgc2hvdWxkIGJlIGRpc3BsYXllZCBiYXNlZCBvbiBsYW5ndWFnZQot
ICAgICAgICAvLyBwcmVmZXJlbmNlcyBpZiB0aGUgdXNlciBoYXMgdHVybmVkIGNhcHRpb25zIG9u
KS4KLSAgICAgICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0g
bm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNUYWdOYW1l
KHRyYWNrVGFnKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIEhUTUxU
cmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxUcmFja0VsZW1lbnQq
Pihub2RlKTsKLSAgICAgICAgICAgIGlmICh0cmFja0VsZW1lbnQtPmtpbmQoKSA9PSBUZXh0VHJh
Y2s6OmNhcHRpb25zS2V5d29yZCgpCi0gICAgICAgICAgICAgICAgfHwgdHJhY2tFbGVtZW50LT5r
aW5kKCkgPT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpCi0gICAgICAgICAgICAgICAg
dHJhY2tFbGVtZW50LT5zZXRIYXNCZWVuQ29uZmlndXJlZChmYWxzZSk7Ci0gICAgICAgIH0KIAot
ICAgICAgICBjb25maWd1cmVUZXh0VHJhY2tzKCk7CisgICAgICAgIG1hcmtDYXB0aW9uQW5kU3Vi
dGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCgpOwogICAgIH0KICNlbHNlCiAgICAgaWYgKGhhc01l
ZGlhQ29udHJvbHMoKSkKQEAgLTQxNzksNiArNDE5MCwzOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVwZGF0ZUNsb3NlZENhcHRpCiAgICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnVwZGF0
ZVRleHRUcmFja0Rpc3BsYXkoKTsKICAgICB9CiB9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpCit7CisgICAgaWYgKCFpc1ZpZGVvKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmln
dXJlZCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3VidGl0
bGVUcmFja3NBc1VuY29uZmlndXJlZCgpCit7CisgICAgLy8gTWFyayBhbGwgdHJhY2sgZWxlbWVu
dHMgYXMgbm90ICJjb25maWd1cmVkIiBzbyB0aGF0IGNvbmZpZ3VyZVRleHRUcmFja3MoKQorICAg
IC8vIHdpbGwgcmVjb25zaWRlciB3aGljaCB0cmFja3MgdG8gZGlzcGxheSBpbiBsaWdodCBvZiBu
ZXcgdXNlciBwcmVmZXJlbmNlcworICAgIC8vIChlLmcuIGRlZmF1bHQgdHJhY2tzIHNob3VsZCBu
b3QgYmUgZGlzcGxheWVkIGlmIHRoZSB1c2VyIGhhcyB0dXJuZWQgb2ZmCisgICAgLy8gY2FwdGlv
bnMgYW5kIG5vbi1kZWZhdWx0IHRyYWNrcyBzaG91bGQgYmUgZGlzcGxheWVkIGJhc2VkIG9uIGxh
bmd1YWdlCisgICAgLy8gcHJlZmVyZW5jZXMgaWYgdGhlIHVzZXIgaGFzIHR1cm5lZCBjYXB0aW9u
cyBvbikuCisgICAgZm9yIChSZWZQdHI8Tm9kZT4gbm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsg
bm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFub2RlLT5oYXNUYWdO
YW1lKHRyYWNrVGFnKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAg
SFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFRyYWNrRWxl
bWVudCo+KG5vZGUuZ2V0KCkpOworICAgICAgICBSZWZQdHI8VGV4dFRyYWNrPiB0ZXh0VHJhY2sg
PSB0cmFja0VsZW1lbnQtPnRyYWNrKCk7CisgICAgICAgIGlmICghdGV4dFRyYWNrKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBTdHJpbmcga2luZCA9IHRleHRUcmFj
ay0+a2luZCgpOworCisgICAgICAgIGlmIChraW5kID09IFRleHRUcmFjazo6c3VidGl0bGVzS2V5
d29yZCgpIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSkKKyAgICAgICAg
ICAgIHRyYWNrRWxlbWVudC0+c2V0SGFzQmVlbkNvbmZpZ3VyZWQoZmFsc2UpOworICAgIH0KKyAg
ICBjb25maWd1cmVUZXh0VHJhY2tzKCk7Cit9CisKICNlbmRpZgogCiB2b2lkKiBIVE1MTWVkaWFF
bGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTMxNzQ5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDYgKzQwLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUg
IkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJQT0RJbnRlcnZhbFRyZWUuaCIK
ICNpbmNsdWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKQEAgLTc4
LDcgKzc5LDcgQEAgdHlwZWRlZiBWZWN0b3I8Q3VlSW50ZXJ2YWxUcmVlOjpJbnRlcnZhbAogCiBj
bGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQ
bGF5ZXJDbGllbnQsIHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0
ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBN
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgLCBw
cml2YXRlIFRleHRUcmFja0NsaWVudAorICAgICwgcHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQsIHBy
aXZhdGUgQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyCiAjZW5kaWYKIHsKIHB1Ymxp
YzoKQEAgLTI0MCw2ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJh
Y2tzKCk7CiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tHcm91cChjb25zdCBUcmFja0dyb3Vw
JikgY29uc3Q7CiAKKyAgICBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdDsKICAgICBi
b29sIHVzZXJJc0ludGVyZXN0ZWRJblRoaXNUcmFja0tpbmQoU3RyaW5nKSBjb25zdDsKICAgICBi
b29sIHRleHRUcmFja3NBcmVSZWFkeSgpIGNvbnN0OwogICAgIHZvaWQgY29uZmlndXJlVGV4dFRy
YWNrRGlzcGxheSgpOwpAQCAtMzI1LDcgKzMyNyw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogICAgIHZpcnR1YWwgYm9vbCBpc1VS
TEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoKCk7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkZXRhY2goKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRN
b3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIE9WRVJSSURFOwogCkBAIC00
NzQsMTIgKzQ3NywxNCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IHZvaWQgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhmbG9hdCk7Ci0gICAgYm9vbCB1c2VySXNJ
bnRlcmVzdGVkSW5UaGlzTGFuZ3VhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgSFRNTFRy
YWNrRWxlbWVudCogc2hvd2luZ1RyYWNrV2l0aFNhbWVLaW5kKEhUTUxUcmFja0VsZW1lbnQqKSBj
b25zdDsKIAogICAgIGJvb2wgaWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKSBjb25z
dCB7IHJldHVybiBtX2lnbm9yZVRyYWNrRGlzcGxheVVwZGF0ZSA+IDA7IH0KICAgICB2b2lkIGJl
Z2luSWdub3JpbmdUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygpIHsgKyttX2lnbm9yZVRyYWNr
RGlzcGxheVVwZGF0ZTsgfQogICAgIHZvaWQgZW5kSWdub3JpbmdUcmFja0Rpc3BsYXlVcGRhdGVS
ZXF1ZXN0cygpIHsgQVNTRVJUKG1faWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlKTsgLS1tX2lnbm9y
ZVRyYWNrRGlzcGxheVVwZGF0ZTsgfQorCisgICAgdm9pZCBtYXJrQ2FwdGlvbkFuZFN1YnRpdGxl
VHJhY2tzQXNVbmNvbmZpZ3VyZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FwdGlvblByZWZlcmVu
Y2VzQ2hhbmdlZCgpIE9WRVJSSURFOwogI2VuZGlmCiAKICAgICAvLyBUaGVzZSAiaW50ZXJuYWwi
IGZ1bmN0aW9ucyBkbyBub3QgY2hlY2sgdXNlciBnZXN0dXJlIHJlc3RyaWN0aW9ucy4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAJKHJldmlzaW9uIDEzMTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsMTEgQEAK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVwYWludGVy
LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJv
bFJvb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9scy5oIgogI2luY2x1ZGUgIk1v
dXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAj
aW5jbHVkZSAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVy
SW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWVkaWEuaCIKQEAgLTEzNzgsMjIgKzEzODAsMTgg
QEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZQogICAgIGhhc0NoaWxk
Tm9kZXMoKSA/IHNob3coKSA6IGhpZGUoKTsKIH0KIAotc3RhdGljIGNvbnN0IGZsb2F0IG1pbWlt
dW1Gb250U2l6ZSA9IDE2Owotc3RhdGljIGNvbnN0IGZsb2F0IHZpZGVvSGVpZ2h0Rm9udFNpemVQ
ZXJjZW50YWdlID0gLjA1Owotc3RhdGljIGNvbnN0IGZsb2F0IHRyYWNrQm90dG9tTXVsdGlwbGll
ciA9IC45OwotCiB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVw
ZGF0ZVNpemVzKCkKIHsKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1Bh
cmVudE1lZGlhRWxlbWVudCh0aGlzKTsKICAgICBpZiAoIW1lZGlhRWxlbWVudCB8fCAhbWVkaWFF
bGVtZW50LT5yZW5kZXJlcigpIHx8ICFtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCktPmlzVmlkZW8o
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCB2aWRlb0JveCA9IHRvUmVuZGVyVmlk
ZW8obWVkaWFFbGVtZW50LT5yZW5kZXJlcigpKS0+dmlkZW9Cb3goKTsKLSAgICBpZiAobV92aWRl
b0Rpc3BsYXlTaXplID09IHZpZGVvQm94KQorICAgIGlmICghZG9jdW1lbnQoKS0+cGFnZSgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV92aWRlb0Rpc3BsYXlTaXplID0gdmlkZW9Cb3g7CiAKLSAg
ICBmbG9hdCBmb250U2l6ZSA9IG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCkuaGVpZ2h0KCkgKiB2
aWRlb0hlaWdodEZvbnRTaXplUGVyY2VudGFnZTsKKyAgICBJbnRSZWN0IHZpZGVvQm94ID0gdG9S
ZW5kZXJWaWRlbyhtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCkpLT52aWRlb0JveCgpOworCisgICAg
ZmxvYXQgZm9udFNpemUgPSB2aWRlb0JveC5zaXplKCkuaGVpZ2h0KCkgKiAoZG9jdW1lbnQoKS0+
cGFnZSgpLT5ncm91cCgpLmNhcHRpb25Gb250U2l6ZVNjYWxlKCkpOwogICAgIGlmIChmb250U2l6
ZSAhPSBtX2ZvbnRTaXplKSB7CiAgICAgICAgIG1fZm9udFNpemUgPSBmb250U2l6ZTsKICAgICAg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBTdHJpbmc6Om51
bWJlcihmb250U2l6ZSkgKyAicHgiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFjay5jcHAJKHJldmlzaW9uIDEzMTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIFRleHRUcmFjazo6c2hvd2luZ0tlCiAgICAgcmV0dXJuIGVuZGVkOwogfQog
Ci1UZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBU
ZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlIHR5cGUpCitUZXh0
VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJh
Y2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBraW5kLCBjb25zdCBBdG9taWNT
dHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBl
IHR5cGUpCiAgICAgOiBUcmFja0Jhc2UoY29udGV4dCwgVHJhY2tCYXNlOjpUZXh0VHJhY2spCiAg
ICAgLCBtX2N1ZXMoMCkKICAgICAsIG1fbWVkaWFFbGVtZW50KDApCkBAIC0xMTcsNyArMTE3LDcg
QEAgVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKICAgICBjbGVhckNsaWVudCgpOwogfQogCi1ib29s
IFRleHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IFN0cmluZyYgdmFsdWUpCitib29s
IFRleHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCBzdWJ0aXRsZXNLZXl3b3JkKCkp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBib29sIFRleHRUcmFj
azo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IFRleHRUcmFjazo6c2V0S2luZChjb25zdCBTdHJpbmcmIGtpbmQpCit2b2lkIFRleHRUcmFjazo6
c2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQpCiB7CiAgICAgU3RyaW5nIG9sZEtpbmQg
PSBtX2tpbmQ7CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFRleHRUcmFjazo6c2V0S2luZChj
b25zdCBTdHJpbmcmIGtpCiAgICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tLaW5kQ2hhbmdlZCh0
aGlzKTsKIH0KIAotdm9pZCBUZXh0VHJhY2s6OnNldE1vZGUoY29uc3QgU3RyaW5nJiBtb2RlKQor
dm9pZCBUZXh0VHJhY2s6OnNldE1vZGUoY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlKQogewogICAg
IC8vIE9uIHNldHRpbmcsIGlmIHRoZSBuZXcgdmFsdWUgaXNuJ3QgZXF1YWwgdG8gd2hhdCB0aGUg
YXR0cmlidXRlIHdvdWxkIGN1cnJlbnRseQogICAgIC8vIHJldHVybiwgdGhlIG5ldyB2YWx1ZSBt
dXN0IGJlIHByb2Nlc3NlZCBhcyBmb2xsb3dzIC4uLgpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQg
VGV4dFRyYWNrOjpzZXRNb2RlKGNvbnN0IFN0cmluZyYgbW8KICAgICAgICAgbV9jbGllbnQtPnRl
eHRUcmFja01vZGVDaGFuZ2VkKHRoaXMpOwogfQogCi1TdHJpbmcgVGV4dFRyYWNrOjptb2RlKCkg
Y29uc3QKK0F0b21pY1N0cmluZyBUZXh0VHJhY2s6Om1vZGUoKSBjb25zdAogewogICAgIC8vIFRo
ZSB0ZXh0IHRyYWNrICJzaG93aW5nIiBhbmQgInNob3dpbmcgYnkgZGVmYXVsdCIgbW9kZXMgcmV0
dXJuIHRoZSBzdHJpbmcgInNob3dpbmciLgogICAgIGlmIChtX3Nob3dpbmdCeURlZmF1bHQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgJKHJldmlzaW9uIDEzMTc0OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiBjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJh
Y2tCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVu
dCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcm
IGxhbmd1YWdlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFjaz4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25z
dCBBdG9taWNTdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0
b21pY1N0cmluZyYgbGFuZ3VhZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFRleHRUcmFjayhjb250ZXh0LCBjbGllbnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwgQWRkVHJh
Y2spKTsKICAgICB9CkBAIC02MywyOCArNjMsMjggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVk
aWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpIHsgbV9tZWRpYUVsZW1lbnQgPSBl
bGVtZW50OyB9CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgeyByZXR1cm4g
bV9tZWRpYUVsZW1lbnQ7IH0KIAotICAgIFN0cmluZyBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9r
aW5kOyB9Ci0gICAgdm9pZCBzZXRLaW5kKGNvbnN0IFN0cmluZyYpOworICAgIEF0b21pY1N0cmlu
ZyBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgdm9pZCBzZXRLaW5kKGNvbnN0
IEF0b21pY1N0cmluZyYpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VidGl0
bGVzS2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNhcHRpb25zS2V5
d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRlc2NyaXB0aW9uc0tleXdv
cmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjaGFwdGVyc0tleXdvcmQoKTsK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtZXRhZGF0YUtleXdvcmQoKTsKLSAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCi0gICAgU3Ry
aW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIHZvaWQgc2V0TGFiZWwo
Y29uc3QgU3RyaW5nJiBsYWJlbCkgeyBtX2xhYmVsID0gbGFiZWw7IH0KKyAgICBBdG9taWNTdHJp
bmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgdm9pZCBzZXRMYWJlbChj
b25zdCBBdG9taWNTdHJpbmcmIGxhYmVsKSB7IG1fbGFiZWwgPSBsYWJlbDsgfQogCi0gICAgU3Ry
aW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQotICAgIHZvaWQgc2V0
TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkgeyBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7
IH0KKyAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdl
OyB9CisgICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKSB7
IG1fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsgfQogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZGlzYWJsZWRLZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaGlk
ZGVuS2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNob3dpbmdLZXl3
b3JkKCk7CiAKLSAgICBTdHJpbmcgbW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0TW9kZShjb25z
dCBTdHJpbmcmKTsKKyAgICBBdG9taWNTdHJpbmcgbW9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0
TW9kZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIGJvb2wgc2hvd2luZ0J5RGVmYXVsdCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hvd2luZ0J5RGVmYXVsdDsgfQogICAgIHZvaWQgc2V0U2hvd2lu
Z0J5RGVmYXVsdChib29sIHNob3dpbmcpIHsgbV9zaG93aW5nQnlEZWZhdWx0ID0gc2hvd2luZzsg
fQpAQCAtMTE2LDE3ICsxMTYsMTcgQEAgcHVibGljOgogICAgIGJvb2wgaXNSZW5kZXJlZCgpOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUZXh0
VHJhY2tDbGllbnQqLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOworICAgIFRleHRUcmFjayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRvbWljU3RyaW5n
JiBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxh
bmd1YWdlLCBUZXh0VHJhY2tUeXBlKTsKIAogICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBt
X2N1ZXM7CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogZW5zdXJlVGV4dFRyYWNr
Q3VlTGlzdCgpOwogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50OwotICAgIFN0
cmluZyBtX2tpbmQ7Ci0gICAgU3RyaW5nIG1fbGFiZWw7Ci0gICAgU3RyaW5nIG1fbGFuZ3VhZ2U7
Ci0gICAgU3RyaW5nIG1fbW9kZTsKKyAgICBBdG9taWNTdHJpbmcgbV9raW5kOworICAgIEF0b21p
Y1N0cmluZyBtX2xhYmVsOworICAgIEF0b21pY1N0cmluZyBtX2xhbmd1YWdlOworICAgIEF0b21p
Y1N0cmluZyBtX21vZGU7CiAgICAgVGV4dFRyYWNrQ2xpZW50KiBtX2NsaWVudDsKICAgICBUZXh0
VHJhY2tUeXBlIG1fdHJhY2tUeXBlOwogICAgIFJlYWRpbmVzc1N0YXRlIG1fcmVhZGluZXNzU3Rh
dGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCShy
ZXZpc2lvbiAxMzE3NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAgVGV4dFRyYWNrQ3VlQm94OjpU
ZXh0VHJhY2tDdWVCb3goRG9jdW1lbgogICAgIDogSFRNTEVsZW1lbnQoZGl2VGFnLCBkb2N1bWVu
dCkKICAgICAsIG1fY3VlKGN1ZSkKIHsKKyAgICBzZXRTaGFkb3dQc2V1ZG9JZChzaGFkb3dQc2V1
ZG9JZCgpKTsKIH0KIAogVGV4dFRyYWNrQ3VlKiBUZXh0VHJhY2tDdWVCb3g6OmdldEN1ZSgpIGNv
bnN0CkBAIC0xNjcsMTIgKzE2OCwxNyBAQCB2b2lkIFRleHRUcmFja0N1ZUJveDo6YXBwbHlDU1NQ
cm9wZXJ0aWVzCiAgICAgfQogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0N1ZUJv
eDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tD
dWVCb3g6OnRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKCkKIHsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRv
SWQsICgiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXkiKSk7CiAgICAgcmV0dXJuIHRy
YWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFRl
eHRUcmFja0N1ZUJveDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIHJldHVybiB0ZXh0
VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpOworfQorCiBSZW5kZXJPYmplY3QqIFRleHRUcmFj
a0N1ZUJveDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
CiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRleHRUcmFja0N1ZSh0aGlzKTsKQEAg
LTE4MCw2ICsxODYsMTggQEAgUmVuZGVyT2JqZWN0KiBUZXh0VHJhY2tDdWVCb3g6OmNyZWF0ZVJl
bgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgVGV4dFRyYWNrQ3VlOjpwYXN0Tm9kZXNTaGFkb3dQc2V1ZG9JZCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCItd2Via2l0LW1l
ZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICByZXR1cm4gc3VidGl0bGVzOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IFRleHRUcmFja0N1ZTo6ZnV0dXJlTm9kZXNTaGFkb3dQc2V1ZG9JZCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCItd2Via2l0LW1l
ZGlhLXRleHQtdHJhY2stZnV0dXJlLW5vZGVzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJldHVybiBzdWJ0aXRsZXM7Cit9CisKIFRleHRUcmFja0N1ZTo6VGV4
dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzdGFydCwg
ZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgIDogbV9zdGFydFRpbWUoc3Rh
cnQpCiAgICAgLCBtX2VuZFRpbWUoZW5kKQpAQCAtNjUyLDkgKzY3MCw2IEBAIHZvaWQgVGV4dFRy
YWNrQ3VlOjp1cGRhdGVEaXNwbGF5VHJlZShmbG8KICAgICAvLyB0aW1lc3RhbXBzIChwcm9jZXNz
aW5nIGluc3RydWN0aW9ucyksIGFsb25nIHdpdGggZGlzcGxheWFibGUgbm9kZXMuCiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHRpbWVzdGFtcFRhZywgKEFTQ0lJTGl0ZXJh
bCgidGltZXN0YW1wIikpKTsKIAotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCB0cmFja1Bhc3ROb2Rlc1NoYWRvd1BzZXVkb0lkLCAoIi13ZWJraXQtbWVkaWEtdGV4
dC10cmFjay1wYXN0LW5vZGVzIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCB0cmFja0Z1dHVyZU5vZGVzU2hhZG93UHNldWRvSWQsICgiLXdlYmtpdC1tZWRp
YS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2RlcyIpKTsKLQogICAgIGlmICghdHJhY2soKS0+aXNSZW5k
ZXJlZCgpKQogICAgICAgcmV0dXJuOwogCkBAIC02NjIsMTAgKzY3NywxMCBAQCB2b2lkIFRleHRU
cmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUoZmxvCiAKICAgICAvLyBDbGVhciB0aGUgY29udGVu
dHMgb2YgdGhlIHR3byBzZXRzLgogICAgIG1fZnV0dXJlRG9jdW1lbnROb2Rlcy0+cmVtb3ZlQ2hp
bGRyZW4oKTsKLSAgICBtX2Z1dHVyZURvY3VtZW50Tm9kZXMtPnNldFNoYWRvd1BzZXVkb0lkKHRy
YWNrRnV0dXJlTm9kZXNTaGFkb3dQc2V1ZG9JZCk7CisgICAgbV9mdXR1cmVEb2N1bWVudE5vZGVz
LT5zZXRTaGFkb3dQc2V1ZG9JZChmdXR1cmVOb2Rlc1NoYWRvd1BzZXVkb0lkKCkpOwogCiAgICAg
bV9wYXN0RG9jdW1lbnROb2Rlcy0+cmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICBtX3Bhc3REb2N1bWVu
dE5vZGVzLT5zZXRTaGFkb3dQc2V1ZG9JZCh0cmFja1Bhc3ROb2Rlc1NoYWRvd1BzZXVkb0lkKTsK
KyAgICBtX3Bhc3REb2N1bWVudE5vZGVzLT5zZXRTaGFkb3dQc2V1ZG9JZChwYXN0Tm9kZXNTaGFk
b3dQc2V1ZG9JZCgpKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgdHdvIHNldHMgY29udGFpbmluZyBw
YXN0IGFuZCBmdXR1cmUgV2ViVlRUIG9iamVjdHMuCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IHJlZmVyZW5jZVRyZWUgPSBnZXRDdWVBc0hUTUwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAkocmV2aXNpb24gMTMxNzQ5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiAr
NjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBseUNTU1Byb3BlcnRpZXMoKTsKIAogICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRleHRUcmFja0N1ZUJveFNoYWRvd1Bz
ZXVkb0lkKCk7CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlQm94KERvY3VtZW50KiwgVGV4
dFRyYWNrQ3VlKik7CkBAIC04MCw2ICs4MSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflRl
eHRUcmFja0N1ZSgpOwogCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGFzdE5vZGVz
U2hhZG93UHNldWRvSWQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmdXR1cmVO
b2Rlc1NoYWRvd1BzZXVkb0lkKCk7CisKICAgICBUZXh0VHJhY2sqIHRyYWNrKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRUcmFjayhQYXNzUmVmUHRyPFRleHRUcmFjaz4pOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyX2gKKyNk
ZWZpbmUgQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyX2gKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFn
ZUdyb3VwOworCitjbGFzcyBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgdm9pZCBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkgPSAwOwor
cHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5l
cigpIHsgfQorfTsKKworY2xhc3MgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4gY3JlYXRlKFBhZ2VH
cm91cCogZ3JvdXApIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
KGdyb3VwKSk7IH0KKyAgICB2aXJ0dWFsIH5DYXB0aW9uVXNlclByZWZlcmVuY2VzKCkgeyB9CisK
KyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2Nh
bGUoKSBjb25zdCB7IHJldHVybiAwLjA1ZjsgfQorICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRpb25z
U3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFj
a3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgeyB9CisgICAgdmlydHVhbCB2
b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsgfQorCisgICAgUGFnZUdyb3VwKiBwYWdl
R3JvdXAoKSB7IHJldHVybiBtX3BhZ2VHcm91cDsgfQorCitwcm90ZWN0ZWQ6CisgICAgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlcyhQYWdlR3JvdXAqIGdyb3VwKSA6IG1fcGFnZUdyb3VwKGdyb3VwKSB7
IH0KKworcHJpdmF0ZToKKyAgICBQYWdlR3JvdXAqIG1fcGFnZUdyb3VwOworfTsKKyAgICAKK30K
KyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjX2gKKyNkZWZpbmUgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hY19oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJDYXB0aW9u
VXNlclByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJDU1NQcm9w
ZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjIDogcHVibGljIENhcHRpb25V
c2VyUHJlZmVyZW5jZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWM+IGNyZWF0ZShQYWdlR3JvdXAqIGdyb3VwKSB7IHJldHVybiBhZG9w
dFB0cihuZXcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYyhncm91cCkpOyB9CisgICAgdmlydHVh
bCB+Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYygpOworCisgICAgdmlydHVhbCBib29sIHVzZXJQ
cmVmZXJzQ2FwdGlvbnMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdXNlckhh
c0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQg
Y2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIE9WRVJSSURFOworCisgICAgdm9pZCBjYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7CisKK3ByaXZhdGU6CisgICAgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYyhQYWdlR3JvdXAqIGdyb3VwKTsKKworICAgIENvbG9yIGNhcHRpb25zV2luZG93
Q29sb3IoKSBjb25zdDsKKyAgICBDb2xvciBjYXB0aW9uc0JhY2tncm91bmRDb2xvcigpIGNvbnN0
OworICAgIENvbG9yIGNhcHRpb25zVGV4dENvbG9yKCkgY29uc3Q7CisgICAgU3RyaW5nIGNhcHRp
b25zRGVmYXVsdEZvbnQoKSBjb25zdDsKKyAgICBDb2xvciBjYXB0aW9uc0VkZ2VDb2xvckZvclRl
eHRDb2xvcihjb25zdCBDb2xvciYpIGNvbnN0OworICAgIFN0cmluZyBjYXB0aW9uc1RleHRFZGdl
U3R5bGUoKSBjb25zdDsKKyAgICBTdHJpbmcgY3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcihD
U1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBjb25zdCBDb2xvciYpIGNvbnN0OworICAgIFN0
cmluZyBjc3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5SUQsIGNvbnN0IENvbG9yJikgY29uc3Q7
CisKKyAgICB2b2lkIHVwZGF0ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcmlkZSgpOworCisgICAgSGFz
aFNldDxDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqPiBtX2NhcHRpb25QcmVmZXJl
bmNlQ2hhbmdlTGlzdGVuZXJzOworICAgIGJvb2wgbV9saXN0ZW5pbmdGb3JQcmVmZXJlbmNlQ2hh
bmdlczsKK307CisgICAgCit9CisjZW5kaWYKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDM0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKworI2ltcG9ydCAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oIgorCisjaW1wb3J0
ICJDb2xvck1hYy5oIgorI2ltcG9ydCAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW1wb3J0ICJGbG9h
dENvbnZlcnNpb24uaCIKKyNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlBhZ2VHcm91cC5oIgor
I2ltcG9ydCAiVGV4dFRyYWNrQ3VlLmgiCisjaW1wb3J0ICJVc2VyU3R5bGVTaGVldFR5cGVzLmgi
CisjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHZvaWQgdXNlckNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNl
bnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmLCBjb25zdCB2b2lkICosIENGRGlj
dGlvbmFyeVJlZikKK3sKKyAgICBzdGF0aWNfY2FzdDxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Kj4ob2JzZXJ2ZXIpLT5jYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7Cit9CisKKworQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYyhQYWdlR3JvdXAq
IGdyb3VwKQorICAgIDogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyhncm91cCkKKyAgICAsIG1fbGlz
dGVuaW5nRm9yUHJlZmVyZW5jZUNoYW5nZXMoZmFsc2UpCit7Cit9CisKK0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWM6On5DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjKCkKK3sKKyAgICBpZiAod2tD
YXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigpKQorICAgICAg
ICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlbW92ZU9ic2VydmVyKENGTm90aWZpY2F0aW9uQ2VudGVy
R2V0TG9jYWxDZW50ZXIoKSwgdGhpcywgd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hh
bmdlZE5vdGlmaWNhdGlvbigpLCBOVUxMKTsKK30KKworYm9vbCBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjp1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
d2tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcygpOworfQorCitib29sIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdAoreworICAg
IHJldHVybiB3a0NhcHRpb25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJsZSgpOwor
fQorCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnJlZ2lzdGVyRm9yQ2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVu
ZXIqIGxpc3RlbmVyKQoreworICAgIEFTU0VSVCghbV9jYXB0aW9uUHJlZmVyZW5jZUNoYW5nZUxp
c3RlbmVycy5jb250YWlucyhsaXN0ZW5lcikpOworCisgICAgaWYgKCF3a0NhcHRpb25BcHBlYXJh
bmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBpZiAoIW1fbGlzdGVuaW5nRm9yUHJlZmVyZW5jZUNoYW5nZXMpIHsKKyAgICAgICAg
bV9saXN0ZW5pbmdGb3JQcmVmZXJlbmNlQ2hhbmdlcyA9IHRydWU7CisgICAgICAgIENGTm90aWZp
Y2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIgKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50
ZXIoKSwgdGhpcywgdXNlckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25DYWxs
YmFjaywgd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigp
LCBOVUxMLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckNvYWxlc2NlKTsKKyAgICAg
ICAgdXBkYXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKCk7CisgICAgfQorICAgIAorICAgIG1f
Y2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTsKK30KKwordm9p
ZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVu
Y2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxp
c3RlbmVyKQoreworICAgIGlmICh3a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2Vk
Tm90aWZpY2F0aW9uKCkpCisgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5l
cnMucmVtb3ZlKGxpc3RlbmVyKTsKK30KKworQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01h
Yzo6Y2FwdGlvbnNXaW5kb3dDb2xvcigpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENHQ29sb3JS
ZWY+IGNvbG9yKEFkb3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IoKSk7
CisgICAgQ29sb3Igd2luZG93Q29sb3IoY29sb3IuZ2V0KCkpOworICAgIGlmICghd2luZG93Q29s
b3IuaXNWYWxpZCgpKQorICAgICAgICB3aW5kb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsK
KyAgICAKKyAgICBDR0Zsb2F0IG9wYWNpdHk7CisgICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRXaW5kb3dPcGFjaXR5KCZvcGFjaXR5KSkKKyAgICAgICAgcmV0dXJuIENvbG9yKHdpbmRvd0Nv
bG9yLnJlZCgpLCB3aW5kb3dDb2xvci5ncmVlbigpLCB3aW5kb3dDb2xvci5ibHVlKCksIHN0YXRp
Y19jYXN0PGludD4ob3BhY2l0eSAqIDI1NSkpOworICAgIAorICAgIGlmICghY29sb3IpCisgICAg
ICAgIHJldHVybiBDb2xvcigpOworICAgIAorICAgIHJldHVybiB3aW5kb3dDb2xvcjsKK30KKwor
Q29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ29sb3Io
KSBjb25zdAoreworICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFz
IHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlh
LXRleHQtdHJhY2stcGFzdC1ub2RlcworICAgIC8vIGFuZCB3ZWJraXQtbWVkaWEtdGV4dC10cmFj
ay1mdXR1cmUtbm9kZXMuCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgZGVmYXVsdEJh
Y2tncm91bmRDb2xvciwgKENvbG9yKDAsIDAsIDAsIDAuOCAqIDI1NSkpKTsKKyAgICAKKyAgICBS
ZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgd2tDYXB0aW9uQXBwZWFyYW5jZUNv
cHlCYWNrZ3JvdW5kQ29sb3IoKSk7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKGNvbG9yLmdl
dCgpKTsKKyAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgYmFj
a2dyb3VuZENvbG9yID0gZGVmYXVsdEJhY2tncm91bmRDb2xvcjsKKyAgICB9CisgICAgCisgICAg
Q0dGbG9hdCBvcGFjaXR5OworICAgIGlmICh3a0NhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3Vu
ZE9wYWNpdHkoJm9wYWNpdHkpKQorICAgICAgICByZXR1cm4gQ29sb3IoYmFja2dyb3VuZENvbG9y
LnJlZCgpLCBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENvbG9yLmJsdWUoKSwg
c3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSk7CisgICAgCisgICAgaWYgKCFjb2xvcikK
KyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgCisgICAgcmV0dXJuIGJhY2tncm91bmRDb2xv
cjsKK30KKworQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0Q29s
b3IoKSBjb25zdAoreworICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihBZG9wdENGLCB3
a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvcigpKTsKKyAgICBDb2xvciB0ZXh0
Q29sb3IoY29sb3IuZ2V0KCkpOworICAgIGlmICghdGV4dENvbG9yLmlzVmFsaWQoKSkgeworICAg
ICAgICAvLyBUaGlzIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHNw
ZWNpZmllZCBpbiBtZWRpYUNvbnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNr
LWNvbnRhaW5lci4KKyAgICAgICAgdGV4dENvbG9yID0gQ29sb3I6OndoaXRlOworICAgIH0KKyAg
ICAKKyAgICBDR0Zsb2F0IG9wYWNpdHk7CisgICAgaWYgKHdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRG
b3JlZ3JvdW5kT3BhY2l0eSgmb3BhY2l0eSkpCisgICAgICAgIHJldHVybiBDb2xvcih0ZXh0Q29s
b3IucmVkKCksIHRleHRDb2xvci5ncmVlbigpLCB0ZXh0Q29sb3IuYmx1ZSgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KG9wYWNpdHkgKiAyNTUpKTsKKyAgICAKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICBy
ZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gdGV4dENvbG9yOworfQorCitDb2xvciBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihj
b25zdCBDb2xvciYgdGV4dENvbG9yKSBjb25zdAoreworICAgIGludCBkaXN0YW5jZUZyb21XaGl0
ZSA9IGRpZmZlcmVuY2VTcXVhcmVkKHRleHRDb2xvciwgQ29sb3I6OndoaXRlKTsKKyAgICBpbnQg
ZGlzdGFuY2VGcm9tQmxhY2sgPSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIENvbG9yOjpi
bGFjayk7CisgICAgCisgICAgaWYgKGRpc3RhbmNlRnJvbVdoaXRlIDwgZGlzdGFuY2VGcm9tQmxh
Y2spCisgICAgICAgIHJldHVybiB0ZXh0Q29sb3IuZGFyaygpOworICAgIAorICAgIHJldHVybiB0
ZXh0Q29sb3IubGlnaHQoKTsKK30KKworU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OmNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgY29uc3QgQ29sb3ImIHRleHRDb2xvcikgY29uc3QKK3sKKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisgICAgCisgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1l
U3RyaW5nKGlkKSk7CisgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICBidWlsZGVyLmFwcGVu
ZCh2YWx1ZSk7CisgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICBidWlsZGVyLmFwcGVuZChj
YXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcih0ZXh0Q29sb3IpLnNlcmlhbGl6ZWQoKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKKyAgICAKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOworfQorCitTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y3NzQ29sb3JQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBDb2xvciYgY29sb3IpIGNvbnN0Cit7CisgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIAorICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3Bl
cnR5TmFtZVN0cmluZyhpZCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgYnVpbGRl
ci5hcHBlbmQoY29sb3Iuc2VyaWFsaXplZCgpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOycpOwor
ICAgIAorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRFZGdlU3R5bGUoKSBjb25zdAoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVSYWlzZWQsICgiIC0u
MDVlbSAtLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZURlcHJlc3NlZCwgKCIgLjA1
ZW0gLjA1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZURyb3BTaGFkb3csICgiIC4wNzVl
bSAuMDc1ZW0gMCAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGVkZ2VTdHlsZVVuaWZvcm0sICgiIC4wM2VtICIs
IFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAKKyAgICBDb2xvciBjb2xvciA9
IGNhcHRpb25zVGV4dENvbG9yKCk7CisgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCisgICAgICAg
IGNvbG9yLnNldE5hbWVkQ29sb3IoImJsYWNrIik7CisgICAgY29sb3IgPSBjYXB0aW9uc0VkZ2VD
b2xvckZvclRleHRDb2xvcihjb2xvcik7CisgICAgCisgICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHls
ZSB0ZXh0RWRnZVN0eWxlID0gc3RhdGljX2Nhc3Q8d2tDYXB0aW9uVGV4dEVkZ2VTdHlsZT4od2tD
YXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUoKSk7CisgICAgc3dpdGNoICh0ZXh0RWRn
ZVN0eWxlKSB7CisgICAgICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZVVuZGVmaW5lZDoK
KyAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlTm9uZToKKyAgICAgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOworICAgICAgICAgICAgCisgICAgICAgIGNhc2Ugd2tDYXB0aW9u
VGV4dEVkZ2VTdHlsZVJhaXNlZDoKKyAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhU
ZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlUmFpc2VkLCBjb2xv
cik7CisgICAgICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZURlcHJlc3NlZDoKKyAgICAg
ICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5VGV4
dFNoYWRvdywgZWRnZVN0eWxlRGVwcmVzc2VkLCBjb2xvcik7CisgICAgICAgIGNhc2Ugd2tDYXB0
aW9uVGV4dEVkZ2VTdHlsZURyb3BTaGFkb3c6CisgICAgICAgICAgICByZXR1cm4gY3NzUHJvcGVy
dHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVRleHRTaGFkb3csIGVkZ2VTdHlsZURyb3BT
aGFkb3csIGNvbG9yKTsKKyAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlVW5pZm9y
bToKKyAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZSwgZWRnZVN0eWxlVW5pZm9ybSwgY29sb3IpOworICAgICAg
ICAgICAgCisgICAgICAgIGNhc2Ugd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZU1heDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uc0RlZmF1bHRGb250KCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0dG
b250UmVmPiBmb250KEFkb3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxl
KHdrQ2FwdGlvbkZvbnRTdHlsZURlZmF1bHQpKTsKKyAgICBpZiAoIWZvbnQpCisgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOworICAgIAorICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmFt
ZShBZG9wdENGLCBDR0ZvbnRDb3B5UG9zdFNjcmlwdE5hbWUoZm9udC5nZXQoKSkpOworICAgIGlm
ICghbmFtZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgCisgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOworICAgIAorICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFt
ZVN0cmluZyhDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiOiBc
IiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKG5hbWUuZ2V0KCkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KCJcIjsiKTsKKyAgICAKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitTdHJp
bmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUo
KSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQ7
CisgICAgCisgICAgQ29sb3IgY29sb3IgPSBjYXB0aW9uc0JhY2tncm91bmRDb2xvcigpOworICAg
IGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQuYXBwZW5kKCIgdmlkZW86OiIpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVl
dC5hcHBlbmQoVGV4dFRyYWNrQ3VlOjpwYXN0Tm9kZXNTaGFkb3dQc2V1ZG9JZCgpKTsKKyAgICAg
ICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7CisgICAgICAgIGNhcHRp
b25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChjc3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yLCBjb2xvcikpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVT
aGVldC5hcHBlbmQoJ30nKTsKKyAgICAgICAgCisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxl
U2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZTo6ZnV0dXJlTm9kZXNTaGFkb3dQc2V1ZG9JZCgpKTsK
KyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7CisgICAgICAg
IGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChjc3NDb2xvclByb3BlcnR5KENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yLCBjb2xvcikpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRl
U3R5bGVTaGVldC5hcHBlbmQoJ30nKTsKKyAgICB9CisgICAgCisgICAgY29sb3IgPSBjYXB0aW9u
c1dpbmRvd0NvbG9yKCk7CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CisgICAgICAgIGNhcHRp
b25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWVCb3g6OnRleHRUcmFja0N1
ZUJveFNoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVl
dC5hcHBlbmQoJ3snKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5k
KGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGNvbG9yKSk7Cisg
ICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScpOworICAgIH0KKyAg
ICAKKyAgICBjb2xvciA9IGNhcHRpb25zVGV4dENvbG9yKCk7CisgICAgU3RyaW5nIGVkZ2VTdHls
ZSA9IGNhcHRpb25zVGV4dEVkZ2VTdHlsZSgpOworICAgIFN0cmluZyBmb250TmFtZSA9IGNhcHRp
b25zRGVmYXVsdEZvbnQoKTsKKyAgICBpZiAoY29sb3IuaXNWYWxpZCgpIHx8ICFlZGdlU3R5bGUu
aXNFbXB0eSgpIHx8ICFmb250TmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2FwdGlvbnNPdmVy
cmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86OiIpOworICAgICAgICBjYXB0aW9uc092ZXJy
aWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNrQ3VlQm94Ojp0ZXh0VHJhY2tDdWVCb3hTaGFk
b3dQc2V1ZG9JZCgpKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5k
KCd7Jyk7CisgICAgICAgIAorICAgICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQorICAgICAgICAg
ICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGNzc0NvbG9yUHJvcGVydHkoQ1NT
UHJvcGVydHlDb2xvciwgY29sb3IpKTsKKyAgICAgICAgaWYgKCFlZGdlU3R5bGUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGVkZ2VTdHls
ZSk7CisgICAgICAgIGlmICghZm9udE5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgY2FwdGlv
bnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGZvbnROYW1lKTsKKyAgICAgICAgCisgICAgICAg
IGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScpOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQudG9TdHJpbmcoKTsKK30KKworZmxv
YXQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbkZvbnRTaXplU2NhbGUoKSBjb25z
dAoreworICAgIENHRmxvYXQgY2hhcmFjdGVyU2NhbGUgPSBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
OjpjYXB0aW9uRm9udFNpemVTY2FsZSgpOworICAgIENHRmxvYXQgc2NhbGVBZGp1c3RtZW50Owor
ICAgIAorICAgIGlmICghd2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6
ZSgmc2NhbGVBZGp1c3RtZW50KSkKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlclNjYWxlOworICAg
IAorICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHNjYWxlQWRqdXN0bWVudCAqIGNo
YXJhY3RlclNjYWxlKTsKK30KKwordm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9jYXB0aW9uUHJlZmVyZW5jZUNo
YW5nZUxpc3RlbmVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZUNh
cHRpb25TdHlsZVNoZWV0T3ZlcmlkZSgpOworCisgICAgZm9yIChIYXNoU2V0PENhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcio+OjppdGVyYXRvciBpID0gbV9jYXB0aW9uUHJlZmVyZW5j
ZUNoYW5nZUxpc3RlbmVycy5iZWdpbigpOyBpICE9IG1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VM
aXN0ZW5lcnMuZW5kKCk7ICsraSkKKyAgICAgICAgKCppKS0+Y2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZCgpOworfQorCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVwZGF0ZUNhcHRp
b25TdHlsZVNoZWV0T3ZlcmlkZSgpCit7CisgICAgLy8gSWRlbnRpZnkgb3VyIG92ZXJyaWRlIHN0
eWxlIHNoZWV0IHdpdGggYSB1bmlxdWUgVVJMIC0gYSBuZXcgc2NoZW1lIGFuZCBhIFVVSUQuCisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChLVVJMLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwsIChQYXJz
ZWRVUkxTdHJpbmcsICJ1c2VyLWNhcHRpb25zLW92ZXJyaWRlOjAxRjZBRjEyLUMzQjAtNEY3MC1B
RjVFLUEzRTAwMjM0REMyMyIpKTsKKyAgICAKKyAgICBwYWdlR3JvdXAoKS0+cmVtb3ZlVXNlclN0
eWxlU2hlZXRGcm9tV29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zU3R5bGVT
aGVldFVSTCk7CisgICAgCisgICAgaWYgKCF1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBTdHJpbmcgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQgPSBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpOworICAgIGlmIChjYXB0aW9uc092ZXJy
aWRlU3R5bGVTaGVldC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBwYWdl
R3JvdXAoKS0+YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgp
LCBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldCwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMLCBWZWN0
b3I8U3RyaW5nPigpLAorICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEluQWxs
RnJhbWVzLCBVc2VyU3R5bGVBdXRob3JMZXZlbCwgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7
Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VHcm91cC5jcHAJKHJldmlzaW9uIDEzMTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTQgQEAKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKIAorI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYy5oIgorI2Vsc2UKKyNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmgiCisjZW5kaWYKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAjaW5jbHVk
ZSAiVmlzaXRlZExpbmtzLmgiCiAjZW5kaWYKQEAgLTM5Niw0ICs0MDQsNDYgQEAgdm9pZCBQYWdl
R3JvdXA6OnJlc2V0VXNlclN0eWxlQ2FjaGVJbkFsbAogICAgIH0KIH0KIAorI2lmIEVOQUJMRShW
SURFT19UUkFDSykKK0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIFBhZ2VHcm91cDo6Y2FwdGlvblBy
ZWZlcmVuY2VzKCkKK3sKKyAgICBpZiAoIW1fY2FwdGlvblByZWZlcmVuY2VzKQorI2lmIFBMQVRG
T1JNKE1BQykKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjOjpjcmVhdGUodGhpcyk7CisjZWxzZQorICAgICAgICBtX2NhcHRpb25QcmVmZXJl
bmNlcyA9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OmNyZWF0ZSh0aGlzKTsKKyNlbmRpZgorCisg
ICAgcmV0dXJuIG1fY2FwdGlvblByZWZlcmVuY2VzLmdldCgpOworfQorICAgIAordm9pZCBQYWdl
R3JvdXA6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgIGNhcHRpb25Q
cmVmZXJlbmNlcygpLT5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFj
a3MobGlzdGVuZXIpOworfQorCit2b2lkIFBhZ2VHcm91cDo6dW5yZWdpc3RlckZvckNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3Rl
bmVyKiBsaXN0ZW5lcikKK3sKKyAgICBpZiAoIW1fY2FwdGlvblByZWZlcmVuY2VzKQorICAgICAg
ICByZXR1cm47CisgICAgY2FwdGlvblByZWZlcmVuY2VzKCktPnVucmVnaXN0ZXJGb3JDYXB0aW9u
UHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKGxpc3RlbmVyKTsKK30KKyAgICAKK2Jvb2wgUGFn
ZUdyb3VwOjp1c2VyUHJlZmVyc0NhcHRpb25zKCkKK3sKKyAgICByZXR1cm4gY2FwdGlvblByZWZl
cmVuY2VzKCktPnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKK30KKworYm9vbCBQYWdlR3JvdXA6OnVz
ZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKQoreworICAgIHJldHVybiBjYXB0aW9uUHJlZmVyZW5j
ZXMoKS0+dXNlclByZWZlcnNDYXB0aW9ucygpOworfQorCitmbG9hdCBQYWdlR3JvdXA6OmNhcHRp
b25Gb250U2l6ZVNjYWxlKCkKK3sKKyAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzKCktPmNh
cHRpb25Gb250U2l6ZVNjYWxlKCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgJKHJldmlzaW9uIDEzMTc0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KyAgICBjbGFzcyBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXI7CisgICAgY2xhc3Mg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczsKKyNlbmRpZgogICAgIGNsYXNzIEtVUkw7CiAgICAgY2xh
c3MgR3JvdXBTZXR0aW5nczsKICAgICBjbGFzcyBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZTsK
QEAgLTEwMywxMiArMTA3LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBHcm91
cFNldHRpbmdzKiBncm91cFNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cFNldHRpbmdz
LmdldCgpOyB9CiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAgIGJvb2wgdXNlclBy
ZWZlcnNDYXB0aW9ucygpOworICAgICAgICBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMo
KTsKKyAgICAgICAgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoKTsKKyAgICAgICAgdm9pZCBy
ZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZExpc3RlbmVyKik7CisgICAgICAgIHZvaWQgdW5yZWdpc3RlckZvckNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExp
c3RlbmVyKik7CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFBhZ2VHcm91cChQYWdl
Kik7CiAKICAgICAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhMaW5rSGFzaCBzdHJpbmdIYXNoKTsK
ICAgICAgICAgdm9pZCByZXNldFVzZXJTdHlsZUNhY2hlSW5BbGxGcmFtZXMoKTsKICAgCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0
aW9uUHJlZmVyZW5jZXMoKTsKKyNlbmRpZgogICAgICAgICBTdHJpbmcgbV9uYW1lOwogCiAgICAg
ICAgIEhhc2hTZXQ8UGFnZSo+IG1fcGFnZXM7CkBAIC0xMjMsNiArMTM4LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgT3duUHRyPFVzZXJTdHlsZVNoZWV0TWFwPiBtX3VzZXJTdHls
ZVNoZWV0czsKIAogICAgICAgICBPd25QdHI8R3JvdXBTZXR0aW5ncz4gbV9ncm91cFNldHRpbmdz
OworCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICAgICBPd25QdHI8Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlcz4gbV9jYXB0aW9uUHJlZmVyZW5jZXM7CisjZW5kaWYKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDEzMTc0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0NCw2ICszNDQsNDAgQEAgZXh0ZXJuIENHRmxvYXQgKCp3a05TRWxhc3Rp
Y0RlbHRhRm9yUmVibwogZXh0ZXJuIENHRmxvYXQgKCp3a05TUmVib3VuZERlbHRhRm9yRWxhc3Rp
Y0RlbHRhKShDR0Zsb2F0IGRlbHRhKTsKICNlbmRpZgogCit0eXBlZGVmIGVudW0geworICAgIHdr
Q2FwdGlvbkZvbnRTdHlsZURlZmF1bHQgPSAwLAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZU1vbm9z
cGFjZWRXaXRoU2VyaWYsCisgICAgd2tDYXB0aW9uRm9udFN0eWxlUHJvcG9ydGlvbmFsV2l0aFNl
cmlmLAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZU1vbm9zcGFjZWRXaXRob3V0U2VyaWYsCisgICAg
d2tDYXB0aW9uRm9udFN0eWxlUHJvcG9ydGlvbmFsV2l0aG91dFNlcmlmLAorICAgIHdrQ2FwdGlv
bkZvbnRTdHlsZUNhc3VhbCwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVDdXJzaXZlLAorICAgIHdr
Q2FwdGlvbkZvbnRTdHlsZVNtYWxsQ2FwaXRhbCwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVNYXgK
K30gd2tDYXB0aW9uRm9udFN0eWxlOworCit0eXBlZGVmIGVudW0geworICAgIHdrQ2FwdGlvblRl
eHRFZGdlU3R5bGVVbmRlZmluZWQgPSAwLAorICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVOb25l
LAorICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVSYWlzZWQsCisgICAgd2tDYXB0aW9uVGV4dEVk
Z2VTdHlsZURlcHJlc3NlZCwKKyAgICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlVW5pZm9ybSwKKyAg
ICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlRHJvcFNoYWRvdywKKyAgICB3a0NhcHRpb25UZXh0RWRn
ZVN0eWxlTWF4Cit9IHdrQ2FwdGlvblRleHRFZGdlU3R5bGU7CisKK2V4dGVybiBib29sICgqd2tD
YXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcykodm9pZCk7CitleHRlcm4gYm9vbCAo
KndrQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKSh2b2lkKTsKK2V4
dGVybiBDR0NvbG9yUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xvciko
dm9pZCk7CitleHRlcm4gQ0dDb2xvclJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3Jv
dW5kQ29sb3IpKHZvaWQpOworZXh0ZXJuIENHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VD
b3B5V2luZG93Q29sb3IpKHZvaWQpOworZXh0ZXJuIGJvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRGb3JlZ3JvdW5kT3BhY2l0eSkoQ0dGbG9hdCopOworZXh0ZXJuIGJvb2woKndrQ2FwdGlvbkFw
cGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eSkoQ0dGbG9hdCopOworZXh0ZXJuIGJvb2woKndr
Q2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KShDR0Zsb2F0Kik7CitleHRlcm4gQ0dG
b250UmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlQ29weUZvbnRGb3JTdHlsZSkoaW50KTsKK2V4dGVy
biBib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKShDR0Zs
b2F0Kik7CitleHRlcm4gaW50KCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSko
dm9pZCk7CitleHRlcm4gQ0ZTdHJpbmdSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5n
c0NoYW5nZWROb3RpZmljYXRpb24pKHZvaWQpOwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1t
CShyZXZpc2lvbiAxMzE3NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE2LDMgKzIxNiwxNSBAQCBD
R0Zsb2F0ICgqd2tOU0VsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0CiBDR0Zsb2F0ICgqd2tOU1Jl
Ym91bmREZWx0YUZvckVsYXN0aWNEZWx0YSkoQ0dGbG9hdCBkZWx0YSk7CiAjZW5kaWYKIAorYm9v
bCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2VyUHJlZmVyZW5jZXMpKHZvaWQpOworYm9vbCAo
KndrQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKSh2b2lkKTsKK0NH
Q29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yKSh2b2lkKTsK
K0NHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKSh2b2lk
KTsKK0NHQ29sb3JSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IpKHZvaWQp
OworYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KShDR0Zsb2F0
Kik7Citib29sKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkpKENHRmxv
YXQqKTsKK2Jvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KShDR0Zsb2F0
Kik7CitDR0ZvbnRSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxlKShpbnQp
OworYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSkoQ0dG
bG9hdCopOworaW50KCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSkodm9pZCk7
CitDRlN0cmluZ1JlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlm
aWNhdGlvbikodm9pZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzE3NDkpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAx
Mi0xMC0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBBbGxvdyBwb3J0cyB0byBvdmVycmlkZSB0ZXh0IHRyYWNrIHJlbmRlcmluZyBzdHlsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDQ0OTY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Up
OiBJbml0aWFsaXplIG5ldyBXS1NJIGZ1bmN0aW9uIHBvaW50ZXJzLgorCiAyMDEyLTEwLTE4ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLiBGaXggR1RLKyBkZWJ1ZyBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0
ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDEzMTc0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTkyLDUgKzE5MiwxNyBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
KHZvaWQpCiAgICAgICAgIElOSVQoTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEpOwogI2Vu
ZGlmCiAKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcyk7
CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxl
KTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IpOwor
ICAgICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvcik7CisgICAg
ICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IpOworICAgICAgICBJTklU
KENhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkpOworICAgICAgICBJTklUKENh
cHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkpOworICAgICAgICBJTklUKENhcHRp
b25BcHBlYXJhbmNlR2V0V2luZG93T3BhY2l0eSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVh
cmFuY2VDb3B5Rm9udEZvclN0eWxlKTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdl
dFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRUZXh0RWRnZVN0eWxlKTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRp
bmdzQ2hhbmdlZE5vdGlmaWNhdGlvbik7CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzE3NDkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMC0xOCAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyB0byBvdmVycmlkZSB0
ZXh0IHRyYWNrIHJlbmRlcmluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDQ0OTY0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UpOiBJbml0aWFsaXplIG5ldyBXS1NJIGZ1bmN0aW9uIHBvaW50ZXJzLgor
CiAyMDEyLTEwLTE3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW01hY10gVW5pbml0aWFsaXplZCBNZW1iZXJzIGluIFdlYkRhdGFTb3VyY2VQcml2YXRl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCShyZXZpc2lvbiAxMzE3NDkpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIxMSw2ICsyMTEsMTkgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQog
ICAgIElOSVQoTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEpOwogI2VuZGlmCiAKKyAgICBJ
TklUKENhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzKTsKKyAgICBJTklUKENhcHRp
b25BcHBlYXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJsZSk7CisgICAgSU5JVChDYXB0aW9u
QXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFu
Y2VDb3B5QmFja2dyb3VuZENvbG9yKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlQ29weVdp
bmRvd0NvbG9yKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNp
dHkpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eSk7Cisg
ICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkpOworICAgIElOSVQoQ2Fw
dGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxlKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJh
bmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNl
R2V0VGV4dEVkZ2VTdHlsZSk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdz
Q2hhbmdlZE5vdGlmaWNhdGlvbik7CisKICNlbmRpZgogICAgIGRpZEluaXQgPSB0cnVlOwogfQpJ
bmRleDogV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRMaWJy
YXJpZXMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzE3NDkpCisrKyBXZWJLaXRMaWJyYXJpZXMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMTggIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgcG9ydHMg
dG8gb3ZlcnJpZGUgdGV4dCB0cmFjayByZW5kZXJpbmcgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3ODAwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xMjA0NDk2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgV0tTSSBoZWFkZXIgd2l0aCBTUEkgZm9yIGdldHRpbmcgdGhlIHVzZXIg
Y2FwdGlvbiBhcHBlYXJhbmNlIHByZWZlcmVuY2VzLgorCisgICAgICAgICogV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg6CisKIDIwMTItMTAtMDggIEtpcmFuIE11cHBhbGEgIDxjbXVwcGFsYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgVGhyb3R0bGUgRE9NIHRpbWVycyBvbiBoaWRkZW4gcGFnZXMuCklu
ZGV4OiBXZWJLaXRMaWJyYXJpZXMvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0TGlicmFyaWVzL1dlYktpdFN5c3RlbUludGVyZmFjZS5oCShyZXZpc2lvbiAxMzE3
NDkpCisrKyBXZWJLaXRMaWJyYXJpZXMvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKiAgICAgIAogICAgIFdlYktpdFN5c3RlbUludGVyZmFj
ZS5oCi0gICAgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgUHVibGljIGhlYWRlciBmaWxlLgogKi8KQEAg
LTUxMyw2ICs1MTMsNDEgQEAgQ0dGbG9hdCBXS05TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRh
KAogQm9vbGVhbiBXS0pMSXNSdW50aW1lQW5kV2ViQ29tcG9uZW50c0luc3RhbGxlZCh2b2lkKTsK
ICNlbmRpZgogCit0eXBlZGVmIGVudW0geworICAgIFdLQ2FwdGlvbkZvbnRTdHlsZURlZmF1bHQg
PSAwLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZU1vbm9zcGFjZWRXaXRoU2VyaWYsCisgICAgV0tD
YXB0aW9uRm9udFN0eWxlUHJvcG9ydGlvbmFsV2l0aFNlcmlmLAorICAgIFdLQ2FwdGlvbkZvbnRT
dHlsZU1vbm9zcGFjZWRXaXRob3V0U2VyaWYsCisgICAgV0tDYXB0aW9uRm9udFN0eWxlUHJvcG9y
dGlvbmFsV2l0aG91dFNlcmlmLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZUNhc3VhbCwKKyAgICBX
S0NhcHRpb25Gb250U3R5bGVDdXJzaXZlLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZVNtYWxsQ2Fw
aXRhbCwKKyAgICBXS0NhcHRpb25Gb250U3R5bGVNYXgKK30gV0tDYXB0aW9uRm9udFN0eWxlOwor
Cit0eXBlZGVmIGVudW0geworICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVVbmRlZmluZWQgPSAw
LAorICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVOb25lLAorICAgIFdLQ2FwdGlvblRleHRFZGdl
U3R5bGVSYWlzZWQsCisgICAgV0tDYXB0aW9uVGV4dEVkZ2VTdHlsZURlcHJlc3NlZCwKKyAgICBX
S0NhcHRpb25UZXh0RWRnZVN0eWxlVW5pZm9ybSwKKyAgICBXS0NhcHRpb25UZXh0RWRnZVN0eWxl
RHJvcFNoYWRvdywKKyAgICBXS0NhcHRpb25UZXh0RWRnZVN0eWxlTWF4Cit9IFdLQ2FwdGlvblRl
eHRFZGdlU3R5bGU7CisKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNl
cyh2b2lkKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0aW9uc1doZW5BdmFpbGFi
bGUodm9pZCk7CitDR0NvbG9yUmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENv
bG9yKHZvaWQpOworQ0dDb2xvclJlZiBXS0NhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRD
b2xvcih2b2lkKTsKK0NHQ29sb3JSZWYgV0tDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xv
cih2b2lkKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KENH
RmxvYXQqKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5KENH
RmxvYXQqKTsKK2Jvb2wgV0tDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkoQ0dGbG9h
dCopOworQ0dGb250UmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udEZvclN0eWxlKGludCBm
b250U3R5bGUpOworYm9vbCBXS0NhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJT
aXplKENHRmxvYXQqKTsKK2ludCBXS0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSh2
b2lkKTsKK0NGU3RyaW5nUmVmIFdLQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWRO
b3RpZmljYXRpb24odm9pZCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMzE3NDkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyB0byBvdmVycmlkZSB0ZXh0
IHRyYWNrIHJlbmRlcmluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDQ0OTY0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEv
dHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQ6IFVwZGF0ZSByZXN1bHRzIGZv
ciBjYXB0aW9uIGNzcyBjaGFuZ2VzLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1y
ZW5kZXJpbmcuaHRtbDogCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0
aW9uczogU2tpcCB0ZXN0cyB0aGF0IG5lZWQgdG8gYmUgcmViYXNlbGluZWQuCisKIDIwMTItMTAt
MTggIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkIENocm9taXVtIHJlYmFzZWxpbmVzLgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDEzMTc0OSkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmct
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIFJVTih2aWRlby5o
ZWlnaHQgPSAxNDQwKQogRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxh
eUVsZW1lbnQodmlkZW8pKS5mb250U2l6ZSA9PSAnNzJweCcpIE9LCiAKIEVYUEVDVEVEIChnZXRD
b21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuZm9udEZhbWlseSA9
PSAnc2Fucy1zZXJpZicpIE9LCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tE
aXNwbGF5RWxlbWVudCh2aWRlbykpLmNvbG9yID09ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDApJykg
T0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZp
ZGVvKSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCiBFWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5maXJz
dENoaWxkKS5iYWNrZ3JvdW5kQ29sb3IgPT0gJ3JnYmEoMCwgMCwgMCwgMC43OTY4NzUpJyksIE9C
U0VSVkVEICdyZ2JhKDAsIDAsIDAsIDAuOCknIEZBSUwKIEVORCBPRiBURVNUCiAKSW5kZXg6IExh
eW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmcuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0bWwJKHJl
dmlzaW9uIDEzMTc0OSkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5k
ZXJpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAg
dGVzdEZvbnRTaXplKDI1NjAsIDE0NDApOwogCiAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdl
dENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5mb250RmFtaWx5
IiwgInNhbnMtc2VyaWYiKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmNvbG9yIiwgInJnYmEoMjU1LCAy
NTUsIDI1NSwgMCkiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHls
ZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmNvbG9yIiwgInJnYigyNTUsIDI1NSwg
MjU1KSIpOwogICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRU
cmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmZpcnN0Q2hpbGQpLmJhY2tncm91
bmRDb2xvciIsICJyZ2JhKDAsIDAsIDAsIDAuNzk2ODc1KSIpOwogCiAgICAgICAgICAgICBlbmRU
ZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRp
b25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBl
Y3RhdGlvbnMJKHJldmlzaW9uIDEzMTc0OSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTQwNDUsNiArNDA0NSwxMSBA
QCB3ZWJraXQub3JnL2IvOTUxMjEgZmFzdC9ib3JkZXJzL2JvcmRlci1pCiB3ZWJraXQub3JnL2Iv
OTg1NDUgWyBNYWMgXSBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC90ZXh0LXNwbGljZWQtZm9udC5o
dG1sIFsgRmFpbHVyZSBdIAogd2Via2l0Lm9yZy9iLzk4NTQ1IFsgTWFjIF0gZmFzdC93cml0aW5n
LW1vZGUvS3VzYS1NYWt1cmEtYmFja2dyb3VuZC1jYW52YXMuaHRtbCBbIEZhaWx1cmUgXSAKIAor
ICMgUmVxdWlyZSByZWJhc2VsaW5pbmcgYWZ0ZXIgd2Via2l0Lm9yZy9iLzk3ODAwCisgd2Via2l0
Lm9yZy9iLzg5MTY3IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctaG9yaXpvbnRhbC5o
dG1sIFsgRmFpbHVyZSBdCisgd2Via2l0Lm9yZy9iLzg5MTY3IG1lZGlhL3RyYWNrL3RyYWNrLWN1
ZS1yZW5kZXJpbmctdmVydGljYWwuaHRtbCBbIEZhaWx1cmUgXQorIHdlYmtpdC5vcmcvYi84OTE2
NyBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0bWwgWyBGYWlsdXJlIF0KKwogd2Vi
a2l0Lm9yZy9iLzk4Njg2IGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLmh0
bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIzMTY2IFsgQW5kcm9pZCBNYWMgV2luIF0g
ZmFzdC9jc3MvYmFja2dyb3VuZC1jbGlwLXJhZGl1cy12YWx1ZXMuaHRtbCBbIFBhc3MgSW1hZ2VP
bmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169480</attachid>
            <date>2012-10-18 15:04:03 -0700</date>
            <delta_ts>2012-10-24 07:24:57 -0700</delta_ts>
            <desc>Another updated patch</desc>
            <filename>user_preferences_patch_36.txt</filename>
            <type>text/plain</type>
            <size>68157</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNiBAQAorMjAxMi0xMC0xOCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyB0
byBvdmVycmlkZSB0ZXh0IHRyYWNrIHJlbmRlcmluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzEyMDQ0OTY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBuZXcgV2Via2l0U3lzdGVtSW50ZXJmYWNl
IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
IEFkZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgsIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMu
bW0sCisgICAgICAgICAgICBhbmQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oLgorCisgICAg
ICAgICogY3NzL21lZGlhQ29udHJvbHMuY3NzOiBSZWFycmFuZ2UgdGhlIGNhcHRpb24gQ1NTIHNv
IGl0IGlzIHBvc3NpYmxlIHRvIHN0eWxlIHRoZSBjdWUgd2luZG93LAorICAgICAgICAgICAgYmFj
a2dyb3VuZCwgYW5kIHRleHQgaW5kZXBlbmRlbnRseS4KKworICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1M
TWVkaWFFbGVtZW50KTogSW5pdGlhbGl6ZSBtX2Rpc2FibGVDYXB0aW9ucyB3aXRoIHRoZW1lLT51
c2VyUHJlZmVyc0NhcHRpb25zKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjphdHRhY2gpOiBSZWdpc3RlciBmb3IgY2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2FsbGJh
Y2tzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGV0YWNoKTogVW5yZWdp
c3RlciBmb3IgY2FwdGlvbiBwcmVmZXJlbmNlcyBjaGFuZ2UgY2FsbGJhY2tzLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlclByZWZlcnNDYXB0aW9ucyk6IFJldHVybiB0
aGVtZS0+dXNlclByZWZlcnNDYXB0aW9ucygpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2luZCk6IENvbnNpZGVyIHVzZXJQ
cmVmZXJzQ2FwdGlvbnMoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dENsb3NlZENhcHRpb25zVmlzaWJsZSk6IE1vdmUgdGhlIGNvZGUgdGhhdCBtYXJrcyBhbGwgdHJh
Y2tzIGFzCisgICAgICAgICAgICB1bi1jb25maWd1cmVkIHRvIG1hcmtDYXB0aW9uQW5kU3VidGl0
bGVUcmFja3NBc1VuY29uZmlndXJlZCBzbyBpdCBjYW4gYmUgcmV1c2VkLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6IE5ldywg
Zm9yY2UgYSByZWV2YWx1YXRpb24gb2YgYWxsIHRleHQgdHJhY2tzLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25m
aWd1cmVkKTogTmV3LCBjb2RlIG1vdmVkIGZyb20gCisgICAgICAgICAgICBzZXRDbG9zZWRDYXB0
aW9uc1Zpc2libGUKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDogSW5oZXJpdCBm
cm9tIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lci4KKworICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKTogR2V0IHJpZCBv
ZiB1bm5lY2Vzc2FyeSBtZW1iZXIKKyAgICAgICAgICAgIHZhcmlhYmxlLiBHZXQgY2FwdGlvbiBm
b250IHNjYWxlIGZyb20gdGhlbWUgaW5zdGVhZCBvZiBoYXJkIGNvZGluZy4KKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorCisgICAgICAgICogaHRtbC90cmFj
ay9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2sp
OiBDaGFuZ2UgYXR0cmlidXRlcyBmcm9tIFN0cmluZyB0byBBdG9taWNTdHJpbmcuCisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRLaW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2s6OnNldE1vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6bW9kZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjpraW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OmxhYmVsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldExhYmVsKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6Omxhbmd1YWdlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldExhbmd1YWdlKTogRGl0dG8uCisKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1ZUJveCk6IFNldCB0aGUgc2hhZG93IHBzZXVkbyBpZC4K
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93
UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1cm4gdGhlIAorICAgICAgICAgICAg
c2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4gYmUgdXNlZCBlbHNld2hlcmUuCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OnNoYWRvd1BzZXVkb0lkKTogQ2FsbCB0ZXh0VHJhY2tD
dWVCb3hTaGFkb3dQc2V1ZG9JZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6cGFz
dE5vZGVzU2hhZG93UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1ldGhvZCB0byByZXR1cm4gdGhlIAor
ICAgICAgICAgICAgc2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4gYmUgdXNlZCBlbHNld2hlcmUu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmZ1dHVyZU5vZGVzU2hhZG93UHNldWRv
SWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxh
eVRyZWUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisKKyAgICAgICAg
KiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp1c2VyQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6fkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcyk6IE5ldywgcGFzc3Rocm91Z2gg
dG8gV0tTSSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zV2luZG93Q29sb3IpOiBSZXR1cm4gQ29s
b3Igd2l0aCB1c2VyJ3MgY2FwdGlvbiB3aW5kb3cgY29sb3IgcHJlZmVyZW5jZS4KKyAgICAgICAg
KFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zQmFja2dyb3VuZENv
bG9yKTogUmV0dXJuIENvbG9yIHdpdGggdXNlcidzIGNhcHRpb24gCisgICAgICAgICAgICBiYWNr
Z3JvdW5kIGNvbG9yIHByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRDb2xvcik6IFJldHVybiBDb2xvciB3aXRoIHVzZXIn
cyBjYXB0aW9uIHRleHQgY29sb3IgcHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKTogUmV0
dXJuIENvbG9yIGZvciB0ZXh0IGVkZ2UgZWZmZWN0LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6Y3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcik6IFJldHVy
biBTdHJpbmcgd2l0aCBDU1MgdG8gc2V0IGEgdGV4dC1zaGFkb3cKKyAgICAgICAgICAgIG9yIHdl
YmtpdC10ZXh0LXN0cm9rZSBwcm9wZXJ0eS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWM6OmNzc0NvbG9yUHJvcGVydHkpOiBSZXR1cm4gYSBTdHJpbmcgd2l0aCBj
c3MgdG8gc2V0IGEgcHJvcGVydHkgCisgICAgICAgICAgICB3aXRoIGEgY29sb3IgdmFsdWUuCisg
ICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRF
ZGdlU3R5bGUpOiBSZXR1cm4gYSBTdHJpbmcgd2l0aCBjc3MgdG8gc3R5bGUgY2FwdGlvbiAKKyAg
ICAgICAgICAgIHRleHQgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCB0ZXh0IGVkZ2Ugc3R5ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zRGVm
YXVsdEZvbnQpOiBSZXR1cm4gYSBTdHJpbmcgd2l0aCBjc3MgdG8gc3R5bGUgY2FwdGlvbgorICAg
ICAgICAgICAgdGV4dCB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGZvbnQuCisgICAgICAgIChX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVy
cmlkZSk6IFJldHVybiBhIFN0cmluZyB3aXRoIGNzcyB0byBzdHlsZSBjYXB0aW9ucworICAgICAg
ICAgICAgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6
OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25Gb250U2l6ZVNjYWxlKTogUmV0dXJu
IHRoZSB1c2VyJ3MgcHJlZmVycmVkIGNhcHRpb24gZm9udCBzY2FsZS4KKyAgICAgICAgKFdlYkNv
cmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQp
OiBOb3RpZnkgbGlzdGVuZXJzIG9mIGNhcHRpb24gcHJlZmVyZW5jZSBjaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpyZWdpc3RlckZvckNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBBZGQgYSBjYXB0aW9uIHByZWZlcmVuY2VzIAor
ICAgICAgICAgICAgY2hhbmdlcyBsaXN0ZW5lci4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWM6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
Q2FsbGJhY2tzKTogUmVtb3ZlIGEgY2FwdGlvbiBwcmVmZXJlbmNlcworICAgICAgICAgICAgY2hh
bmdlcyBsaXN0ZW5lci4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OnVwZGF0ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcmlkZSk6IE5ldywgaWYgdGhlbWUgaGFzIGEg
Y2FwdGlvbnMgc3R5bGUgc2hlZXQgb3ZlcnJpZGUsCisgICAgICAgICAgICBpbmplY3QgaXQgaW50
byB0aGUgY3VycmVudCBwYWdlIGdyb3VwLCBvdGhlcndpc2UgcmVtb3ZlIGluamVjdGVkIHNoZWV0
LgorCisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3Vw
OjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBOZXcsIHBh
c3N0aHJvdWdoIHRvIHBsYXRmb3JtIHNwZWNpZmljIGZ1bmN0aW9uCisgICAgICAgICAgICBvZiB0
aGUgc2FtZSBuYW1lLgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjp1bnJlZ2lzdGVyRm9y
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZUdyb3VwOjp1c2VyUHJlZmVyc0NhcHRpb25zKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpQYWdlR3JvdXA6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6Y2FwdGlvbkZvbnRTaXplU2NhbGUpOiBEaXR0by4K
KyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5oOgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDogVXBkYXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbTogRGl0dG8uCisKIDIwMTItMTAtMTggIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBMb2NhbGl6ZXI6Om1vbnRo
Rm9ybWF0IGFuZCBpbXBsZW1lbnRhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZp
c2lvbiAxMzE3NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBj
b3B5KQpAQCAtMjYyMywzICsyNjIzLDE4IEBAIF9fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGUKIF9fWk43V2ViQ29yZTI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4
TlNUZXh0QWx0ZXJuYXRpdmVzOF9OU1JhbmdlCiBfX1pON1dlYkNvcmUzMmNvbGxlY3REaWN0YXRp
b25UZXh0QWx0ZXJuYXRpdmVzRVAxOE5TQXR0cmlidXRlZFN0cmluZ1JOM1dURjZWZWN0b3JJTlNf
MjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VFTG0wRUVFCiAjZW5kaWYKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKK193a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzCitfd2tD
YXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0aW9uc1doZW5BdmFpbGFibGUKK193a0NhcHRpb25BcHBl
YXJhbmNlQ29weUZvcmVncm91bmRDb2xvcgorX3drQ2FwdGlvbkFwcGVhcmFuY2VDb3B5QmFja2dy
b3VuZENvbG9yCitfd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcgorX3drQ2FwdGlv
bkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eQorX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRC
YWNrZ3JvdW5kT3BhY2l0eQorX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5Citf
d2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250Rm9yU3R5bGUKK193a0NhcHRpb25BcHBlYXJhbmNl
R2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplCitfd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdl
U3R5bGUKK193a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9u
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzMTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEy
Miw5IEBACiAJCTA3ODQ2MzQyMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzNDAxNDVC
MTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgKi87IH07CiAJCTA3ODQ2MzQzMTQ1QjE1
MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQxMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZl
bnQuaCAqLzsgfTsKIAkJMDc4NDYzODUxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2Mzg0
MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggKi87IH07CisJCTA3OUQwODY4MTYy
RjIwRTgwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlEMDg2NzE2MkYyMEU4MDBEQjg2NTgg
LyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTA3OUQwODZCMTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzlEMDg2OTE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYy5oICovOyB9OworCQkwNzlEMDg2QzE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3OUQwODZBMTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjLm1tICovOyB9OwogCQkwN0E2RDFFQjE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFn
bWVudFVSSVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0E2RDFFOTE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNl
ci5jcHAgKi87IH07CiAJCTA3QTZEMUVDMTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50
VVJJUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwN0E2RDFFQTE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oICov
OyB9OwogCQkwN0IwMTEzRjEwMzIyNDIyMDBGQkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29u
dHJvbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
QjAxMTNFMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oICov
OyB9OwpAQCAtNzE1NCw2ICs3MTU3LDkgQEAKIAkJMDc4NDYzNDAxNDVCMTUxQTAwQTU4REYxIC8q
IEpTVHJhY2tFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1RyYWNrRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzg0NjM0MTE0
NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTVHJhY2tFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
Nzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1RyYWNrQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3OUQwODY3MTYyRjIwRTgwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5RDA4NjkxNjJGMjFGOTAw
REI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzlEMDg2QTE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3OUY1RTRCMEYzQkVCRUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclByaXZhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QTZEMUU5MTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRp
YUZyYWdtZW50VVJJUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0E2RDFFQTE0OTExMzc3MDAwNTFEMEMgLyogTWVkaWFGcmFnbWVudFVSSVBhcnNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUZyYWdtZW50VVJJUGFyc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTc4Myw2ICsxNTc4OSw5IEBACiAJ
CQkJQkMxMjRFRTQwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uY3BwICovLAogCQkJCUJDMTI0
RUU1MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZvLmggKi8sCiAJCQkJQkMxMjRFRTYwQzI2NDFD
RDAwOUUyMzQ5IC8qIEJhckluZm8uaWRsICovLAorCQkJCTA3OUQwODY3MTYyRjIwRTgwMERCODY1
OCAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmggKi8sCisJCQkJMDc5RDA4NjkxNjJGMjFGOTAw
REI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaCAqLywKKwkJCQkwNzlEMDg2QTE2
MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbSAqLywKIAkJCQkx
NEQ4MjM4QTBBRjkyREY2MDAwNEYwNTcgLyogQ2hyb21lLmNwcCAqLywKIAkJCQkxNEQ4MjM1MDBB
RjkyQTc5MDAwNEYwNTcgLyogQ2hyb21lLmggKi8sCiAJCQkJMTREODI0MDYwQUY5M0FFQjAwMDRG
MDU3IC8qIENocm9tZUNsaWVudC5oICovLApAQCAtMjI0OTksNiArMjI1MDgsOCBAQAogCQkJCTQ5
QzdCOUREMTA0MkQzMkYwMDA5RDQ0NyAvKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OTQ4NEZDQjEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAxODdERDMg
LyogQ2FudmFzU3R5bGUuaCBpbiBIZWFkZXJzICovLAorIAkJCQkwNzlEMDg2ODE2MkYyMEU4MDBE
Qjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8sCisgCQkJCTA3
OUQwODZCMTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTUwQjY5RTA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNjlERDE1MDVGMDc2MDAxQjc0QUMgLyogQ2hhbmdl
VmVyc2lvbldyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE1RkZGMTJCMDI2NzYwMEMx
QTM1OSAvKiBDaGFubmVsTWVyZ2VyTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjExNiw2ICsy
NjEyNyw3IEBACiAJCQkJNDlDN0I5REMxMDQyRDMyRjAwMDlENDQ3IC8qIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk0ODRGQ0ExMDJDRjIzQzAwMTg3REQz
IC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4
NEZDRDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8sCisg
CQkJCTA3OUQwODZDMTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1MEI2OUQwOTlERjAyNzAwOTBENzgxIC8qIENEQVRB
U2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNjlEQzE1MDVGMDc2MDAxQjc0QUMg
LyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTVGRkUx
MkIwMjY3NjAwQzFBMzU5IC8qIENoYW5uZWxNZXJnZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHMuY3NzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzLmNzcwkocmV2aXNpb24gMTMxNzQ5KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHMuY3NzCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTYsNyArMjE2LDcgQEAgdmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWlu
ZQogICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKICAg
ICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7
CisgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7CiAKICAgICBsZXR0ZXItc3BhY2lu
Zzogbm9ybWFsOwogICAgIHdvcmQtc3BhY2luZzogbm9ybWFsOwpAQCAtMjM0LDggKzIzNCw2IEBA
IHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2QKIAogICAgIGJhY2tncm91
bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICBwYWRkaW5nOiAycHggMnB4OwotCi0g
ICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogfQogCiB2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0
LXRyYWNrLWZ1dHVyZS1ub2RlcyB7CkBAIC0yNDYsMTEgKzI0NCwxMCBAQCB2aWRlbzo6LXdlYmtp
dC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1uCiAKICAgICBtYXJnaW4tbGVmdDogLTJweDsKICAg
ICBwYWRkaW5nOiAycHggMnB4IDJweCAwcHg7Ci0KLSAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7
CiB9CiAKIHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSB7CiAgICAgcG9z
aXRpb246IGFic29sdXRlOwotICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOworICAg
IG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzE3NDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKQEAgLTI4MSw2ICsyODIs
MTQgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdAogCiAgICAgc2V0
SGFzQ3VzdG9tQ2FsbGJhY2tzKCk7CiAgICAgYWRkRWxlbWVudFRvRG9jdW1lbnRNYXAodGhpcywg
ZG9jdW1lbnQpOworCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChkb2N1bWVudC0+
cGFnZSgpKSB7CisgICAgICAgIFBhZ2VHcm91cCYgZ3JvdXAgPSBkb2N1bWVudC0+cGFnZSgpLT5n
cm91cCgpOworICAgICAgICBpZiAoZ3JvdXAudXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpKQor
ICAgICAgICAgICAgbV9kaXNhYmxlQ2FwdGlvbnMgPSAhZ3JvdXAudXNlclByZWZlcnNDYXB0aW9u
cygpOworICAgIH0KKyNlbmRpZgogfQogCiBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxl
bWVudCgpCkBAIC01NDEsNiArNTUwLDIwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXR0YWNo
KCkKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmhpZGVNZWRpYVBsYXll
clByb3h5UGx1Z2luKG1fcHJveHlXaWRnZXQuZ2V0KCkpOwogICAgIH0KICNlbmRpZgorCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAg
IGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CisjZW5kaWYKK30KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpkZXRhY2goKQoreworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAoZG9jdW1l
bnQoKS0+cGFnZSgpKQorICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCkudW5yZWdp
c3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CisjZW5kaWYK
KyAgICBIVE1MRWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
ZGlkUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpCkBAIC0yNzkwLDI4ICsyODEzLDMwIEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6d2lsbFJlbW92ZVRyYWNrKEgKICAgICAgICAgbV90ZXh0VHJhY2tz
V2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4ucmVtb3ZlKGluZGV4KTsKIH0KIAotYm9vbCBIVE1M
TWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzTGFuZ3VhZ2UoY29uc3QgU3RyaW5n
JikgY29uc3QKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6dXNlclByZWZlcnNDYXB0aW9ucygpIGNv
bnN0CiB7Ci0gICAgLy8gRklYTUU6IGNoZWNrIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgcHJlZmVyZW5j
ZSAtIGJ1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxMjEKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUGFnZUdyb3VwJiBncm91cCA9IHBhZ2UtPmdy
b3VwKCk7CisgICAgcmV0dXJuIGdyb3VwLnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSAmJiBn
cm91cC51c2VyUHJlZmVyc0NhcHRpb25zKCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
dXNlcklzSW50ZXJlc3RlZEluVGhpc1RyYWNrS2luZChTdHJpbmcga2luZCkgY29uc3QKIHsKLSAg
ICAvLyBJZiAuLi4gdGhlIHVzZXIgaGFzIGluZGljYXRlZCBhbiBpbnRlcmVzdCBpbiBoYXZpbmcg
YSB0cmFjayB3aXRoIHRoaXMgdGV4dCB0cmFjayBraW5kLCB0ZXh0IHRyYWNrIGxhbmd1YWdlLCAu
Li4gCiAgICAgaWYgKG1fZGlzYWJsZUNhcHRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLT5zZXR0aW5ncygpOwotICAgIGlm
ICghc2V0dGluZ3MpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIHVzZXJQcmVmZXJz
Q2FwdGlvbnNPclN1YnRpdGxlcyA9IG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlIHx8IHVzZXJQcmVm
ZXJzQ2FwdGlvbnMoKTsKIAogICAgIGlmIChraW5kID09IFRleHRUcmFjazo6c3VidGl0bGVzS2V5
d29yZCgpKQotICAgICAgICByZXR1cm4gc2V0dGluZ3MtPnNob3VsZERpc3BsYXlTdWJ0aXRsZXMo
KSB8fCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsKKyAgICAgICAgcmV0dXJuIChzZXR0aW5ncyAm
JiBzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVN1YnRpdGxlcygpKSB8fCB1c2VyUHJlZmVyc0NhcHRp
b25zT3JTdWJ0aXRsZXM7CiAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdv
cmQoKSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzLT5zaG91bGREaXNwbGF5Q2FwdGlvbnMoKSB8
fCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsKKyAgICAgICAgcmV0dXJuIChzZXR0aW5ncyAmJiBz
ZXR0aW5ncy0+c2hvdWxkRGlzcGxheUNhcHRpb25zKCkpIHx8IHVzZXJQcmVmZXJzQ2FwdGlvbnNP
clN1YnRpdGxlczsKICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdv
cmQoKSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzLT5zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0
aW9ucygpIHx8IG1fY2xvc2VkQ2FwdGlvbnNWaXNpYmxlOworICAgICAgICByZXR1cm4gc2V0dGlu
Z3MgJiYgc2V0dGluZ3MtPnNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKCk7CiAKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC0zOTc2LDIyICs0MDAxLDggQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzZXRDbG9zZWRDYXB0aW9ucwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkgewogICAg
ICAgICBtX2Rpc2FibGVDYXB0aW9ucyA9ICFtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsKLSAgICAg
ICAgCi0gICAgICAgIC8vIE1hcmsgYWxsIHRyYWNrIGVsZW1lbnRzIGFzIG5vdCAiY29uZmlndXJl
ZCIgc28gdGhhdCBjb25maWd1cmVUZXh0VHJhY2tzKCkKLSAgICAgICAgLy8gd2lsbCByZWNvbnNp
ZGVyIHdoaWNoIHRyYWNrcyB0byBkaXNwbGF5IGluIGxpZ2h0IG9mIG5ldyB1c2VyIHByZWZlcmVu
Y2VzCi0gICAgICAgIC8vIChlLmcuIGRlZmF1bHQgdHJhY2tzIHNob3VsZCBub3QgYmUgZGlzcGxh
eWVkIGlmIHRoZSB1c2VyIGhhcyB0dXJuZWQgb2ZmCi0gICAgICAgIC8vIGNhcHRpb25zIGFuZCBu
b24tZGVmYXVsdCB0cmFja3Mgc2hvdWxkIGJlIGRpc3BsYXllZCBiYXNlZCBvbiBsYW5ndWFnZQot
ICAgICAgICAvLyBwcmVmZXJlbmNlcyBpZiB0aGUgdXNlciBoYXMgdHVybmVkIGNhcHRpb25zIG9u
KS4KLSAgICAgICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0g
bm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNUYWdOYW1l
KHRyYWNrVGFnKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIEhUTUxU
cmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxUcmFja0VsZW1lbnQq
Pihub2RlKTsKLSAgICAgICAgICAgIGlmICh0cmFja0VsZW1lbnQtPmtpbmQoKSA9PSBUZXh0VHJh
Y2s6OmNhcHRpb25zS2V5d29yZCgpCi0gICAgICAgICAgICAgICAgfHwgdHJhY2tFbGVtZW50LT5r
aW5kKCkgPT0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpCi0gICAgICAgICAgICAgICAg
dHJhY2tFbGVtZW50LT5zZXRIYXNCZWVuQ29uZmlndXJlZChmYWxzZSk7Ci0gICAgICAgIH0KIAot
ICAgICAgICBjb25maWd1cmVUZXh0VHJhY2tzKCk7CisgICAgICAgIG1hcmtDYXB0aW9uQW5kU3Vi
dGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCgpOwogICAgIH0KICNlbHNlCiAgICAgaWYgKGhhc01l
ZGlhQ29udHJvbHMoKSkKQEAgLTQxNzksNiArNDE5MCwzOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVwZGF0ZUNsb3NlZENhcHRpCiAgICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnVwZGF0
ZVRleHRUcmFja0Rpc3BsYXkoKTsKICAgICB9CiB9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpCit7CisgICAgaWYgKCFpc1ZpZGVvKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmln
dXJlZCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3VidGl0
bGVUcmFja3NBc1VuY29uZmlndXJlZCgpCit7CisgICAgLy8gTWFyayBhbGwgdHJhY2sgZWxlbWVu
dHMgYXMgbm90ICJjb25maWd1cmVkIiBzbyB0aGF0IGNvbmZpZ3VyZVRleHRUcmFja3MoKQorICAg
IC8vIHdpbGwgcmVjb25zaWRlciB3aGljaCB0cmFja3MgdG8gZGlzcGxheSBpbiBsaWdodCBvZiBu
ZXcgdXNlciBwcmVmZXJlbmNlcworICAgIC8vIChlLmcuIGRlZmF1bHQgdHJhY2tzIHNob3VsZCBu
b3QgYmUgZGlzcGxheWVkIGlmIHRoZSB1c2VyIGhhcyB0dXJuZWQgb2ZmCisgICAgLy8gY2FwdGlv
bnMgYW5kIG5vbi1kZWZhdWx0IHRyYWNrcyBzaG91bGQgYmUgZGlzcGxheWVkIGJhc2VkIG9uIGxh
bmd1YWdlCisgICAgLy8gcHJlZmVyZW5jZXMgaWYgdGhlIHVzZXIgaGFzIHR1cm5lZCBjYXB0aW9u
cyBvbikuCisgICAgZm9yIChSZWZQdHI8Tm9kZT4gbm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsg
bm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFub2RlLT5oYXNUYWdO
YW1lKHRyYWNrVGFnKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAg
SFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFRyYWNrRWxl
bWVudCo+KG5vZGUuZ2V0KCkpOworICAgICAgICBSZWZQdHI8VGV4dFRyYWNrPiB0ZXh0VHJhY2sg
PSB0cmFja0VsZW1lbnQtPnRyYWNrKCk7CisgICAgICAgIGlmICghdGV4dFRyYWNrKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBTdHJpbmcga2luZCA9IHRleHRUcmFj
ay0+a2luZCgpOworCisgICAgICAgIGlmIChraW5kID09IFRleHRUcmFjazo6c3VidGl0bGVzS2V5
d29yZCgpIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSkKKyAgICAgICAg
ICAgIHRyYWNrRWxlbWVudC0+c2V0SGFzQmVlbkNvbmZpZ3VyZWQoZmFsc2UpOworICAgIH0KKyAg
ICBjb25maWd1cmVUZXh0VHJhY2tzKCk7Cit9CisKICNlbmRpZgogCiB2b2lkKiBIVE1MTWVkaWFF
bGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTMxNzQ5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDYgKzQwLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUg
IkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJQT0RJbnRlcnZhbFRyZWUuaCIK
ICNpbmNsdWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKQEAgLTc4
LDcgKzc5LDcgQEAgdHlwZWRlZiBWZWN0b3I8Q3VlSW50ZXJ2YWxUcmVlOjpJbnRlcnZhbAogCiBj
bGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVkaWFQ
bGF5ZXJDbGllbnQsIHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0
ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBN
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgLCBw
cml2YXRlIFRleHRUcmFja0NsaWVudAorICAgICwgcHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQsIHBy
aXZhdGUgQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyCiAjZW5kaWYKIHsKIHB1Ymxp
YzoKQEAgLTI0MCw2ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJh
Y2tzKCk7CiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tHcm91cChjb25zdCBUcmFja0dyb3Vw
JikgY29uc3Q7CiAKKyAgICBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdDsKICAgICBi
b29sIHVzZXJJc0ludGVyZXN0ZWRJblRoaXNUcmFja0tpbmQoU3RyaW5nKSBjb25zdDsKICAgICBi
b29sIHRleHRUcmFja3NBcmVSZWFkeSgpIGNvbnN0OwogICAgIHZvaWQgY29uZmlndXJlVGV4dFRy
YWNrRGlzcGxheSgpOwpAQCAtMzI1LDcgKzMyNyw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogICAgIHZpcnR1YWwgYm9vbCBpc1VS
TEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoKCk7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkZXRhY2goKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRN
b3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIE9WRVJSSURFOwogCkBAIC00
NzQsMTIgKzQ3NywxNCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IHZvaWQgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhmbG9hdCk7Ci0gICAgYm9vbCB1c2VySXNJ
bnRlcmVzdGVkSW5UaGlzTGFuZ3VhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgSFRNTFRy
YWNrRWxlbWVudCogc2hvd2luZ1RyYWNrV2l0aFNhbWVLaW5kKEhUTUxUcmFja0VsZW1lbnQqKSBj
b25zdDsKIAogICAgIGJvb2wgaWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKSBjb25z
dCB7IHJldHVybiBtX2lnbm9yZVRyYWNrRGlzcGxheVVwZGF0ZSA+IDA7IH0KICAgICB2b2lkIGJl
Z2luSWdub3JpbmdUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygpIHsgKyttX2lnbm9yZVRyYWNr
RGlzcGxheVVwZGF0ZTsgfQogICAgIHZvaWQgZW5kSWdub3JpbmdUcmFja0Rpc3BsYXlVcGRhdGVS
ZXF1ZXN0cygpIHsgQVNTRVJUKG1faWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlKTsgLS1tX2lnbm9y
ZVRyYWNrRGlzcGxheVVwZGF0ZTsgfQorCisgICAgdm9pZCBtYXJrQ2FwdGlvbkFuZFN1YnRpdGxl
VHJhY2tzQXNVbmNvbmZpZ3VyZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FwdGlvblByZWZlcmVu
Y2VzQ2hhbmdlZCgpIE9WRVJSSURFOwogI2VuZGlmCiAKICAgICAvLyBUaGVzZSAiaW50ZXJuYWwi
IGZ1bmN0aW9ucyBkbyBub3QgY2hlY2sgdXNlciBnZXN0dXJlIHJlc3RyaWN0aW9ucy4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAJKHJldmlzaW9uIDEzMTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsMTEgQEAK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVwYWludGVy
LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJv
bFJvb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9scy5oIgogI2luY2x1ZGUgIk1v
dXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAj
aW5jbHVkZSAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVy
SW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWVkaWEuaCIKQEAgLTEzNzgsMjIgKzEzODAsMTgg
QEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZQogICAgIGhhc0NoaWxk
Tm9kZXMoKSA/IHNob3coKSA6IGhpZGUoKTsKIH0KIAotc3RhdGljIGNvbnN0IGZsb2F0IG1pbWlt
dW1Gb250U2l6ZSA9IDE2Owotc3RhdGljIGNvbnN0IGZsb2F0IHZpZGVvSGVpZ2h0Rm9udFNpemVQ
ZXJjZW50YWdlID0gLjA1Owotc3RhdGljIGNvbnN0IGZsb2F0IHRyYWNrQm90dG9tTXVsdGlwbGll
ciA9IC45OwotCiB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVw
ZGF0ZVNpemVzKCkKIHsKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1Bh
cmVudE1lZGlhRWxlbWVudCh0aGlzKTsKICAgICBpZiAoIW1lZGlhRWxlbWVudCB8fCAhbWVkaWFF
bGVtZW50LT5yZW5kZXJlcigpIHx8ICFtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCktPmlzVmlkZW8o
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCB2aWRlb0JveCA9IHRvUmVuZGVyVmlk
ZW8obWVkaWFFbGVtZW50LT5yZW5kZXJlcigpKS0+dmlkZW9Cb3goKTsKLSAgICBpZiAobV92aWRl
b0Rpc3BsYXlTaXplID09IHZpZGVvQm94KQorICAgIGlmICghZG9jdW1lbnQoKS0+cGFnZSgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV92aWRlb0Rpc3BsYXlTaXplID0gdmlkZW9Cb3g7CiAKLSAg
ICBmbG9hdCBmb250U2l6ZSA9IG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCkuaGVpZ2h0KCkgKiB2
aWRlb0hlaWdodEZvbnRTaXplUGVyY2VudGFnZTsKKyAgICBJbnRSZWN0IHZpZGVvQm94ID0gdG9S
ZW5kZXJWaWRlbyhtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCkpLT52aWRlb0JveCgpOworCisgICAg
ZmxvYXQgZm9udFNpemUgPSB2aWRlb0JveC5zaXplKCkuaGVpZ2h0KCkgKiAoZG9jdW1lbnQoKS0+
cGFnZSgpLT5ncm91cCgpLmNhcHRpb25Gb250U2l6ZVNjYWxlKCkpOwogICAgIGlmIChmb250U2l6
ZSAhPSBtX2ZvbnRTaXplKSB7CiAgICAgICAgIG1fZm9udFNpemUgPSBmb250U2l6ZTsKICAgICAg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBTdHJpbmc6Om51
bWJlcihmb250U2l6ZSkgKyAicHgiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFjay5jcHAJKHJldmlzaW9uIDEzMTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIFRleHRUcmFjazo6c2hvd2luZ0tlCiAgICAgcmV0dXJuIGVuZGVkOwogfQog
Ci1UZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBU
ZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlIHR5cGUpCitUZXh0
VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJh
Y2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBraW5kLCBjb25zdCBBdG9taWNT
dHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBl
IHR5cGUpCiAgICAgOiBUcmFja0Jhc2UoY29udGV4dCwgVHJhY2tCYXNlOjpUZXh0VHJhY2spCiAg
ICAgLCBtX2N1ZXMoMCkKICAgICAsIG1fbWVkaWFFbGVtZW50KDApCkBAIC0xMTcsNyArMTE3LDcg
QEAgVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKICAgICBjbGVhckNsaWVudCgpOwogfQogCi1ib29s
IFRleHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IFN0cmluZyYgdmFsdWUpCitib29s
IFRleHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCBzdWJ0aXRsZXNLZXl3b3JkKCkp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBib29sIFRleHRUcmFj
azo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IFRleHRUcmFjazo6c2V0S2luZChjb25zdCBTdHJpbmcmIGtpbmQpCit2b2lkIFRleHRUcmFjazo6
c2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQpCiB7CiAgICAgU3RyaW5nIG9sZEtpbmQg
PSBtX2tpbmQ7CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFRleHRUcmFjazo6c2V0S2luZChj
b25zdCBTdHJpbmcmIGtpCiAgICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tLaW5kQ2hhbmdlZCh0
aGlzKTsKIH0KIAotdm9pZCBUZXh0VHJhY2s6OnNldE1vZGUoY29uc3QgU3RyaW5nJiBtb2RlKQor
dm9pZCBUZXh0VHJhY2s6OnNldE1vZGUoY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlKQogewogICAg
IC8vIE9uIHNldHRpbmcsIGlmIHRoZSBuZXcgdmFsdWUgaXNuJ3QgZXF1YWwgdG8gd2hhdCB0aGUg
YXR0cmlidXRlIHdvdWxkIGN1cnJlbnRseQogICAgIC8vIHJldHVybiwgdGhlIG5ldyB2YWx1ZSBt
dXN0IGJlIHByb2Nlc3NlZCBhcyBmb2xsb3dzIC4uLgpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQg
VGV4dFRyYWNrOjpzZXRNb2RlKGNvbnN0IFN0cmluZyYgbW8KICAgICAgICAgbV9jbGllbnQtPnRl
eHRUcmFja01vZGVDaGFuZ2VkKHRoaXMpOwogfQogCi1TdHJpbmcgVGV4dFRyYWNrOjptb2RlKCkg
Y29uc3QKK0F0b21pY1N0cmluZyBUZXh0VHJhY2s6Om1vZGUoKSBjb25zdAogewogICAgIC8vIFRo
ZSB0ZXh0IHRyYWNrICJzaG93aW5nIiBhbmQgInNob3dpbmcgYnkgZGVmYXVsdCIgbW9kZXMgcmV0
dXJuIHRoZSBzdHJpbmcgInNob3dpbmciLgogICAgIGlmIChtX3Nob3dpbmdCeURlZmF1bHQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgJKHJldmlzaW9uIDEzMTc0OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiBjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJh
Y2tCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVu
dCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcm
IGxhbmd1YWdlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFjaz4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25z
dCBBdG9taWNTdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0
b21pY1N0cmluZyYgbGFuZ3VhZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFRleHRUcmFjayhjb250ZXh0LCBjbGllbnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwgQWRkVHJh
Y2spKTsKICAgICB9CkBAIC02MywyOCArNjMsMjggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVk
aWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpIHsgbV9tZWRpYUVsZW1lbnQgPSBl
bGVtZW50OyB9CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgeyByZXR1cm4g
bV9tZWRpYUVsZW1lbnQ7IH0KIAotICAgIFN0cmluZyBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9r
aW5kOyB9Ci0gICAgdm9pZCBzZXRLaW5kKGNvbnN0IFN0cmluZyYpOworICAgIEF0b21pY1N0cmlu
ZyBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgdm9pZCBzZXRLaW5kKGNvbnN0
IEF0b21pY1N0cmluZyYpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VidGl0
bGVzS2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNhcHRpb25zS2V5
d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRlc2NyaXB0aW9uc0tleXdv
cmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjaGFwdGVyc0tleXdvcmQoKTsK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtZXRhZGF0YUtleXdvcmQoKTsKLSAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCi0gICAgU3Ry
aW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIHZvaWQgc2V0TGFiZWwo
Y29uc3QgU3RyaW5nJiBsYWJlbCkgeyBtX2xhYmVsID0gbGFiZWw7IH0KKyAgICBBdG9taWNTdHJp
bmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgdm9pZCBzZXRMYWJlbChj
b25zdCBBdG9taWNTdHJpbmcmIGxhYmVsKSB7IG1fbGFiZWwgPSBsYWJlbDsgfQogCi0gICAgU3Ry
aW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQotICAgIHZvaWQgc2V0
TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkgeyBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7
IH0KKyAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdl
OyB9CisgICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKSB7
IG1fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsgfQogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZGlzYWJsZWRLZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaGlk
ZGVuS2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNob3dpbmdLZXl3
b3JkKCk7CiAKLSAgICBTdHJpbmcgbW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0TW9kZShjb25z
dCBTdHJpbmcmKTsKKyAgICBBdG9taWNTdHJpbmcgbW9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0
TW9kZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIGJvb2wgc2hvd2luZ0J5RGVmYXVsdCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hvd2luZ0J5RGVmYXVsdDsgfQogICAgIHZvaWQgc2V0U2hvd2lu
Z0J5RGVmYXVsdChib29sIHNob3dpbmcpIHsgbV9zaG93aW5nQnlEZWZhdWx0ID0gc2hvd2luZzsg
fQpAQCAtMTE2LDE3ICsxMTYsMTcgQEAgcHVibGljOgogICAgIGJvb2wgaXNSZW5kZXJlZCgpOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUZXh0
VHJhY2tDbGllbnQqLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOworICAgIFRleHRUcmFjayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRvbWljU3RyaW5n
JiBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxh
bmd1YWdlLCBUZXh0VHJhY2tUeXBlKTsKIAogICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBt
X2N1ZXM7CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogZW5zdXJlVGV4dFRyYWNr
Q3VlTGlzdCgpOwogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50OwotICAgIFN0
cmluZyBtX2tpbmQ7Ci0gICAgU3RyaW5nIG1fbGFiZWw7Ci0gICAgU3RyaW5nIG1fbGFuZ3VhZ2U7
Ci0gICAgU3RyaW5nIG1fbW9kZTsKKyAgICBBdG9taWNTdHJpbmcgbV9raW5kOworICAgIEF0b21p
Y1N0cmluZyBtX2xhYmVsOworICAgIEF0b21pY1N0cmluZyBtX2xhbmd1YWdlOworICAgIEF0b21p
Y1N0cmluZyBtX21vZGU7CiAgICAgVGV4dFRyYWNrQ2xpZW50KiBtX2NsaWVudDsKICAgICBUZXh0
VHJhY2tUeXBlIG1fdHJhY2tUeXBlOwogICAgIFJlYWRpbmVzc1N0YXRlIG1fcmVhZGluZXNzU3Rh
dGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCShy
ZXZpc2lvbiAxMzE3NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAgVGV4dFRyYWNrQ3VlQm94OjpU
ZXh0VHJhY2tDdWVCb3goRG9jdW1lbgogICAgIDogSFRNTEVsZW1lbnQoZGl2VGFnLCBkb2N1bWVu
dCkKICAgICAsIG1fY3VlKGN1ZSkKIHsKKyAgICBzZXRTaGFkb3dQc2V1ZG9JZChzaGFkb3dQc2V1
ZG9JZCgpKTsKIH0KIAogVGV4dFRyYWNrQ3VlKiBUZXh0VHJhY2tDdWVCb3g6OmdldEN1ZSgpIGNv
bnN0CkBAIC0xNjcsMTIgKzE2OCwxNyBAQCB2b2lkIFRleHRUcmFja0N1ZUJveDo6YXBwbHlDU1NQ
cm9wZXJ0aWVzCiAgICAgfQogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0N1ZUJv
eDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tD
dWVCb3g6OnRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKCkKIHsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRv
SWQsICgiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXkiKSk7CiAgICAgcmV0dXJuIHRy
YWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFRl
eHRUcmFja0N1ZUJveDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIHJldHVybiB0ZXh0
VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpOworfQorCiBSZW5kZXJPYmplY3QqIFRleHRUcmFj
a0N1ZUJveDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
CiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRleHRUcmFja0N1ZSh0aGlzKTsKQEAg
LTE4MCw2ICsxODYsMTggQEAgUmVuZGVyT2JqZWN0KiBUZXh0VHJhY2tDdWVCb3g6OmNyZWF0ZVJl
bgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgVGV4dFRyYWNrQ3VlOjpwYXN0Tm9kZXNTaGFkb3dQc2V1ZG9JZCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCItd2Via2l0LW1l
ZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICByZXR1cm4gc3VidGl0bGVzOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IFRleHRUcmFja0N1ZTo6ZnV0dXJlTm9kZXNTaGFkb3dQc2V1ZG9JZCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1YnRpdGxlcywgKCItd2Via2l0LW1l
ZGlhLXRleHQtdHJhY2stZnV0dXJlLW5vZGVzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJldHVybiBzdWJ0aXRsZXM7Cit9CisKIFRleHRUcmFja0N1ZTo6VGV4
dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzdGFydCwg
ZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgIDogbV9zdGFydFRpbWUoc3Rh
cnQpCiAgICAgLCBtX2VuZFRpbWUoZW5kKQpAQCAtNjUyLDkgKzY3MCw2IEBAIHZvaWQgVGV4dFRy
YWNrQ3VlOjp1cGRhdGVEaXNwbGF5VHJlZShmbG8KICAgICAvLyB0aW1lc3RhbXBzIChwcm9jZXNz
aW5nIGluc3RydWN0aW9ucyksIGFsb25nIHdpdGggZGlzcGxheWFibGUgbm9kZXMuCiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHRpbWVzdGFtcFRhZywgKEFTQ0lJTGl0ZXJh
bCgidGltZXN0YW1wIikpKTsKIAotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCB0cmFja1Bhc3ROb2Rlc1NoYWRvd1BzZXVkb0lkLCAoIi13ZWJraXQtbWVkaWEtdGV4
dC10cmFjay1wYXN0LW5vZGVzIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCB0cmFja0Z1dHVyZU5vZGVzU2hhZG93UHNldWRvSWQsICgiLXdlYmtpdC1tZWRp
YS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2RlcyIpKTsKLQogICAgIGlmICghdHJhY2soKS0+aXNSZW5k
ZXJlZCgpKQogICAgICAgcmV0dXJuOwogCkBAIC02NjIsMTAgKzY3NywxMCBAQCB2b2lkIFRleHRU
cmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUoZmxvCiAKICAgICAvLyBDbGVhciB0aGUgY29udGVu
dHMgb2YgdGhlIHR3byBzZXRzLgogICAgIG1fZnV0dXJlRG9jdW1lbnROb2Rlcy0+cmVtb3ZlQ2hp
bGRyZW4oKTsKLSAgICBtX2Z1dHVyZURvY3VtZW50Tm9kZXMtPnNldFNoYWRvd1BzZXVkb0lkKHRy
YWNrRnV0dXJlTm9kZXNTaGFkb3dQc2V1ZG9JZCk7CisgICAgbV9mdXR1cmVEb2N1bWVudE5vZGVz
LT5zZXRTaGFkb3dQc2V1ZG9JZChmdXR1cmVOb2Rlc1NoYWRvd1BzZXVkb0lkKCkpOwogCiAgICAg
bV9wYXN0RG9jdW1lbnROb2Rlcy0+cmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICBtX3Bhc3REb2N1bWVu
dE5vZGVzLT5zZXRTaGFkb3dQc2V1ZG9JZCh0cmFja1Bhc3ROb2Rlc1NoYWRvd1BzZXVkb0lkKTsK
KyAgICBtX3Bhc3REb2N1bWVudE5vZGVzLT5zZXRTaGFkb3dQc2V1ZG9JZChwYXN0Tm9kZXNTaGFk
b3dQc2V1ZG9JZCgpKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgdHdvIHNldHMgY29udGFpbmluZyBw
YXN0IGFuZCBmdXR1cmUgV2ViVlRUIG9iamVjdHMuCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IHJlZmVyZW5jZVRyZWUgPSBnZXRDdWVBc0hUTUwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAkocmV2aXNpb24gMTMxNzQ5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiAr
NjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBseUNTU1Byb3BlcnRpZXMoKTsKIAogICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRleHRUcmFja0N1ZUJveFNoYWRvd1Bz
ZXVkb0lkKCk7CiAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlQm94KERvY3VtZW50KiwgVGV4
dFRyYWNrQ3VlKik7CkBAIC04MCw2ICs4MSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflRl
eHRUcmFja0N1ZSgpOwogCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGFzdE5vZGVz
U2hhZG93UHNldWRvSWQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmdXR1cmVO
b2Rlc1NoYWRvd1BzZXVkb0lkKCk7CisKICAgICBUZXh0VHJhY2sqIHRyYWNrKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRUcmFjayhQYXNzUmVmUHRyPFRleHRUcmFjaz4pOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc19oCisjZGVmaW5lIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlR3JvdXA7CisKK2NsYXNzIENhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lk
IGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKSA9IDA7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVh
bCB+Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKCkgeyB9Cit9OworCitjbGFzcyBD
YXB0aW9uVXNlclByZWZlcmVuY2VzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxD
YXB0aW9uVXNlclByZWZlcmVuY2VzPiBjcmVhdGUoUGFnZUdyb3VwKiBncm91cCkgeyByZXR1cm4g
YWRvcHRQdHIobmV3IENhcHRpb25Vc2VyUHJlZmVyZW5jZXMoZ3JvdXApKTsgfQorICAgIHZpcnR1
YWwgfkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCB1c2Vy
UHJlZmVyc0NhcHRpb25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgdXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIDAu
MDVmOyB9CisgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBj
b25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
Rm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkTGlzdGVuZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckZvckNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExp
c3RlbmVyKikgeyB9CisKKyAgICBQYWdlR3JvdXAqIHBhZ2VHcm91cCgpIHsgcmV0dXJuIG1fcGFn
ZUdyb3VwOyB9CisKK3Byb3RlY3RlZDoKKyAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKFBhZ2VH
cm91cCogZ3JvdXApIDogbV9wYWdlR3JvdXAoZ3JvdXApIHsgfQorCitwcml2YXRlOgorICAgIFBh
Z2VHcm91cCogbV9wYWdlR3JvdXA7Cit9OworICAgIAorfQorI2VuZGlmCisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWNfaAorI2RlZmluZSBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjX2gKKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRl
ICJDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWMgOiBwdWJsaWMgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYz4gY3Jl
YXRlKFBhZ2VHcm91cCogZ3JvdXApIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjKGdyb3VwKSk7IH0KKyAgICB2aXJ0dWFsIH5DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92
ZXJyaWRlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9yQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
TGlzdGVuZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckZvckNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExp
c3RlbmVyKikgT1ZFUlJJREU7CisKKyAgICB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQo
KTsKKworcHJpdmF0ZToKKyAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjKFBhZ2VHcm91cCop
OworCisgICAgQ29sb3IgY2FwdGlvbnNXaW5kb3dDb2xvcigpIGNvbnN0OworICAgIENvbG9yIGNh
cHRpb25zQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgQ29sb3IgY2FwdGlvbnNUZXh0Q29s
b3IoKSBjb25zdDsKKyAgICBTdHJpbmcgY2FwdGlvbnNEZWZhdWx0Rm9udCgpIGNvbnN0OworICAg
IENvbG9yIGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKGNvbnN0IENvbG9yJikgY29uc3Q7
CisgICAgU3RyaW5nIGNhcHRpb25zVGV4dEVkZ2VTdHlsZSgpIGNvbnN0OworICAgIFN0cmluZyBj
c3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IENvbG9yJikgY29uc3Q7CisgICAgU3RyaW5nIGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJv
cGVydHlJRCwgY29uc3QgQ29sb3ImKSBjb25zdDsKKworICAgIHZvaWQgdXBkYXRlQ2FwdGlvblN0
eWxlU2hlZXRPdmVyaWRlKCk7CisKKyAgICBIYXNoU2V0PENhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRMaXN0ZW5lcio+IG1fY2FwdGlvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcnM7CisgICAgYm9v
bCBtX2xpc3RlbmluZ0ZvclByZWZlcmVuY2VDaGFuZ2VzOworfTsKKyAgICAKK30KKyNlbmRpZgor
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWMubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWMubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW1wb3J0ICJDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjLmgiCisKKyNpbXBvcnQgIkNvbG9yTWFjLmgiCisjaW1wb3J0ICJET01X
cmFwcGVyV29ybGQuaCIKKyNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgorI2ltcG9ydCAiS1VS
TC5oIgorI2ltcG9ydCAiUGFnZUdyb3VwLmgiCisjaW1wb3J0ICJUZXh0VHJhY2tDdWUuaCIKKyNp
bXBvcnQgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKKyNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGF0aWMgdm9pZCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNh
dGlvbkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQ0ZT
dHJpbmdSZWYsIGNvbnN0IHZvaWQgKiwgQ0ZEaWN0aW9uYXJ5UmVmKQoreworICAgIHN0YXRpY19j
YXN0PENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMqPihvYnNlcnZlciktPmNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWQoKTsKK30KKworCitDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjKFBhZ2VHcm91cCogZ3JvdXApCisgICAgOiBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzKGdyb3VwKQorICAgICwgbV9saXN0ZW5pbmdGb3JQcmVmZXJlbmNlQ2hhbmdlcyhm
YWxzZSkKK3sKK30KKworQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6fkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWMoKQoreworICAgIGlmICh3a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3ND
aGFuZ2VkTm90aWZpY2F0aW9uKCkpCisgICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVtb3Zl
T2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0aGlzLCB3a0Nh
cHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCksIE5VTEwpOwor
fQorCitib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJIYXNDYXB0aW9uUHJlZmVy
ZW5jZXMoKSBjb25zdAoreworICAgIHJldHVybiB3a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclBy
ZWZlcmVuY2VzKCk7Cit9CisKK2Jvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6dXNlclBy
ZWZlcnNDYXB0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdrQ2FwdGlvbkFwcGVhcmFuY2VT
aG93Q2FwdGlvbnNXaGVuQXZhaWxhYmxlKCk7Cit9CisKK3ZvaWQgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYzo6cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgQVNTRVJU
KCFtX2NhcHRpb25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXJzLmNvbnRhaW5zKGxpc3RlbmVyKSk7
CisKKyAgICBpZiAoIXdrQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmlj
YXRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmICghbV9saXN0ZW5pbmdGb3JQ
cmVmZXJlbmNlQ2hhbmdlcykgeworICAgICAgICBtX2xpc3RlbmluZ0ZvclByZWZlcmVuY2VDaGFu
Z2VzID0gdHJ1ZTsKKyAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlciAoQ0ZO
b3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0aGlzLCB1c2VyQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrLCB3a0NhcHRpb25BcHBlYXJhbmNlR2V0
U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCksIE5VTEwsIENGTm90aWZpY2F0aW9uU3VzcGVu
c2lvbkJlaGF2aW9yQ29hbGVzY2UpOworICAgICAgICB1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92
ZXJpZGUoKTsKKyAgICB9CisgICAgCisgICAgbV9jYXB0aW9uUHJlZmVyZW5jZUNoYW5nZUxpc3Rl
bmVycy5hZGQobGlzdGVuZXIpOworfQorCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgaWYgKHdrQ2FwdGlv
bkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKSkKKyAgICAgICAgbV9j
YXB0aW9uUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOworfQorCitD
b2xvciBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1dpbmRvd0NvbG9yKCkgY29u
c3QKK3sKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgd2tDYXB0aW9u
QXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcigpKTsKKyAgICBDb2xvciB3aW5kb3dDb2xvcihjb2xv
ci5nZXQoKSk7CisgICAgaWYgKCF3aW5kb3dDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHdpbmRv
d0NvbG9yID0gQ29sb3I6OnRyYW5zcGFyZW50OworICAgIAorICAgIENHRmxvYXQgb3BhY2l0eTsK
KyAgICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09wYWNpdHkoJm9wYWNpdHkpKQor
ICAgICAgICByZXR1cm4gQ29sb3Iod2luZG93Q29sb3IucmVkKCksIHdpbmRvd0NvbG9yLmdyZWVu
KCksIHdpbmRvd0NvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSk7
CisgICAgCisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgCisg
ICAgcmV0dXJuIHdpbmRvd0NvbG9yOworfQorCitDb2xvciBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjOjpjYXB0aW9uc0JhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBkZWZh
dWx0IHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4gbWVkaWFD
b250cm9scy5jc3MgZm9yIC13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZGVzCisgICAg
Ly8gYW5kIHdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2Rlcy4KKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKENvbG9yLCBkZWZhdWx0QmFja2dyb3VuZENvbG9yLCAoQ29sb3IoMCwgMCwg
MCwgMC44ICogMjU1KSkpOworICAgIAorICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihB
ZG9wdENGLCB3a0NhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvcigpKTsKKyAgICBD
b2xvciBiYWNrZ3JvdW5kQ29sb3IoY29sb3IuZ2V0KCkpOworICAgIGlmICghYmFja2dyb3VuZENv
bG9yLmlzVmFsaWQoKSkgeworICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBkZWZhdWx0QmFja2dy
b3VuZENvbG9yOworICAgIH0KKyAgICAKKyAgICBDR0Zsb2F0IG9wYWNpdHk7CisgICAgaWYgKHdr
Q2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eSgmb3BhY2l0eSkpCisgICAgICAg
IHJldHVybiBDb2xvcihiYWNrZ3JvdW5kQ29sb3IucmVkKCksIGJhY2tncm91bmRDb2xvci5ncmVl
bigpLCBiYWNrZ3JvdW5kQ29sb3IuYmx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAy
NTUpKTsKKyAgICAKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAg
ICAKKyAgICByZXR1cm4gYmFja2dyb3VuZENvbG9yOworfQorCitDb2xvciBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRDb2xvcigpIGNvbnN0Cit7CisgICAgUmV0YWluUHRy
PENHQ29sb3JSZWY+IGNvbG9yKEFkb3B0Q0YsIHdrQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9yZWdy
b3VuZENvbG9yKCkpOworICAgIENvbG9yIHRleHRDb2xvcihjb2xvci5nZXQoKSk7CisgICAgaWYg
KCF0ZXh0Q29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1ZSBt
dXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJvbHMuY3Nz
IGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyLgorICAgICAgICB0ZXh0Q29s
b3IgPSBDb2xvcjo6d2hpdGU7CisgICAgfQorICAgIAorICAgIENHRmxvYXQgb3BhY2l0eTsKKyAg
ICBpZiAod2tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KCZvcGFjaXR5KSkK
KyAgICAgICAgcmV0dXJuIENvbG9yKHRleHRDb2xvci5yZWQoKSwgdGV4dENvbG9yLmdyZWVuKCks
IHRleHRDb2xvci5ibHVlKCksIHN0YXRpY19jYXN0PGludD4ob3BhY2l0eSAqIDI1NSkpOworICAg
IAorICAgIGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBDb2xvcigpOworICAgIAorICAgIHJl
dHVybiB0ZXh0Q29sb3I7Cit9CisKK0NvbG9yIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNh
cHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IpIGNvbnN0
Cit7CisgICAgaW50IGRpc3RhbmNlRnJvbVdoaXRlID0gZGlmZmVyZW5jZVNxdWFyZWQodGV4dENv
bG9yLCBDb2xvcjo6d2hpdGUpOworICAgIGludCBkaXN0YW5jZUZyb21CbGFjayA9IGRpZmZlcmVu
Y2VTcXVhcmVkKHRleHRDb2xvciwgQ29sb3I6OmJsYWNrKTsKKyAgICAKKyAgICBpZiAoZGlzdGFu
Y2VGcm9tV2hpdGUgPCBkaXN0YW5jZUZyb21CbGFjaykKKyAgICAgICAgcmV0dXJuIHRleHRDb2xv
ci5kYXJrKCk7CisgICAgCisgICAgcmV0dXJuIHRleHRDb2xvci5saWdodCgpOworfQorCitTdHJp
bmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xv
cihDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBDb2xvciYgdGV4
dENvbG9yKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAKKyAgICBi
dWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoaWQpKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgnOicpOworICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlKTsKKyAgICBidWlsZGVyLmFwcGVu
ZCgnICcpOworICAgIGJ1aWxkZXIuYXBwZW5kKGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9y
KHRleHRDb2xvcikuc2VyaWFsaXplZCgpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOycpOworICAg
IAorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjOjpjc3NDb2xvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0
IENvbG9yJiBjb2xvcikgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAg
CisgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGlkKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoJzonKTsKKyAgICBidWlsZGVyLmFwcGVuZChjb2xvci5zZXJpYWxpemVkKCkp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CisgICAgCisgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKK30KKworU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25z
VGV4dEVkZ2VTdHlsZSgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIGVkZ2VTdHlsZVJhaXNlZCwgKCIgLS4wNWVtIC0uMDVlbSAwICIsIFN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
ZywgZWRnZVN0eWxlRGVwcmVzc2VkLCAoIiAuMDVlbSAuMDVlbSAwICIsIFN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywg
ZWRnZVN0eWxlRHJvcFNoYWRvdywgKCIgLjA3NWVtIC4wNzVlbSAwICIsIFN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywg
ZWRnZVN0eWxlVW5pZm9ybSwgKCIgLjAzZW0gIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIAorICAgIENvbG9yIGNvbG9yID0gY2FwdGlvbnNUZXh0Q29sb3IoKTsKKyAgICBp
ZiAoIWNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgY29sb3Iuc2V0TmFtZWRDb2xvcigiYmxhY2si
KTsKKyAgICBjb2xvciA9IGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKGNvbG9yKTsKKyAg
ICAKKyAgICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlIHRleHRFZGdlU3R5bGUgPSBzdGF0aWNfY2Fz
dDx3a0NhcHRpb25UZXh0RWRnZVN0eWxlPih3a0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VT
dHlsZSgpKTsKKyAgICBzd2l0Y2ggKHRleHRFZGdlU3R5bGUpIHsKKyAgICAgICAgY2FzZSB3a0Nh
cHRpb25UZXh0RWRnZVN0eWxlVW5kZWZpbmVkOgorICAgICAgICBjYXNlIHdrQ2FwdGlvblRleHRF
ZGdlU3R5bGVOb25lOgorICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlUmFpc2VkOgorICAgICAg
ICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0
U2hhZG93LCBlZGdlU3R5bGVSYWlzZWQsIGNvbG9yKTsKKyAgICAgICAgY2FzZSB3a0NhcHRpb25U
ZXh0RWRnZVN0eWxlRGVwcmVzc2VkOgorICAgICAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5V2l0
aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBlZGdlU3R5bGVEZXByZXNzZWQs
IGNvbG9yKTsKKyAgICAgICAgY2FzZSB3a0NhcHRpb25UZXh0RWRnZVN0eWxlRHJvcFNoYWRvdzoK
KyAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3Bl
cnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlRHJvcFNoYWRvdywgY29sb3IpOworICAgICAgICBjYXNl
IHdrQ2FwdGlvblRleHRFZGdlU3R5bGVVbmlmb3JtOgorICAgICAgICAgICAgcmV0dXJuIGNzc1By
b3BlcnR5V2l0aFRleHRFZGdlQ29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBlZGdl
U3R5bGVVbmlmb3JtLCBjb2xvcik7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSB3a0NhcHRp
b25UZXh0RWRnZVN0eWxlTWF4OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30K
KworU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zRGVmYXVsdEZvbnQo
KSBjb25zdAoreworICAgIFJldGFpblB0cjxDR0ZvbnRSZWY+IGZvbnQoQWRvcHRDRiwgd2tDYXB0
aW9uQXBwZWFyYW5jZUNvcHlGb250Rm9yU3R5bGUod2tDYXB0aW9uRm9udFN0eWxlRGVmYXVsdCkp
OworICAgIGlmICghZm9udCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgCisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lKEFkb3B0Q0YsIENHRm9udENvcHlQb3N0U2Ny
aXB0TmFtZShmb250LmdldCgpKSk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKKyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgCisgICAg
YnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5Rm9udEZhbWls
eSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCI6IFwiIik7CisgICAgYnVpbGRlci5hcHBlbmQobmFt
ZS5nZXQoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoIlwiOyIpOworICAgIAorICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
OjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRl
ciBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldDsKKyAgICAKKyAgICBDb2xvciBjb2xvciA9IGNh
cHRpb25zQmFja2dyb3VuZENvbG9yKCk7CisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAg
ICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7CisgICAg
ICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWU6OnBhc3RO
b2Rlc1NoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVl
dC5hcHBlbmQoJ3snKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5k
KGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGNvbG9yKSk7Cisg
ICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScpOworICAgICAgICAK
KyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86OiIpOwor
ICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNrQ3VlOjpm
dXR1cmVOb2Rlc1NoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC5hcHBlbmQoJ3snKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQu
YXBwZW5kKGNzc0NvbG9yUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGNvbG9y
KSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScpOworICAg
IH0KKyAgICAKKyAgICBjb2xvciA9IGNhcHRpb25zV2luZG93Q29sb3IoKTsKKyAgICBpZiAoY29s
b3IuaXNWYWxpZCgpKSB7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVu
ZCgiIHZpZGVvOjoiKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5k
KFRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93UHNldWRvSWQoKSk7CisgICAg
ICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgneycpOworICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvciwgY29sb3IpKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxl
U2hlZXQuYXBwZW5kKCd9Jyk7CisgICAgfQorICAgIAorICAgIGNvbG9yID0gY2FwdGlvbnNUZXh0
Q29sb3IoKTsKKyAgICBTdHJpbmcgZWRnZVN0eWxlID0gY2FwdGlvbnNUZXh0RWRnZVN0eWxlKCk7
CisgICAgU3RyaW5nIGZvbnROYW1lID0gY2FwdGlvbnNEZWZhdWx0Rm9udCgpOworICAgIGlmIChj
b2xvci5pc1ZhbGlkKCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5KCkgfHwgIWZvbnROYW1lLmlzRW1w
dHkoKSkgeworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRl
bzo6Iik7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJh
Y2tDdWVCb3g6OnRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsKKyAgICAgICAgCisgICAgICAgIGlm
IChjb2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVl
dC5hcHBlbmQoY3NzQ29sb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xvcikpOworICAg
ICAgICBpZiAoIWVkZ2VTdHlsZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjYXB0aW9uc092ZXJy
aWRlU3R5bGVTaGVldC5hcHBlbmQoZWRnZVN0eWxlKTsKKyAgICAgICAgaWYgKCFmb250TmFtZS5p
c0VtcHR5KCkpCisgICAgICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQo
Zm9udE5hbWUpOworICAgICAgICAKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQu
YXBwZW5kKCd9Jyk7CisgICAgfQorICAgIAorICAgIHJldHVybiBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC50b1N0cmluZygpOworfQorCitmbG9hdCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
OjpjYXB0aW9uRm9udFNpemVTY2FsZSgpIGNvbnN0Cit7CisgICAgQ0dGbG9hdCBjaGFyYWN0ZXJT
Y2FsZSA9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OmNhcHRpb25Gb250U2l6ZVNjYWxlKCk7Cisg
ICAgQ0dGbG9hdCBzY2FsZUFkanVzdG1lbnQ7CisgICAgCisgICAgaWYgKCF3a0NhcHRpb25BcHBl
YXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKCZzY2FsZUFkanVzdG1lbnQpKQorICAgICAg
ICByZXR1cm4gY2hhcmFjdGVyU2NhbGU7CisgICAgCisgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQoc2NhbGVBZGp1c3RtZW50ICogY2hhcmFjdGVyU2NhbGUpOworfQorCit2b2lkIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQorewor
ICAgIGlmIChtX2NhcHRpb25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXJzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKCk7CisK
KyAgICBmb3IgKEhhc2hTZXQ8Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKj46Oml0
ZXJhdG9yIGkgPSBtX2NhcHRpb25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXJzLmJlZ2luKCk7IGkg
IT0gbV9jYXB0aW9uUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVycy5lbmQoKTsgKytpKQorICAgICAg
ICAoKmkpLT5jYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYzo6dXBkYXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKCkKK3sKKyAg
ICAvLyBJZGVudGlmeSBvdXIgb3ZlcnJpZGUgc3R5bGUgc2hlZXQgd2l0aCBhIHVuaXF1ZSBVUkwg
LSBhIG5ldyBzY2hlbWUgYW5kIGEgVVVJRC4KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEtVUkws
IGNhcHRpb25zU3R5bGVTaGVldFVSTCwgKFBhcnNlZFVSTFN0cmluZywgInVzZXItY2FwdGlvbnMt
b3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzREQzIzIikpOworICAgIAor
ICAgIHBhZ2VHcm91cCgpLT5yZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZChtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMKTsKKyAgICAKKyAgICBpZiAoIXVz
ZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFN0
cmluZyBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldCA9IGNhcHRpb25zU3R5bGVTaGVldE92ZXJy
aWRlKCk7CisgICAgaWYgKGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIHBhZ2VHcm91cCgpLT5hZGRVc2VyU3R5bGVTaGVldFRv
V29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0
LCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwsIFZlY3RvcjxTdHJpbmc+KCksCisgICAgICAgICAgICAg
VmVjdG9yPFN0cmluZz4oKSwgSW5qZWN0SW5BbGxGcmFtZXMsIFVzZXJTdHlsZUF1dGhvckxldmVs
LCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxF
KFZJREVPX1RSQUNLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAkocmV2aXNpb24g
MTMxNzQ5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw2ICszOCwxNCBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZU5hbWVzcGFjZS5oIgogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2lmIFBMQVRG
T1JNKE1BQykKKyNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmgiCisjZWxzZQor
I2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKKyNlbmRpZgorI2VuZGlmCisKICNp
ZiBQTEFURk9STShDSFJPTUlVTSkKICNpbmNsdWRlICJWaXNpdGVkTGlua3MuaCIKICNlbmRpZgpA
QCAtMzk2LDQgKzQwNCw0NiBAQCB2b2lkIFBhZ2VHcm91cDo6cmVzZXRVc2VyU3R5bGVDYWNoZUlu
QWxsCiAgICAgfQogfQogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcyogUGFnZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMoKQoreworICAgIGlmICghbV9j
YXB0aW9uUHJlZmVyZW5jZXMpCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBtX2NhcHRpb25Q
cmVmZXJlbmNlcyA9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNyZWF0ZSh0aGlzKTsKKyNl
bHNlCisgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gQ2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6Y3JlYXRlKHRoaXMpOworI2VuZGlmCisKKyAgICByZXR1cm4gbV9jYXB0aW9uUHJlZmVyZW5j
ZXMuZ2V0KCk7Cit9CisgICAgCit2b2lkIFBhZ2VHcm91cDo6cmVnaXN0ZXJGb3JDYXB0aW9uUHJl
ZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5l
ciogbGlzdGVuZXIpCit7CisgICAgY2FwdGlvblByZWZlcmVuY2VzKCktPnJlZ2lzdGVyRm9yQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhsaXN0ZW5lcik7Cit9CisKK3ZvaWQgUGFn
ZUdyb3VwOjp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhD
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxpc3RlbmVyKQoreworICAgIGlmICgh
bV9jYXB0aW9uUHJlZmVyZW5jZXMpCisgICAgICAgIHJldHVybjsKKyAgICBjYXB0aW9uUHJlZmVy
ZW5jZXMoKS0+dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3Mo
bGlzdGVuZXIpOworfQorICAgIAorYm9vbCBQYWdlR3JvdXA6OnVzZXJQcmVmZXJzQ2FwdGlvbnMo
KQoreworICAgIHJldHVybiBjYXB0aW9uUHJlZmVyZW5jZXMoKS0+dXNlclByZWZlcnNDYXB0aW9u
cygpOworfQorCitib29sIFBhZ2VHcm91cDo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpCit7
CisgICAgcmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcygpLT51c2VyUHJlZmVyc0NhcHRpb25zKCk7
Cit9CisKK2Zsb2F0IFBhZ2VHcm91cDo6Y2FwdGlvbkZvbnRTaXplU2NhbGUoKQoreworICAgIHJl
dHVybiBjYXB0aW9uUHJlZmVyZW5jZXMoKS0+Y2FwdGlvbkZvbnRTaXplU2NhbGUoKTsKK30KKwor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3Jv
dXAuaAkocmV2aXNpb24gMTMxNzQ5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGNsYXNzIENhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWRMaXN0ZW5lcjsKKyAgICBjbGFzcyBDYXB0aW9uVXNlclByZWZlcmVuY2VzOworI2Vu
ZGlmCiAgICAgY2xhc3MgS1VSTDsKICAgICBjbGFzcyBHcm91cFNldHRpbmdzOwogICAgIGNsYXNz
IElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOwpAQCAtMTAzLDEyICsxMDcsMjMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MoKSBj
b25zdCB7IHJldHVybiBtX2dyb3VwU2V0dGluZ3MuZ2V0KCk7IH0KIAorI2lmIEVOQUJMRShWSURF
T19UUkFDSykKKyAgICAgICAgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCk7CisgICAgICAgIGJv
b2wgdXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpOworICAgICAgICBmbG9hdCBjYXB0aW9uRm9u
dFNpemVTY2FsZSgpOworICAgICAgICB2b2lkIHJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2Vz
Q2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKTsKKyAg
ICAgICAgdm9pZCB1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNr
cyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKTsKKyNlbmRpZgorCiAgICAgcHJp
dmF0ZToKICAgICAgICAgUGFnZUdyb3VwKFBhZ2UqKTsKIAogICAgICAgICB2b2lkIGFkZFZpc2l0
ZWRMaW5rKExpbmtIYXNoIHN0cmluZ0hhc2gpOwogICAgICAgICB2b2lkIHJlc2V0VXNlclN0eWxl
Q2FjaGVJbkFsbEZyYW1lcygpOwogICAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAg
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcygpOworI2VuZGlmCiAg
ICAgICAgIFN0cmluZyBtX25hbWU7CiAKICAgICAgICAgSGFzaFNldDxQYWdlKj4gbV9wYWdlczsK
QEAgLTEyMyw2ICsxMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBPd25QdHI8
VXNlclN0eWxlU2hlZXRNYXA+IG1fdXNlclN0eWxlU2hlZXRzOwogCiAgICAgICAgIE93blB0cjxH
cm91cFNldHRpbmdzPiBtX2dyb3VwU2V0dGluZ3M7CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CisgICAgICAgIE93blB0cjxDYXB0aW9uVXNlclByZWZlcmVuY2VzPiBtX2NhcHRpb25QcmVmZXJl
bmNlczsKKyNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaAkocmV2aXNpb24gMTMxNzQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDYgKzM0NCw0MCBA
QCBleHRlcm4gQ0dGbG9hdCAoKndrTlNFbGFzdGljRGVsdGFGb3JSZWJvCiBleHRlcm4gQ0dGbG9h
dCAoKndrTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEpKENHRmxvYXQgZGVsdGEpOwogI2Vu
ZGlmCiAKK3R5cGVkZWYgZW51bSB7CisgICAgd2tDYXB0aW9uRm9udFN0eWxlRGVmYXVsdCA9IDAs
CisgICAgd2tDYXB0aW9uRm9udFN0eWxlTW9ub3NwYWNlZFdpdGhTZXJpZiwKKyAgICB3a0NhcHRp
b25Gb250U3R5bGVQcm9wb3J0aW9uYWxXaXRoU2VyaWYsCisgICAgd2tDYXB0aW9uRm9udFN0eWxl
TW9ub3NwYWNlZFdpdGhvdXRTZXJpZiwKKyAgICB3a0NhcHRpb25Gb250U3R5bGVQcm9wb3J0aW9u
YWxXaXRob3V0U2VyaWYsCisgICAgd2tDYXB0aW9uRm9udFN0eWxlQ2FzdWFsLAorICAgIHdrQ2Fw
dGlvbkZvbnRTdHlsZUN1cnNpdmUsCisgICAgd2tDYXB0aW9uRm9udFN0eWxlU21hbGxDYXBpdGFs
LAorICAgIHdrQ2FwdGlvbkZvbnRTdHlsZU1heAorfSB3a0NhcHRpb25Gb250U3R5bGU7CisKK3R5
cGVkZWYgZW51bSB7CisgICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZVVuZGVmaW5lZCA9IDAsCisg
ICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHlsZU5vbmUsCisgICAgd2tDYXB0aW9uVGV4dEVkZ2VTdHls
ZVJhaXNlZCwKKyAgICB3a0NhcHRpb25UZXh0RWRnZVN0eWxlRGVwcmVzc2VkLAorICAgIHdrQ2Fw
dGlvblRleHRFZGdlU3R5bGVVbmlmb3JtLAorICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVEcm9w
U2hhZG93LAorICAgIHdrQ2FwdGlvblRleHRFZGdlU3R5bGVNYXgKK30gd2tDYXB0aW9uVGV4dEVk
Z2VTdHlsZTsKKworZXh0ZXJuIGJvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZl
cmVuY2VzKSh2b2lkKTsKK2V4dGVybiBib29sICgqd2tDYXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0
aW9uc1doZW5BdmFpbGFibGUpKHZvaWQpOworZXh0ZXJuIENHQ29sb3JSZWYoKndrQ2FwdGlvbkFw
cGVhcmFuY2VDb3B5Rm9yZWdyb3VuZENvbG9yKSh2b2lkKTsKK2V4dGVybiBDR0NvbG9yUmVmKCp3
a0NhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvcikodm9pZCk7CitleHRlcm4gQ0dD
b2xvclJlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvcikodm9pZCk7CitleHRl
cm4gYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldEZvcmVncm91bmRPcGFjaXR5KShDR0Zsb2F0
Kik7CitleHRlcm4gYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5
KShDR0Zsb2F0Kik7CitleHRlcm4gYm9vbCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09w
YWNpdHkpKENHRmxvYXQqKTsKK2V4dGVybiBDR0ZvbnRSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VD
b3B5Rm9udEZvclN0eWxlKShpbnQpOworZXh0ZXJuIGJvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VH
ZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUpKENHRmxvYXQqKTsKK2V4dGVybiBpbnQoKndrQ2FwdGlv
bkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKSh2b2lkKTsKK2V4dGVybiBDRlN0cmluZ1JlZigq
d2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbikodm9pZCk7
CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDEzMTc0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTYsMyArMjE2LDE1IEBAIENHRmxvYXQgKCp3a05TRWxhc3RpY0RlbHRhRm9y
UmVib3VuZERlbHQKIENHRmxvYXQgKCp3a05TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKShD
R0Zsb2F0IGRlbHRhKTsKICNlbmRpZgogCitib29sICgqd2tDYXB0aW9uQXBwZWFyYW5jZUhhc1Vz
ZXJQcmVmZXJlbmNlcykodm9pZCk7Citib29sICgqd2tDYXB0aW9uQXBwZWFyYW5jZVNob3dDYXB0
aW9uc1doZW5BdmFpbGFibGUpKHZvaWQpOworQ0dDb2xvclJlZigqd2tDYXB0aW9uQXBwZWFyYW5j
ZUNvcHlGb3JlZ3JvdW5kQ29sb3IpKHZvaWQpOworQ0dDb2xvclJlZigqd2tDYXB0aW9uQXBwZWFy
YW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IpKHZvaWQpOworQ0dDb2xvclJlZigqd2tDYXB0aW9uQXBw
ZWFyYW5jZUNvcHlXaW5kb3dDb2xvcikodm9pZCk7Citib29sKCp3a0NhcHRpb25BcHBlYXJhbmNl
R2V0Rm9yZWdyb3VuZE9wYWNpdHkpKENHRmxvYXQqKTsKK2Jvb2woKndrQ2FwdGlvbkFwcGVhcmFu
Y2VHZXRCYWNrZ3JvdW5kT3BhY2l0eSkoQ0dGbG9hdCopOworYm9vbCgqd2tDYXB0aW9uQXBwZWFy
YW5jZUdldFdpbmRvd09wYWNpdHkpKENHRmxvYXQqKTsKK0NHRm9udFJlZigqd2tDYXB0aW9uQXBw
ZWFyYW5jZUNvcHlGb250Rm9yU3R5bGUpKGludCk7Citib29sKCp3a0NhcHRpb25BcHBlYXJhbmNl
R2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKShDR0Zsb2F0Kik7CitpbnQoKndrQ2FwdGlvbkFwcGVh
cmFuY2VHZXRUZXh0RWRnZVN0eWxlKSh2b2lkKTsKK0NGU3RyaW5nUmVmKCp3a0NhcHRpb25BcHBl
YXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKSh2b2lkKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEzMTc0OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTE4ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHBvcnRzIHRvIG92ZXJyaWRlIHRl
eHQgdHJhY2sgcmVuZGVyaW5nIHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NzgwMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTIwNDQ5NjQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAg
IChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6IEluaXRpYWxpemUgbmV3IFdLU0kgZnVuY3Rp
b24gcG9pbnRlcnMuCisKIDIwMTItMTAtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBHVEsrIGRlYnVnIGJ1aWxk
LgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQkocmV2aXNpb24gMTMx
NzQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNSArMTkyLDE3IEBAIHZv
aWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAgICAgSU5JVChOU1JlYm91
bmREZWx0YUZvckVsYXN0aWNEZWx0YSk7CiAjZW5kaWYKIAorICAgICAgICBJTklUKENhcHRpb25B
cHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzKTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFy
YW5jZVNob3dDYXB0aW9uc1doZW5BdmFpbGFibGUpOworICAgICAgICBJTklUKENhcHRpb25BcHBl
YXJhbmNlQ29weUZvcmVncm91bmRDb2xvcik7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFu
Y2VDb3B5QmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNv
cHlXaW5kb3dDb2xvcik7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3Jv
dW5kT3BhY2l0eSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5k
T3BhY2l0eSk7CisgICAgICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5
KTsKKyAgICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250Rm9yU3R5bGUpOworICAg
ICAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKTsKKyAg
ICAgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUpOworICAgICAgICBJ
TklUKENhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKTsKICAg
ICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTc0OSkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisy
MDEyLTEwLTE4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFsbG93IHBvcnRzIHRvIG92ZXJyaWRlIHRleHQgdHJhY2sgcmVuZGVyaW5nIHN0eWxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTIwNDQ5NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6IEluaXRpYWxpemUg
bmV3IFdLU0kgZnVuY3Rpb24gcG9pbnRlcnMuCisKIDIwMTItMTAtMTcgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVbmluaXRpYWxpemVkIE1l
bWJlcnMgaW4gV2ViRGF0YVNvdXJjZVByaXZhdGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9u
IDEzMTc0OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUlu
dGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjExLDYgKzIxMSwxOSBAQCB2b2lkIEluaXRX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChOU1JlYm91bmREZWx0YUZvckVs
YXN0aWNEZWx0YSk7CiAjZW5kaWYKIAorICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2Vy
UHJlZmVyZW5jZXMpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VTaG93Q2FwdGlvbnNXaGVu
QXZhaWxhYmxlKTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xv
cik7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IpOworICAg
IElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VDb3B5V2luZG93Q29sb3IpOworICAgIElOSVQoQ2FwdGlv
bkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5kT3BhY2l0eSk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFy
YW5jZUdldEJhY2tncm91bmRPcGFjaXR5KTsKKyAgICBJTklUKENhcHRpb25BcHBlYXJhbmNlR2V0
V2luZG93T3BhY2l0eSk7CisgICAgSU5JVChDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250Rm9yU3R5
bGUpOworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUp
OworICAgIElOSVQoQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKTsKKyAgICBJTklU
KENhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKTsKKwogI2Vu
ZGlmCiAgICAgZGlkSW5pdCA9IHRydWU7CiB9CkluZGV4OiBXZWJLaXRMaWJyYXJpZXMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEz
MTc0OSkKKysrIFdlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxMi0xMC0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBBbGxvdyBwb3J0cyB0byBvdmVycmlkZSB0ZXh0IHRyYWNrIHJlbmRl
cmluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTc4MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDQ0OTY0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBXS1NJIGhlYWRlciB3
aXRoIFNQSSBmb3IgZ2V0dGluZyB0aGUgdXNlciBjYXB0aW9uIGFwcGVhcmFuY2UgcHJlZmVyZW5j
ZXMuCisKKyAgICAgICAgKiBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaDoKKwogMjAxMi0xMC0wOCAg
S2lyYW4gTXVwcGFsYSAgPGNtdXBwYWxhQGFwcGxlLmNvbT4KIAogICAgICAgICBUaHJvdHRsZSBE
T00gdGltZXJzIG9uIGhpZGRlbiBwYWdlcy4KSW5kZXg6IFdlYktpdExpYnJhcmllcy9XZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRMaWJyYXJpZXMvV2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDEzMTc0OSkKKysrIFdlYktpdExpYnJhcmllcy9XZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qICAg
ICAgCiAgICAgV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAw
OSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAg
ICBQdWJsaWMgaGVhZGVyIGZpbGUuCiAqLwpAQCAtNTEzLDYgKzUxMyw0MSBAQCBDR0Zsb2F0IFdL
TlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEoCiBCb29sZWFuIFdLSkxJc1J1bnRpbWVBbmRX
ZWJDb21wb25lbnRzSW5zdGFsbGVkKHZvaWQpOwogI2VuZGlmCiAKK3R5cGVkZWYgZW51bSB7Cisg
ICAgV0tDYXB0aW9uRm9udFN0eWxlRGVmYXVsdCA9IDAsCisgICAgV0tDYXB0aW9uRm9udFN0eWxl
TW9ub3NwYWNlZFdpdGhTZXJpZiwKKyAgICBXS0NhcHRpb25Gb250U3R5bGVQcm9wb3J0aW9uYWxX
aXRoU2VyaWYsCisgICAgV0tDYXB0aW9uRm9udFN0eWxlTW9ub3NwYWNlZFdpdGhvdXRTZXJpZiwK
KyAgICBXS0NhcHRpb25Gb250U3R5bGVQcm9wb3J0aW9uYWxXaXRob3V0U2VyaWYsCisgICAgV0tD
YXB0aW9uRm9udFN0eWxlQ2FzdWFsLAorICAgIFdLQ2FwdGlvbkZvbnRTdHlsZUN1cnNpdmUsCisg
ICAgV0tDYXB0aW9uRm9udFN0eWxlU21hbGxDYXBpdGFsLAorICAgIFdLQ2FwdGlvbkZvbnRTdHls
ZU1heAorfSBXS0NhcHRpb25Gb250U3R5bGU7CisKK3R5cGVkZWYgZW51bSB7CisgICAgV0tDYXB0
aW9uVGV4dEVkZ2VTdHlsZVVuZGVmaW5lZCA9IDAsCisgICAgV0tDYXB0aW9uVGV4dEVkZ2VTdHls
ZU5vbmUsCisgICAgV0tDYXB0aW9uVGV4dEVkZ2VTdHlsZVJhaXNlZCwKKyAgICBXS0NhcHRpb25U
ZXh0RWRnZVN0eWxlRGVwcmVzc2VkLAorICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVVbmlmb3Jt
LAorICAgIFdLQ2FwdGlvblRleHRFZGdlU3R5bGVEcm9wU2hhZG93LAorICAgIFdLQ2FwdGlvblRl
eHRFZGdlU3R5bGVNYXgKK30gV0tDYXB0aW9uVGV4dEVkZ2VTdHlsZTsKKworYm9vbCBXS0NhcHRp
b25BcHBlYXJhbmNlSGFzVXNlclByZWZlcmVuY2VzKHZvaWQpOworYm9vbCBXS0NhcHRpb25BcHBl
YXJhbmNlU2hvd0NhcHRpb25zV2hlbkF2YWlsYWJsZSh2b2lkKTsKK0NHQ29sb3JSZWYgV0tDYXB0
aW9uQXBwZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3Iodm9pZCk7CitDR0NvbG9yUmVmIFdLQ2Fw
dGlvbkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKHZvaWQpOworQ0dDb2xvclJlZiBXS0Nh
cHRpb25BcHBlYXJhbmNlQ29weVdpbmRvd0NvbG9yKHZvaWQpOworYm9vbCBXS0NhcHRpb25BcHBl
YXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkoQ0dGbG9hdCopOworYm9vbCBXS0NhcHRpb25BcHBl
YXJhbmNlR2V0QmFja2dyb3VuZE9wYWNpdHkoQ0dGbG9hdCopOworYm9vbCBXS0NhcHRpb25BcHBl
YXJhbmNlR2V0V2luZG93T3BhY2l0eShDR0Zsb2F0Kik7CitDR0ZvbnRSZWYgV0tDYXB0aW9uQXBw
ZWFyYW5jZUNvcHlGb250Rm9yU3R5bGUoaW50IGZvbnRTdHlsZSk7Citib29sIFdLQ2FwdGlvbkFw
cGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUoQ0dGbG9hdCopOworaW50IFdLQ2FwdGlv
bkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKHZvaWQpOworQ0ZTdHJpbmdSZWYgV0tDYXB0aW9u
QXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbih2b2lkKTsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTc0OSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEy
LTEwLTE4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEFsbG93IHBvcnRzIHRvIG92ZXJyaWRlIHRleHQgdHJhY2sgcmVuZGVyaW5nIHN0eWxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTIwNDQ5NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLWV4
cGVjdGVkLnR4dDogVXBkYXRlIHJlc3VsdHMgZm9yIGNhcHRpb24gY3NzIGNoYW5nZXMuCisgICAg
ICAgICogbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy5odG1sOiAKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOiBTa2lwIHRlc3RzIHRoYXQgbmVlZCB0
byBiZSByZWJhc2VsaW5lZC4KKwogMjAxMi0xMC0xOCAgQW50b24gTXVoaW4gIDxhbnRvbm1AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gcmViYXNlbGluZXMuCklu
ZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVu
ZGVyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTMxNzQ5KQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDcgKzQ5LDcgQEAgUlVOKHZpZGVvLmhlaWdodCA9IDE0NDApCiBFWFBFQ1RFRCAoZ2V0
Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmZvbnRTaXplID09
ICc3MnB4JykgT0sKIAogRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxh
eUVsZW1lbnQodmlkZW8pKS5mb250RmFtaWx5ID09ICdzYW5zLXNlcmlmJykgT0sKLUVYUEVDVEVE
IChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuY29sb3Ig
PT0gJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5
bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1
LCAyNTUpJykgT0sKIEVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlF
bGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciA9PSAn
cmdiYSgwLCAwLCAwLCAwLjc5Njg3NSknKSwgT0JTRVJWRUQgJ3JnYmEoMCwgMCwgMCwgMC44KScg
RkFJTAogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2st
Y3VlLXJlbmRlcmluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNr
L3RyYWNrLWN1ZS1yZW5kZXJpbmcuaHRtbAkocmV2aXNpb24gMTMxNzQ5KQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw3IEBACiAgICAgICAgICAgICB0ZXN0Rm9udFNpemUoMjU2MCwgMTQ0MCk7CiAK
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNw
bGF5RWxlbWVudCh2aWRlbykpLmZvbnRGYW1pbHkiLCAic2Fucy1zZXJpZiIpOwotICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50
KHZpZGVvKSkuY29sb3IiLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwKSIpOworICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZp
ZGVvKSkuY29sb3IiLCAicmdiKDI1NSwgMjU1LCAyNTUpIik7CiAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdk
aXNwbGF5JykuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yIiwgInJnYmEoMCwgMCwgMCwgMC43
OTY4NzUpIik7CiAKICAgICAgICAgICAgIGVuZFRlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTMxNzQ5KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwkod29ya2lu
ZyBjb3B5KQpAQCAtNDA0NSw2ICs0MDQ1LDExIEBAIHdlYmtpdC5vcmcvYi85NTEyMSBmYXN0L2Jv
cmRlcnMvYm9yZGVyLWkKIHdlYmtpdC5vcmcvYi85ODU0NSBbIE1hYyBdIGZhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL3RleHQtc3BsaWNlZC1mb250Lmh0bWwgWyBGYWlsdXJlIF0gCiB3ZWJraXQub3Jn
L2IvOTg1NDUgWyBNYWMgXSBmYXN0L3dyaXRpbmctbW9kZS9LdXNhLU1ha3VyYS1iYWNrZ3JvdW5k
LWNhbnZhcy5odG1sIFsgRmFpbHVyZSBdIAogCisgIyBSZXF1aXJlIHJlYmFzZWxpbmluZyBhZnRl
ciB3ZWJraXQub3JnL2IvOTc4MDAKKyB3ZWJraXQub3JnL2IvODkxNjcgbWVkaWEvdHJhY2svdHJh
Y2stY3VlLXJlbmRlcmluZy1ob3Jpem9udGFsLmh0bWwgWyBGYWlsdXJlIF0KKyB3ZWJraXQub3Jn
L2IvODkxNjcgbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy12ZXJ0aWNhbC5odG1sIFsg
RmFpbHVyZSBdCisgd2Via2l0Lm9yZy9iLzg5MTY3IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5k
ZXJpbmcuaHRtbCBbIEZhaWx1cmUgXQorCiB3ZWJraXQub3JnL2IvOTg2ODYgZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3Jn
L2IvMjMxNjYgWyBBbmRyb2lkIE1hYyBXaW4gXSBmYXN0L2Nzcy9iYWNrZ3JvdW5kLWNsaXAtcmFk
aXVzLXZhbHVlcy5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>