<?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>216507</bug_id>
          
          <creation_ts>2020-09-14 17:00:43 -0700</creation_ts>
          <short_desc>Element should not set an attribute inside its constructor</short_desc>
          <delta_ts>2020-09-15 15:20:35 -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>DOM</component>
          <version>WebKit 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>
          
          <blocked>216528</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>philipj</cc>
    
    <cc>pxlcoder</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1688481</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-14 17:00:43 -0700</bug_when>
    <thetext>There is a bunch of shadow elements that set attributes inside their constructors.
This isn&apos;t safe because parseAttribute could end up trying to store &quot;this&quot; in Ref/RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688483</commentid>
    <comment_count>1</comment_count>
      <attachid>408764</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-14 17:05:24 -0700</bug_when>
    <thetext>Created attachment 408764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688493</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-14 17:23:23 -0700</bug_when>
    <thetext>Can we add some assertions to help catch this immediately the first time the code is run?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688496</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-14 17:25:51 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Can we add some assertions to help catch this immediately the first time the
&gt; code is run?

Yup, the patch adds it to Element::setAttributeInternal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688502</commentid>
    <comment_count>4</comment_count>
      <attachid>408764</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-14 17:34:35 -0700</bug_when>
    <thetext>Comment on attachment 408764
Patch

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

&gt; Source/WebCore/html/FileInputType.cpp:76
&gt; +    static Ref&lt;UploadButtonElement&gt; createInternal(Document&amp;, String value);

const String&amp;

&gt; Source/WebCore/html/HTMLKeygenElement.cpp:53
&gt; +        auto selectElement = adoptRef(*new KeygenSelectElement(document));

How about just &quot;element&quot; for the local variable name?

&gt; Source/WebCore/html/shadow/YouTubeEmbedShadowElement.cpp:36
&gt;  Ref&lt;YouTubeEmbedShadowElement&gt; YouTubeEmbedShadowElement::create(Document&amp; doc)

Rename from &quot;doc&quot; to &quot;document&quot; while touching this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688537</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-14 18:37:05 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 408764 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=408764&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/FileInputType.cpp:76
&gt; &gt; +    static Ref&lt;UploadButtonElement&gt; createInternal(Document&amp;, String value);
&gt; 
&gt; const String&amp;

Fixed.

&gt; &gt; Source/WebCore/html/HTMLKeygenElement.cpp:53
&gt; &gt; +        auto selectElement = adoptRef(*new KeygenSelectElement(document));
&gt; 
&gt; How about just &quot;element&quot; for the local variable name?

Sure, renamed.

&gt; &gt; Source/WebCore/html/shadow/YouTubeEmbedShadowElement.cpp:36
&gt; &gt;  Ref&lt;YouTubeEmbedShadowElement&gt; YouTubeEmbedShadowElement::create(Document&amp; doc)
&gt; 
&gt; Rename from &quot;doc&quot; to &quot;document&quot; while touching this?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688545</commentid>
    <comment_count>6</comment_count>
      <attachid>408780</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-14 19:36:26 -0700</bug_when>
    <thetext>Created attachment 408780
Fixed the media tests and addresed Darin&apos;s review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688576</commentid>
    <comment_count>7</comment_count>
      <attachid>408780</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-14 21:21:19 -0700</bug_when>
    <thetext>Comment on attachment 408780
Fixed the media tests and addresed Darin&apos;s review comments

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

&gt; Source/WebCore/ChangeLog:83
&gt; +2020-09-14  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
&gt; +
&gt; +        Element should not set an attribute inside its constructor
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=216507
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Moved the code to add attributes from element constructors to respective ::create functions
&gt; +        since setting attributes could run code in parseAttribute some of which may try to store
&gt; +        &quot;this&quot; in Ref / RefPtr, which would not be safe before adoptRef is called.

Nit - duplicated ChangeLog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688586</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-14 22:14:15 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #7)
&gt; Comment on attachment 408780 [details]
&gt; Fixed the media tests and addresed Darin&apos;s review comments
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=408780&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:83
&gt; &gt; +2020-09-14  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
&gt; &gt; +
&gt; &gt; +        Element should not set an attribute inside its constructor
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=216507
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        Moved the code to add attributes from element constructors to respective ::create functions
&gt; &gt; +        since setting attributes could run code in parseAttribute some of which may try to store
&gt; &gt; +        &quot;this&quot; in Ref / RefPtr, which would not be safe before adoptRef is called.
&gt; 
&gt; Nit - duplicated ChangeLog entry.

Oops fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688588</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-14 22:17:26 -0700</bug_when>
    <thetext>Committed r267074: &lt;https://trac.webkit.org/changeset/267074&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688590</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-14 22:18:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/68900654&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408764</attachid>
            <date>2020-09-14 17:05:24 -0700</date>
            <delta_ts>2020-09-14 20:19:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216507-20200914170523.patch</filename>
            <type>text/plain</type>
            <size>28441</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzA1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDIwLTA5LTE0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEVsZW1lbnQgc2hvdWxkIG5vdCBz
ZXQgYW4gYXR0cmlidXRlIGluc2lkZSBpdHMgY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjUwNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVkIHRoZSBjb2RlIHRvIGFkZCBhdHRy
aWJ1dGVzIGZyb20gZWxlbWVudCBjb25zdHJ1Y3RvcnMgdG8gcmVzcGVjdGl2ZSA6OmNyZWF0ZSBm
dW5jdGlvbnMKKyAgICAgICAgc2luY2Ugc2V0dGluZyBhdHRyaWJ1dGVzIGNvdWxkIHJ1biBjb2Rl
IGluIHBhcnNlQXR0cmlidXRlIHNvbWUgb2Ygd2hpY2ggbWF5IHRyeSB0byBzdG9yZQorICAgICAg
ICAidGhpcyIgaW4gUmVmIC8gUmVmUHRyLCB3aGljaCB3b3VsZCBub3QgYmUgc2FmZSBiZWZvcmUg
YWRvcHRSZWYgaXMgY2FsbGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBz
aG91bGQgYmUgbm8gb2JzZXJ2YWJsZSBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZUlu
dGVybmFsKTogQWRkZWQgYW4gYXNzZXJ0aW9uLgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlwbGUp
OgorICAgICAgICAoV2ViQ29yZTo6VXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlSW50ZXJuYWwp
OiBFeHRyYWN0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVcGxvYWRCdXR0b25FbGVtZW50OjpVcGxv
YWRCdXR0b25FbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcDoK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGVUaW1lRWRpdEVsZW1lbnQ6OkRhdGVUaW1lRWRpdEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVFZGl0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGF0ZVRpbWVEYXlGaWVsZEVsZW1lbnQ6OkRhdGVUaW1lRGF5RmllbGRFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGVUaW1lRGF5RmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50OjpEYXRlVGltZUhvdXJGaWVsZEVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVNZXJpZGllbUZpZWxkRWxlbWVudDo6RGF0ZVRp
bWVNZXJpZGllbUZpZWxkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZU1lcmlk
aWVtRmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVNaWxs
aXNlY29uZEZpZWxkRWxlbWVudDo6RGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRlVGltZU1pbGxpc2Vjb25kRmllbGRFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQ6OkRhdGVUaW1l
TWludXRlRmllbGRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTWludXRlRmll
bGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVNb250aEZpZWxk
RWxlbWVudDo6RGF0ZVRpbWVNb250aEZpZWxkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRlVGltZU1vbnRoRmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ6OkRhdGVUaW1lU2Vjb25kRmllbGRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lU2Vjb25kRmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVTeW1ib2xpY01vbnRoRmllbGRFbGVtZW50OjpEYXRlVGlt
ZVN5bWJvbGljTW9udGhGaWVsZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVT
eW1ib2xpY01vbnRoRmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZVRpbWVZZWFyRmllbGRFbGVtZW50OjpEYXRlVGltZVllYXJGaWVsZEVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0ZVRpbWVZZWFyRmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAq
IGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWls
c01hcmtlckNvbnRyb2w6OkRldGFpbHNNYXJrZXJDb250cm9sKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
OjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0
dG9uRWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1
dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sUGxhY2Vob2xk
ZXJFbGVtZW50OjpUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6U2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Zb3VUdWJlRW1iZWRTaGFk
b3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OllvdVR1YmVFbWJlZFNoYWRvd0VsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50
OjpZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OmNyZWF0ZSk6
IE1vdmVkIGZyb20gLmguCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OlRleHRU
cmFja0N1ZUJveCk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUJveDo6Y3JlYXRlKTogTW92ZWQgdG8gY3BwLgorCiAy
MDIwLTA5LTE0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtD
b2NvYSxIRFJdIEhMUyBzdHJlYW1zIHdpdGggSERSIHZhcmlhbnRzIHdpbGwgbm90IHNlbGVjdCBI
RFIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjY5NzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MzQsNiArMTcz
NCw4IEBAIHZvaWQgRWxlbWVudDo6c2V0U3luY2hyb25pemVkTGF6eUF0dHJpYnUKIAogaW5saW5l
IHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwodW5zaWduZWQgaW5kZXgsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlLCBTeW5jaHJv
bml6YXRpb25PZkxhenlBdHRyaWJ1dGUgaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUp
CiB7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZWZDb3VudCgpIHx8IHBhcmVudE5vZGUoKSwg
IkF0dHJpYnV0ZSBtdXN0IG5vdCBiZSBzZXQgb24gYW4gZWxlbWVudCBiZWZvcmUgYWRvcHRSZWYi
KTsKKwogICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkgewogICAgICAgICBpZiAoaW5kZXggIT0g
RWxlbWVudERhdGE6OmF0dHJpYnV0ZU5vdEZvdW5kKQogICAgICAgICAgICAgcmVtb3ZlQXR0cmli
dXRlSW50ZXJuYWwoaW5kZXgsIGluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMjY2OTcxKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVcGxvYWRCdXR0b25FbGVt
ZW50PiBjcmVhdGVGb3JNdWx0aXBsZShEb2N1bWVudCYpOwogCiBwcml2YXRlOgorICAgIHN0YXRp
YyBSZWY8VXBsb2FkQnV0dG9uRWxlbWVudD4gY3JlYXRlSW50ZXJuYWwoRG9jdW1lbnQmLCBTdHJp
bmcgdmFsdWUpOwogICAgIGJvb2wgaXNVcGxvYWRCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgCiAgICAgVXBsb2FkQnV0dG9uRWxlbWVudChEb2N1bWVudCYpOwpA
QCAtODAsMjUgKzgxLDI4IEBAIHByaXZhdGU6CiAKIFJlZjxVcGxvYWRCdXR0b25FbGVtZW50PiBV
cGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGF1
dG8gYnV0dG9uID0gYWRvcHRSZWYoKm5ldyBVcGxvYWRCdXR0b25FbGVtZW50KGRvY3VtZW50KSk7
Ci0gICAgYnV0dG9uLT5zZXRWYWx1ZShmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkpOwotICAg
IHJldHVybiBidXR0b247CisgICAgcmV0dXJuIGNyZWF0ZUludGVybmFsKGRvY3VtZW50LCBmaWxl
QnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkpOwogfQogCiBSZWY8VXBsb2FkQnV0dG9uRWxlbWVudD4g
VXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlwbGUoRG9jdW1lbnQmIGRvY3VtZW50
KQogeworICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChkb2N1bWVudCwgZmlsZUJ1dHRvbkNob29z
ZU11bHRpcGxlRmlsZXNMYWJlbCgpKTsKK30KKworUmVmPFVwbG9hZEJ1dHRvbkVsZW1lbnQ+IFVw
bG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUludGVybmFsKERvY3VtZW50JiBkb2N1bWVudCwgU3Ry
aW5nIHZhbHVlKQorewogICAgIGF1dG8gYnV0dG9uID0gYWRvcHRSZWYoKm5ldyBVcGxvYWRCdXR0
b25FbGVtZW50KGRvY3VtZW50KSk7Ci0gICAgYnV0dG9uLT5zZXRWYWx1ZShmaWxlQnV0dG9uQ2hv
b3NlTXVsdGlwbGVGaWxlc0xhYmVsKCkpOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYnV0dG9uTmFtZSgiYnV0dG9uIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0RmlsZVVwbG9hZEJ1dHRvbk5hbWUoIi13ZWJraXQt
ZmlsZS11cGxvYWQtYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIGJ1dHRvbi0+c2V0VHlwZShidXR0b25OYW1lKTsKKyAgICBidXR0b24tPnNldFBzZXVkbyh3
ZWJraXRGaWxlVXBsb2FkQnV0dG9uTmFtZSk7CisgICAgYnV0dG9uLT5zZXRWYWx1ZSh2YWx1ZSk7
CiAgICAgcmV0dXJuIGJ1dHRvbjsKIH0KIAogVXBsb2FkQnV0dG9uRWxlbWVudDo6VXBsb2FkQnV0
dG9uRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBIVE1MSW5wdXRFbGVtZW50KGlu
cHV0VGFnLCBkb2N1bWVudCwgMCwgZmFsc2UpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBidXR0b25OYW1lKCJidXR0b24iLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRGaWxlVXBsb2FkQnV0dG9uTmFtZSgiLXdl
YmtpdC1maWxlLXVwbG9hZC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7Ci0gICAgc2V0VHlwZShidXR0b25OYW1lKTsKLSAgICBzZXRQc2V1ZG8od2Via2l0RmlsZVVw
bG9hZEJ1dHRvbk5hbWUpOwogfQogCiBGaWxlSW5wdXRUeXBlOjpGaWxlSW5wdXRUeXBlKEhUTUxJ
bnB1dEVsZW1lbnQmIGVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXln
ZW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXln
ZW5FbGVtZW50LmNwcAkocmV2aXNpb24gMjY2OTcxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MS2V5Z2VuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDE1ICs1MCwxNiBAQCBj
bGFzcyBLZXlnZW5TZWxlY3RFbGVtZW50IGZpbmFsIDogcHVibGljCiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxLZXlnZW5TZWxlY3RFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5Z2VuU2VsZWN0RWxlbWVudChk
b2N1bWVudCkpOworICAgICAgICBhdXRvIHNlbGVjdEVsZW1lbnQgPSBhZG9wdFJlZigqbmV3IEtl
eWdlblNlbGVjdEVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICAgICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBwc2V1ZG9JZCgiLXdlYmtpdC1rZXlnZW4t
c2VsZWN0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBzZWxl
Y3RFbGVtZW50LT5zZXRQc2V1ZG8ocHNldWRvSWQpOworICAgICAgICByZXR1cm4gc2VsZWN0RWxl
bWVudDsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgS2V5Z2VuU2VsZWN0RWxlbWVudChEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgICAgIDogSFRNTFNlbGVjdEVsZW1lbnQoc2VsZWN0VGFnLCBkb2N1
bWVudCwgMCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gcHNldWRvSWQoIi13ZWJraXQta2V5Z2VuLXNlbGVjdCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgc2V0UHNldWRvKHBzZXVkb0lk
KTsKICAgICB9CiAKICAgICBSZWY8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0
ZXNBbmRDaGlsZHJlbihEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQpIG92ZXJyaWRlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmNw
cAkocmV2aXNpb24gMjY2OTcxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRp
bWVFZGl0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw4ICsxODAsNiBAQCBEYXRl
VGltZUVkaXRFbGVtZW50OjpEYXRlVGltZUVkaXRFbGVtZW50CiAgICAgOiBIVE1MRGl2RWxlbWVu
dChkaXZUYWcsIGRvY3VtZW50KQogICAgICwgbV9lZGl0Q29udHJvbE93bmVyKG1ha2VXZWFrUHRy
KGVkaXRDb250cm9sT3duZXIpKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGF0ZVRpbWVFZGl0UHNldWRvSWQoIi13ZWJraXQtZGF0ZXRp
bWUtZWRpdCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzZXRQc2V1
ZG8oZGF0ZVRpbWVFZGl0UHNldWRvSWQpOwogfQogCiBEYXRlVGltZUVkaXRFbGVtZW50Ojp+RGF0
ZVRpbWVFZGl0RWxlbWVudCgpID0gZGVmYXVsdDsKQEAgLTIyMiw3ICsyMjAsMTAgQEAgRGF0ZVRp
bWVGaWVsZEVsZW1lbnQqIERhdGVUaW1lRWRpdEVsZW1lbgogCiBSZWY8RGF0ZVRpbWVFZGl0RWxl
bWVudD4gRGF0ZVRpbWVFZGl0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgRWRp
dENvbnRyb2xPd25lciYgZWRpdENvbnRyb2xPd25lcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRlVGltZUVkaXRFbGVtZW50KGRvY3VtZW50LCBlZGl0Q29udHJvbE93bmVyKSk7Cisg
ICAgYXV0byBlbGVtZW50ID0gYWRvcHRSZWYoKm5ldyBEYXRlVGltZUVkaXRFbGVtZW50KGRvY3Vt
ZW50LCBlZGl0Q29udHJvbE93bmVyKSk7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBkYXRlVGltZUVkaXRQc2V1ZG9JZCgiLXdlYmtpdC1kYXRl
dGltZS1lZGl0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGVsZW1l
bnQtPnNldFBzZXVkbyhkYXRlVGltZUVkaXRQc2V1ZG9JZCk7CisgICAgcmV0dXJuIGVsZW1lbnQ7
CiB9CiAKIHZvaWQgRGF0ZVRpbWVFZGl0RWxlbWVudDo6bGF5b3V0KGNvbnN0IExheW91dFBhcmFt
ZXRlcnMmIGxheW91dFBhcmFtZXRlcnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9EYXRlVGltZUZpZWxkRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50cy5jcHAJKHJldmlzaW9uIDI2Njk3MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDEzICs0MCwxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoRGF0ZVRpbWVEYXlGCiBEYXRlVGltZURheUZpZWxkRWxlbWVudDo6RGF0ZVRpbWVEYXlG
aWVsZEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBGaWVsZE93bmVyJiBmaWVsZE93bmVyKQog
ICAgIDogRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVyLCBS
YW5nZSgxLCAzMSksICItLSJfcykKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IGRheVBzZXVkb0lkKCItd2Via2l0LWRhdGV0aW1lLWVkaXQt
ZGF5LWZpZWxkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGluaXRp
YWxpemUoZGF5UHNldWRvSWQpOwogfQogCiBSZWY8RGF0ZVRpbWVEYXlGaWVsZEVsZW1lbnQ+IERh
dGVUaW1lRGF5RmllbGRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBGaWVsZE93
bmVyJiBmaWVsZE93bmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGVUaW1lRGF5
RmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVyKSk7CisgICAgYXV0byBlbGVtZW50ID0g
YWRvcHRSZWYoKm5ldyBEYXRlVGltZURheUZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25l
cikpOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gZGF5UHNldWRvSWQoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1kYXktZmllbGQiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgZWxlbWVudC0+aW5pdGlhbGl6ZShkYXlQ
c2V1ZG9JZCk7CisgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKIHZvaWQgRGF0ZVRpbWVEYXlGaWVs
ZEVsZW1lbnQ6OnBvcHVsYXRlRGF0ZVRpbWVGaWVsZHNTdGF0ZShEYXRlVGltZUZpZWxkc1N0YXRl
JiBzdGF0ZSkKQEAgLTY1LDEzICs2NiwxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
RGF0ZVRpbWVIb3VyCiBEYXRlVGltZUhvdXJGaWVsZEVsZW1lbnQ6OkRhdGVUaW1lSG91ckZpZWxk
RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIEZpZWxkT3duZXImIGZpZWxkT3duZXIsIGludCBt
aW5pbXVtLCBpbnQgbWF4aW11bSkKICAgICA6IERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudChk
b2N1bWVudCwgZmllbGRPd25lciwgUmFuZ2UobWluaW11bSwgbWF4aW11bSksICItLSJfcykKIHsK
LSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGhv
dXJQc2V1ZG9JZCgiLXdlYmtpdC1kYXRldGltZS1lZGl0LWhvdXItZmllbGQiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgaW5pdGlhbGl6ZShob3VyUHNldWRvSWQpOwog
fQogCiBSZWY8RGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50PiBEYXRlVGltZUhvdXJGaWVsZEVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEZpZWxkT3duZXImIGZpZWxkT3duZXIsIGlu
dCBtaW5pbXVtLCBpbnQgbWF4aW11bSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRl
VGltZUhvdXJGaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIsIG1pbmltdW0sIG1heGlt
dW0pKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdFJlZigqbmV3IERhdGVUaW1lSG91ckZpZWxk
RWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lciwgbWluaW11bSwgbWF4aW11bSkpOworICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaG91clBzZXVk
b0lkKCItd2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVsZCIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICBlbGVtZW50LT5pbml0aWFsaXplKGhvdXJQc2V1ZG9JZCk7
CisgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKIHZvaWQgRGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50
Ojpwb3B1bGF0ZURhdGVUaW1lRmllbGRzU3RhdGUoRGF0ZVRpbWVGaWVsZHNTdGF0ZSYgc3RhdGUp
CkBAIC0xMjksMTMgKzEzMSwxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGF0ZVRp
bWVNZXJpCiBEYXRlVGltZU1lcmlkaWVtRmllbGRFbGVtZW50OjpEYXRlVGltZU1lcmlkaWVtRmll
bGRFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgRmllbGRPd25lciYgZmllbGRPd25lciwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscykKICAgICA6IERhdGVUaW1lU3ltYm9saWNGaWVsZEVs
ZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIsIGxhYmVscykKIHsKLSAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1lcmlkaWVtUHNldWRvSWQoIi13
ZWJraXQtZGF0ZXRpbWUtZWRpdC1tZXJpZGllbS1maWVsZCIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKLSAgICBpbml0aWFsaXplKG1lcmlkaWVtUHNldWRvSWQpOwogfQogCiBS
ZWY8RGF0ZVRpbWVNZXJpZGllbUZpZWxkRWxlbWVudD4gRGF0ZVRpbWVNZXJpZGllbUZpZWxkRWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgRmllbGRPd25lciYgZmllbGRPd25lciwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRlVGltZU1lcmlkaWVtRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVyLCBsYWJl
bHMpKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdFJlZigqbmV3IERhdGVUaW1lTWVyaWRpZW1G
aWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIsIGxhYmVscykpOworICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbWVyaWRpZW1Qc2V1ZG9J
ZCgiLXdlYmtpdC1kYXRldGltZS1lZGl0LW1lcmlkaWVtLWZpZWxkIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOworICAgIGVsZW1lbnQtPmluaXRpYWxpemUobWVyaWRpZW1Qc2V1
ZG9JZCk7CisgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKIHZvaWQgRGF0ZVRpbWVNZXJpZGllbUZp
ZWxkRWxlbWVudDo6cG9wdWxhdGVEYXRlVGltZUZpZWxkc1N0YXRlKERhdGVUaW1lRmllbGRzU3Rh
dGUmIHN0YXRlKQpAQCAtMTU0LDEzICsxNTcsMTQgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKERhdGVUaW1lTWlsbAogRGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudDo6RGF0ZVRp
bWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIEZpZWxkT3duZXIm
IGZpZWxkT3duZXIpCiAgICAgOiBEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQoZG9jdW1lbnQs
IGZpZWxkT3duZXIsIFJhbmdlKDAsIDk5OSksICItLSJfcykKIHsKLSAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1pbGxpc2Vjb25kUHNldWRvSWQo
Ii13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taWxsaXNlY29uZC1maWVsZCIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBpbml0aWFsaXplKG1pbGxpc2Vjb25kUHNldWRvSWQp
OwogfQogCiBSZWY8RGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudD4gRGF0ZVRpbWVNaWxs
aXNlY29uZEZpZWxkRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgRmllbGRPd25l
ciYgZmllbGRPd25lcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRlVGltZU1pbGxp
c2Vjb25kRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVyKSk7CisgICAgYXV0byBlbGVt
ZW50ID0gYWRvcHRSZWYoKm5ldyBEYXRlVGltZU1pbGxpc2Vjb25kRmllbGRFbGVtZW50KGRvY3Vt
ZW50LCBmaWVsZE93bmVyKSk7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBtaWxsaXNlY29uZFBzZXVkb0lkKCItd2Via2l0LWRhdGV0aW1lLWVk
aXQtbWlsbGlzZWNvbmQtZmllbGQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgZWxlbWVudC0+aW5pdGlhbGl6ZShtaWxsaXNlY29uZFBzZXVkb0lkKTsKKyAgICByZXR1
cm4gZWxlbWVudDsKIH0KIAogdm9pZCBEYXRlVGltZU1pbGxpc2Vjb25kRmllbGRFbGVtZW50Ojpw
b3B1bGF0ZURhdGVUaW1lRmllbGRzU3RhdGUoRGF0ZVRpbWVGaWVsZHNTdGF0ZSYgc3RhdGUpCkBA
IC0xNzksMTMgKzE4MywxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGF0ZVRpbWVN
aW51CiBEYXRlVGltZU1pbnV0ZUZpZWxkRWxlbWVudDo6RGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50LCBGaWVsZE93bmVyJiBmaWVsZE93bmVyKQogICAgIDogRGF0
ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVyLCBSYW5nZSgwLCA1
OSksICItLSJfcykKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IG1pbnV0ZVBzZXVkb0lkKCItd2Via2l0LWRhdGV0aW1lLWVkaXQtbWludXRl
LWZpZWxkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGluaXRpYWxp
emUobWludXRlUHNldWRvSWQpOwogfQogCiBSZWY8RGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQ+
IERhdGVUaW1lTWludXRlRmllbGRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBG
aWVsZE93bmVyJiBmaWVsZE93bmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGVU
aW1lTWludXRlRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVyKSk7CisgICAgYXV0byBl
bGVtZW50ID0gYWRvcHRSZWYoKm5ldyBEYXRlVGltZU1pbnV0ZUZpZWxkRWxlbWVudChkb2N1bWVu
dCwgZmllbGRPd25lcikpOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gbWludXRlUHNldWRvSWQoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taW51
dGUtZmllbGQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgZWxlbWVu
dC0+aW5pdGlhbGl6ZShtaW51dGVQc2V1ZG9JZCk7CisgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAK
IHZvaWQgRGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQ6OnBvcHVsYXRlRGF0ZVRpbWVGaWVsZHNT
dGF0ZShEYXRlVGltZUZpZWxkc1N0YXRlJiBzdGF0ZSkKQEAgLTIwNCwxMyArMjA5LDE0IEBAIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEYXRlVGltZU1vbnQKIERhdGVUaW1lTW9udGhGaWVs
ZEVsZW1lbnQ6OkRhdGVUaW1lTW9udGhGaWVsZEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBG
aWVsZE93bmVyJiBmaWVsZE93bmVyKQogICAgIDogRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50
KGRvY3VtZW50LCBmaWVsZE93bmVyLCBSYW5nZSgxLCAxMiksICItLSJfcykKIHsKLSAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vbnRoUHNldWRv
SWQoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1tb250aC1maWVsZCIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKLSAgICBpbml0aWFsaXplKG1vbnRoUHNldWRvSWQpOwogfQogCiBS
ZWY8RGF0ZVRpbWVNb250aEZpZWxkRWxlbWVudD4gRGF0ZVRpbWVNb250aEZpZWxkRWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgRmllbGRPd25lciYgZmllbGRPd25lcikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRlVGltZU1vbnRoRmllbGRFbGVtZW50KGRvY3VtZW50
LCBmaWVsZE93bmVyKSk7CisgICAgYXV0byBlbGVtZW50ID0gYWRvcHRSZWYoKm5ldyBEYXRlVGlt
ZU1vbnRoRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVyKSk7CisgICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb250aFBzZXVkb0lkKCIt
d2Via2l0LWRhdGV0aW1lLWVkaXQtbW9udGgtZmllbGQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CisgICAgZWxlbWVudC0+aW5pdGlhbGl6ZShtb250aFBzZXVkb0lkKTsKKyAg
ICByZXR1cm4gZWxlbWVudDsKIH0KIAogdm9pZCBEYXRlVGltZU1vbnRoRmllbGRFbGVtZW50Ojpw
b3B1bGF0ZURhdGVUaW1lRmllbGRzU3RhdGUoRGF0ZVRpbWVGaWVsZHNTdGF0ZSYgc3RhdGUpCkBA
IC0yMzAsMTMgKzIzNiwxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGF0ZVRpbWVT
ZWNvCiBEYXRlVGltZVNlY29uZEZpZWxkRWxlbWVudDo6RGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50LCBGaWVsZE93bmVyJiBmaWVsZE93bmVyKQogICAgIDogRGF0
ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVyLCBSYW5nZSgwLCA1
OSksICItLSJfcykKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHNlY29uZFBzZXVkb0lkKCItd2Via2l0LWRhdGV0aW1lLWVkaXQtc2Vjb25k
LWZpZWxkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGluaXRpYWxp
emUoc2Vjb25kUHNldWRvSWQpOwogfQogCiBSZWY8RGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ+
IERhdGVUaW1lU2Vjb25kRmllbGRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBG
aWVsZE93bmVyJiBmaWVsZE93bmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGVU
aW1lU2Vjb25kRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVyKSk7CisgICAgYXV0byBl
bGVtZW50ID0gYWRvcHRSZWYoKm5ldyBEYXRlVGltZVNlY29uZEZpZWxkRWxlbWVudChkb2N1bWVu
dCwgZmllbGRPd25lcikpOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gc2Vjb25kUHNldWRvSWQoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1zZWNv
bmQtZmllbGQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgZWxlbWVu
dC0+aW5pdGlhbGl6ZShzZWNvbmRQc2V1ZG9JZCk7CisgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAK
IHZvaWQgRGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ6OnBvcHVsYXRlRGF0ZVRpbWVGaWVsZHNT
dGF0ZShEYXRlVGltZUZpZWxkc1N0YXRlJiBzdGF0ZSkKQEAgLTI1NSwxMyArMjYyLDE0IEBAIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEYXRlVGltZVN5bWIKIERhdGVUaW1lU3ltYm9saWNN
b250aEZpZWxkRWxlbWVudDo6RGF0ZVRpbWVTeW1ib2xpY01vbnRoRmllbGRFbGVtZW50KERvY3Vt
ZW50JiBkb2N1bWVudCwgRmllbGRPd25lciYgZmllbGRPd25lciwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGxhYmVscykKICAgICA6IERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQoZG9jdW1lbnQs
IGZpZWxkT3duZXIsIGxhYmVscykKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vbnRoUHNldWRvSWQoIi13ZWJraXQtZGF0ZXRpbWUtZWRp
dC1tb250aC1maWVsZCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBp
bml0aWFsaXplKG1vbnRoUHNldWRvSWQpOwogfQogCiBSZWY8RGF0ZVRpbWVTeW1ib2xpY01vbnRo
RmllbGRFbGVtZW50PiBEYXRlVGltZVN5bWJvbGljTW9udGhGaWVsZEVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIEZpZWxkT3duZXImIGZpZWxkT3duZXIsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBsYWJlbHMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0ZVRpbWVTeW1i
b2xpY01vbnRoRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVyLCBsYWJlbHMpKTsKKyAg
ICBhdXRvIGVsZW1lbnQgPSBhZG9wdFJlZigqbmV3IERhdGVUaW1lU3ltYm9saWNNb250aEZpZWxk
RWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lciwgbGFiZWxzKSk7CisgICAgc3RhdGljIE1haW5U
aHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtb250aFBzZXVkb0lkKCItd2Vi
a2l0LWRhdGV0aW1lLWVkaXQtbW9udGgtZmllbGQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgZWxlbWVudC0+aW5pdGlhbGl6ZShtb250aFBzZXVkb0lkKTsKKyAgICBy
ZXR1cm4gZWxlbWVudDsKIH0KIAogdm9pZCBEYXRlVGltZVN5bWJvbGljTW9udGhGaWVsZEVsZW1l
bnQ6OnBvcHVsYXRlRGF0ZVRpbWVGaWVsZHNTdGF0ZShEYXRlVGltZUZpZWxkc1N0YXRlJiBzdGF0
ZSkKQEAgLTI4MCwxMyArMjg4LDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEYXRl
VGltZVllYXIKIERhdGVUaW1lWWVhckZpZWxkRWxlbWVudDo6RGF0ZVRpbWVZZWFyRmllbGRFbGVt
ZW50KERvY3VtZW50JiBkb2N1bWVudCwgRmllbGRPd25lciYgZmllbGRPd25lcikKICAgICA6IERh
dGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lciwgUmFuZ2UoRGF0
ZUNvbXBvbmVudHM6Om1pbmltdW1ZZWFyKCksIERhdGVDb21wb25lbnRzOjptYXhpbXVtWWVhcigp
KSwgIi0tLS0iX3MpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiB5ZWFyUHNldWRvSWQoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC15ZWFyLWZp
ZWxkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGluaXRpYWxpemUo
eWVhclBzZXVkb0lkKTsKIH0KIAogUmVmPERhdGVUaW1lWWVhckZpZWxkRWxlbWVudD4gRGF0ZVRp
bWVZZWFyRmllbGRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBGaWVsZE93bmVy
JiBmaWVsZE93bmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGVUaW1lWWVhckZp
ZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lcikpOworICAgIGF1dG8gZWxlbWVudCA9IGFk
b3B0UmVmKCpuZXcgRGF0ZVRpbWVZZWFyRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVy
KSk7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiB5ZWFyUHNldWRvSWQoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC15ZWFyLWZpZWxkIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGVsZW1lbnQtPmluaXRpYWxpemUoeWVh
clBzZXVkb0lkKTsKKyAgICByZXR1cm4gZWxlbWVudDsKIH0KIAogdm9pZCBEYXRlVGltZVllYXJG
aWVsZEVsZW1lbnQ6OnBvcHVsYXRlRGF0ZVRpbWVGaWVsZHNTdGF0ZShEYXRlVGltZUZpZWxkc1N0
YXRlJiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJr
ZXJDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9E
ZXRhaWxzTWFya2VyQ29udHJvbC5jcHAJKHJldmlzaW9uIDI2Njk3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDMsMTQgKzQzLDE1IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEZXRhaWxzTWFy
a2UKIAogUmVmPERldGFpbHNNYXJrZXJDb250cm9sPiBEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXRh
aWxzTWFya2VyQ29udHJvbChkb2N1bWVudCkpOworICAgIGF1dG8gY29udHJvbCA9IGFkb3B0UmVm
KCpuZXcgRGV0YWlsc01hcmtlckNvbnRyb2woZG9jdW1lbnQpKTsKKyAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdERldGFpbHNNYXJrZXJO
YW1lKCItd2Via2l0LWRldGFpbHMtbWFya2VyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIGNvbnRyb2wtPnNldFBzZXVkbyh3ZWJraXREZXRhaWxzTWFya2VyTmFtZSk7
CisgICAgcmV0dXJuIGNvbnRyb2w7CiB9CiAKIERldGFpbHNNYXJrZXJDb250cm9sOjpEZXRhaWxz
TWFya2VyQ29udHJvbChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBIVE1MRGl2RWxlbWVudChI
VE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXREZXRhaWxzTWFya2VyTmFtZSgiLXdl
YmtpdC1kZXRhaWxzLW1hcmtlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
LSAgICBzZXRQc2V1ZG8od2Via2l0RGV0YWlsc01hcmtlck5hbWUpOwogfQogCiBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gRGV0YWlsc01hcmtlckNvbnRyb2w6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI2Njk3MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiBSZWY8TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWVudD4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQogewogICAgIGF1
dG8gZWxlbWVudCA9IGFkb3B0UmVmKCpuZXcgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudChkb2N1bWVudCwgbWVkaWFFbGVtZW50KSk7CisgICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRNZWRpYVRleHRUcmFja0NvbnRh
aW5lck5hbWUoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgZWxlbWVudC0+c2V0UHNldWRvKHdlYmtpdE1l
ZGlhVGV4dFRyYWNrQ29udGFpbmVyTmFtZSk7CiAgICAgZWxlbWVudC0+aGlkZSgpOwogICAgIHJl
dHVybiBlbGVtZW50OwogfQpAQCAtNzUsOCArNzcsNiBAQCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50OjpNCiAgICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50
KQogICAgICwgbV9tZWRpYUVsZW1lbnQobWFrZVdlYWtQdHIoJmVsZW1lbnQpKQogewotICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0TWVk
aWFUZXh0VHJhY2tDb250YWluZXJOYW1lKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFp
bmVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHNldFBzZXVkbyh3
ZWJraXRNZWRpYVRleHRUcmFja0NvbnRhaW5lck5hbWUpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyNjY5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TcGluQnV0dG9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE0ICs1NSwxNSBA
QCBpbmxpbmUgU3BpbkJ1dHRvbkVsZW1lbnQ6OlNwaW5CdXR0b25FbGVtCiAgICAgLCBtX3ByZXNz
U3RhcnRpbmdTdGF0ZShJbmRldGVybWluYXRlKQogICAgICwgbV9yZXBlYXRpbmdUaW1lcigqdGhp
cywgJlNwaW5CdXR0b25FbGVtZW50OjpyZXBlYXRpbmdUaW1lckZpcmVkKQogewotICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0SW5uZXJT
cGluQnV0dG9uTmFtZSgiLXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFj
a3MoKTsKLSAgICBzZXRQc2V1ZG8od2Via2l0SW5uZXJTcGluQnV0dG9uTmFtZSk7CiB9CiAKIFJl
ZjxTcGluQnV0dG9uRWxlbWVudD4gU3BpbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFNwaW5CdXR0b25Pd25lciYgc3BpbkJ1dHRvbk93bmVyKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNwaW5CdXR0b25FbGVtZW50KGRvY3VtZW50LCBzcGluQnV0dG9uT3du
ZXIpKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdFJlZigqbmV3IFNwaW5CdXR0b25FbGVtZW50
KGRvY3VtZW50LCBzcGluQnV0dG9uT3duZXIpKTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdElubmVyU3BpbkJ1dHRvbk5hbWUoIi13
ZWJraXQtaW5uZXItc3Bpbi1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgZWxlbWVudC0+c2V0UHNldWRvKHdlYmtpdElubmVyU3BpbkJ1dHRvbk5hbWUpOwor
ICAgIHJldHVybiBlbGVtZW50OwogfQogCiB2b2lkIFNwaW5CdXR0b25FbGVtZW50Ojp3aWxsRGV0
YWNoUmVuZGVyZXJzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjY2OTcxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTgyLDE0ICsxODIsMTUgQEAgT3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gVGV4dENvbnRybwogaW5saW5lIFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50
OjpUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
OiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQogewotICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gcGxhY2Vob2xkZXJOYW1lKCJwbGFj
ZWhvbGRlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzZXRQc2V1
ZG8ocGxhY2Vob2xkZXJOYW1lKTsKICAgICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFj
a3MoKTsKIH0KIAogUmVmPFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50PiBUZXh0Q29udHJv
bFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChkb2N1bWVu
dCkpOworICAgIGF1dG8gZWxlbWVudCA9IGFkb3B0UmVmKCpuZXcgVGV4dENvbnRyb2xQbGFjZWhv
bGRlckVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHBsYWNlaG9sZGVyTmFtZSgicGxhY2Vob2xkZXIiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgZWxlbWVudC0+c2V0UHNldWRvKHBs
YWNlaG9sZGVyTmFtZSk7CisgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKIE9wdGlvbmFsPFN0eWxl
OjpFbGVtZW50U3R5bGU+IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZlQ3Vz
dG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSogc2hhZG93SG9zdFN0eWxlKQpAQCAtMjU1LDIxICsyNTYsMjAgQEAgYm9vbCBTZWFyY2hGaWVs
ZFJlc3VsdHNCdXR0b25FbGVtZW50Ojp3aQogaW5saW5lIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
RWxlbWVudDo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50KERvY3VtZW50JiBkb2N1bWVu
dCkKICAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpCiB7Ci0gICAgc3RhdGlj
IE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRTZWFyY2hD
YW5jZWxCdXR0b25OYW1lKCItd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYnV0dG9uTmFtZSgiYnV0dG9uIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotCiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2Fs
bGJhY2tzKCk7Ci0KLSAgICBzZXRQc2V1ZG8od2Via2l0U2VhcmNoQ2FuY2VsQnV0dG9uTmFtZSk7
Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihhcmlhX2xhYmVsQXR0ciwgQVhTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblRleHQo
KSk7Ci0jZW5kaWYKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJvbGVB
dHRyLCBidXR0b25OYW1lKTsKIH0KIAogUmVmPFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVu
dD4gU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
RWxlbWVudChkb2N1bWVudCkpOworICAgIGF1dG8gZWxlbWVudCA9IGFkb3B0UmVmKCpuZXcgU2Vh
cmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50KGRvY3VtZW50KSk7CisgICAgc3RhdGljIE1haW5U
aHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRTZWFyY2hDYW5jZWxC
dXR0b25OYW1lKCItd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gYnV0dG9uTmFtZSgiYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIGVsZW1lbnQtPnNldFBzZXVkbyh3ZWJraXRTZWFyY2hDYW5j
ZWxCdXR0b25OYW1lKTsKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBlbGVtZW50LT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfbGFiZWxBdHRyLCBBWFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uVGV4dCgpKTsKKyNlbmRpZgorICAgIGVsZW1lbnQtPnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocm9sZUF0dHIsIGJ1dHRvbk5hbWUpOworICAgIHJl
dHVybiBlbGVtZW50OwogfQogCiBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1lvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyNjY5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Zb3VU
dWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTQgKzM1LDE1
IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChZb3VUdWJlRW1iZWQKIAogUmVmPFlvdVR1
YmVFbWJlZFNoYWRvd0VsZW1lbnQ+IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCYgZG9jKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFlvdVR1YmVFbWJlZFNo
YWRvd0VsZW1lbnQoZG9jKSk7CisgICAgYXV0byBlbGVtZW50ID0gYWRvcHRSZWYoKm5ldyBZb3VU
dWJlRW1iZWRTaGFkb3dFbGVtZW50KGRvYykpOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0UGx1Z2luUmVwbGFjZW1lbnROYW1lKCIt
d2Via2l0LXBsdWdpbi1yZXBsYWNlbWVudCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICBlbGVtZW50LT5zZXRQc2V1ZG8od2Via2l0UGx1Z2luUmVwbGFjZW1lbnROYW1l
KTsKKyAgICByZXR1cm4gZWxlbWVudDsKIH0KIAogWW91VHViZUVtYmVkU2hhZG93RWxlbWVudDo6
WW91VHViZUVtYmVkU2hhZG93RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBIVE1M
RGl2RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQpCiB7Ci0gICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRQbHVnaW5SZXBs
YWNlbWVudE5hbWUoIi13ZWJraXQtcGx1Z2luLXJlcGxhY2VtZW50IiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHNldFBzZXVkbyh3ZWJraXRQbHVnaW5SZXBsYWNlbWVu
dE5hbWUpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gWW91VHViZUVtYmVkU2hhZG93
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuY3BwCShyZXZpc2lvbiAyNjY5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDEyICs5MiwxOCBA
QCBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgY3VlQmFja2dyb3VuCiAgICAgcmV0dXJuIGN1
ZUJhY2tncm91bmRUYWc7CiB9CiAKK1JlZjxUZXh0VHJhY2tDdWVCb3g+IFRleHRUcmFja0N1ZUJv
eDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ3VlJiBjdWUpCit7CisgICAg
YXV0byBib3ggPSBhZG9wdFJlZigqbmV3IFRleHRUcmFja0N1ZUJveChkb2N1bWVudCwgY3VlKSk7
CisgICAgYm94LT5zZXRQc2V1ZG8oVGV4dFRyYWNrQ3VlOjpjdWVCb3hTaGFkb3dQc2V1ZG9JZCgp
KTsKKyAgICByZXR1cm4gYm94OworfQorCiBUZXh0VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1ZUJv
eChEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0N1ZSYgY3VlKQogICAgIDogSFRNTEVsZW1l
bnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQogICAgICwgbV9jdWUobWFrZVdlYWtQdHIo
Y3VlKSkKIHsKICAgICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsKLSAgICBz
ZXRQc2V1ZG8oVGV4dFRyYWNrQ3VlOjpjdWVCb3hTaGFkb3dQc2V1ZG9JZCgpKTsKIH0KIAogVGV4
dFRyYWNrQ3VlKiBUZXh0VHJhY2tDdWVCb3g6OmdldEN1ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgJKHJldmlzaW9uIDI2Njk3MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDEwICs0Niw3IEBAIGNsYXNzIFRleHRUcmFja0N1ZTsKIGNsYXNzIFRleHRUcmFja0N1ZUJv
eCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChUZXh0
VHJhY2tDdWVCb3gpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VGV4dFRyYWNrQ3VlQm94PiBj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDdWUmIGN1ZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRUcmFja0N1ZUJveChkb2N1bWVudCwgY3VlKSk7
Ci0gICAgfQorICAgIHN0YXRpYyBSZWY8VGV4dFRyYWNrQ3VlQm94PiBjcmVhdGUoRG9jdW1lbnQm
LCBUZXh0VHJhY2tDdWUmKTsKIAogICAgIFRleHRUcmFja0N1ZSogZ2V0Q3VlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIGFwcGx5Q1NTUHJvcGVydGllcyhjb25zdCBJbnRTaXplJikgeyB9Cg==
</data>
<flag name="commit-queue"
          id="424286"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408780</attachid>
            <date>2020-09-14 19:36:26 -0700</date>
            <delta_ts>2020-09-14 21:21:19 -0700</delta_ts>
            <desc>Fixed the media tests and addresed Darin&apos;s review comments</desc>
            <filename>bug-216507-20200914193625.patch</filename>
            <type>text/plain</type>
            <size>35221</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzA2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAyMC0wOS0xNCAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBFbGVtZW50IHNob3VsZCBub3Qg
c2V0IGFuIGF0dHJpYnV0ZSBpbnNpZGUgaXRzIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY1MDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgY29kZSB0byBhZGQgYXR0
cmlidXRlcyBmcm9tIGVsZW1lbnQgY29uc3RydWN0b3JzIHRvIHJlc3BlY3RpdmUgOjpjcmVhdGUg
ZnVuY3Rpb25zCisgICAgICAgIHNpbmNlIHNldHRpbmcgYXR0cmlidXRlcyBjb3VsZCBydW4gY29k
ZSBpbiBwYXJzZUF0dHJpYnV0ZSBzb21lIG9mIHdoaWNoIG1heSB0cnkgdG8gc3RvcmUKKyAgICAg
ICAgInRoaXMiIGluIFJlZiAvIFJlZlB0ciwgd2hpY2ggd291bGQgbm90IGJlIHNhZmUgYmVmb3Jl
IGFkb3B0UmVmIGlzIGNhbGxlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhlcmUg
c2hvdWxkIGJlIG5vIG9ic2VydmFibGUgYmVoYXZpb3JhbCBjaGFuZ2UuCisKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1dGVJ
bnRlcm5hbCk6IEFkZGVkIGFuIGFzc2VydGlvbi4KKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUZvck11bHRpcGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUludGVybmFs
KTogRXh0cmFjdGVkLgorICAgICAgICAoV2ViQ29yZTo6VXBsb2FkQnV0dG9uRWxlbWVudDo6VXBs
b2FkQnV0dG9uRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHA6
CisgICAgICAgICogaHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRlVGltZUVkaXRFbGVtZW50OjpEYXRlVGltZUVkaXRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRWRpdEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGVUaW1lRGF5RmllbGRFbGVtZW50OjpEYXRlVGltZURheUZpZWxkRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlVGltZURheUZpZWxkRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGVUaW1lSG91ckZpZWxkRWxlbWVudDo6RGF0ZVRpbWVIb3VyRmllbGRFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lSG91ckZpZWxkRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTWVyaWRpZW1GaWVsZEVsZW1lbnQ6OkRhdGVU
aW1lTWVyaWRpZW1GaWVsZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVNZXJp
ZGllbUZpZWxkRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTWls
bGlzZWNvbmRGaWVsZEVsZW1lbnQ6OkRhdGVUaW1lTWlsbGlzZWNvbmRGaWVsZEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTWludXRlRmllbGRFbGVtZW50OjpEYXRlVGlt
ZU1pbnV0ZUZpZWxkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZU1pbnV0ZUZp
ZWxkRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTW9udGhGaWVs
ZEVsZW1lbnQ6OkRhdGVUaW1lTW9udGhGaWVsZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0ZVRpbWVNb250aEZpZWxkRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGVUaW1lU2Vjb25kRmllbGRFbGVtZW50OjpEYXRlVGltZVNlY29uZEZpZWxkRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRlVGltZVNlY29uZEZpZWxkRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lU3ltYm9saWNNb250aEZpZWxkRWxlbWVudDo6RGF0ZVRp
bWVTeW1ib2xpY01vbnRoRmllbGRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1l
U3ltYm9saWNNb250aEZpZWxkRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGVUaW1lWWVhckZpZWxkRWxlbWVudDo6RGF0ZVRpbWVZZWFyRmllbGRFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGVUaW1lWWVhckZpZWxkRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRldGFp
bHNNYXJrZXJDb250cm9sOjpEZXRhaWxzTWFya2VyQ29udHJvbCk6CisgICAgICAgICogaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVu
dDo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1
dHRvbkVsZW1lbnQ6OlNwaW5CdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5C
dXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbFBsYWNlaG9s
ZGVyRWxlbWVudDo6VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OlNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
bkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hh
ZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJlRW1iZWRTaGFkb3dFbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZUVtYmVkU2hhZG93RWxlbWVu
dDo6WW91VHViZUVtYmVkU2hhZG93RWxlbWVudCk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94OjpjcmVhdGUp
OiBNb3ZlZCBmcm9tIC5oLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94OjpUZXh0
VHJhY2tDdWVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94Ojppbml0aWxh
aXplKTogQWRkZWQuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUJveDo6Y3JlYXRlKTogTW92ZWQgdG8gY3BwLgorICAg
ICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljQm94RWxlbWVudDo6Y3JlYXRlKTogTm93IGNhbGxzIGlu
aXRpYWxpemUoKS4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWVFRDdWVCb3g6OmNyZWF0ZSk6IE1vdmVkIGZyb20gLmguIE5vdyBjYWxscyBpbml0
aWFsaXplKCkuCisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlZUVEN1ZUJveDo6Y3JlYXRlKTogTW92ZWQgdG8gY3BwLgorCisyMDIwLTA5LTE0ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEVsZW1lbnQgc2hvdWxkIG5v
dCBzZXQgYW4gYXR0cmlidXRlIGluc2lkZSBpdHMgY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjUwNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVkIHRoZSBjb2RlIHRvIGFkZCBh
dHRyaWJ1dGVzIGZyb20gZWxlbWVudCBjb25zdHJ1Y3RvcnMgdG8gcmVzcGVjdGl2ZSA6OmNyZWF0
ZSBmdW5jdGlvbnMKKyAgICAgICAgc2luY2Ugc2V0dGluZyBhdHRyaWJ1dGVzIGNvdWxkIHJ1biBj
b2RlIGluIHBhcnNlQXR0cmlidXRlIHNvbWUgb2Ygd2hpY2ggbWF5IHRyeSB0byBzdG9yZQorICAg
ICAgICAidGhpcyIgaW4gUmVmIC8gUmVmUHRyLCB3aGljaCB3b3VsZCBub3QgYmUgc2FmZSBiZWZv
cmUgYWRvcHRSZWYgaXMgY2FsbGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVy
ZSBzaG91bGQgYmUgbm8gb2JzZXJ2YWJsZSBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0
ZUludGVybmFsKTogQWRkZWQgYW4gYXNzZXJ0aW9uLgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlw
bGUpOgorICAgICAgICAoV2ViQ29yZTo6VXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlSW50ZXJu
YWwpOiBFeHRyYWN0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVcGxvYWRCdXR0b25FbGVtZW50OjpV
cGxvYWRCdXR0b25FbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxLZXlnZW5FbGVtZW50LmNw
cDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGVUaW1lRWRpdEVsZW1lbnQ6OkRhdGVUaW1lRWRpdEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVFZGl0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0ZVRpbWVEYXlGaWVsZEVsZW1lbnQ6OkRhdGVUaW1lRGF5RmllbGRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRGF5RmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50OjpEYXRlVGltZUhvdXJGaWVsZEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVNZXJpZGllbUZpZWxkRWxlbWVudDo6RGF0
ZVRpbWVNZXJpZGllbUZpZWxkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZU1l
cmlkaWVtRmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVN
aWxsaXNlY29uZEZpZWxkRWxlbWVudDo6RGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZU1pbGxpc2Vjb25kRmllbGRFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQ6OkRhdGVU
aW1lTWludXRlRmllbGRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTWludXRl
RmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVNb250aEZp
ZWxkRWxlbWVudDo6RGF0ZVRpbWVNb250aEZpZWxkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRlVGltZU1vbnRoRmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ6OkRhdGVUaW1lU2Vjb25kRmllbGRFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lU2Vjb25kRmllbGRFbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVTeW1ib2xpY01vbnRoRmllbGRFbGVtZW50OjpEYXRl
VGltZVN5bWJvbGljTW9udGhGaWVsZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRp
bWVTeW1ib2xpY01vbnRoRmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0ZVRpbWVZZWFyRmllbGRFbGVtZW50OjpEYXRlVGltZVllYXJGaWVsZEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVZZWFyRmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGV0
YWlsc01hcmtlckNvbnRyb2w6OkRldGFpbHNNYXJrZXJDb250cm9sKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50OjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGlu
QnV0dG9uRWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3Bp
bkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sUGxhY2Vo
b2xkZXJFbGVtZW50OjpUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6U2VhcmNoRmllbGRDYW5j
ZWxCdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0
dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Zb3VUdWJlRW1iZWRT
aGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OllvdVR1YmVFbWJlZFNoYWRvd0Vs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJlRW1iZWRTaGFkb3dFbGVt
ZW50OjpZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OmNyZWF0
ZSk6IE1vdmVkIGZyb20gLmguCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OlRl
eHRUcmFja0N1ZUJveCk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUJveDo6Y3JlYXRlKTogTW92ZWQgdG8gY3BwLgor
CiAyMDIwLTA5LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
RHJvcCBzbW9vdGhpbmcgbG9naWMgZnJvbSBEZWxheURTUEtlcm5lbDo6cHJvY2VzcygpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjY5NzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MzQsNiArMTczNCw4IEBAIHZv
aWQgRWxlbWVudDo6c2V0U3luY2hyb25pemVkTGF6eUF0dHJpYnUKIAogaW5saW5lIHZvaWQgRWxl
bWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwodW5zaWduZWQgaW5kZXgsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlLCBTeW5jaHJvbml6YXRpb25P
ZkxhenlBdHRyaWJ1dGUgaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpCiB7CisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShyZWZDb3VudCgpIHx8IHBhcmVudE5vZGUoKSwgIkF0dHJpYnV0
ZSBtdXN0IG5vdCBiZSBzZXQgb24gYW4gZWxlbWVudCBiZWZvcmUgYWRvcHRSZWYiKTsKKwogICAg
IGlmIChuZXdWYWx1ZS5pc051bGwoKSkgewogICAgICAgICBpZiAoaW5kZXggIT0gRWxlbWVudERh
dGE6OmF0dHJpYnV0ZU5vdEZvdW5kKQogICAgICAgICAgICAgcmVtb3ZlQXR0cmlidXRlSW50ZXJu
YWwoaW5kZXgsIGluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMjY2OTcxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxVcGxvYWRCdXR0b25FbGVtZW50PiBjcmVh
dGVGb3JNdWx0aXBsZShEb2N1bWVudCYpOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBSZWY8VXBs
b2FkQnV0dG9uRWxlbWVudD4gY3JlYXRlSW50ZXJuYWwoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcm
IHZhbHVlKTsKICAgICBib29sIGlzVXBsb2FkQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIAogICAgIFVwbG9hZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQmKTsKQEAg
LTgwLDI1ICs4MSwyOCBAQCBwcml2YXRlOgogCiBSZWY8VXBsb2FkQnV0dG9uRWxlbWVudD4gVXBs
b2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBhdXRv
IGJ1dHRvbiA9IGFkb3B0UmVmKCpuZXcgVXBsb2FkQnV0dG9uRWxlbWVudChkb2N1bWVudCkpOwot
ICAgIGJ1dHRvbi0+c2V0VmFsdWUoZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpKTsKLSAgICBy
ZXR1cm4gYnV0dG9uOworICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChkb2N1bWVudCwgZmlsZUJ1
dHRvbkNob29zZUZpbGVMYWJlbCgpKTsKIH0KIAogUmVmPFVwbG9hZEJ1dHRvbkVsZW1lbnQ+IFVw
bG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUZvck11bHRpcGxlKERvY3VtZW50JiBkb2N1bWVudCkK
IHsKKyAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWwoZG9jdW1lbnQsIGZpbGVCdXR0b25DaG9vc2VN
dWx0aXBsZUZpbGVzTGFiZWwoKSk7Cit9CisKK1JlZjxVcGxvYWRCdXR0b25FbGVtZW50PiBVcGxv
YWRCdXR0b25FbGVtZW50OjpjcmVhdGVJbnRlcm5hbChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCit7CiAgICAgYXV0byBidXR0b24gPSBhZG9wdFJlZigqbmV3IFVwbG9h
ZEJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKLSAgICBidXR0b24tPnNldFZhbHVlKGZpbGVCdXR0
b25DaG9vc2VNdWx0aXBsZUZpbGVzTGFiZWwoKSk7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBidXR0b25OYW1lKCJidXR0b24iLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRGaWxlVXBsb2FkQnV0dG9uTmFtZSgiLXdl
YmtpdC1maWxlLXVwbG9hZC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgYnV0dG9uLT5zZXRUeXBlKGJ1dHRvbk5hbWUpOworICAgIGJ1dHRvbi0+c2V0UHNl
dWRvKHdlYmtpdEZpbGVVcGxvYWRCdXR0b25OYW1lKTsKKyAgICBidXR0b24tPnNldFZhbHVlKHZh
bHVlKTsKICAgICByZXR1cm4gYnV0dG9uOwogfQogCiBVcGxvYWRCdXR0b25FbGVtZW50OjpVcGxv
YWRCdXR0b25FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxJbnB1dEVsZW1l
bnQoaW5wdXRUYWcsIGRvY3VtZW50LCAwLCBmYWxzZSkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGJ1dHRvbk5hbWUoImJ1dHRvbiIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdEZpbGVVcGxvYWRCdXR0b25OYW1l
KCItd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKLSAgICBzZXRUeXBlKGJ1dHRvbk5hbWUpOwotICAgIHNldFBzZXVkbyh3ZWJraXRG
aWxlVXBsb2FkQnV0dG9uTmFtZSk7CiB9CiAKIEZpbGVJbnB1dFR5cGU6OkZpbGVJbnB1dFR5cGUo
SFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEtleWdlbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEtleWdlbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjY5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTUgKzUwLDE2
IEBAIGNsYXNzIEtleWdlblNlbGVjdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPEtleWdlblNlbGVjdEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlnZW5TZWxlY3RFbGVt
ZW50KGRvY3VtZW50KSk7CisgICAgICAgIGF1dG8gZWxlbWVudCA9IGFkb3B0UmVmKCpuZXcgS2V5
Z2VuU2VsZWN0RWxlbWVudChkb2N1bWVudCkpOworICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHBzZXVkb0lkKCItd2Via2l0LWtleWdlbi1z
ZWxlY3QiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIGVsZW1l
bnQtPnNldFBzZXVkbyhwc2V1ZG9JZCk7CisgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgIH0K
IAogcHJpdmF0ZToKICAgICBLZXlnZW5TZWxlY3RFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICAgICAgOiBIVE1MU2VsZWN0RWxlbWVudChzZWxlY3RUYWcsIGRvY3VtZW50LCAwKQogICAg
IHsKLSAgICAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiBwc2V1ZG9JZCgiLXdlYmtpdC1rZXlnZW4tc2VsZWN0IiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgICAgICBzZXRQc2V1ZG8ocHNldWRvSWQpOwogICAgIH0KIAog
ICAgIFJlZjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVu
KERvY3VtZW50JiB0YXJnZXREb2N1bWVudCkgb3ZlcnJpZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
NjY5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDggKzE4MCw2IEBAIERhdGVUaW1lRWRpdEVsZW1l
bnQ6OkRhdGVUaW1lRWRpdEVsZW1lbnQKICAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9j
dW1lbnQpCiAgICAgLCBtX2VkaXRDb250cm9sT3duZXIobWFrZVdlYWtQdHIoZWRpdENvbnRyb2xP
d25lcikpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBkYXRlVGltZUVkaXRQc2V1ZG9JZCgiLXdlYmtpdC1kYXRldGltZS1lZGl0IiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHNldFBzZXVkbyhkYXRlVGltZUVk
aXRQc2V1ZG9JZCk7CiB9CiAKIERhdGVUaW1lRWRpdEVsZW1lbnQ6On5EYXRlVGltZUVkaXRFbGVt
ZW50KCkgPSBkZWZhdWx0OwpAQCAtMjIyLDcgKzIyMCwxMCBAQCBEYXRlVGltZUZpZWxkRWxlbWVu
dCogRGF0ZVRpbWVFZGl0RWxlbWVuCiAKIFJlZjxEYXRlVGltZUVkaXRFbGVtZW50PiBEYXRlVGlt
ZUVkaXRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBFZGl0Q29udHJvbE93bmVy
JiBlZGl0Q29udHJvbE93bmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGVUaW1l
RWRpdEVsZW1lbnQoZG9jdW1lbnQsIGVkaXRDb250cm9sT3duZXIpKTsKKyAgICBhdXRvIGVsZW1l
bnQgPSBhZG9wdFJlZigqbmV3IERhdGVUaW1lRWRpdEVsZW1lbnQoZG9jdW1lbnQsIGVkaXRDb250
cm9sT3duZXIpKTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IGRhdGVUaW1lRWRpdFBzZXVkb0lkKCItd2Via2l0LWRhdGV0aW1lLWVkaXQiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgZWxlbWVudC0+c2V0UHNldWRv
KGRhdGVUaW1lRWRpdFBzZXVkb0lkKTsKKyAgICByZXR1cm4gZWxlbWVudDsKIH0KIAogdm9pZCBE
YXRlVGltZUVkaXRFbGVtZW50OjpsYXlvdXQoY29uc3QgTGF5b3V0UGFyYW1ldGVycyYgbGF5b3V0
UGFyYW1ldGVycykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmll
bGRFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
RGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjY2OTcxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsMTMgKzQwLDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEYXRlVGlt
ZURheUYKIERhdGVUaW1lRGF5RmllbGRFbGVtZW50OjpEYXRlVGltZURheUZpZWxkRWxlbWVudChE
b2N1bWVudCYgZG9jdW1lbnQsIEZpZWxkT3duZXImIGZpZWxkT3duZXIpCiAgICAgOiBEYXRlVGlt
ZU51bWVyaWNGaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIsIFJhbmdlKDEsIDMxKSwg
Ii0tIl9zKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gZGF5UHNldWRvSWQoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1kYXktZmllbGQiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgaW5pdGlhbGl6ZShkYXlQc2V1
ZG9JZCk7CiB9CiAKIFJlZjxEYXRlVGltZURheUZpZWxkRWxlbWVudD4gRGF0ZVRpbWVEYXlGaWVs
ZEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEZpZWxkT3duZXImIGZpZWxkT3du
ZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0ZVRpbWVEYXlGaWVsZEVsZW1lbnQo
ZG9jdW1lbnQsIGZpZWxkT3duZXIpKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdFJlZigqbmV3
IERhdGVUaW1lRGF5RmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVyKSk7CisgICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBkYXlQc2V1ZG9J
ZCgiLXdlYmtpdC1kYXRldGltZS1lZGl0LWRheS1maWVsZCIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICBlbGVtZW50LT5pbml0aWFsaXplKGRheVBzZXVkb0lkKTsKKyAg
ICByZXR1cm4gZWxlbWVudDsKIH0KIAogdm9pZCBEYXRlVGltZURheUZpZWxkRWxlbWVudDo6cG9w
dWxhdGVEYXRlVGltZUZpZWxkc1N0YXRlKERhdGVUaW1lRmllbGRzU3RhdGUmIHN0YXRlKQpAQCAt
NjUsMTMgKzY2LDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEYXRlVGltZUhvdXIK
IERhdGVUaW1lSG91ckZpZWxkRWxlbWVudDo6RGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50KERvY3Vt
ZW50JiBkb2N1bWVudCwgRmllbGRPd25lciYgZmllbGRPd25lciwgaW50IG1pbmltdW0sIGludCBt
YXhpbXVtKQogICAgIDogRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVs
ZE93bmVyLCBSYW5nZShtaW5pbXVtLCBtYXhpbXVtKSwgIi0tIl9zKQogewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaG91clBzZXVkb0lkKCIt
d2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVsZCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKLSAgICBpbml0aWFsaXplKGhvdXJQc2V1ZG9JZCk7CiB9CiAKIFJlZjxEYXRl
VGltZUhvdXJGaWVsZEVsZW1lbnQ+IERhdGVUaW1lSG91ckZpZWxkRWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgRmllbGRPd25lciYgZmllbGRPd25lciwgaW50IG1pbmltdW0sIGlu
dCBtYXhpbXVtKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGVUaW1lSG91ckZpZWxk
RWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lciwgbWluaW11bSwgbWF4aW11bSkpOworICAgIGF1
dG8gZWxlbWVudCA9IGFkb3B0UmVmKCpuZXcgRGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50KGRvY3Vt
ZW50LCBmaWVsZE93bmVyLCBtaW5pbXVtLCBtYXhpbXVtKSk7CisgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBob3VyUHNldWRvSWQoIi13ZWJraXQt
ZGF0ZXRpbWUtZWRpdC1ob3VyLWZpZWxkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIGVsZW1lbnQtPmluaXRpYWxpemUoaG91clBzZXVkb0lkKTsKKyAgICByZXR1cm4g
ZWxlbWVudDsKIH0KIAogdm9pZCBEYXRlVGltZUhvdXJGaWVsZEVsZW1lbnQ6OnBvcHVsYXRlRGF0
ZVRpbWVGaWVsZHNTdGF0ZShEYXRlVGltZUZpZWxkc1N0YXRlJiBzdGF0ZSkKQEAgLTEyOSwxMyAr
MTMxLDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEYXRlVGltZU1lcmkKIERhdGVU
aW1lTWVyaWRpZW1GaWVsZEVsZW1lbnQ6OkRhdGVUaW1lTWVyaWRpZW1GaWVsZEVsZW1lbnQoRG9j
dW1lbnQmIGRvY3VtZW50LCBGaWVsZE93bmVyJiBmaWVsZE93bmVyLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgbGFiZWxzKQogICAgIDogRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudChkb2N1bWVu
dCwgZmllbGRPd25lciwgbGFiZWxzKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbWVyaWRpZW1Qc2V1ZG9JZCgiLXdlYmtpdC1kYXRldGlt
ZS1lZGl0LW1lcmlkaWVtLWZpZWxkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotICAgIGluaXRpYWxpemUobWVyaWRpZW1Qc2V1ZG9JZCk7CiB9CiAKIFJlZjxEYXRlVGltZU1l
cmlkaWVtRmllbGRFbGVtZW50PiBEYXRlVGltZU1lcmlkaWVtRmllbGRFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBGaWVsZE93bmVyJiBmaWVsZE93bmVyLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgbGFiZWxzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGVUaW1lTWVy
aWRpZW1GaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIsIGxhYmVscykpOworICAgIGF1
dG8gZWxlbWVudCA9IGFkb3B0UmVmKCpuZXcgRGF0ZVRpbWVNZXJpZGllbUZpZWxkRWxlbWVudChk
b2N1bWVudCwgZmllbGRPd25lciwgbGFiZWxzKSk7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtZXJpZGllbVBzZXVkb0lkKCItd2Via2l0LWRh
dGV0aW1lLWVkaXQtbWVyaWRpZW0tZmllbGQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgZWxlbWVudC0+aW5pdGlhbGl6ZShtZXJpZGllbVBzZXVkb0lkKTsKKyAgICBy
ZXR1cm4gZWxlbWVudDsKIH0KIAogdm9pZCBEYXRlVGltZU1lcmlkaWVtRmllbGRFbGVtZW50Ojpw
b3B1bGF0ZURhdGVUaW1lRmllbGRzU3RhdGUoRGF0ZVRpbWVGaWVsZHNTdGF0ZSYgc3RhdGUpCkBA
IC0xNTQsMTMgKzE1NywxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGF0ZVRpbWVN
aWxsCiBEYXRlVGltZU1pbGxpc2Vjb25kRmllbGRFbGVtZW50OjpEYXRlVGltZU1pbGxpc2Vjb25k
RmllbGRFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgRmllbGRPd25lciYgZmllbGRPd25lcikK
ICAgICA6IERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lciwg
UmFuZ2UoMCwgOTk5KSwgIi0tIl9zKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbWlsbGlzZWNvbmRQc2V1ZG9JZCgiLXdlYmtpdC1kYXRl
dGltZS1lZGl0LW1pbGxpc2Vjb25kLWZpZWxkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgIGluaXRpYWxpemUobWlsbGlzZWNvbmRQc2V1ZG9JZCk7CiB9CiAKIFJlZjxE
YXRlVGltZU1pbGxpc2Vjb25kRmllbGRFbGVtZW50PiBEYXRlVGltZU1pbGxpc2Vjb25kRmllbGRF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBGaWVsZE93bmVyJiBmaWVsZE93bmVy
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGVUaW1lTWlsbGlzZWNvbmRGaWVsZEVs
ZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIpKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdFJl
ZigqbmV3IERhdGVUaW1lTWlsbGlzZWNvbmRGaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3du
ZXIpKTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IG1pbGxpc2Vjb25kUHNldWRvSWQoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taWxsaXNlY29u
ZC1maWVsZCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBlbGVtZW50
LT5pbml0aWFsaXplKG1pbGxpc2Vjb25kUHNldWRvSWQpOworICAgIHJldHVybiBlbGVtZW50Owog
fQogCiB2b2lkIERhdGVUaW1lTWlsbGlzZWNvbmRGaWVsZEVsZW1lbnQ6OnBvcHVsYXRlRGF0ZVRp
bWVGaWVsZHNTdGF0ZShEYXRlVGltZUZpZWxkc1N0YXRlJiBzdGF0ZSkKQEAgLTE3OSwxMyArMTgz
LDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEYXRlVGltZU1pbnUKIERhdGVUaW1l
TWludXRlRmllbGRFbGVtZW50OjpEYXRlVGltZU1pbnV0ZUZpZWxkRWxlbWVudChEb2N1bWVudCYg
ZG9jdW1lbnQsIEZpZWxkT3duZXImIGZpZWxkT3duZXIpCiAgICAgOiBEYXRlVGltZU51bWVyaWNG
aWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIsIFJhbmdlKDAsIDU5KSwgIi0tIl9zKQog
ewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
bWludXRlUHNldWRvSWQoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taW51dGUtZmllbGQiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgaW5pdGlhbGl6ZShtaW51dGVQc2V1
ZG9JZCk7CiB9CiAKIFJlZjxEYXRlVGltZU1pbnV0ZUZpZWxkRWxlbWVudD4gRGF0ZVRpbWVNaW51
dGVGaWVsZEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEZpZWxkT3duZXImIGZp
ZWxkT3duZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0ZVRpbWVNaW51dGVGaWVs
ZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIpKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBhZG9w
dFJlZigqbmV3IERhdGVUaW1lTWludXRlRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVy
KSk7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiBtaW51dGVQc2V1ZG9JZCgiLXdlYmtpdC1kYXRldGltZS1lZGl0LW1pbnV0ZS1maWVsZCIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBlbGVtZW50LT5pbml0aWFsaXpl
KG1pbnV0ZVBzZXVkb0lkKTsKKyAgICByZXR1cm4gZWxlbWVudDsKIH0KIAogdm9pZCBEYXRlVGlt
ZU1pbnV0ZUZpZWxkRWxlbWVudDo6cG9wdWxhdGVEYXRlVGltZUZpZWxkc1N0YXRlKERhdGVUaW1l
RmllbGRzU3RhdGUmIHN0YXRlKQpAQCAtMjA0LDEzICsyMDksMTQgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKERhdGVUaW1lTW9udAogRGF0ZVRpbWVNb250aEZpZWxkRWxlbWVudDo6RGF0
ZVRpbWVNb250aEZpZWxkRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIEZpZWxkT3duZXImIGZp
ZWxkT3duZXIpCiAgICAgOiBEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZp
ZWxkT3duZXIsIFJhbmdlKDEsIDEyKSwgIi0tIl9zKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbW9udGhQc2V1ZG9JZCgiLXdlYmtpdC1k
YXRldGltZS1lZGl0LW1vbnRoLWZpZWxkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIGluaXRpYWxpemUobW9udGhQc2V1ZG9JZCk7CiB9CiAKIFJlZjxEYXRlVGltZU1v
bnRoRmllbGRFbGVtZW50PiBEYXRlVGltZU1vbnRoRmllbGRFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBGaWVsZE93bmVyJiBmaWVsZE93bmVyKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGVUaW1lTW9udGhGaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIp
KTsKKyAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdFJlZigqbmV3IERhdGVUaW1lTW9udGhGaWVsZEVs
ZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIpKTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vbnRoUHNldWRvSWQoIi13ZWJraXQtZGF0ZXRp
bWUtZWRpdC1tb250aC1maWVsZCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICBlbGVtZW50LT5pbml0aWFsaXplKG1vbnRoUHNldWRvSWQpOworICAgIHJldHVybiBlbGVt
ZW50OwogfQogCiB2b2lkIERhdGVUaW1lTW9udGhGaWVsZEVsZW1lbnQ6OnBvcHVsYXRlRGF0ZVRp
bWVGaWVsZHNTdGF0ZShEYXRlVGltZUZpZWxkc1N0YXRlJiBzdGF0ZSkKQEAgLTIzMCwxMyArMjM2
LDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEYXRlVGltZVNlY28KIERhdGVUaW1l
U2Vjb25kRmllbGRFbGVtZW50OjpEYXRlVGltZVNlY29uZEZpZWxkRWxlbWVudChEb2N1bWVudCYg
ZG9jdW1lbnQsIEZpZWxkT3duZXImIGZpZWxkT3duZXIpCiAgICAgOiBEYXRlVGltZU51bWVyaWNG
aWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIsIFJhbmdlKDAsIDU5KSwgIi0tIl9zKQog
ewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
c2Vjb25kUHNldWRvSWQoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1zZWNvbmQtZmllbGQiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgaW5pdGlhbGl6ZShzZWNvbmRQc2V1
ZG9JZCk7CiB9CiAKIFJlZjxEYXRlVGltZVNlY29uZEZpZWxkRWxlbWVudD4gRGF0ZVRpbWVTZWNv
bmRGaWVsZEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEZpZWxkT3duZXImIGZp
ZWxkT3duZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0ZVRpbWVTZWNvbmRGaWVs
ZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIpKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBhZG9w
dFJlZigqbmV3IERhdGVUaW1lU2Vjb25kRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVy
KSk7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiBzZWNvbmRQc2V1ZG9JZCgiLXdlYmtpdC1kYXRldGltZS1lZGl0LXNlY29uZC1maWVsZCIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBlbGVtZW50LT5pbml0aWFsaXpl
KHNlY29uZFBzZXVkb0lkKTsKKyAgICByZXR1cm4gZWxlbWVudDsKIH0KIAogdm9pZCBEYXRlVGlt
ZVNlY29uZEZpZWxkRWxlbWVudDo6cG9wdWxhdGVEYXRlVGltZUZpZWxkc1N0YXRlKERhdGVUaW1l
RmllbGRzU3RhdGUmIHN0YXRlKQpAQCAtMjU1LDEzICsyNjIsMTQgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKERhdGVUaW1lU3ltYgogRGF0ZVRpbWVTeW1ib2xpY01vbnRoRmllbGRFbGVt
ZW50OjpEYXRlVGltZVN5bWJvbGljTW9udGhGaWVsZEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50
LCBGaWVsZE93bmVyJiBmaWVsZE93bmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzKQog
ICAgIDogRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lciwg
bGFiZWxzKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gbW9udGhQc2V1ZG9JZCgiLXdlYmtpdC1kYXRldGltZS1lZGl0LW1vbnRoLWZpZWxk
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGluaXRpYWxpemUobW9u
dGhQc2V1ZG9JZCk7CiB9CiAKIFJlZjxEYXRlVGltZVN5bWJvbGljTW9udGhGaWVsZEVsZW1lbnQ+
IERhdGVUaW1lU3ltYm9saWNNb250aEZpZWxkRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgRmllbGRPd25lciYgZmllbGRPd25lciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVs
cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRlVGltZVN5bWJvbGljTW9udGhGaWVs
ZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIsIGxhYmVscykpOworICAgIGF1dG8gZWxlbWVu
dCA9IGFkb3B0UmVmKCpuZXcgRGF0ZVRpbWVTeW1ib2xpY01vbnRoRmllbGRFbGVtZW50KGRvY3Vt
ZW50LCBmaWVsZE93bmVyLCBsYWJlbHMpKTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1vbnRoUHNldWRvSWQoIi13ZWJraXQtZGF0ZXRpbWUt
ZWRpdC1tb250aC1maWVsZCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAg
ICBlbGVtZW50LT5pbml0aWFsaXplKG1vbnRoUHNldWRvSWQpOworICAgIHJldHVybiBlbGVtZW50
OwogfQogCiB2b2lkIERhdGVUaW1lU3ltYm9saWNNb250aEZpZWxkRWxlbWVudDo6cG9wdWxhdGVE
YXRlVGltZUZpZWxkc1N0YXRlKERhdGVUaW1lRmllbGRzU3RhdGUmIHN0YXRlKQpAQCAtMjgwLDEz
ICsyODgsMTQgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERhdGVUaW1lWWVhcgogRGF0
ZVRpbWVZZWFyRmllbGRFbGVtZW50OjpEYXRlVGltZVllYXJGaWVsZEVsZW1lbnQoRG9jdW1lbnQm
IGRvY3VtZW50LCBGaWVsZE93bmVyJiBmaWVsZE93bmVyKQogICAgIDogRGF0ZVRpbWVOdW1lcmlj
RmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVyLCBSYW5nZShEYXRlQ29tcG9uZW50czo6
bWluaW11bVllYXIoKSwgRGF0ZUNvbXBvbmVudHM6Om1heGltdW1ZZWFyKCkpLCAiLS0tLSJfcykK
IHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IHllYXJQc2V1ZG9JZCgiLXdlYmtpdC1kYXRldGltZS1lZGl0LXllYXItZmllbGQiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgaW5pdGlhbGl6ZSh5ZWFyUHNldWRvSWQp
OwogfQogCiBSZWY8RGF0ZVRpbWVZZWFyRmllbGRFbGVtZW50PiBEYXRlVGltZVllYXJGaWVsZEVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEZpZWxkT3duZXImIGZpZWxkT3duZXIp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0ZVRpbWVZZWFyRmllbGRFbGVtZW50KGRv
Y3VtZW50LCBmaWVsZE93bmVyKSk7CisgICAgYXV0byBlbGVtZW50ID0gYWRvcHRSZWYoKm5ldyBE
YXRlVGltZVllYXJGaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIpKTsKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHllYXJQc2V1ZG9J
ZCgiLXdlYmtpdC1kYXRldGltZS1lZGl0LXllYXItZmllbGQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgZWxlbWVudC0+aW5pdGlhbGl6ZSh5ZWFyUHNldWRvSWQpOwor
ICAgIHJldHVybiBlbGVtZW50OwogfQogCiB2b2lkIERhdGVUaW1lWWVhckZpZWxkRWxlbWVudDo6
cG9wdWxhdGVEYXRlVGltZUZpZWxkc1N0YXRlKERhdGVUaW1lRmllbGRzU3RhdGUmIHN0YXRlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJD
b250cm9sLmNwcAkocmV2aXNpb24gMjY2OTcxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNCArNDMs
MTUgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERldGFpbHNNYXJrZQogCiBSZWY8RGV0
YWlsc01hcmtlckNvbnRyb2w+IERldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERldGFpbHNNYXJrZXJDb250
cm9sKGRvY3VtZW50KSk7CisgICAgYXV0byBjb250cm9sID0gYWRvcHRSZWYoKm5ldyBEZXRhaWxz
TWFya2VyQ29udHJvbChkb2N1bWVudCkpOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0RGV0YWlsc01hcmtlck5hbWUoIi13ZWJraXQt
ZGV0YWlscy1tYXJrZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
Y29udHJvbC0+c2V0UHNldWRvKHdlYmtpdERldGFpbHNNYXJrZXJOYW1lKTsKKyAgICByZXR1cm4g
Y29udHJvbDsKIH0KIAogRGV0YWlsc01hcmtlckNvbnRyb2w6OkRldGFpbHNNYXJrZXJDb250cm9s
KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxEaXZFbGVtZW50KEhUTUxOYW1lczo6ZGl2
VGFnLCBkb2N1bWVudCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IHdlYmtpdERldGFpbHNNYXJrZXJOYW1lKCItd2Via2l0LWRldGFpbHMt
bWFya2VyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHNldFBzZXVk
byh3ZWJraXREZXRhaWxzTWFya2VyTmFtZSk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjY2OTcxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDggQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIFJlZjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PiBNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCiB7CiAgICAgYXV0byBlbGVtZW50ID0g
YWRvcHRSZWYoKm5ldyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KGRvY3Vt
ZW50LCBtZWRpYUVsZW1lbnQpKTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdE1lZGlhVGV4dFRyYWNrQ29udGFpbmVyTmFtZSgiLXdl
YmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBlbGVtZW50LT5zZXRQc2V1ZG8od2Via2l0TWVkaWFUZXh0VHJhY2tD
b250YWluZXJOYW1lKTsKICAgICBlbGVtZW50LT5oaWRlKCk7CiAgICAgcmV0dXJuIGVsZW1lbnQ7
CiB9CkBAIC03NSw4ICs3Nyw2IEBAIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1l
bnQ6Ok0KICAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpCiAgICAgLCBtX21l
ZGlhRWxlbWVudChtYWtlV2Vha1B0cigmZWxlbWVudCkpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRNZWRpYVRleHRUcmFja0Nv
bnRhaW5lck5hbWUoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc2V0UHNldWRvKHdlYmtpdE1lZGlhVGV4
dFRyYWNrQ29udGFpbmVyTmFtZSk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDI2Njk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTQgKzU1LDE1IEBAIGlubGluZSBTcGlu
QnV0dG9uRWxlbWVudDo6U3BpbkJ1dHRvbkVsZW0KICAgICAsIG1fcHJlc3NTdGFydGluZ1N0YXRl
KEluZGV0ZXJtaW5hdGUpCiAgICAgLCBtX3JlcGVhdGluZ1RpbWVyKCp0aGlzLCAmU3BpbkJ1dHRv
bkVsZW1lbnQ6OnJlcGVhdGluZ1RpbWVyRmlyZWQpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRJbm5lclNwaW5CdXR0b25OYW1l
KCItd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwotICAgIHNl
dFBzZXVkbyh3ZWJraXRJbm5lclNwaW5CdXR0b25OYW1lKTsKIH0KIAogUmVmPFNwaW5CdXR0b25F
bGVtZW50PiBTcGluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgU3Bp
bkJ1dHRvbk93bmVyJiBzcGluQnV0dG9uT3duZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3BpbkJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIHNwaW5CdXR0b25Pd25lcikpOworICAgIGF1
dG8gZWxlbWVudCA9IGFkb3B0UmVmKCpuZXcgU3BpbkJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIHNw
aW5CdXR0b25Pd25lcikpOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gd2Via2l0SW5uZXJTcGluQnV0dG9uTmFtZSgiLXdlYmtpdC1pbm5lci1z
cGluLWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBlbGVt
ZW50LT5zZXRQc2V1ZG8od2Via2l0SW5uZXJTcGluQnV0dG9uTmFtZSk7CisgICAgcmV0dXJuIGVs
ZW1lbnQ7CiB9CiAKIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OndpbGxEZXRhY2hSZW5kZXJlcnMo
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwCShyZXZpc2lvbiAyNjY5NzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODIsMTQgKzE4MiwxNSBAQCBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0
Q29udHJvCiBpbmxpbmUgVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OlRleHRDb250cm9s
UGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxEaXZFbGVt
ZW50KGRpdlRhZywgZG9jdW1lbnQpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBwbGFjZWhvbGRlck5hbWUoInBsYWNlaG9sZGVyIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHNldFBzZXVkbyhwbGFjZWhvbGRl
ck5hbWUpOwogICAgIHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogfQogCiBS
ZWY8VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IFRleHRDb250cm9sUGxhY2Vob2xkZXJF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgYXV0
byBlbGVtZW50ID0gYWRvcHRSZWYoKm5ldyBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChk
b2N1bWVudCkpOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gcGxhY2Vob2xkZXJOYW1lKCJwbGFjZWhvbGRlciIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICBlbGVtZW50LT5zZXRQc2V1ZG8ocGxhY2Vob2xkZXJOYW1l
KTsKKyAgICByZXR1cm4gZWxlbWVudDsKIH0KIAogT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHls
ZT4gVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0
U3R5bGUpCkBAIC0yNTUsMjEgKzI1NiwyMCBAQCBib29sIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRv
bkVsZW1lbnQ6OndpCiBpbmxpbmUgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogSFRN
TERpdkVsZW1lbnQoZGl2VGFnLCBkb2N1bWVudCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFNlYXJjaENhbmNlbEJ1dHRvbk5h
bWUoIi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBidXR0b25OYW1lKCJidXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7Ci0KICAgICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsKLQot
ICAgIHNldFBzZXVkbyh3ZWJraXRTZWFyY2hDYW5jZWxCdXR0b25OYW1lKTsKLSNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFy
aWFfbGFiZWxBdHRyLCBBWFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uVGV4dCgpKTsKLSNlbmRpZgot
ICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocm9sZUF0dHIsIGJ1dHRvbk5h
bWUpOwogfQogCiBSZWY8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50PiBTZWFyY2hGaWVs
ZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50KGRvY3Vt
ZW50KSk7CisgICAgYXV0byBlbGVtZW50ID0gYWRvcHRSZWYoKm5ldyBTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFNlYXJjaENhbmNlbEJ1dHRvbk5hbWUoIi13
ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiBidXR0b25OYW1lKCJidXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgZWxlbWVudC0+c2V0UHNldWRvKHdlYmtpdFNlYXJjaENhbmNlbEJ1dHRvbk5hbWUp
OworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9sYWJlbEF0dHIsIEFYU2VhcmNoRmllbGRDYW5jZWxC
dXR0b25UZXh0KCkpOworI2VuZGlmCisgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihyb2xlQXR0ciwgYnV0dG9uTmFtZSk7CisgICAgcmV0dXJuIGVsZW1lbnQ7
CiB9CiAKIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNlYXJjaEZpZWxkQ2FuY2VsQnV0
dG9uRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5jcHAJKHJldmlzaW9u
IDI2Njk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1YmVFbWJlZFNoYWRv
d0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNiArMzMsMTcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoWW91VHViZUVtYmVkU2hh
ZG93RWxlbWVudCk7CiAKLVJlZjxZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50PiBZb3VUdWJlRW1i
ZWRTaGFkb3dFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvYykKK1JlZjxZb3VUdWJlRW1iZWRT
aGFkb3dFbGVtZW50PiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFlvdVR1YmVFbWJlZFNoYWRv
d0VsZW1lbnQoZG9jKSk7CisgICAgYXV0byBlbGVtZW50ID0gYWRvcHRSZWYoKm5ldyBZb3VUdWJl
RW1iZWRTaGFkb3dFbGVtZW50KGRvY3VtZW50KSk7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRQbHVnaW5SZXBsYWNlbWVudE5hbWUo
Ii13ZWJraXQtcGx1Z2luLXJlcGxhY2VtZW50IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIGVsZW1lbnQtPnNldFBzZXVkbyh3ZWJraXRQbHVnaW5SZXBsYWNlbWVudE5h
bWUpOworICAgIHJldHVybiBlbGVtZW50OwogfQogCiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50
OjpZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhU
TUxEaXZFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKIHsKLSAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFBsdWdpblJl
cGxhY2VtZW50TmFtZSgiLXdlYmtpdC1wbHVnaW4tcmVwbGFjZW1lbnQiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc2V0UHNldWRvKHdlYmtpdFBsdWdpblJlcGxhY2Vt
ZW50TmFtZSk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBZb3VUdWJlRW1iZWRTaGFk
b3dFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5jcHAJKHJldmlzaW9uIDI2Njk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTEgKzkyLDIy
IEBAIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBjdWVCYWNrZ3JvdW4KICAgICByZXR1cm4g
Y3VlQmFja2dyb3VuZFRhZzsKIH0KIAorUmVmPFRleHRUcmFja0N1ZUJveD4gVGV4dFRyYWNrQ3Vl
Qm94OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDdWUmIGN1ZSkKK3sKKyAg
ICBhdXRvIGJveCA9IGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlQm94KGRvY3VtZW50LCBjdWUp
KTsKKyAgICBib3gtPmluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gYm94OworfQorCiBUZXh0VHJh
Y2tDdWVCb3g6OlRleHRUcmFja0N1ZUJveChEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0N1
ZSYgY3VlKQogICAgIDogSFRNTEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQog
ICAgICwgbV9jdWUobWFrZVdlYWtQdHIoY3VlKSkKIHsKICAgICBzZXRIYXNDdXN0b21TdHlsZVJl
c29sdmVDYWxsYmFja3MoKTsKK30KKwordm9pZCBUZXh0VHJhY2tDdWVCb3g6OmluaXRpYWxpemUo
KQorewogICAgIHNldFBzZXVkbyhUZXh0VHJhY2tDdWU6OmN1ZUJveFNoYWRvd1BzZXVkb0lkKCkp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgJKHJl
dmlzaW9uIDI2Njk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE1ICs0NiwxNCBAQCBjbGFzcyBUZXh0VHJhY2tDdWU7
CiBjbGFzcyBUZXh0VHJhY2tDdWVCb3ggOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoVGV4dFRyYWNrQ3VlQm94KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFRleHRUcmFja0N1ZUJveD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNr
Q3VlJiBjdWUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tD
dWVCb3goZG9jdW1lbnQsIGN1ZSkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPFRleHRUcmFja0N1
ZUJveD4gY3JlYXRlKERvY3VtZW50JiwgVGV4dFRyYWNrQ3VlJik7CiAKICAgICBUZXh0VHJhY2tD
dWUqIGdldEN1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhcHBseUNTU1Byb3BlcnRpZXMo
Y29uc3QgSW50U2l6ZSYpIHsgfQogCiBwcm90ZWN0ZWQ6CisgICAgdm9pZCBpbml0aWFsaXplKCk7
CisKICAgICBUZXh0VHJhY2tDdWVCb3goRG9jdW1lbnQmLCBUZXh0VHJhY2tDdWUmKTsKICAgICB+
VGV4dFRyYWNrQ3VlQm94KCkgeyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAkocmV2aXNpb24gMjY2OTcxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsMTAgKzUyLDcgQEAgc3RhdGljIGNvbnN0ZXhwciBpbnQgREVGQVVMVENBUFRJ
T05GT05UUwogY2xhc3MgVGV4dFRyYWNrQ3VlR2VuZXJpY0JveEVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgVlRUQ3VlQm94IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lOTElORShUZXh0VHJh
Y2tDdWVHZW5lcmljQm94RWxlbWVudCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUZXh0VHJh
Y2tDdWVHZW5lcmljQm94RWxlbWVudD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRy
YWNrQ3VlR2VuZXJpYyYgY3VlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VGV4dFRyYWNrQ3VlR2VuZXJpY0JveEVsZW1lbnQoZG9jdW1lbnQsIGN1ZSkpOwotICAgIH0KKyAg
ICBzdGF0aWMgUmVmPFRleHRUcmFja0N1ZUdlbmVyaWNCb3hFbGVtZW50PiBjcmVhdGUoRG9jdW1l
bnQmLCBUZXh0VHJhY2tDdWVHZW5lcmljJik7CiAgICAgCiAgICAgdm9pZCBhcHBseUNTU1Byb3Bl
cnRpZXMoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIApAQCAtNjMsNiArNjAsMTMgQEAg
cHJpdmF0ZToKICAgICBUZXh0VHJhY2tDdWVHZW5lcmljQm94RWxlbWVudChEb2N1bWVudCYsIFZU
VEN1ZSYpOwogfTsKIAorUmVmPFRleHRUcmFja0N1ZUdlbmVyaWNCb3hFbGVtZW50PiBUZXh0VHJh
Y2tDdWVHZW5lcmljQm94RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRy
YWNrQ3VlR2VuZXJpYyYgY3VlKQoreworICAgIGF1dG8gYm94ID0gYWRvcHRSZWYoKm5ldyBUZXh0
VHJhY2tDdWVHZW5lcmljQm94RWxlbWVudChkb2N1bWVudCwgY3VlKSk7CisgICAgYm94LT5pbml0
aWFsaXplKCk7CisgICAgcmV0dXJuIGJveDsKK30KKwogVGV4dFRyYWNrQ3VlR2VuZXJpY0JveEVs
ZW1lbnQ6OlRleHRUcmFja0N1ZUdlbmVyaWNCb3hFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwg
VlRUQ3VlJiBjdWUpCiAgICAgOiBWVFRDdWVCb3goZG9jdW1lbnQsIGN1ZSkKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAJKHJldmlzaW9uIDI2Njk3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYg
KzEyNSwxMyBAQCBzdGF0aWMgY29uc3QgU3RyaW5nJiB2ZXJ0aWNhbEdyb3dpbmdSaWdoCiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorUmVmPFZUVEN1ZUJveD4gVlRUQ3VlQm94
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWVFRDdWUmIGN1ZSkKK3sKKyAgICBhdXRvIGJv
eCA9IGFkb3B0UmVmKCpuZXcgVlRUQ3VlQm94KGRvY3VtZW50LCBjdWUpKTsKKyAgICBib3gtPmlu
aXRpYWxpemUoKTsKKyAgICByZXR1cm4gYm94OworfQorCiBWVFRDdWVCb3g6OlZUVEN1ZUJveChE
b2N1bWVudCYgZG9jdW1lbnQsIFZUVEN1ZSYgY3VlKQogICAgIDogVGV4dFRyYWNrQ3VlQm94KGRv
Y3VtZW50LCBjdWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgJKHJldmlz
aW9uIDI2Njk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDEwICs1Miw3IEBAIGNsYXNzIFdlYlZUVEN1ZURhdGE7CiBjbGFzcyBW
VFRDdWVCb3ggOiBwdWJsaWMgVGV4dFRyYWNrQ3VlQm94IHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFZUVEN1ZUJveCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxWVFRDdWVCb3g+IGNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFZUVEN1ZSYgY3VlKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVlRUQ3VlQm94KGRvY3VtZW50LCBjdWUpKTsKLSAgICB9CisgICAg
c3RhdGljIFJlZjxWVFRDdWVCb3g+IGNyZWF0ZShEb2N1bWVudCYsIFZUVEN1ZSYpOwogCiAgICAg
dm9pZCBhcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogCg==
</data>
<flag name="review"
          id="424282"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>