<?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>93217</bug_id>
          
          <creation_ts>2012-08-05 18:33:38 -0700</creation_ts>
          <short_desc>[V8] Replace v8::Undefined() in custom bindings with v8Undefined()</short_desc>
          <delta_ts>2012-08-09 01:48:09 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>93095</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>687700</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-05 18:33:38 -0700</bug_when>
    <thetext>We should use v8Undefined() everywhere in V8 bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687701</commentid>
    <comment_count>1</comment_count>
      <attachid>156581</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-05 18:34:56 -0700</bug_when>
    <thetext>Created attachment 156581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689474</commentid>
    <comment_count>2</comment_count>
      <attachid>156581</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-07 15:22:07 -0700</bug_when>
    <thetext>Comment on attachment 156581
Patch

OK.  LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689547</commentid>
    <comment_count>3</comment_count>
      <attachid>156581</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 16:01:31 -0700</bug_when>
    <thetext>Comment on attachment 156581
Patch

Rejecting attachment 156581 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
v8/custom/V8WebGLRenderingContextCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8WorkerContextCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8WorkerCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8XSLTProcessorCustom.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Eric Seidel&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13446868</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689677</commentid>
    <comment_count>4</comment_count>
      <attachid>157062</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 17:56:40 -0700</bug_when>
    <thetext>Created attachment 157062
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689681</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 17:57:45 -0700</bug_when>
    <thetext>Let me wait for landing the patch until we complete the discussion in bug 93218.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691354</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-09 01:47:59 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Let me wait for landing the patch until we complete the discussion in bug 93218.

Per discussion in bug 93218, we decided to use v8Undefined(Isolate* isolate=0) instead of v8Undefined(). Marking WONTFIX.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156581</attachid>
            <date>2012-08-05 18:34:56 -0700</date>
            <delta_ts>2012-08-09 01:48:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93217-20120806103432.patch</filename>
            <type>text/plain</type>
            <size>64549</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRkNWZhMDE4ODQ5NDhl
MjgyM2NiMjhlMjQxYjZhNDVhODM0NDY4OS4uNTlhZTg5ODdmYjRlNWM5NGMyOWNmNWQ3YzVlNDQy
NDI3OTlhM2NkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAxMi0wOC0wNSAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBSZXBsYWNl
IHY4OjpVbmRlZmluZWQoKSBpbiBjdXN0b20gYmluZGluZ3Mgd2l0aCB2OFVuZGVmaW5lZCgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzIxNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHNob3VsZCB1
c2UgdjhVbmRlZmluZWQoKSBldmVyeXdoZXJlIGluIFY4IGJpbmRpbmdzLgorCisgICAgICAgIE5v
IHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFdl
YkdMQXJyYXlIZWxwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdN
YWNyb3MuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDbGlwYm9hcmQ6OmNsZWFyRGF0YUNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4Q2xpcGJvYXJkOjpzZXREcmFnSW1hZ2VDYWxsYmFjayk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOENvbnNvbGU6OnByb2ZpbGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpWOENvbnNvbGU6OnByb2ZpbGVFbmRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01G
b3JtRGF0YTo6YXBwZW5kQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dTZXRUaW1lb3V0
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6ZXZlbnRBY2Nlc3NvckdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lckNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVy
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6cmVsZWFzZUV2ZW50c0NhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpjYXB0dXJlRXZlbnRzQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6RGlhbG9nSGFuZGxlcjo6cmV0dXJuVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZ0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93OjpvcGVuQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEb2N1
bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEV2ZW50Ojpk
YXRhVHJhbnNmZXJBY2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEV2ZW50Ojpj
bGlwYm9hcmREYXRhQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4R2VvbG9jYXRp
b246OmdldEN1cnJlbnRQb3NpdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R2Vv
bG9jYXRpb246OndhdGNoUG9zaXRpb25DYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0
ZW1DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxBbGxDb2xsZWN0aW9uOjpjYWxs
QXNGdW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
Q29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxDb2xsZWN0aW9u
OjpuYW1lZEl0ZW1DYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50Ojp3
cml0ZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50Ojp3cml0ZWxu
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6Om9wZW5DYWxsYmFj
ayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVk
UHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1
dEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MSW5wdXRFbGVtZW50
OjpzZXRTZWxlY3Rpb25SYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZW1vdmVFbGVtZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0
b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SGlzdG9yeTo6cHVzaFN0YXRlQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhIaXN0b3J5OjpyZXBsYWNlU3RhdGVDYWxsYmFj
ayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOElE
QktleUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE9iamVjdENhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0cnVj
dG9yTmFtZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0
Ojppc0hUTUxBbGxDb2xsZWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmpl
Y3RlZFNjcmlwdEhvc3Q6OnR5cGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVj
dGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25EZXRhaWxzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJZENhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpzdG9yYWdlSWRDYWxs
YmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRI
b3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0
Ojpwb3J0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhJbnNwZWN0b3JGcm9udGVuZEhv
c3Q6OnNob3dDb250ZXh0TWVudUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Omhpc3RvZ3Jh
bUVudW1lcmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhMb2NhdGlvbjo6dG9TdHJpbmdDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOE1lc3NhZ2VDaGFubmVsOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4Tm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0UGVybWlzc2lvbkNhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4U1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWxDYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6dmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYpOgorICAgICAgICAoV2ViQ29yZTo6dW5p
Zm9ybUhlbHBlcmkpOgorICAgICAgICAoV2ViQ29yZTo6dW5pZm9ybU1hdHJpeEhlbHBlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXRUaW1lb3V0T3JJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHNDYWxsYmFjayk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhh
bmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4WE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhYTUxI
dHRwUmVxdWVzdDo6b3BlbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4WE1MSHR0cFJl
cXVlc3Q6OnNlbmRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WFNM
VFByb2Nlc3NvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhTTFRQcm9jZXNzb3I6
OmltcG9ydFN0eWxlc2hlZXRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFhTTFRQcm9j
ZXNzb3I6OnRyYW5zZm9ybVRvRnJhZ21lbnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpW
OFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvRG9jdW1lbnRDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFhTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4WFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VjhYU0xUUHJvY2Vzc29yOjpyZW1vdmVQYXJhbWV0ZXJDYWxsYmFjayk6CisK
IDIwMTItMDgtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAg
IERvbid0IHJldXNlIGNhY2hlZCBzdHlsZXNoZWV0IHdpdGggZmFpbGVkIG9yIGNhbmNlbGVkIHJl
c291cmNlIGxvYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCmluZGV4IDczY2E1YWUwMTA3MzI5NzU5
YWUwM2NhYjIzMzQ1YzY3ZmE5OGQ4MjcuLjkwNzk0N2I4YzY0NGU0MDQxODYwZTNmNjg3ZGY3OTg3
NGI2YzZiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCkBAIC0yMTYsNyArMjE2LDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHNldFdlYkdMQXJyYXlIZWxwZXIoY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKICAgICAgICAgICAgIG9mZnNldCA9IHRvVUludDMyKGFyZ3NbMV0pOwogICAgICAg
ICBpZiAoIWltcGwtPnNldChzcmMsIG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gVjhQcm94
eTo6c2V0RE9NRXhjZXB0aW9uKElOREVYX1NJWkVfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0g
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOwogICAgIH0KIAogICAgIGlmIChhcmdzWzBdLT5Jc09iamVjdCgpKSB7CkBAIC0yMzcsNyAr
MjM3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldFdlYkdMQXJyYXlIZWxwZXIoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKICAgICAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKykKICAgICAgICAgICAgICAgICBpbXBsLT5zZXQob2Zmc2V0ICsgaSwgYXJy
YXktPkdldChpKS0+TnVtYmVyVmFsdWUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSLCBhcmdzLkdldElz
b2xhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhCaW5kaW5nTWFjcm9zLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhC
aW5kaW5nTWFjcm9zLmgKaW5kZXggY2U1MTcwNjQ3ZGI2YjYyNmIxZjIwYWMyMzI5MWNjZjI4MGZh
OTBkOC4uYjE5NTQzYjcyNjM5NzFiNmVhNGQwZTYxZmM4NjIzYzAxNzIwNmE2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGluZ01hY3Jvcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdNYWNyb3MuaApA
QCAtNDAsNyArNDAsNyBAQAogI2RlZmluZSBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9O
X0JMT0NLKHR5cGUsIHZhciwgdmFsdWUpIFwKICAgICB0eXBlIHZhcih2YWx1ZSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgaWYgKCF2YXIucHJlcGFy
ZSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAog
I2RlZmluZSBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLX1ZPSUQodHlwZSwg
dmFyLCB2YWx1ZSkgXAogICAgIHR5cGUgdmFyKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAKaW5kZXggODAwMzAxMjhk
NGJlM2YxNTAzOTFiN2Y1YmYzNWI0YjMwMGVkYWVmYS4uNjgxYjdhYTBhNDgwNjYxYmZmYmE0MGEx
NDcyNzgyMDcwNTMzODUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6Y2xlYXJEYXRhQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIAogICAgIGlmICghYXJncy5MZW5ndGgoKSkgewogICAgICAgICBj
bGlwYm9hcmQtPmNsZWFyQWxsRGF0YSgpOwotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBpZiAoYXJncy5M
ZW5ndGgoKSAhPSAxKQpAQCAtNzcsNyArNzcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhD
bGlwYm9hcmQ6OmNsZWFyRGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAK
ICAgICBTdHJpbmcgdHlwZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKICAgICBjbGlwYm9h
cmQtPmNsZWFyRGF0YSh0eXBlKTsKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9h
cmQ6OnNldERyYWdJbWFnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCkBAIC04
Niw3ICs4Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6c2V0RHJhZ0lt
YWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAgQ2xpcGJvYXJkKiBjbGlw
Ym9hcmQgPSBWOENsaXBib2FyZDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKICAgICBpZiAo
IWNsaXBib2FyZC0+aXNGb3JEcmFnQW5kRHJvcCgpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIGlmIChhcmdzLkxl
bmd0aCgpICE9IDMpCiAgICAgICAgIHJldHVybiBWOFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJveHk6
OlN5bnRheEVycm9yLCAic2V0RHJhZ0ltYWdlOiBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMi
LCBhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0xMDYsNyArMTA2LDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4Q2xpcGJvYXJkOjpzZXREcmFnSW1hZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmcKICAgICBlbHNlCiAgICAgICAgIGNsaXBib2FyZC0+c2V0RHJhZ0ltYWdlRWxlbWVu
dChub2RlLCBJbnRQb2ludCh4LCB5KSk7CiAKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwor
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0
b20uY3BwCmluZGV4IGU3ZTBlZTdlMGJkNTJjYjU5NWJmMWYxNzkzOTc4Y2VhNjA5MjFmZTkuLjli
ZjZhZDVhNmUzOTdmZDZlYjA1MTg0Yzk5MjQyMDEyY2M0OTljOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCkBAIC03
MSw3ICs3MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnByb2ZpbGVDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIENvbnNvbGUqIGltcCA9IFY4Q29u
c29sZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFjaygxKSk7CiAgICAgaWYgKCFjYWxsU3Rh
Y2spCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQ
YXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGl0bGUsIGFyZ3NbMF0pOwogICAg
IGltcC0+cHJvZmlsZSh0aXRsZSwgU2NyaXB0U3RhdGU6OmN1cnJlbnQoKSwgY2FsbFN0YWNrKTsK
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CkBAIC04Myw3ICs4Myw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnByb2ZpbGVFbmRDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29sZTo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
KGNyZWF0ZVNjcmlwdENhbGxTdGFjaygxKSk7CiAgICAgaWYgKCFjYWxsU3RhY2spCi0gICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
ICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8V2l0
aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGl0bGUsIGFyZ3NbMF0pOwogICAgIGltcC0+cHJvZmls
ZUVuZCh0aXRsZSwgU2NyaXB0U3RhdGU6OmN1cnJlbnQoKSwgY2FsbFN0YWNrKTsKICAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKaW5kZXggOGY3NWMw
ZTU3MjIxMWNjNmE2MzE5M2UwOGNjNDE5NWQ3NjBmOTk0NS4uNDY3ODdkN2FiY2EwOTMzZjU1MzJh
YTUyNDAwNDBkNTg4YjM1YjgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcApAQCAtODUsNyArODUsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6YXBwZW5kQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICB9IGVsc2UKICAgICAgICAgZG9tRm9ybURhdGEt
PmFwcGVuZChuYW1lLCB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGFyZykpOwogCi0gICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggOGZhMjgwOGU3MzhiMDFh
MTM1ZTlkYzljMDI3ZmJkYmMxMmQyMmQ2Yi4uMTAyYWYyNjgxMWJiYjk0NDlkYTI2MWQ1ZDllYWQy
NmMzOWY4ZDdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC03NCw3ICs3NCw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBXaW5kb3dTZXRUaW1lb3V0SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
LCBib29sIHNpbmdsCiAgICAgaW50IGFyZ3VtZW50Q291bnQgPSBhcmdzLkxlbmd0aCgpOwogCiAg
ICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIERPTVdpbmRvdyogaW1wID0g
VjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kj4oaW1wLT5kb2N1bWVudCgpKTsKQEAgLTkyLDcgKzkyLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFdpbmRvd1NldFRpbWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJv
b2wgc2luZ2wKIAogICAgICAgICAgICAgLy8gQmFpbCBvdXQgaWYgc3RyaW5nIGNvbnZlcnNpb24g
ZmFpbGVkLgogICAgICAgICAgICAgaWYgKHY4U3RyaW5nLklzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICAgICAgICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogCiAgICAgICAgICAgICBmdW5jdGlvblN0cmluZyA9IHRvV2ViQ29yZVN0cmlu
Zyh2OFN0cmluZyk7CiAgICAgICAgIH0KQEAgLTEwMCw3ICsxMDAsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywg
Ym9vbCBzaW5nbAogICAgICAgICAvLyBEb24ndCBhbGxvdyBzZXR0aW5nIHRpbWVvdXRzIHRvIHJ1
biBlbXB0eSBmdW5jdGlvbnMhCiAgICAgICAgIC8vIChCdWcgMTAwOTU5NykKICAgICAgICAgaWYg
KGZ1bmN0aW9uU3RyaW5nLmxlbmd0aCgpID09IDApCi0gICAgICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOworICAgICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogCiAg
ICAgaW50MzJfdCB0aW1lb3V0ID0gMDsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywg
Ym9vbCBzaW5nbAogICAgICAgICB0aW1lb3V0ID0gYXJnc1sxXS0+SW50MzJWYWx1ZSgpOwogCiAg
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5z
dGFuY2UoKSwgaW1wLT5mcmFtZSgpLCB0cnVlKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBpbnQgaWQ7CiAgICAg
aWYgKGZ1bmN0aW9uLT5Jc0Z1bmN0aW9uKCkpIHsKQEAgLTE0OSwyMCArMTQ5LDIwIEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6ZXZlbnRBY2Nlc3NvckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIg
PSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRl
KCksIGluZm8uVGhpcygpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAg
ICBGcmFtZSogZnJhbWUgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoaG9sZGVyKS0+ZnJhbWUoKTsK
ICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6Y2FuQWNjZXNzRnJhbWUoQmluZGluZ1N0YXRlOjpp
bnN0YW5jZSgpLCBmcmFtZSwgdHJ1ZSkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChmcmFtZSk7CiAgICAgaWYgKGNvbnRleHQu
SXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gZXZlbnRTeW1i
b2wgPSBWOEhpZGRlblByb3BlcnR5TmFtZTo6ZXZlbnQoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4ganNFdmVudCA9IGNvbnRleHQtPkdsb2JhbCgpLT5HZXRIaWRkZW5WYWx1ZShldmVudFN5
bWJvbCk7CiAgICAgaWYgKGpzRXZlbnQuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICByZXR1cm4ganNF
dmVudDsKIH0KIApAQCAtMjM1LDE2ICsyMzUsMTYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYK
ICAgICBET01XaW5kb3cqIGltcCA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKIAogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpjYW5BY2Nlc3NGcmFtZShCaW5kaW5nU3Rh
dGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgdHJ1ZSkpCi0gICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgRG9jdW1l
bnQqIGRvYyA9IGltcC0+ZG9jdW1lbnQoKTsKIAogICAgIGlmICghZG9jKQotICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAg
IC8vIEZJWE1FOiBDaGVjayBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIGFyZ3VtZW50cwogICAgIGlm
ICghaW1wLT5mcmFtZSgpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0
ZW5lciA9IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcihhcmdzWzFdLCBmYWxzZSwgTGlz
dGVuZXJGaW5kT3JDcmVhdGUpOwogCkBAIC0yNTMsNyArMjUzLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYKICAgICAgICAgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBh
cmdzWzFdLCBldmVudExpc3RlbmVyQ2FjaGVJbmRleCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogCkBAIC0yNjcs
MTUgKzI2NywxNSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnJlbW92ZUV2
ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbgogICAgIERPTVdpbmRvdyogaW1w
ID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCiAgICAgaWYgKCFCaW5k
aW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1w
LT5mcmFtZSgpLCB0cnVlKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBEb2N1bWVudCogZG9jID0gaW1wLT5kb2N1
bWVudCgpOwogCiAgICAgaWYgKCFkb2MpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgaWYgKCFpbXAtPmZyYW1lKCkp
Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogCiAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFw
cGVyOjpnZXRFdmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlLCBMaXN0ZW5lckZpbmRPbmx5KTsK
IApAQCAtMjg0LDcgKzI4NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6
cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgICAgIHJl
bW92ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgZXZlbnRMaXN0ZW5l
ckNhY2hlSW5kZXgpOwogICAgIH0KIAotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHN0YXRpYyBib29sIGlzTGVnYWN5VGFyZ2V0T3Jp
Z2luRGVzaWduYXRpb24odjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQpAQCAtMzI1LDEyICsz
MjUsMTIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYW5kbGVQb3N0TWVzc2FnZUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICAgICAgICAgICAgICB0cmFuc2Zl
cmFibGVzQXJnSW5kZXggPSAxOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFleHRy
YWN0VHJhbnNmZXJhYmxlcyhhcmdzW3RyYW5zZmVyYWJsZXNBcmdJbmRleF0sIHBvcnRBcnJheSwg
YXJyYXlCdWZmZXJBcnJheSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICAgICAgfSAKICAg
ICAgICAgdGFyZ2V0T3JpZ2luID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxPclVuZGVmaW5lZENo
ZWNrKGFyZ3NbdGFyZ2V0T3JpZ2luQXJnSW5kZXhdKTsKIAogICAgICAgICBpZiAodHJ5Q2F0Y2gu
SGFzQ2F1Z2h0KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogCiAKQEAgLTM0Miw3ICszNDIsNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWRUaHJvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJncy5HZXRJc29sYXRlKCkpOwogICAgIGlmIChkaWRUaHJvdykKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICB3aW5kb3ctPnBvc3RNZXNzYWdlKG1lc3NhZ2UucmVsZWFz
ZSgpLCAmcG9ydEFycmF5LCB0YXJnZXRPcmlnaW4sIHNvdXJjZSwgZWMpOwpAQCAtMzc3LDEzICsz
NzcsMTMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp0b1N0cmluZ0NhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
T01XaW5kb3c6OnJlbGVhc2VFdmVudHNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5ub3AoKSIpOwotICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6Y2FwdHVyZUV2ZW50c0NhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93Lm5vcCgp
Iik7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKIH0KIAogY2xhc3MgRGlhbG9nSGFuZGxlciB7CkBAIC00MTUsMTEgKzQxNSwxMSBAQCBpbmxp
bmUgdm9pZCBEaWFsb2dIYW5kbGVyOjpkaWFsb2dDcmVhdGVkKERPTVdpbmRvdyogZGlhbG9nRnJh
bWUpCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IERpYWxvZ0hhbmRsZXI6OnJldHVyblZh
bHVlKCkgY29uc3QKIHsKICAgICBpZiAobV9kaWFsb2dDb250ZXh0LklzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKG1fZGlhbG9nQ29udGV4dCk7CiAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHJldHVyblZhbHVlID0gbV9kaWFsb2dDb250ZXh0LT5HbG9iYWwo
KS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygicmV0dXJuVmFsdWUiKSk7CiAgICAgaWYgKHJldHVyblZh
bHVlLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCkBAIC00
MzQsNyArNDM0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzaG93TW9k
YWxEaWFsb2dDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIERPTVdpbmRvdyogaW1w
bCA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBCaW5kaW5nU3Rh
dGUqIHN0YXRlID0gQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpOwogICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpjYW5BY2Nlc3NGcmFtZShzdGF0ZSwgaW1wbC0+ZnJhbWUoKSwgdHJ1ZSkpCi0gICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwogCiAgICAgLy8gRklYTUU6IEhhbmRsZSBleGNlcHRpb25zIHByb3Blcmx5LgogICAgIFN0cmlu
ZyB1cmxTdHJpbmcgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soYXJn
c1swXSk7CkBAIC00NTIsNyArNDUyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2lu
ZG93OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBET01XaW5k
b3cqIGltcGwgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgQmlu
ZGluZ1N0YXRlKiBzdGF0ZSA9IEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKTsKICAgICBpZiAoIUJp
bmRpbmdTZWN1cml0eTo6Y2FuQWNjZXNzRnJhbWUoc3RhdGUsIGltcGwtPmZyYW1lKCksIHRydWUp
KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKIAogICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucyBwcm9wZXJseS4KICAg
ICBTdHJpbmcgdXJsU3RyaW5nID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxPclVuZGVmaW5lZENo
ZWNrKGFyZ3NbMF0pOwpAQCAtNDYxLDcgKzQ2MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERPTVdpbmRvdzo6b3BlbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKICAg
ICBSZWZQdHI8RE9NV2luZG93PiBvcGVuZWRXaW5kb3cgPSBpbXBsLT5vcGVuKHVybFN0cmluZywg
ZnJhbWVOYW1lLCB3aW5kb3dGZWF0dXJlc1N0cmluZywgYWN0aXZlV2luZG93KHN0YXRlKSwgZmly
c3RXaW5kb3coc3RhdGUpKTsKICAgICBpZiAoIW9wZW5lZFdpbmRvdykKLSAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBy
ZXR1cm4gdG9WOChvcGVuZWRXaW5kb3cucmVsZWFzZSgpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IDc2ZDE2YTRjZGVm
YjlmZjEwZjJkMjM2OGUwYTAwYjk3MTViZjYyN2QuLjdmNDFiZWI1YjYzMzAwYzgyOWUyZDFmMDgy
OWIxNmQyODExZTBlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGFuZGxlUG9z
dE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgQXJyYXlCdWZm
ZXJBcnJheSBhcnJheUJ1ZmZlcnM7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7CiAgICAg
ICAgIGlmICghZXh0cmFjdFRyYW5zZmVyYWJsZXMoYXJnc1sxXSwgcG9ydHMsIGFycmF5QnVmZmVy
cykpCi0gICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKICAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0KQEAgLTYwLDcgKzYwLDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkVGhyb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBpZiAoZGlkVGhyb3cpCi0gICAgICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIHdvcmtlckNvbnRleHQtPnBvc3RNZXNzYWdlKG1lc3NhZ2Uu
cmVsZWFzZSgpLCAmcG9ydHMsIGVjKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihlYywgYXJncy5H
ZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDkxMTJmMTdjYmFiZjVjNzE3MTcyNDI0YWEz
ODNlNzgzODQ4Y2RmZjIuLmM3Zjk1YmY5NTQ3MTYyNWFjNzkwYzUzZjY4NTcyODFiMzNjMDA3MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1
bWVudEN1c3RvbS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dAogICAgIGludCBoZWlnaHQgPSB0b0ludDMyKGFyZ3NbM10pOwogICAgIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIHJlc3VsdCA9IGltcC0+Z2V0Q1NTQ2FudmFzQ29udGV4dChjb250ZXh0SWQsIG5h
bWUsIHdpZHRoLCBoZWlnaHQpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICBpZiAocmVz
dWx0LT5pczJkKCkpCiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRCo+KHJlc3VsdCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICNpZiBFTkFCTEUo
V0VCR0wpCkBAIC0xMTQsNyArMTE0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RG9jdW1l
bnQ6OmdldENTU0NhbnZhc0NvbnRleHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKICAgICAg
ICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4ocmVzdWx0
KSwgYXJncy5HZXRJc29sYXRlKCkpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChEb2N1bWVu
dCogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGJvb2wgZm9yY2VOZXdPYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAK
aW5kZXggOWRhNTJjNzRmYTgyODc0ZDM4YTc4YzNkMTFlN2NiZTU2OGY2NDcxNi4uODI3Y2U5ZDJm
Nzg4YjFlOTUzZTE4ZTkwNDQyOTgyNDg1ZGQyNDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcApAQCAtNTYsNyArNTYsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhFdmVudDo6ZGF0YVRyYW5zZmVyQWNjZXNzb3JHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgaWYgKGV2ZW50LT5pc0RyYWdFdmVudCgpKQog
ICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5jbGlw
Ym9hcmQoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4RXZlbnQ6OmNsaXBib2FyZERhdGFBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTY2LDcgKzY2LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RXZlbnQ6OmNsaXBib2FyZERhdGFBY2Nlc3NvckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBpZiAoZXZlbnQtPmlzQ2xpcGJvYXJkRXZlbnQo
KSkKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q2xpcGJvYXJkRXZlbnQqPihldmVu
dCktPmNsaXBib2FyZCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAKLSAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiAjZGVmaW5lIFRSWV9U
T19XUkFQX1dJVEhfSU5URVJGQUNFKGludGVyZmFjZU5hbWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcApp
bmRleCAzNzM0YTIzZDVhYjQ2M2U1YWVhZWQ4N2NmYWQ0YWJjNDc3ZjVkYTc2Li5mOWFjZWZlNWU1
OGQ2OTBmZjZjYzdlNjI4OTE4YjJiYjQ2ZTljMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2VvbG9jYXRpb25DdXN0b20uY3BwCkBAIC0x
MzUsMjIgKzEzNSwyMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhHZW9sb2NhdGlvbjo6Z2V0
Q3VycmVudFBvc2l0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZQogCiAgICAgUmVmUHRyPFBv
c2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxs
YmFjazxWOFBvc2l0aW9uQ2FsbGJhY2s+KGFyZ3NbMF0sIHN1Y2NlZWRlZCwgYXJncy5HZXRJc29s
YXRlKCkpOwogICAgIGlmICghc3VjY2VlZGVkKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25D
YWxsYmFjayk7CiAKICAgICAvLyBBcmd1bWVudCBpcyBvcHRpb25hbCAoaGVuY2UgdW5kZWZpbmVk
IGlzIGFsbG93ZWQpLCBhbmQgbnVsbCBpcyBhbGxvd2VkLgogICAgIFJlZlB0cjxQb3NpdGlvbkVy
cm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNh
bGxiYWNrPFY4UG9zaXRpb25FcnJvckNhbGxiYWNrPihhcmdzWzFdLCBzdWNjZWVkZWQsIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCBDYWxsYmFja0FsbG93VW5kZWZpbmVkIHwgQ2FsbGJhY2tBbGxvd051bGwp
OwogICAgIGlmICghc3VjY2VlZGVkKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwor
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIFJlZlB0cjxQb3NpdGlvbk9wdGlv
bnM+IHBvc2l0aW9uT3B0aW9ucyA9IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhhcmdzWzJdLCBzdWNj
ZWVkZWQpOwogICAgIGlmICghc3VjY2VlZGVkKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25P
cHRpb25zKTsKIAogICAgIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbiA9IFY4R2VvbG9jYXRpb246
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGdlb2xvY2F0aW9uLT5nZXRDdXJyZW50UG9z
aXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5y
ZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5yZWxlYXNlKCkpOwotICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKQEAgLTE2MSwxNyArMTYxLDE3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYKIAogICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxiYWNrID0gY3Jl
YXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8VjhQb3NpdGlvbkNhbGxiYWNrPihhcmdzWzBdLCBzdWNj
ZWVkZWQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBpZiAoIXN1Y2NlZWRlZCkKLSAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAg
ICAgQVNTRVJUKHBvc2l0aW9uQ2FsbGJhY2spOwogCiAgICAgLy8gQXJndW1lbnQgaXMgb3B0aW9u
YWwgKGhlbmNlIHVuZGVmaW5lZCBpcyBhbGxvd2VkKSwgYW5kIG51bGwgaXMgYWxsb3dlZC4KICAg
ICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2sgPSBj
cmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxWOFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4oYXJnc1sx
XSwgc3VjY2VlZGVkLCBhcmdzLkdldElzb2xhdGUoKSwgQ2FsbGJhY2tBbGxvd1VuZGVmaW5lZCB8
IENhbGxiYWNrQWxsb3dOdWxsKTsKICAgICBpZiAoIXN1Y2NlZWRlZCkKLSAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBS
ZWZQdHI8UG9zaXRpb25PcHRpb25zPiBwb3NpdGlvbk9wdGlvbnMgPSBjcmVhdGVQb3NpdGlvbk9w
dGlvbnMoYXJnc1syXSwgc3VjY2VlZGVkKTsKICAgICBpZiAoIXN1Y2NlZWRlZCkKLSAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAg
ICAgQVNTRVJUKHBvc2l0aW9uT3B0aW9ucyk7CiAKICAgICBHZW9sb2NhdGlvbiogZ2VvbG9jYXRp
b24gPSBWOEdlb2xvY2F0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcAppbmRleCAwYzgzZmI1MzQxN2U3ZGVhOTAwN2MzYzJkY2FkYzBlNTU2
Zjc3Y2Q5Li5hZTZhMzdhOWI0ZDI5ZTUzMTFjNzRjZDhkODE5MmJmZTllNTNmMWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlv
bkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gZ2V0SXRlbShIVE1MQWxsQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgdjg6
OkhhbmRsZTx2CiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1l
ZEl0ZW1zKGNvbGxlY3Rpb24sIHRvV2ViQ29yZVN0cmluZyhhcmd1bWVudC0+VG9TdHJpbmcoKSks
IGlzb2xhdGUpOwogCiAgICAgICAgIGlmIChyZXN1bHQuSXNFbXB0eSgpKQotICAgICAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtOTgsNyArOTgsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBn
ZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAKICAgICBpZiAocmVzdWx0LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICByZXR1cm4g
cmVzdWx0OwogfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhU
TUxBbGxDb2xsZWN0aW9uOjpjYWxsQXNGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1CiB7
CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTEFsbENvbGxlY3Rpb24uY2FsbEFzRnVuY3Rpb24oKSIp
OwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBIVE1MQWxsQ29sbGVj
dGlvbiogaW1wID0gVjhIVE1MQWxsQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CiAKQEAgLTExOCwxMiArMTE4LDEyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBbGxD
b2xsZWN0aW9uOjpjYWxsQXNGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1CiAgICAgU3Ry
aW5nIG5hbWUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CiAgICAgdjg6OkxvY2FsPHY4OjpV
aW50MzI+IGluZGV4ID0gYXJnc1sxXS0+VG9BcnJheUluZGV4KCk7CiAgICAgaWYgKGluZGV4Lklz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CiAKICAgICBpZiAoTm9kZSogbm9kZSA9IGltcC0+bmFtZWRJdGVtV2l0
aEluZGV4KG5hbWUsIGluZGV4LT5VaW50MzJWYWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIHRvVjgo
bm9kZSwgYXJncy5HZXRJc29sYXRlKCkpOwogCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
KyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxl
Y3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDdhNmY3Yjk1YmRmZjYwODZhZGVkMmQ0OTUzZWFk
YzhhNTkzNWI0NzEuLmNlODllYzgzOTU2MzM1MmE5MTE1MjUzOTBkMTBkYjQ0YTZlYzc1MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0
aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGEKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJdGVt
cyhpbXAsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgYXJncy5HZXRJc29sYXRlKCkpOwogCiAg
ICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
RG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDJmY2M1ODFmOWIzYzBhMmRhMWIyOTBlMDdmNTFjZWM5
ZDYyMzJjNWQuLmQzN2E3MjVhOGFmNGQ4M2EzNDUzM2EyNDYwYmJiZWJkYzMyN2Y2OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERv
Y3VtZW50Q3VzdG9tLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEhUTUxEb2N1bWVudDo6d3JpdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogICAgIEhUTUxEb2N1bWVudCogaHRtbERvY3VtZW50ID0gVjhIVE1MRG9jdW1lbnQ6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEZyYW1lKiBmcmFtZSA9IGFjdGl2ZUZyYW1lKEJpbmRp
bmdTdGF0ZTo6aW5zdGFuY2UoKSk7CiAgICAgaHRtbERvY3VtZW50LT53cml0ZSh3cml0ZUhlbHBl
ckdldFN0cmluZyhhcmdzKSwgZnJhbWUgPyBmcmFtZS0+ZG9jdW1lbnQoKSA6IE5VTEwpOwotICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAK
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6d3JpdGVsbkNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCkBAIC0xMzAsNyArMTMwLDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50Ojp3cml0ZWxuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKICAgICBIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCA9IFY4SFRNTERvY3Vt
ZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBGcmFtZSogZnJhbWUgPSBhY3RpdmVG
cmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCkpOwogICAgIGh0bWxEb2N1bWVudC0+d3JpdGVs
bih3cml0ZUhlbHBlckdldFN0cmluZyhhcmdzKSwgZnJhbWUgPyBmcmFtZS0+ZG9jdW1lbnQoKSA6
IE5VTEwpOwotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6b3BlbkNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCkBAIC0xNDQsNyArMTQ0LDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29u
dGV4dCA9IFY4UHJveHk6OmNvbnRleHQoZnJhbWUuZ2V0KCkpOwogICAgICAgICAgICAgLy8gQmFp
bCBvdXQgaWYgd2UgY2Fubm90IGdldCB0aGUgY29udGV4dC4KICAgICAgICAgICAgIGlmIChjb250
ZXh0LklzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwor
ICAgICAgICAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgICAgICAgICAgdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwogICAgICAgICAgICAg
Ly8gR2V0IHRoZSBvcGVuIHByb3BlcnR5IG9mIHRoZSBnbG9iYWwgb2JqZWN0LgogICAgICAgICAg
ICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZnVuY3Rpb24gPSBnbG9iYWwtPkdldCh2ODo6U3RyaW5n
OjpOZXcoIm9wZW4iKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDk3
NTc0Y2VhYjNjZjY0MDhkY2FiOGI3NDgzNjkyOWQ5NTk4MGU1NmEuLjlhYWVmYzM4OGI1MGUyMjRl
OTVjNTNjZjNjMTFkZTUyZTdhODQzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20u
Y3BwCkBAIC01Myw3ICs1Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxGcmFtZVNl
dEVsZW1lbnQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTCiAgICAgaWYgKGZy
YW1lTm9kZSAmJiBmcmFtZU5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmcmFtZVRhZykpIHsK
ICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnQqPihm
cmFtZU5vZGUpLT5jb250ZW50RG9jdW1lbnQoKTsKICAgICAgICAgaWYgKCFkb2MpCi0gICAgICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2MtPmZyYW1lKCkpCiAgICAgICAg
ICAgICByZXR1cm4gdG9WOChmcmFtZS0+ZG9tV2luZG93KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDAzZWFkNjU4NDg3MTIxOWE2
ODMwOGQ1YmRkM2Y2MDZmN2U1NDMzYWIuLjNmNWE0NWE5MjI4YjdlZDhmMmRiM2EzODc3NTdhODc1
YzM5ODQ1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCkBAIC0xMzEsNyArMTMxLDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9u
UmFuZ2VDYWxsYmFjayhjb25zdCB2ODo6QXIKICAgICBTdHJpbmcgZGlyZWN0aW9uID0gdG9XZWJD
b3JlU3RyaW5nKGFyZ3NbMl0pOwogCiAgICAgaW1wLT5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwg
ZW5kLCBkaXJlY3Rpb24pOwotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlv
bkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0
aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDYxZWZhNDRmMmU1ZTAzODIzMWNhNWViN2Y1
OGZlNDRkZGY2ZDRiMzkuLjA0MDY3YTdjMzdjMjFhMDVkYjAxOTAwZDliNzY2MzljNzA2Yjc3YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRp
b25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNjksNyArNjksNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgICAgIGludCBpbmRleCA9IHRvSW50MzIoYXJn
c1sxXSwgb2spOwogCiAgICAgICAgIGlmICh0cnlfY2F0Y2guSGFzQ2F1Z2h0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CiAKICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRD
SF9FUlI7CkBAIC04MCw3ICs4MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRp
b25zQ29sbGVjdGlvbjo6YWRkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBpZiAo
ZWMpCiAgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKIAotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29s
bGVjdGlvbjo6bGVuZ3RoQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5j
cHAKaW5kZXggMDE1YmUzYTBjNjIyMWIxNDY1ODY4MzQ1MDg3NzJhMzAyOTU1YTAzMS4uMGIyZWY4
MmNkNjBmOTU4YzE0MDBkOTk1MDNlMjIzNDJhNzU5ZDM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50
Q3VzdG9tLmNwcApAQCAtNzUsMTEgKzc1LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZW1v
dmVFbGVtZW50KEhUTUxTZWxlY3RFbGVtZW50KiBpbXAsIGNvbnN0IHY4OjpBcmd1bWVudHMmCiAg
ICAgaWYgKFY4SFRNTE9wdGlvbkVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSB7CiAgICAg
ICAgIEhUTUxPcHRpb25FbGVtZW50KiBlbGVtZW50ID0gVjhIVE1MT3B0aW9uRWxlbWVudDo6dG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSk7CiAgICAgICAgIGlt
cC0+cmVtb3ZlKGVsZW1lbnQtPmluZGV4KCkpOwotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBpbXAtPnJl
bW92ZSh0b0ludDMyKGFyZ3NbMF0pKTsKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20u
Y3BwCmluZGV4IDJmNGQ2NmVmOWVjZjEyZjhkMGU2YTQwNTQ3NzEyZjdlZDdhMzY2MjkuLjNhNmJh
ZjAyM2MxNzdlNTJhODQyMDhjOWQ5NzA3MTFjZjBlZWE0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwCkBAIC02NCwx
NyArNjQsMTcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SGlzdG9yeTo6cHVzaFN0YXRlQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBib29sIGRpZFRocm93ID0gZmFs
c2U7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgMCwgMCwgZGlkVGhyb3csIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKICAgICBpZiAoZGlkVGhyb3cpCi0gICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgdjg6OlRyeUNh
dGNoIHRyeUNhdGNoOwogICAgIFN0cmluZyB0aXRsZSA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxs
T3JVbmRlZmluZWRDaGVjayhhcmdzWzFdKTsKICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkp
Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogICAgIFN0cmluZyB1cmw7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyKSB7CiAg
ICAgICAgIHVybCA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmluZWRDaGVjayhhcmdz
WzJdKTsKICAgICAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQotICAgICAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
ICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtODksMTcgKzg5LDE3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhpc3Rvcnk6OnJlcGxhY2VTdGF0ZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwogICAgIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMF0sIDAsIDAsIGRpZFRocm93LCBhcmdzLkdldElzb2xhdGUo
KSk7CiAgICAgaWYgKGRpZFRocm93KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwor
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRj
aDsKICAgICBTdHJpbmcgdGl0bGUgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVk
Q2hlY2soYXJnc1sxXSk7CiAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQotICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAg
ICBTdHJpbmcgdXJsOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMikgewogICAgICAgICB1cmwg
PSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soYXJnc1syXSk7CiAgICAg
ICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CisgICAgICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICB9CiAKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwCmluZGV4IDk4YmFhYjk2ZWE0NDY0ZWZjMmQx
OTczYzM2ODY3NjExZTNjOGFkOWIuLmZkNDU5ZmNkNGFhZjA5Mjg0NTBiNWJhZTllOWE1NGRlMzNi
NGIwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElE
QkFueUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SURCQW55Q3VzdG9tLmNwcApAQCAtNTIsNyArNTIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOChJREJBbnkqIGltcGwsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogCiAgICAgc3dpdGNoIChp
bXBsLT50eXBlKCkpIHsKICAgICBjYXNlIElEQkFueTo6VW5kZWZpbmVkVHlwZToKLSAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAg
ICAgY2FzZSBJREJBbnk6Ok51bGxUeXBlOgogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNr
KGlzb2xhdGUpOwogICAgIGNhc2UgSURCQW55OjpET01TdHJpbmdMaXN0VHlwZToKQEAgLTgwLDcg
KzgwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSURCQW55KiBpbXBsLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJREJLZXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SURCS2V5Q3VzdG9tLmNwcAppbmRleCA4NGE0YjBjNjlmNmNmMmUzYTczYjMz
MjJhMzMzYzIyZWU2ZTdjZDg3Li5iNDE3NWFkZTE5NzdmNDU1N2Y0YmIxNzlkNjRlMWM3NmE5MGFl
ODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJL
ZXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElE
QktleUN1c3RvbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjgoSURCS2V5KiBrZXksIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIGNhc2UgSURCS2V5OjpJ
bnZhbGlkVHlwZToKICAgICBjYXNlIElEQktleTo6TWluVHlwZToKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBlOgogICAgICAg
ICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KGtleS0+bnVtYmVyKCkpOwogICAgIGNhc2UgSURCS2V5
OjpTdHJpbmdUeXBlOgpAQCAtNjQsNyArNjQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OChJREJLZXkqIGtleSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgfQogCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2Ny
aXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggZjc3OTRhZTk1ZDc1NjI0MjM3ZmZjYTNjNmFiNjMzNmI0
NjQwOGNmZi4uYTEwMTVhMDBmNjMyZjI2Yzk0NmNlOWEwMTM1MjI5NTM4ZTc1ZWE4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRI
b3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC04MSw3ICs4MSw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkT2JqZWN0Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyCiB7CiAgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVj
dGVkT2JqZWN0KCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCi0gICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAg
aWYgKCFhcmdzWzBdLT5Jc0ludDMyKCkpCiAgICAgICAgIHJldHVybiBWOFByb3h5Ojp0aHJvd1R5
cGVFcnJvcigiYXJndW1lbnQgaGFzIHRvIGJlIGFuIGludGVnZXIiLCBhcmdzLkdldElzb2xhdGUo
KSk7CkBAIC05NSwxMCArOTUsMTAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRT
Y3JpcHRIb3N0OjppbnRlcm5hbENvbnN0cnVjdG9yTmFtZUNhbGxiYWNrKGNvbnMKIHsKICAgICBJ
TkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5pbnRlcm5hbENvbnN0cnVjdG9yTmFtZSgpIik7
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIGlmICghYXJnc1swXS0+
SXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICByZXR1cm4gYXJnc1swXS0+VG9PYmplY3QoKS0+R2V0
Q29uc3RydWN0b3JOYW1lKCk7CiB9CkBAIC0xMDcsNyArMTA3LDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojppc0hUTUxBbGxDb2xsZWN0aW9uQ2FsbGJhY2so
Y29uc3QgdjgKIHsKICAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5pc0hUTUxBbGxD
b2xsZWN0aW9uQ2FsbGJhY2soKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKLSAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CiAKICAgICBpZiAoIWFyZ3NbMF0tPklzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB2OEJvb2xl
YW4oZmFsc2UsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTEyMCw3ICsxMjAsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnR5cGVDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcgogewogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LnR5
cGVDYWxsYmFjaygpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IGFyZ3NbMF07CiAgICAgaWYgKHZhbHVlLT5J
c1N0cmluZygpKQpAQCAtMTQ5LDIwICsxNDksMjAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0eXBlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIK
ICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ldygiYXJyYXkiKTsKICAgICBpZiAoVjhVaW50
OENsYW1wZWRBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUpKQogICAgICAgICByZXR1cm4gdjg6OlN0
cmluZzo6TmV3KCJhcnJheSIpOwotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVk
U2NyaXB0SG9zdDo6ZnVuY3Rpb25EZXRhaWxzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5mdW5jdGlvbkRldGFp
bHNDYWxsYmFjaygpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSA9IGFyZ3NbMF07CiAgICAgaWYgKCF2YWx1ZS0+SXNGdW5jdGlvbigpKQotICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj46OkNhc3QodmFsdWUpOwogICAgIGludCBsaW5lTnVtYmVyID0gZnVuY3Rpb24tPkdl
dFNjcmlwdExpbmVOdW1iZXIoKTsKICAgICBpbnQgY29sdW1uTnVtYmVyID0gZnVuY3Rpb24tPkdl
dFNjcmlwdENvbHVtbk51bWJlcigpOwpAQCAtMjIwLDIwICsyMjAsMjAgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExpc3RlbmVyc0NhbGxiYWNr
KGNvbnN0IHY4OjoKIHsKICAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5xdWVyeUV2
ZW50TGlzdGVuZXJDYWxsYmFjaygpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQotICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKIAogICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlID0gYXJnc1swXTsKICAgICBpZiAoIVY4Tm9kZTo6SGFzSW5zdGFuY2Uo
dmFsdWUpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKICAgICBOb2RlKiBub2RlID0gVjhOb2RlOjp0b05hdGl2ZSh2YWx1ZS0+
VG9PYmplY3QoKSk7CiAgICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICAvLyBUaGlzIGNhbiBvbmx5
IGhhcHBlbiBmb3Igb3JwaGFuIERvY3VtZW50VHlwZSBub2Rlcy4KICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBub2RlLT5kb2N1bWVudCgpOwogICAgIGlmICghbm9kZS0+ZG9jdW1lbnQoKSkKLSAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CiAKICAgICBJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3QgPSBWOEluamVjdGVkU2NyaXB0SG9z
dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZv
PiBsaXN0ZW5lcnNBcnJheTsKQEAgLTI1NSw0MCArMjU1LDQwIEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmCiB7CiAgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVjdCgpIik7
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIEluamVjdGVkU2NyaXB0
SG9zdCogaG9zdCA9IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKICAgICBTY3JpcHRWYWx1ZSBvYmplY3QoYXJnc1swXSk7CiAgICAgU2NyaXB0VmFsdWUgaGlu
dHMoYXJnc1sxXSk7CiAgICAgaG9zdC0+aW5zcGVjdEltcGwob2JqZWN0LnRvSW5zcGVjdG9yVmFs
dWUoU2NyaXB0U3RhdGU6OmN1cnJlbnQoKSksIGhpbnRzLnRvSW5zcGVjdG9yVmFsdWUoU2NyaXB0
U3RhdGU6OmN1cnJlbnQoKSkpOwogCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0
ZWRTY3JpcHRIb3N0OjpkYXRhYmFzZUlkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5kYXRhYmFzZUlkKCkiKTsK
ICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCiAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0ID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IFY4RGF0
YWJhc2U6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOwog
ICAgIGlmIChkYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIHY4U3RyaW5nT3JVbmRlZmluZWQoaG9z
dC0+ZGF0YWJhc2VJZEltcGwoZGF0YWJhc2UpLCBhcmdzLkdldElzb2xhdGUoKSk7CiAjZW5kaWYK
LSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
fQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnN0b3JhZ2VJ
ZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPCAxKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKICAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5zdG9y
YWdlSWQoKSIpOwogICAgIEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCA9IFY4SW5qZWN0ZWRTY3Jp
cHRIb3N0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBTdG9yYWdlKiBzdG9yYWdlID0g
VjhTdG9yYWdlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0p
KTsKICAgICBpZiAoc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHY4U3RyaW5nT3JVbmRlZmluZWQo
aG9zdC0+c3RvcmFnZUlkSW1wbChzdG9yYWdlKSwgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3Bw
CmluZGV4IDY1OWZkOGIyOGY3M2MzMTIzZmE4N2UwMGM4ZjVjZWY0NzhkNzlhZTkuLjhjYmEyZDJl
MjNkZTA4YTk1YzYxOTBhYzY3YmJiZmUwYzFiY2NlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRl
bmRIb3N0Q3VzdG9tLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBsYXRmb3JtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBvcnRD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJikKIHsKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiBzdGF0aWMgdm9pZCBwb3B1bGF0
ZUNvbnRleHRNZW51SXRlbXModjg6OkxvY2FsPHY4OjpBcnJheT4mIGl0ZW1BcnJheSwgQ29udGV4
dE1lbnUmIG1lbnUpCkBAIC0xMTAsMTUgKzExMCwxNSBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZUNv
bnRleHRNZW51SXRlbXModjg6OkxvY2FsPHY4OjpBcnJheT4mIGl0ZW1BcnJheSwgQ29udGV4dE1l
bgogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29u
dGV4dE1lbnVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZXZl
bnRXcmFwcGVyID0gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pOwogICAgIGlm
ICghVjhNb3VzZUV2ZW50OjppbmZvLmVxdWFscyhWOERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBl
KGV2ZW50V3JhcHBlcikpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIEV2ZW50KiBldmVudCA9IFY4RXZlbnQ6OnRv
TmF0aXZlKGV2ZW50V3JhcHBlcik7CiAgICAgaWYgKCFhcmdzWzFdLT5Jc0FycmF5KCkpCi0gICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwogCiAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5
Pjo6Q2FzdChhcmdzWzFdKTsKICAgICBDb250ZXh0TWVudSBtZW51OwpAQCAtMTMyLDE5ICsxMzIs
MTkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93
Q29udGV4dE1lbnVDYWxsYmFjayhjb25zdCB2ODoKICNlbmRpZgogICAgIGZyb250ZW5kSG9zdC0+
c2hvd0NvbnRleHRNZW51KGV2ZW50LCBpdGVtcyk7CiAKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGhpc3RvZ3JhbUVudW1lcmF0aW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MsIGludCBib3VuZGFyeVZhbHVlKQogewogICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgMSB8fCAhYXJnc1swXS0+SXNJbnQzMigpKQotICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIGludCBzYW1w
bGUgPSBhcmdzWzBdLT5Ub0ludDMyKCktPlZhbHVlKCk7CiAgICAgaWYgKHNhbXBsZSA8IGJvdW5k
YXJ5VmFsdWUpCiAgICAgICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9u
KG5hbWUsIHNhbXBsZSwgYm91bmRhcnlWYWx1ZSk7CiAKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJlY29yZEFjdGlvblRha2VuQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCA3MmRjY2M3NjdjNWU3OTc4
OWMwZTk2YmUzNDJiMGQ1NDA0MGE5MzdjLi5kNTdlMDE2MTZhYTEwYzI2MGJmZWM5ZjM1ZmZhNTYy
MDA1ZDEzMjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAgICAgQmluZGluZ1N0YXRlKiBzdGF0ZSA9IEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2Uo
KTsKIAogICAgIGltcGwtPnJlbG9hZChhY3RpdmVXaW5kb3coc3RhdGUpKTsKLSAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCkBAIC0yMjAsNyArMjIwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
TG9jYXRpb246OnJlcGxhY2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAg
IFN0cmluZyB1cmxTdHJpbmcgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CiAKICAgICBpbXBs
LT5yZXBsYWNlKHVybFN0cmluZywgYWN0aXZlV2luZG93KHN0YXRlKSwgZmlyc3RXaW5kb3coc3Rh
dGUpKTsKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKQEAgLTIzMyw3ICsyMzMsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKICAgICBTdHJpbmcgdXJsU3RyaW5nID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3Nb
MF0pOwogCiAgICAgaW1wbC0+YXNzaWduKHVybFN0cmluZywgYWN0aXZlV2luZG93KHN0YXRlKSwg
Zmlyc3RXaW5kb3coc3RhdGUpKTsKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlv
bjo6dmFsdWVPZkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCkBAIC0yNTIsNyAr
MjUyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnRvU3RyaW5nQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246
OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0Zy
YW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCB0cnVlKSkKLSAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CiAgICAgU3RyaW5nIHJlc3VsdCA9IGltcC0+aHJlZigpOwogICAgIHJldHVybiB2OFN0cmluZyhy
ZXN1bHQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggMDE5YTAzMDllMGRjNTIxODczOTA4OGE3MTc4MzllZmZjYTQxNjgzZS4uNzZm
YzIzNmM2ZThkZGI2NDk1M2E1YTExMGI2MTVkNzgxN2M2YmE1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5u
ZWxDb25zdHJ1Y3Rvci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TWVzc2FnZUNoYW5uZWw6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYKICAgICAvLyBHZXQgdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgKFdvcmtlckNvbnRleHQg
b3IgRG9jdW1lbnQpCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAg
Ly8gTm90ZTogaXQncyBPSyB0byBsZXQgdGhpcyBSZWZQdHIgZ28gb3V0IG9mIHNjb3BlIGJlY2F1
c2Ugd2UgYWxzbyBjYWxsCiAgICAgLy8gU2V0RE9NV3JhcHBlcigpLCB3aGljaCBlZmZlY3RpdmVs
eSBob2xkcyBhIHJlZmVyZW5jZSB0byBvYmouCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCAzZDhl
OGUxOGU4NWI5NjM2OWJhNzQ0MzQ0ODE0NDcxYzMzNmIxOTgxLi5jNzM4YjY4YWNjNjIyZDYwZjZj
NjM0ZTMyNzFiYzE0ZDY3ODJkNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTEyOSwxMCAr
MTI5LDEwIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3Nh
Z2VFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgaWYgKCFpc1VuZGVmaW5lZE9y
TnVsbChhcmdzWzddKSkgewogICAgICAgICBwb3J0QXJyYXkgPSBhZG9wdFB0cihuZXcgTWVzc2Fn
ZVBvcnRBcnJheSk7CiAgICAgICAgIGlmICghZ2V0TWVzc2FnZVBvcnRBcnJheShhcmdzWzddLCAq
cG9ydEFycmF5KSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAg
ICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICB9CiAgICAgZXZlbnQtPmluaXRNZXNzYWdl
RXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLCBvcmln
aW5BcmcsIGxhc3RFdmVudElkQXJnLCBzb3VyY2VBcmcsIHBvcnRBcnJheS5yZWxlYXNlKCkpOwot
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3Nh
Z2VFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5j
cHAKaW5kZXggNTIzY2I3YzY0NzI1YzIwZTliYjgwMjkzYTdmNmViN2NmYWEwNjcxYS4uN2RhYzY0
NDc5ZTcxZmEyNGQ2MTU0NGJlZDJkYjc3YzBiYzMwMTg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcApA
QCAtNDksNyArNDksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RN
ZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIEFycmF5QnVmZmVy
QXJyYXkgYXJyYXlCdWZmZXJBcnJheTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEpIHsKICAg
ICAgICAgaWYgKCFleHRyYWN0VHJhbnNmZXJhYmxlcyhhcmdzWzFdLCBwb3J0QXJyYXksIGFycmF5
QnVmZmVyQXJyYXkpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAg
ICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIH0KICAgICBib29sIGRpZFRocm93ID0g
ZmFsc2U7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9CkBAIC01
OSw3ICs1OSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGFuZGxlUG9zdE1lc3Nh
Z2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZFRocm93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgaWYgKGRpZFRocm93KQotICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBtZXNzYWdlUG9ydC0+cG9zdE1lc3NhZ2Uo
bWVzc2FnZS5yZWxlYXNlKCksICZwb3J0QXJyYXksIGVjKTsKICAgICByZXR1cm4gdGhyb3dFcnJv
cihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAK
aW5kZXggZTViMWVjZGQ3Yzk1NzY5NDY5NjBlMDZmYzI3M2UxZDI2ZmU0ZDYwMy4uNTZiNWM0Zjc3
OGViZDk3YjhhMjRjYjFiNzZmODMxMmFjYjgwMWY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJD
dXN0b20uY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm90
aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0UGVybWlzc2lvbkNhbGxiYWNrKGNvbnN0IHY4OjoKICAg
ICB9CiAKICAgICBub3RpZmljYXRpb25DZW50ZXItPnJlcXVlc3RQZXJtaXNzaW9uKGNhbGxiYWNr
LnJlbGVhc2UoKSk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhOb3RpZmljYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ3VzdG9tLmNwcAppbmRleCBmZmMzOGFhNzJmOTg4
MDJiMjI1ZWRkMjIzNTFiZDc0N2UwZjI2MWNjLi5lZmYzZjE4YjcyNjM3NTM3N2NmMmJhMDNlN2Q5
YWMxMTI0ZTZjYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhOb3RpZmljYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3RvbS5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZQogICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7CiAgICAg
UmVmUHRyPFY4Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiBjYWxsYmFjayA9IGNyZWF0
ZUZ1bmN0aW9uT25seUNhbGxiYWNrPFY4Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPihh
cmdzWzBdLCBzdWNjZWVkZWQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBpZiAoIXN1Y2NlZWRl
ZCkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CiAgICAgQVNTRVJUKGNhbGxiYWNrKTsKIAogICAgIE5vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uID0gVjhOb3RpZmljYXRpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBub3RpZmljYXRpb24tPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICBOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKGNv
bnRleHQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
KyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNh
Y3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FM
VHJhbnNhY3Rpb25DdXN0b20uY3BwCmluZGV4IGU3OWY5MzdkNmIzYWUzNDIzNTIxNmNhNTAzNDZi
NGU5NmYxMDJlNDYuLjcyZTgxZDY5OGVhMjBhMDVjNDQ0ODE2OTE3ZGJjNWI3YWY5YTU5YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0
aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhT
UUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4U1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWxDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJgogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPFNRTFN0YXRlbWVudENhbGxiYWNrPiBj
YWxsYmFjazsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDIgJiYgIWlzVW5kZWZpbmVkT3JOdWxs
KGFyZ3NbMl0pKSB7CkBAIC0xMTIsNyArMTEyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
U1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWxDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgog
ICAgIHRyYW5zYWN0aW9uLT5leGVjdXRlU1FMKHN0YXRlbWVudCwgc3FsVmFsdWVzLCBjYWxsYmFj
aywgZXJyb3JDYWxsYmFjaywgZWMpOwogICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywg
YXJncy5HZXRJc29sYXRlKCkpOwogCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggNTkwNGVjMmZhZmEyNTc0OTQ2MjFj
ZDMyYmQ4M2M4YWYzYWEyZDdlNC4uZGJlNzExZDhjNmVjY2UzNTg4NTIxMjYyMGViODM2ZDYxMTgy
OWZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC0xNjIsNyAr
MTYyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KGNvbnN0IFdl
YkdMR2V0SW5mbyYgaW5mbywgdjg6Oklzb2xhdGUqIGkKICAgICAgICAgcmV0dXJuIHRvVjgoaW5m
by5nZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCksIGlzb2xhdGUpOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIH0KIH0KIApAQCAtNTExLDcg
KzUxMSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmVydGV4QXR0cmliQW5kVW5p
Zm9ybUhlbHBlcmYoY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICAgICAgfQogICAgICAgICBpZiAo
ZWMpCiAgICAgICAgICAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdz
LkdldElzb2xhdGUoKSk7Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIH0KIAogICAgIGlmIChhcmdzWzFdLklzRW1wdHko
KSB8fCAhYXJnc1sxXS0+SXNBcnJheSgpKQpAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoY29uc3Qgdjg6
OkFyZ3VtZW50cyYKICAgICBmYXN0RnJlZShkYXRhKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJl
dHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQog
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVuaWZvcm1IZWxwZXJpKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MsCkBAIC01NzYsNyArNTc2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB1bmlmb3JtSGVscGVyaShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLAogICAgICAg
ICB9CiAgICAgICAgIGlmIChlYykKICAgICAgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01F
eGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgaWYg
KGFyZ3NbMV0uSXNFbXB0eSgpIHx8ICFhcmdzWzFdLT5Jc0FycmF5KCkpCkBAIC02MDAsNyArNjAw
LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bmlmb3JtSGVscGVyaShjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzLAogICAgIGZhc3RGcmVlKGRhdGEpOwogICAgIGlmIChlYykKICAg
ICAgICAgcmV0dXJuIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRl
KCkpOwotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybTFmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCkBAIC02ODYsNyAr
Njg2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bmlmb3JtTWF0cml4SGVscGVy
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsCiAgICAgICAgIH0KICAgICAgICAgaWYgKGVjKQog
ICAgICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJ
c29sYXRlKCkpOwotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBpZiAoYXJnc1syXS5Jc0VtcHR5KCkgfHwg
IWFyZ3NbMl0tPklzQXJyYXkoKSkKQEAgLTcwOSw3ICs3MDksNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHVuaWZvcm1NYXRyaXhIZWxwZXIoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cywKICAgICBmYXN0RnJlZShkYXRhKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiBWOFBy
b3h5OjpzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsgCi0gICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAK
aW5kZXggN2UyN2Y2YzA1NmVhNzJlNWEwMThmMmFhM2NiOGJjNDYwZjEyMDZhOC4uMDM2ZGE1OTQ4
YjBiZjFjYjAxMjgyN2Y4MjNiNjI2YjM2MWRkNDhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFNldFRpbWVvdXRPckludGVy
dmFsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJvb2wgc2luZ2wKIAogICAgIGludCBhcmd1
bWVudENvdW50ID0gYXJncy5MZW5ndGgoKTsKICAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCi0g
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZ1bmN0aW9uID0gYXJnc1swXTsKICAg
ICBpbnQzMl90IHRpbWVvdXQgPSBhcmd1bWVudENvdW50ID49IDIgPyBhcmdzWzFdLT5JbnQzMlZh
bHVlKCkgOiAwOwpAQCAtNjEsNyArNjEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2V0VGlt
ZW91dE9ySW50ZXJ2YWwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogCiAg
ICAgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiBwcm94eSA9IHdvcmtlckNvbnRleHQtPnNj
cmlwdCgpLT5wcm94eSgpOwogICAgIGlmICghcHJveHkpCi0gICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgdjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gcHJveHktPmNvbnRleHQoKTsKICAgICBpZiAoZnVu
Y3Rpb24tPklzU3RyaW5nKCkpIHsKQEAgLTgxLDcgKzgxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFNldFRpbWVvdXRPckludGVydmFsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJvb2wg
c2luZ2wKICAgICAgICAgZGVsZXRlIFtdIHBhcmFtczsKICAgICAgICAgdGltZXJJZCA9IERPTVRp
bWVyOjppbnN0YWxsKHdvcmtlckNvbnRleHQsIGFjdGlvbi5yZWxlYXNlKCksIHRpbWVvdXQsIHNp
bmdsZVNob3QpOwogICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwor
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHJldHVybiB2OEludGVnZXIodGlt
ZXJJZCwgYXJncy5HZXRJc29sYXRlKCkpOwogfQpAQCAtOTAsMTQgKzkwLDE0IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHNDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV29ya2VyQ29udGV4dC5pbXBv
cnRTY3JpcHRzKCkiKTsKICAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgVmVj
dG9yPFN0cmluZz4gdXJsczsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3MuTGVuZ3RoKCk7
IGkrKykgewogICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAgICAgICAgIHY4OjpIYW5k
bGU8djg6OlN0cmluZz4gc2NyaXB0VXJsID0gYXJnc1tpXS0+VG9TdHJpbmcoKTsKICAgICAgICAg
aWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpIHx8IHNjcmlwdFVybC5Jc0VtcHR5KCkpCi0gICAgICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CiAgICAgICAgIHVybHMuYXBwZW5kKHRvV2ViQ29yZVN0cmluZyhzY3JpcHRVcmwpKTsK
ICAgICB9CiAKQEAgLTEwOSw3ICsxMDksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3Jr
ZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogICAg
IGlmIChlYykKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMsIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKIAotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6OnNldFRpbWVv
dXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKaW5kZXggZjQ0YmY2
N2IxNDVlYWQxZmFlNjA3NjQwZTJkMmEzNjZmZDU1MjhjNi4uZDFhOTg1YTQ0YzZiMmZhODBjNzcx
OTE3YTFhZDViNTAyZTAyY2Y0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzCiAgICAgQXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZlcnM7CiAgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7CiAgICAgICAgIGlmICghZXh0cmFjdFRyYW5zZmVyYWJs
ZXMoYXJnc1sxXSwgcG9ydHMsIGFycmF5QnVmZmVycykpCi0gICAgICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOworICAgICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQog
ICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlID0KQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkVGhyb3csCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBp
ZiAoZGlkVGhyb3cpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdvcmtl
ci0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0cywgZWMpOwogICAgIHJldHVy
biB0aHJvd0Vycm9yKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5j
cHAKaW5kZXggNWU2NGZjMmQzNTgwY2JiMTY5OTBiMTcyYmZkOTljODA3NmIzZmJmOS4uODBmNWY5
NmM2MjZmYTAzNTQyODgxZjg2NDU5OWFlMmZiZWRkN2Y3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcApAQCAtOTksNyArOTksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVx
dWVzdDo6cmVzcG9uc2VBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cgogICAgICAgICB9
CiAgICAgfQogCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6Om9w
ZW5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtMTIwLDcgKzEyMCw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpvcGVuQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBTdHJpbmcgdXJsc3RyaW5nID0gdG9XZWJDb3Jl
U3RyaW5nKGFyZ3NbMV0pOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBn
ZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAog
ICAgIEtVUkwgdXJsID0gY29udGV4dC0+Y29tcGxldGVVUkwodXJsc3RyaW5nKTsKIApAQCAtMTQ1
LDcgKzE0NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpvcGVu
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAoZWMpCiAgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKLSAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiBzdGF0aWMg
Ym9vbCBpc0RvY3VtZW50VHlwZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCkBAIC0yMDIs
NyArMjAyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChlYykKICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAotICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKaW5kZXggM2RjOWVmNTcwZjZkYjBj
MTExNmY4MDE2ZmQ4YzMxMzFlMTQ2ZjY1NC4uMGRmYjMyYjBmMmI3OTBjZDcyNmIwNTY3YTEyN2E3
YzM3MTVmMGZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKQEAgLTUzLDEzICs1MywxMyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYU0xUUHJvY2Vzc29yOjppbXBvcnRTdHlsZXNoZWV0Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZQogewogICAgIElOQ19TVEFUUygiRE9NLlhTTFRQcm9jZXNz
b3IuaW1wb3J0U3R5bGVzaGVldCIpOwogICAgIGlmICghVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdz
WzBdKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CiAKICAgICBYU0xUUHJvY2Vzc29yKiBpbXAgPSBWOFhTTFRQcm9jZXNzb3I6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCiAgICAgTm9kZSogbm9kZSA9IFY4Tm9kZTo6dG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSk7CiAgICAgaW1wLT5p
bXBvcnRTdHlsZXNoZWV0KG5vZGUpOwotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIApAQCAtNjcsNyArNjcsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub0ZyYWdtZW50Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZwogewogICAgIElOQ19TVEFUUygiRE9NLlhTTFRQcm9jZXNzb3IudHJhbnNm
b3JtVG9GcmFnbWVudCIpOwogICAgIGlmICghVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdKSB8
fCAhVjhEb2N1bWVudDo6SGFzSW5zdGFuY2UoYXJnc1sxXSkpCi0gICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgWFNMVFBy
b2Nlc3NvciogaW1wID0gVjhYU0xUUHJvY2Vzc29yOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
IApAQCAtODMsMTcgKzgzLDE3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNz
b3I6OnRyYW5zZm9ybVRvRG9jdW1lbnRDYWxsYmFjayhjb25zdCB2ODo6QXJnCiAgICAgSU5DX1NU
QVRTKCJET00uWFNMVFByb2Nlc3Nvci50cmFuc2Zvcm1Ub0RvY3VtZW50Iik7CiAKICAgICBpZiAo
IVY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgWFNMVFByb2Nlc3Nv
ciogaW1wID0gVjhYU0xUUHJvY2Vzc29yOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIAogICAg
IE5vZGUqIHNvdXJjZSA9IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChhcmdzWzBdKSk7CiAgICAgaWYgKCFzb3VyY2UpCi0gICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPERv
Y3VtZW50PiByZXN1bHQgPSBpbXAtPnRyYW5zZm9ybVRvRG9jdW1lbnQoc291cmNlKTsKICAgICBp
ZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBh
cmdzLkdldElzb2xhdGUoKSk7CiB9CkBAIC0xMDMsNyArMTAzLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29yLnNldFBhcmFtZXRl
ciIpOwogICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSB8fCBpc1VuZGVmaW5lZE9y
TnVsbChhcmdzWzJdKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBYU0xUUHJvY2Vzc29yKiBpbXAgPSBWOFhTTFRQ
cm9jZXNzb3I6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCkBAIC0xMTIsNyArMTEyLDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBTdHJpbmcgdmFsdWUgPSB0b1dlYkNvcmVTdHJp
bmcoYXJnc1syXSk7CiAgICAgaW1wLT5zZXRQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5h
bWUsIHZhbHVlKTsKIAotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CiB9CiAKIApAQCAtMTIwLDcgKzEyMCw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFhTTFRQcm9jZXNzb3I6OmdldFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmCiB7CiAgICAgSU5DX1NUQVRTKCJET00uWFNMVFByb2Nlc3Nvci5nZXRQYXJhbWV0ZXIi
KTsKICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkpCi0gICAgICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgWFNM
VFByb2Nlc3NvciogaW1wID0gVjhYU0xUUHJvY2Vzc29yOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKIApAQCAtMTI4LDcgKzEyOCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQcm9j
ZXNzb3I6OmdldFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgU3Ry
aW5nIGxvY2FsTmFtZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzFdKTsKICAgICBTdHJpbmcgcmVz
dWx0ID0gaW1wLT5nZXRQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIGlm
IChyZXN1bHQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAg
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgcmV0dXJuIHY4U3RyaW5nKHJlc3VsdCwg
YXJncy5HZXRJc29sYXRlKCkpOwogfQpAQCAtMTM3LDE0ICsxMzcsMTQgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW4KIHsKICAgICBJTkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29yLnJlbW92ZVBh
cmFtZXRlciIpOwogICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSkKLSAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAK
ICAgICBYU0xUUHJvY2Vzc29yKiBpbXAgPSBWOFhTTFRQcm9jZXNzb3I6OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOwogCiAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHRvV2ViQ29yZVN0cmluZyhh
cmdzWzBdKTsKICAgICBTdHJpbmcgbG9jYWxOYW1lID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMV0p
OwogICAgIGltcC0+cmVtb3ZlUGFyYW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKLSAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="commit-queue"
          id="166832"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157062</attachid>
            <date>2012-08-07 17:56:40 -0700</date>
            <delta_ts>2012-08-07 17:56:40 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-93217-20120808095613.patch</filename>
            <type>text/plain</type>
            <size>64588</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmZGFmNzc0YzVmMmRm
ZjdkOTUwZTA3OTc2MTA3ZWRmZWE4MGU0Yy4uMTM1OGNmYmVlNGRkYzg1ZGU3ZmU4M2NhOTM2MWQ1
NTM5Zjg5ODcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAxMi0wOC0wNSAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBSZXBsYWNl
IHY4OjpVbmRlZmluZWQoKSBpbiBjdXN0b20gYmluZGluZ3Mgd2l0aCB2OFVuZGVmaW5lZCgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzIxNworCisg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFdlIHNob3VsZCB1c2Ug
djhVbmRlZmluZWQoKSBldmVyeXdoZXJlIGluIFY4IGJpbmRpbmdzLgorCisgICAgICAgIE5vIHRl
c3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFdlYkdM
QXJyYXlIZWxwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdNYWNy
b3MuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhDbGlwYm9hcmQ6OmNsZWFyRGF0YUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4Q2xpcGJvYXJkOjpzZXREcmFnSW1hZ2VDYWxsYmFjayk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOENvbnNvbGU6OnByb2ZpbGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpW
OENvbnNvbGU6OnByb2ZpbGVFbmRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Gb3Jt
RGF0YTo6YXBwZW5kQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dTZXRUaW1lb3V0SW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6ZXZlbnRBY2Nlc3NvckdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6cmVsZWFzZUV2ZW50c0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpjYXB0dXJlRXZlbnRzQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6RGlhbG9nSGFuZGxlcjo6cmV0dXJuVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZ0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV2luZG93OjpvcGVuQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEb2N1bWVu
dDo6Z2V0Q1NTQ2FudmFzQ29udGV4dENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEV2ZW50OjpkYXRh
VHJhbnNmZXJBY2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEV2ZW50OjpjbGlw
Ym9hcmREYXRhQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEdlb2xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4R2VvbG9jYXRpb246
OmdldEN1cnJlbnRQb3NpdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R2VvbG9j
YXRpb246OndhdGNoUG9zaXRpb25DYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW1D
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxBbGxDb2xsZWN0aW9uOjpjYWxsQXNG
dW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxDb2xsZWN0aW9uOjpu
YW1lZEl0ZW1DYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERv
Y3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50Ojp3cml0
ZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50Ojp3cml0ZWxuQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6Om9wZW5DYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkUHJv
cGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVs
ZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MSW5wdXRFbGVtZW50Ojpz
ZXRTZWxlY3Rpb25SYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhI
VE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZW1vdmVFbGVtZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SGlzdG9yeTo6cHVzaFN0YXRlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VjhIaXN0b3J5OjpyZXBsYWNlU3RhdGVDYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQktl
eUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE9iamVjdENhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0cnVjdG9y
TmFtZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojpp
c0hUTUxBbGxDb2xsZWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3Rl
ZFNjcmlwdEhvc3Q6OnR5cGVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVk
U2NyaXB0SG9zdDo6ZnVuY3Rpb25EZXRhaWxzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VjhJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJZENhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpzdG9yYWdlSWRDYWxsYmFj
ayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpw
b3J0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6
OnNob3dDb250ZXh0TWVudUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Omhpc3RvZ3JhbUVu
dW1lcmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VjhMb2NhdGlvbjo6dG9TdHJpbmdDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OE1lc3NhZ2VDaGFubmVsOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
Tm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0UGVybWlzc2lvbkNhbGxiYWNrKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uQ2FsbGJhY2spOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4U1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWxDYWxsYmFjayk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
dmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYpOgorICAgICAgICAoV2ViQ29yZTo6dW5pZm9y
bUhlbHBlcmkpOgorICAgICAgICAoV2ViQ29yZTo6dW5pZm9ybU1hdHJpeEhlbHBlcik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXRUaW1lb3V0T3JJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpW
OFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHNDYWxsYmFjayk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRs
ZVBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhN
TEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4WE1MSHR0cFJlcXVl
c3Q6OnJlc3BvbnNlQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhYTUxIdHRw
UmVxdWVzdDo6b3BlbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4WE1MSHR0cFJlcXVl
c3Q6OnNlbmRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WFNMVFBy
b2Nlc3NvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhTTFRQcm9jZXNzb3I6Omlt
cG9ydFN0eWxlc2hlZXRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFhTTFRQcm9jZXNz
b3I6OnRyYW5zZm9ybVRvRnJhZ21lbnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFhT
TFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvRG9jdW1lbnRDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpWOFhTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlckNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4WFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhYU0xUUHJvY2Vzc29yOjpyZW1vdmVQYXJhbWV0ZXJDYWxsYmFjayk6CisKIDIw
MTItMDgtMDcgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtFRkxdIFJlbW92ZSBQbGF0Zm9ybVRvdWNoRXZlbnRFZmwgYW5kIFBsYXRmb3JtVG91Y2hQb2lu
dEVmbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJy
YXlCdWZmZXJWaWV3Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAppbmRleCA3M2NhNWFlMDEwNzMyOTc1OWFlMDNjYWIy
MzM0NWM2N2ZhOThkODI3Li45MDc5NDdiOGM2NDRlNDA0MTg2MGUzZjY4N2RmNzk4NzRiNmM2YmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1
ZmZlclZpZXdDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaApAQCAtMjE2LDcgKzIxNiw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBzZXRXZWJHTEFycmF5SGVscGVyKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAgICAgICAgICAgICBvZmZzZXQgPSB0b1VJbnQzMihhcmdzWzFdKTsKICAgICAgICAgaWYgKCFp
bXBsLT5zZXQoc3JjLCBvZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihJTkRFWF9TSVpFX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOwotICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAg
ICB9CiAKICAgICBpZiAoYXJnc1swXS0+SXNPYmplY3QoKSkgewpAQCAtMjM3LDcgKzIzNyw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRXZWJHTEFycmF5SGVscGVyKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspCiAgICAgICAgICAgICAgICAgaW1wbC0+c2V0KG9mZnNldCArIGksIGFycmF5LT5HZXQo
aSktPk51bWJlclZhbHVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIH0KIAogICAgIHJldHVy
biBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUiwgYXJncy5HZXRJc29sYXRlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGlu
Z01hY3Jvcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGluZ01h
Y3Jvcy5oCmluZGV4IGNlNTE3MDY0N2RiNmI2MjZiMWYyMGFjMjMyOTFjY2YyODBmYTkwZDguLmIx
OTU0M2I3MjYzOTcxYjZlYTRkMGU2MWZjODYyM2MwMTcyMDZhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdNYWNyb3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmgKQEAgLTQwLDcg
KzQwLDcgQEAKICNkZWZpbmUgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyh0
eXBlLCB2YXIsIHZhbHVlKSBcCiAgICAgdHlwZSB2YXIodmFsdWUpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGlmICghdmFyLnByZXBhcmUoKSkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICNkZWZpbmUg
U1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DS19WT0lEKHR5cGUsIHZhciwgdmFs
dWUpIFwKICAgICB0eXBlIHZhcih2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4IDgwMDMwMTI4ZDRiZTNmMTUw
MzkxYjdmNWJmMzViNGIzMDBlZGFlZmEuLjY4MWI3YWEwYTQ4MDY2MWJmZmJhNDBhMTQ3Mjc4MjA3
MDUzMzg1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OENsaXBib2FyZEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcApAQCAtNjksNyArNjksNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OmNsZWFyRGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiAKICAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkpIHsKICAgICAgICAgY2xpcGJvYXJk
LT5jbGVhckFsbERhdGEoKTsKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
IT0gMSkKQEAgLTc3LDcgKzc3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJk
OjpjbGVhckRhdGFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiAgICAgU3Ry
aW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CiAgICAgY2xpcGJvYXJkLT5jbGVh
ckRhdGEodHlwZSk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpzZXRE
cmFnSW1hZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtODYsNyArODYs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OnNldERyYWdJbWFnZUNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIENsaXBib2FyZCogY2xpcGJvYXJkID0g
VjhDbGlwYm9hcmQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCiAgICAgaWYgKCFjbGlwYm9h
cmQtPmlzRm9yRHJhZ0FuZERyb3AoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
KyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBpZiAoYXJncy5MZW5ndGgoKSAh
PSAzKQogICAgICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpTeW50YXhF
cnJvciwgInNldERyYWdJbWFnZTogSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIiwgYXJncy5H
ZXRJc29sYXRlKCkpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OENsaXBib2FyZDo6c2V0RHJhZ0ltYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
CiAgICAgZWxzZQogICAgICAgICBjbGlwYm9hcmQtPnNldERyYWdJbWFnZUVsZW1lbnQobm9kZSwg
SW50UG9pbnQoeCwgeSkpOwogCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcApp
bmRleCAyYmQyYmYxZjA5MTNjOTBlYzJlODUzMGNmNTYzNGFjMzQ0YzU2MzQ0Li5jYTI5NjQ1MWEy
YzdhNjBhMTc0YjhkZjMzOTliZDhmMmNkYWJjYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcApAQCAtNzAsNyArNzAs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBDb25zb2xlKiBpbXAgPSBWOENvbnNvbGU6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxT
dGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2soMSkpOwogICAgIGlmICghY2FsbFN0YWNrKQotICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKICAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVy
PFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHRpdGxlLCBhcmdzWzBdKTsKICAgICBpbXAtPnBy
b2ZpbGUodGl0bGUsIFNjcmlwdFN0YXRlOjpjdXJyZW50KCksIGNhbGxTdGFjayk7CiAgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwpAQCAtODIsNyArODIsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlRW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKICAgICBDb25zb2xlKiBpbXAgPSBWOENvbnNvbGU6OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOwogICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVT
Y3JpcHRDYWxsU3RhY2soMSkpOwogICAgIGlmICghY2FsbFN0YWNrKQotICAgICAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICBTVFJJ
TkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPFdpdGhVbmRlZmlu
ZWRPck51bGxDaGVjaz4sIHRpdGxlLCBhcmdzWzBdKTsKICAgICBpbXAtPnByb2ZpbGVFbmQodGl0
bGUsIFNjcmlwdFN0YXRlOjpjdXJyZW50KCksIGNhbGxTdGFjayk7CiAgICAgcmV0dXJuIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCmluZGV4IDhmNzVjMGU1NzIyMTFj
YzZhNjMxOTNlMDhjYzQxOTVkNzYwZjk5NDUuLjQ2Nzg3ZDdhYmNhMDkzM2Y1NTMyYWE1MjQwMDQw
ZDU4OGIzNWI4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NRm9ybURhdGE6OmFwcGVuZENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiAgICAgfSBlbHNlCiAgICAgICAgIGRvbUZvcm1EYXRhLT5hcHBlbmQo
bmFtZSwgdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhhcmcpKTsKIAotICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDUxYmY0MGM4NGM4OTU1NjMzYmM1N2I5
ZmE1MjY5NTI4NTMxNjE5NTQuLmM2OWI4YzRjZWM0YzA4OGQ3ZWQxYmQ1ZWFkN2ZjM2JkNjMyZWE5
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBz
aW5nbAogICAgIGludCBhcmd1bWVudENvdW50ID0gYXJncy5MZW5ndGgoKTsKIAogICAgIGlmIChh
cmd1bWVudENvdW50IDwgMSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBET01XaW5kb3cqIGltcCA9IFY4RE9NV2lu
ZG93Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+KGlt
cC0+ZG9jdW1lbnQoKSk7CkBAIC05MSw3ICs5MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBX
aW5kb3dTZXRUaW1lb3V0SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmds
CiAKICAgICAgICAgICAgIC8vIEJhaWwgb3V0IGlmIHN0cmluZyBjb252ZXJzaW9uIGZhaWxlZC4K
ICAgICAgICAgICAgIGlmICh2OFN0cmluZy5Jc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKIAogICAgICAgICAgICAgZnVuY3Rpb25TdHJpbmcgPSB0b1dlYkNvcmVTdHJpbmcodjhTdHJp
bmcpOwogICAgICAgICB9CkBAIC05OSw3ICs5OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBX
aW5kb3dTZXRUaW1lb3V0SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmds
CiAgICAgICAgIC8vIERvbid0IGFsbG93IHNldHRpbmcgdGltZW91dHMgdG8gcnVuIGVtcHR5IGZ1
bmN0aW9ucyEKICAgICAgICAgLy8gKEJ1ZyAxMDA5NTk3KQogICAgICAgICBpZiAoZnVuY3Rpb25T
dHJpbmcubGVuZ3RoKCkgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CisgICAgICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBpbnQzMl90
IHRpbWVvdXQgPSAwOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBX
aW5kb3dTZXRUaW1lb3V0SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmds
CiAgICAgICAgIHRpbWVvdXQgPSBhcmdzWzFdLT5JbnQzMlZhbHVlKCk7CiAKICAgICBpZiAoIUJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5z
dGFuY2UoKSwgaW1wLT5mcmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
KyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBpbnQgaWQ7CiAgICAgaWYgKGZ1
bmN0aW9uLT5Jc0Z1bmN0aW9uKCkpIHsKQEAgLTE0OCwyMCArMTQ4LDIwIEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6ZXZlbnRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERP
TVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGlu
Zm8uVGhpcygpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBGcmFt
ZSogZnJhbWUgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoaG9sZGVyKS0+ZnJhbWUoKTsKICAgICBp
ZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0
ZTo6aW5zdGFuY2UoKSwgZnJhbWUpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwor
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4
dD4gY29udGV4dCA9IFY4UHJveHk6OmNvbnRleHQoZnJhbWUpOwogICAgIGlmIChjb250ZXh0Lklz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGV2ZW50U3ltYm9s
ID0gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmV2ZW50KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGpzRXZlbnQgPSBjb250ZXh0LT5HbG9iYWwoKS0+R2V0SGlkZGVuVmFsdWUoZXZlbnRTeW1i
b2wpOwogICAgIGlmIChqc0V2ZW50LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIGpzRXZl
bnQ7CiB9CiAKQEAgLTIzNCwxNiArMjM0LDE2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAg
ICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CiAKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJp
bmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBEb2N1
bWVudCogZG9jID0gaW1wLT5kb2N1bWVudCgpOwogCiAgICAgaWYgKCFkb2MpCi0gICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAg
ICAgLy8gRklYTUU6IENoZWNrIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggYXJndW1lbnRzCiAgICAg
aWYgKCFpbXAtPmZyYW1lKCkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAg
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlLCBM
aXN0ZW5lckZpbmRPckNyZWF0ZSk7CiAKQEAgLTI1Miw3ICsyNTIsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJgogICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCks
IGFyZ3NbMV0sIGV2ZW50TGlzdGVuZXJDYWNoZUluZGV4KTsKICAgICB9CiAKLSAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiAKQEAgLTI2
NiwxNSArMjY2LDE1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cmVtb3Zl
RXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgRE9NV2luZG93KiBp
bXAgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKICAgICBpZiAoIUJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5z
dGFuY2UoKSwgaW1wLT5mcmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
KyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBEb2N1bWVudCogZG9jID0gaW1w
LT5kb2N1bWVudCgpOwogCiAgICAgaWYgKCFkb2MpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgaWYgKCFpbXAtPmZy
YW1lKCkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhE
T01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlLCBMaXN0ZW5lckZpbmRP
bmx5KTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdp
bmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAg
ICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgZXZlbnRM
aXN0ZW5lckNhY2hlSW5kZXgpOwogICAgIH0KIAotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHN0YXRpYyBib29sIGlzTGVnYWN5VGFy
Z2V0T3JpZ2luRGVzaWduYXRpb24odjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQpAQCAtMzI0
LDEyICszMjQsMTIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYW5kbGVQb3N0TWVz
c2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICAgICAgICAgICAgICB0
cmFuc2ZlcmFibGVzQXJnSW5kZXggPSAxOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCFleHRyYWN0VHJhbnNmZXJhYmxlcyhhcmdzW3RyYW5zZmVyYWJsZXNBcmdJbmRleF0sIHBvcnRB
cnJheSwgYXJyYXlCdWZmZXJBcnJheSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICAgICAg
fSAKICAgICAgICAgdGFyZ2V0T3JpZ2luID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxPclVuZGVm
aW5lZENoZWNrKGFyZ3NbdGFyZ2V0T3JpZ2luQXJnSW5kZXhdKTsKIAogICAgICAgICBpZiAodHJ5
Q2F0Y2guSGFzQ2F1Z2h0KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwor
ICAgICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogCiAKQEAgLTM0MSw3ICsz
NDEsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRUaHJvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIGlmIChkaWRUaHJvdykKLSAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3aW5kb3ctPnBvc3RNZXNzYWdlKG1lc3NhZ2Uu
cmVsZWFzZSgpLCAmcG9ydEFycmF5LCB0YXJnZXRPcmlnaW4sIHNvdXJjZSwgZWMpOwpAQCAtMzc2
LDEzICszNzYsMTMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp0b1N0cmlu
Z0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhET01XaW5kb3c6OnJlbGVhc2VFdmVudHNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5ub3AoKSIpOwotICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6Y2FwdHVyZUV2ZW50c0NhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93
Lm5vcCgpIik7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKIH0KIAogY2xhc3MgRGlhbG9nSGFuZGxlciB7CkBAIC00MTQsMTEgKzQxNCwxMSBA
QCBpbmxpbmUgdm9pZCBEaWFsb2dIYW5kbGVyOjpkaWFsb2dDcmVhdGVkKERPTVdpbmRvdyogZGlh
bG9nRnJhbWUpCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IERpYWxvZ0hhbmRsZXI6OnJl
dHVyblZhbHVlKCkgY29uc3QKIHsKICAgICBpZiAobV9kaWFsb2dDb250ZXh0LklzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKG1fZGlhbG9nQ29udGV4dCk7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJldHVyblZhbHVlID0gbV9kaWFsb2dDb250ZXh0LT5H
bG9iYWwoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygicmV0dXJuVmFsdWUiKSk7CiAgICAgaWYgKHJl
dHVyblZhbHVlLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQog
CkBAIC00MzMsNyArNDMzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpz
aG93TW9kYWxEaWFsb2dDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIERPTVdpbmRv
dyogaW1wbCA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBCaW5k
aW5nU3RhdGUqIHN0YXRlID0gQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpOwogICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUsIGltcGwtPmZyYW1l
KCkpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKIAogICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucyBwcm9wZXJseS4K
ICAgICBTdHJpbmcgdXJsU3RyaW5nID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxPclVuZGVmaW5l
ZENoZWNrKGFyZ3NbMF0pOwpAQCAtNDUxLDcgKzQ1MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTVdpbmRvdzo6b3BlbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAg
ICAgRE9NV2luZG93KiBpbXBsID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwogICAgIEJpbmRpbmdTdGF0ZSogc3RhdGUgPSBCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCk7CiAg
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShzdGF0ZSwg
aW1wbC0+ZnJhbWUoKSkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgLy8gRklYTUU6IEhhbmRsZSBleGNlcHRpb25z
IHByb3Blcmx5LgogICAgIFN0cmluZyB1cmxTdHJpbmcgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVs
bE9yVW5kZWZpbmVkQ2hlY2soYXJnc1swXSk7CkBAIC00NjAsNyArNDYwLDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIAogICAgIFJlZlB0cjxET01XaW5kb3c+IG9wZW5lZFdpbmRvdyA9IGltcGwtPm9w
ZW4odXJsU3RyaW5nLCBmcmFtZU5hbWUsIHdpbmRvd0ZlYXR1cmVzU3RyaW5nLCBhY3RpdmVET01X
aW5kb3coc3RhdGUpLCBmaXJzdERPTVdpbmRvdyhzdGF0ZSkpOwogICAgIGlmICghb3BlbmVkV2lu
ZG93KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKIAogICAgIHJldHVybiB0b1Y4KG9wZW5lZFdpbmRvdy5yZWxlYXNlKCksIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5j
cHAKaW5kZXggNzZkMTZhNGNkZWZiOWZmMTBmMmQyMzY4ZTBhMDBiOTcxNWJmNjI3ZC4uN2Y0MWJl
YjViNjMzMDBjODI5ZTJkMWYwODI5YjE2ZDI4MTFlMGViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29y
a2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MKICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyczsKICAgICBpZiAoYXJncy5M
ZW5ndGgoKSA+IDEpIHsKICAgICAgICAgaWYgKCFleHRyYWN0VHJhbnNmZXJhYmxlcyhhcmdzWzFd
LCBwb3J0cywgYXJyYXlCdWZmZXJzKSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CisgICAgICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICB9CiAgICAgYm9vbCBk
aWRUaHJvdyA9IGZhbHNlOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3Nh
Z2UgPQpAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRs
ZVBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRUaHJvdywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIGlmIChkaWRUaHJv
dykKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgd29ya2VyQ29udGV4dC0+
cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCksICZwb3J0cywgZWMpOwogICAgIHJldHVybiB0
aHJvd0Vycm9yKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggMDYxNzMz
MTc4NmY2NTZmYzY3NDEzNTZmNWYxY2JkYWZjM2QyZmMzYS4uOGRkYTQ0ZWVjMmNhNWQ1NDMxOWQ1
NTE2ZTkwMmM1YTFlYWVlMmRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0Q2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50CiAgICAgaW50IGhlaWdodCA9IHRvSW50MzIoYXJnc1szXSk7
CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogcmVzdWx0ID0gaW1wLT5nZXRDU1NDYW52YXND
b250ZXh0KGNvbnRleHRJZCwgbmFtZSwgd2lkdGgsIGhlaWdodCk7CiAgICAgaWYgKCFyZXN1bHQp
Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogICAgIGlmIChyZXN1bHQtPmlzMmQoKSkKICAgICAgICAgcmV0dXJuIHRvVjgoc3Rh
dGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKj4ocmVzdWx0KSwgYXJncy5HZXRJc29s
YXRlKCkpOwogI2lmIEVOQUJMRShXRUJHTCkKQEAgLTExNSw3ICsxMTUsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudAogICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxXZWJHTFJlbmRl
cmluZ0NvbnRleHQqPihyZXN1bHQpLCBhcmdzLkdldElzb2xhdGUoKSk7CiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkdMKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4KERvY3VtZW50KiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgYm9vbCBm
b3JjZU5ld09iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEV2ZW50Q3VzdG9tLmNwcAppbmRleCA5ZGE1MmM3NGZhODI4NzRkMzhhNzhjM2QxMWU3Y2Jl
NTY4ZjY0NzE2Li44MjdjZTlkMmY3ODhiMWU5NTNlMThlOTA0NDI5ODI0ODVkZDI0NTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20u
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEV2ZW50OjpkYXRh
VHJhbnNmZXJBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBpZiAoZXZl
bnQtPmlzRHJhZ0V2ZW50KCkpCiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PE1vdXNl
RXZlbnQqPihldmVudCktPmNsaXBib2FyZCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAKLSAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhFdmVudDo6Y2xpcGJvYXJkRGF0YUFjY2Vzc29yR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQpAQCAtNjYsNyArNjYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhFdmVudDo6Y2xpcGJv
YXJkRGF0YUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIGlmIChldmVu
dC0+aXNDbGlwYm9hcmRFdmVudCgpKQogICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxD
bGlwYm9hcmRFdmVudCo+KGV2ZW50KS0+Y2xpcGJvYXJkKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsK
IAotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CiB9CiAKICNkZWZpbmUgVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UoaW50ZXJmYWNlTmFtZSkg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2VvbG9j
YXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2Vv
bG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDM3MzRhMjNkNWFiNDYzZTVhZWFlZDg3Y2ZhZDRhYmM0
NzdmNWRhNzYuLmY5YWNlZmU1ZTU4ZDY5MGZmNmNjN2U2Mjg5MThiMmJiNDZlOWMyYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2Nh
dGlvbkN1c3RvbS5jcHAKQEAgLTEzNSwyMiArMTM1LDIyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lCiAKICAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjayA9IGNy
ZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPFY4UG9zaXRpb25DYWxsYmFjaz4oYXJnc1swXSwgc3Vj
Y2VlZGVkLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgaWYgKCFzdWNjZWVkZWQpCi0gICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
ICAgIEFTU0VSVChwb3NpdGlvbkNhbGxiYWNrKTsKIAogICAgIC8vIEFyZ3VtZW50IGlzIG9wdGlv
bmFsIChoZW5jZSB1bmRlZmluZWQgaXMgYWxsb3dlZCksIGFuZCBudWxsIGlzIGFsbG93ZWQuCiAg
ICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrID0g
Y3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8VjhQb3NpdGlvbkVycm9yQ2FsbGJhY2s+KGFyZ3Nb
MV0sIHN1Y2NlZWRlZCwgYXJncy5HZXRJc29sYXRlKCksIENhbGxiYWNrQWxsb3dVbmRlZmluZWQg
fCBDYWxsYmFja0FsbG93TnVsbCk7CiAgICAgaWYgKCFzdWNjZWVkZWQpCi0gICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAg
UmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gcG9zaXRpb25PcHRpb25zID0gY3JlYXRlUG9zaXRpb25P
cHRpb25zKGFyZ3NbMl0sIHN1Y2NlZWRlZCk7CiAgICAgaWYgKCFzdWNjZWVkZWQpCi0gICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
ICAgIEFTU0VSVChwb3NpdGlvbk9wdGlvbnMpOwogCiAgICAgR2VvbG9jYXRpb24qIGdlb2xvY2F0
aW9uID0gVjhHZW9sb2NhdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgZ2VvbG9j
YXRpb24tPmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9z
aXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLnJlbGVhc2UoKSk7
Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
IH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4R2VvbG9jYXRpb246OndhdGNoUG9zaXRpb25D
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtMTYxLDE3ICsxNjEsMTcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4R2VvbG9jYXRpb246OndhdGNoUG9zaXRpb25DYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJgogCiAgICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBv
c2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxWOFBvc2l0aW9uQ2Fs
bGJhY2s+KGFyZ3NbMF0sIHN1Y2NlZWRlZCwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIGlmICgh
c3VjY2VlZGVkKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25DYWxsYmFjayk7CiAKICAgICAv
LyBBcmd1bWVudCBpcyBvcHRpb25hbCAoaGVuY2UgdW5kZWZpbmVkIGlzIGFsbG93ZWQpLCBhbmQg
bnVsbCBpcyBhbGxvd2VkLgogICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0
aW9uRXJyb3JDYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPFY4UG9zaXRpb25F
cnJvckNhbGxiYWNrPihhcmdzWzFdLCBzdWNjZWVkZWQsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBDYWxs
YmFja0FsbG93VW5kZWZpbmVkIHwgQ2FsbGJhY2tBbGxvd051bGwpOwogICAgIGlmICghc3VjY2Vl
ZGVkKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKIAogICAgIFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IHBvc2l0aW9uT3B0aW9u
cyA9IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhhcmdzWzJdLCBzdWNjZWVkZWQpOwogICAgIGlmICgh
c3VjY2VlZGVkKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25PcHRpb25zKTsKIAogICAgIEdl
b2xvY2F0aW9uKiBnZW9sb2NhdGlvbiA9IFY4R2VvbG9jYXRpb246OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDBjODNmYjUzNDE3ZTdk
ZWE5MDA3YzNjMmRjYWRjMGU1NTZmNzdjZDkuLmFlNmEzN2E5YjRkMjllNTMxMWM3NGNkOGQ4MTky
YmZlOWU1M2YxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTYyLDcgKzYy
LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRJdGVtKEhUTUxBbGxDb2xsZWN0
aW9uKiBjb2xsZWN0aW9uLCB2ODo6SGFuZGxlPHYKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoY29sbGVjdGlvbiwgdG9XZWJDb3JlU3RyaW5nKGFy
Z3VtZW50LT5Ub1N0cmluZygpKSwgaXNvbGF0ZSk7CiAKICAgICAgICAgaWYgKHJlc3VsdC5Jc0Vt
cHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBA
IC05OCw3ICs5OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0aW9u
OjpuYW1lZEl0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzCiAgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJn
c1swXSksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIGlmIChyZXN1bHQuSXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMDcsNyArMTA3LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246OmNhbGxBc0Z1bmN0aW9uQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3UKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQWxsQ29sbGVjdGlv
bi5jYWxsQXNGdW5jdGlvbigpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQotICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
IAogICAgIEhUTUxBbGxDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxBbGxDb2xsZWN0aW9uOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKIApAQCAtMTE4LDEyICsxMTgsMTIgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246OmNhbGxBc0Z1bmN0aW9uQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3UKICAgICBTdHJpbmcgbmFtZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsK
ICAgICB2ODo6TG9jYWw8djg6OlVpbnQzMj4gaW5kZXggPSBhcmdzWzFdLT5Ub0FycmF5SW5kZXgo
KTsKICAgICBpZiAoaW5kZXguSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIGlmIChOb2RlKiBub2Rl
ID0gaW1wLT5uYW1lZEl0ZW1XaXRoSW5kZXgobmFtZSwgaW5kZXgtPlVpbnQzMlZhbHVlKCkpKQog
ICAgICAgICByZXR1cm4gdG9WOChub2RlLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKLSAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggN2E2ZjdiOTVi
ZGZmNjA4NmFkZWQyZDQ5NTNlYWRjOGE1OTM1YjQ3MS4uY2U4OWVjODM5NTYzMzUyYTkxMTUyNTM5
MGQxMGRiNDRhNmVjNzUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtODAsNyArODAs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdz
LkdldElzb2xhdGUoKSk7CiAKICAgICBpZiAocmVzdWx0LklzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggMmZjYzU4MWY5YjNj
MGEyZGExYjI5MGUwN2Y1MWNlYzlkNjIzMmM1ZC4uZDM3YTcyNWE4YWY0ZDgzYTM0NTMzYTI0NjBi
YmJlYmRjMzI3ZjY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50Ojp3cml0ZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgSFRNTERvY3VtZW50KiBodG1sRG9jdW1lbnQgPSBW
OEhUTUxEb2N1bWVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgRnJhbWUqIGZyYW1l
ID0gYWN0aXZlRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpKTsKICAgICBodG1sRG9jdW1l
bnQtPndyaXRlKHdyaXRlSGVscGVyR2V0U3RyaW5nKGFyZ3MpLCBmcmFtZSA/IGZyYW1lLT5kb2N1
bWVudCgpIDogTlVMTCk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50
Ojp3cml0ZWxuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKQEAgLTEzMCw3ICsx
MzAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6OndyaXRlbG5DYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIEhUTUxEb2N1bWVudCogaHRtbERv
Y3VtZW50ID0gVjhIVE1MRG9jdW1lbnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEZy
YW1lKiBmcmFtZSA9IGFjdGl2ZUZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSk7CiAgICAg
aHRtbERvY3VtZW50LT53cml0ZWxuKHdyaXRlSGVscGVyR2V0U3RyaW5nKGFyZ3MpLCBmcmFtZSA/
IGZyYW1lLT5kb2N1bWVudCgpIDogTlVMTCk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
KyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SFRNTERvY3VtZW50OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKQEAg
LTE0NCw3ICsxNDQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6Om9w
ZW5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAgICAgICAgdjg6Okxv
Y2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChmcmFtZS5nZXQoKSk7
CiAgICAgICAgICAgICAvLyBCYWlsIG91dCBpZiB3ZSBjYW5ub3QgZ2V0IHRoZSBjb250ZXh0Lgog
ICAgICAgICAgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CiAgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xv
YmFsKCk7CiAgICAgICAgICAgICAvLyBHZXQgdGhlIG9wZW4gcHJvcGVydHkgb2YgdGhlIGdsb2Jh
bCBvYmplY3QuCiAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBmdW5jdGlvbiA9IGds
b2JhbC0+R2V0KHY4OjpTdHJpbmc6Ok5ldygib3BlbiIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVu
dEN1c3RvbS5jcHAKaW5kZXggOTc1NzRjZWFiM2NmNjQwOGRjYWI4Yjc0ODM2OTI5ZDk1OTgwZTU2
YS4uOWFhZWZjMzg4YjUwZTIyNGU5NWM1M2NmM2MxMWRlNTJlN2E4NDM0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZy
YW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9j
YWw8djg6OlMKICAgICBpZiAoZnJhbWVOb2RlICYmIGZyYW1lTm9kZS0+aGFzVGFnTmFtZShIVE1M
TmFtZXM6OmZyYW1lVGFnKSkgewogICAgICAgICBEb2N1bWVudCogZG9jID0gc3RhdGljX2Nhc3Q8
SFRNTEZyYW1lRWxlbWVudCo+KGZyYW1lTm9kZSktPmNvbnRlbnREb2N1bWVudCgpOwogICAgICAg
ICBpZiAoIWRvYykKLSAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAg
ICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRv
Yy0+ZnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiB0b1Y4KGZyYW1lLT5kb21XaW5kb3coKSwg
aW5mby5HZXRJc29sYXRlKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKaW5k
ZXggMDNlYWQ2NTg0ODcxMjE5YTY4MzA4ZDViZGQzZjYwNmY3ZTU0MzNhYi4uM2Y1YTQ1YTkyMjhi
N2VkOGYyZGIzYTM4Nzc1N2E4NzVjMzk4NDUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5j
cHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MSW5wdXRF
bGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZUNhbGxiYWNrKGNvbnN0IHY4OjpBcgogICAgIFN0cmlu
ZyBkaXJlY3Rpb24gPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1syXSk7CiAKICAgICBpbXAtPnNldFNl
bGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7Ci0gICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggNjFlZmE0
NGYyZTVlMDM4MjMxY2E1ZWI3ZjU4ZmU0NGRkZjZkNGIzOS4uMDQwNjdhN2MzN2MyMWEwNWRiMDE5
MDBkOWI3NjYzOWM3MDZiNzdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20u
Y3BwCkBAIC02OSw3ICs2OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25z
Q29sbGVjdGlvbjo6YWRkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICAgICAgaW50
IGluZGV4ID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CiAKICAgICAgICAgaWYgKHRyeV9jYXRjaC5I
YXNDYXVnaHQoKSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAg
ICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgICAgICBpZiAoIW9rKQogICAgICAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKQEAgLTgwLDcgKzgwLDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGRDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJgogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnNldERPTUV4
Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCi0gICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpsZW5ndGhBY2Nlc3NvckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxT
ZWxlY3RFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAwMTViZTNhMGM2MjIxYjE0NjU4NjgzNDUwODc3
MmEzMDI5NTVhMDMxLi4wYjJlZjgyY2Q2MGY5NThjMTQwMGQ5OTUwM2UyMjM0MmE3NTlkMzkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0
RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCkBAIC03NSwxMSArNzUsMTEgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHJlbW92ZUVsZW1lbnQoSFRNTFNlbGVjdEVsZW1lbnQqIGltcCwgY29u
c3Qgdjg6OkFyZ3VtZW50cyYKICAgICBpZiAoVjhIVE1MT3B0aW9uRWxlbWVudDo6SGFzSW5zdGFu
Y2UoYXJnc1swXSkpIHsKICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQqIGVsZW1lbnQgPSBWOEhU
TUxPcHRpb25FbGVtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFy
Z3NbMF0pKTsKICAgICAgICAgaW1wLT5yZW1vdmUoZWxlbWVudC0+aW5kZXgoKSk7Ci0gICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
ICAgIH0KIAogICAgIGltcC0+cmVtb3ZlKHRvSW50MzIoYXJnc1swXSkpOwotICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAKaW5kZXggNzliNWIwNzU0OTg2YjU5OTExY2IyMDZiYTM3
ZjIzOTBkMjNkNTBhOS4uZjg5OWIzM2Y1YTI1YjY5NzY2Mzc5ZDEzY2NiNThmNWEyNmFiZjFjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9y
eUN1c3RvbS5jcHAKQEAgLTY0LDE3ICs2NCwxNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhI
aXN0b3J5OjpwdXNoU3RhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAg
IGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCAw
LCAwLCBkaWRUaHJvdywgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIGlmIChkaWRUaHJvdykKLSAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CiAKICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAgICAgU3RyaW5nIHRpdGxlID0gdG9X
ZWJDb3JlU3RyaW5nV2l0aE51bGxPclVuZGVmaW5lZENoZWNrKGFyZ3NbMV0pOwogICAgIGlmICh0
cnlDYXRjaC5IYXNDYXVnaHQoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgU3RyaW5nIHVybDsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA+IDIpIHsKICAgICAgICAgdXJsID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxP
clVuZGVmaW5lZENoZWNrKGFyZ3NbMl0pOwogICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0
KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBA
IC04OSwxNyArODksMTcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SGlzdG9yeTo6cmVwbGFj
ZVN0YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBib29sIGRpZFRo
cm93ID0gZmFsc2U7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0
YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgMCwgMCwgZGlkVGhy
b3csIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBpZiAoZGlkVGhyb3cpCi0gICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAg
djg6OlRyeUNhdGNoIHRyeUNhdGNoOwogICAgIFN0cmluZyB0aXRsZSA9IHRvV2ViQ29yZVN0cmlu
Z1dpdGhOdWxsT3JVbmRlZmluZWRDaGVjayhhcmdzWzFdKTsKICAgICBpZiAodHJ5Q2F0Y2guSGFz
Q2F1Z2h0KCkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogICAgIFN0cmluZyB1cmw7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PiAyKSB7CiAgICAgICAgIHVybCA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmluZWRD
aGVjayhhcmdzWzJdKTsKICAgICAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQotICAgICAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAKaW5kZXgg
OThiYWFiOTZlYTQ0NjRlZmMyZDE5NzNjMzY4Njc2MTFlM2M4YWQ5Yi4uZmQ0NTlmY2Q0YWFmMDky
ODQ1MGI1YmFlOWU5YTU0ZGUzM2I0YjA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwCkBAIC01Miw3ICs1Miw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KElEQkFueSogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCiAKICAgICBzd2l0Y2ggKGltcGwtPnR5cGUoKSkgewogICAgIGNhc2UgSURCQW55OjpVbmRl
ZmluZWRUeXBlOgotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKICAgICBjYXNlIElEQkFueTo6TnVsbFR5cGU6CiAgICAgICAgIHJl
dHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CiAgICAgY2FzZSBJREJBbnk6OkRPTVN0cmlu
Z0xpc3RUeXBlOgpAQCAtODAsNyArODAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJ
REJBbnkqIGltcGwsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIH0KIAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQktleUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJLZXlDdXN0b20uY3BwCmluZGV4IDg0
YTRiMGM2OWY2Y2YyZTNhNzNiMzMyMmEzMzNjMjJlZTZlN2NkODcuLmI0MTc1YWRlMTk3N2Y0NTU3
ZjRiYjE3OWQ2NGUxYzc2YTkwYWU4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOElEQktleUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SURCS2V5Q3VzdG9tLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJREJLZXkqIGtleSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiAgICAgY2FzZSBJREJLZXk6OkludmFsaWRUeXBlOgogICAgIGNhc2UgSURCS2V5OjpNaW5UeXBl
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgY2FzZSBJREJLZXk6
Ok51bWJlclR5cGU6CiAgICAgICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcoa2V5LT5udW1iZXIo
KSk7CiAgICAgY2FzZSBJREJLZXk6OlN0cmluZ1R5cGU6CkBAIC02NCw3ICs2NCw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4KElEQktleSoga2V5LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
ICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCBmNzc5NGFlOTVkNzU2
MjQyMzdmZmNhM2M2YWI2MzM2YjQ2NDA4Y2ZmLi5hMTAxNWEwMGY2MzJmMjZjOTQ2Y2U5YTAxMzUy
Mjk1MzhlNzVlYTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNw
ZWN0ZWRPYmplY3RDYWxsYmFjayhjb25zdCB2ODo6QXIKIHsKICAgICBJTkNfU1RBVFMoIkluamVj
dGVkU2NyaXB0SG9zdC5pbnNwZWN0ZWRPYmplY3QoKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgp
IDwgMSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CiAKICAgICBpZiAoIWFyZ3NbMF0tPklzSW50MzIoKSkKICAgICAgICAgcmV0
dXJuIFY4UHJveHk6OnRocm93VHlwZUVycm9yKCJhcmd1bWVudCBoYXMgdG8gYmUgYW4gaW50ZWdl
ciIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTk1LDEwICs5NSwxMCBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lQ2Fs
bGJhY2soY29ucwogewogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LmludGVybmFs
Q29uc3RydWN0b3JOYW1lKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCi0gICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
CiAgICAgaWYgKCFhcmdzWzBdLT5Jc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHJldHVybiBhcmdz
WzBdLT5Ub09iamVjdCgpLT5HZXRDb25zdHJ1Y3Rvck5hbWUoKTsKIH0KQEAgLTEwNyw3ICsxMDcs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmlzSFRNTEFs
bENvbGxlY3Rpb25DYWxsYmFjayhjb25zdCB2OAogewogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRT
Y3JpcHRIb3N0LmlzSFRNTEFsbENvbGxlY3Rpb25DYWxsYmFjaygpIik7CiAgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIGlmICghYXJnc1swXS0+SXNPYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuIHY4Qm9vbGVhbihmYWxzZSwgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTIw
LDcgKzEyMCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6
dHlwZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiB7CiAgICAgSU5DX1NUQVRTKCJJ
bmplY3RlZFNjcmlwdEhvc3QudHlwZUNhbGxiYWNrKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA8IDEpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gYXJnc1sw
XTsKICAgICBpZiAodmFsdWUtPklzU3RyaW5nKCkpCkBAIC0xNDksMjAgKzE0OSwyMCBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnR5cGVDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcgogICAgICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3KCJhcnJh
eSIpOwogICAgIGlmIChWOFVpbnQ4Q2xhbXBlZEFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSkpCiAg
ICAgICAgIHJldHVybiB2ODo6U3RyaW5nOjpOZXcoImFycmF5Iik7Ci0gICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHNDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3Jp
cHRIb3N0LmZ1bmN0aW9uRGV0YWlsc0NhbGxiYWNrKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA8IDEpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogCiAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gYXJnc1swXTsKICAgICBpZiAoIXZhbHVlLT5J
c0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlv
biA9IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdCh2YWx1ZSk7CiAgICAgaW50IGxpbmVO
dW1iZXIgPSBmdW5jdGlvbi0+R2V0U2NyaXB0TGluZU51bWJlcigpOwogICAgIGludCBjb2x1bW5O
dW1iZXIgPSBmdW5jdGlvbi0+R2V0U2NyaXB0Q29sdW1uTnVtYmVyKCk7CkBAIC0yMjAsMjAgKzIy
MCwyMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEV2
ZW50TGlzdGVuZXJzQ2FsbGJhY2soY29uc3Qgdjg6OgogewogICAgIElOQ19TVEFUUygiSW5qZWN0
ZWRTY3JpcHRIb3N0LnF1ZXJ5RXZlbnRMaXN0ZW5lckNhbGxiYWNrKCkiKTsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDEpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OwogCiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUgPSBhcmdzWzBdOwogICAgIGlmICgh
VjhOb2RlOjpIYXNJbnN0YW5jZSh2YWx1ZSkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIE5vZGUqIG5vZGUgPSBWOE5v
ZGU6OnRvTmF0aXZlKHZhbHVlLT5Ub09iamVjdCgpKTsKICAgICBpZiAoIW5vZGUpCi0gICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
ICAgIC8vIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGZvciBvcnBoYW4gRG9jdW1lbnRUeXBlIG5vZGVz
LgogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFu
b2RlLT5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCA9
IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBWZWN0
b3I8RXZlbnRMaXN0ZW5lckluZm8+IGxpc3RlbmVyc0FycmF5OwpAQCAtMjU1LDQwICsyNTUsNDAg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKIHsKICAgICBJTkNfU1RBVFMoIkluamVjdGVkU2Ny
aXB0SG9zdC5pbnNwZWN0KCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCi0gICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
CiAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0ID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFNjcmlwdFZhbHVlIG9iamVjdChhcmdzWzBdKTsK
ICAgICBTY3JpcHRWYWx1ZSBoaW50cyhhcmdzWzFdKTsKICAgICBob3N0LT5pbnNwZWN0SW1wbChv
YmplY3QudG9JbnNwZWN0b3JWYWx1ZShTY3JpcHRTdGF0ZTo6Y3VycmVudCgpKSwgaGludHMudG9J
bnNwZWN0b3JWYWx1ZShTY3JpcHRTdGF0ZTo6Y3VycmVudCgpKSk7CiAKLSAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmRhdGFiYXNlSWRDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRI
b3N0LmRhdGFiYXNlSWQoKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKLSAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3QgPSBW
OEluamVjdGVkU2NyaXB0SG9zdDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgRGF0YWJh
c2UqIGRhdGFiYXNlID0gVjhEYXRhYmFzZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChhcmdzWzBdKSk7CiAgICAgaWYgKGRhdGFiYXNlKQogICAgICAgICByZXR1cm4gdjhT
dHJpbmdPclVuZGVmaW5lZChob3N0LT5kYXRhYmFzZUlkSW1wbChkYXRhYmFzZSksIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKICNlbmRpZgotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVk
U2NyaXB0SG9zdDo6c3RvcmFnZUlkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgIElOQ19TVEFUUygiSW5q
ZWN0ZWRTY3JpcHRIb3N0LnN0b3JhZ2VJZCgpIik7CiAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBo
b3N0ID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAg
IFN0b3JhZ2UqIHN0b3JhZ2UgPSBWOFN0b3JhZ2U6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QoYXJnc1swXSkpOwogICAgIGlmIChzdG9yYWdlKQogICAgICAgICByZXR1cm4g
djhTdHJpbmdPclVuZGVmaW5lZChob3N0LT5zdG9yYWdlSWRJbXBsKHN0b3JhZ2UpLCBhcmdzLkdl
dElzb2xhdGUoKSk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckZy
b250ZW5kSG9zdEN1c3RvbS5jcHAKaW5kZXggNjU5ZmQ4YjI4ZjczYzMxMjNmYTg3ZTAwYzhmNWNl
ZjQ3OGQ3OWFlOS4uOGNiYTJkMmUyM2RlMDhhOTVjNjE5MGFjNjdiYmJmZTBjMWJjY2VjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJv
bnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC02NSw3ICs2NSw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6cGxhdGZvcm1DYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6cG9ydENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKQogewotICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAK
IHN0YXRpYyB2b2lkIHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyh2ODo6TG9jYWw8djg6OkFycmF5
PiYgaXRlbUFycmF5LCBDb250ZXh0TWVudSYgbWVudSkKQEAgLTExMCwxNSArMTEwLDE1IEBAIHN0
YXRpYyB2b2lkIHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyh2ODo6TG9jYWw8djg6OkFycmF5PiYg
aXRlbUFycmF5LCBDb250ZXh0TWVuCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVudUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQotICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBldmVudFdyYXBwZXIgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNh
c3QoYXJnc1swXSk7CiAgICAgaWYgKCFWOE1vdXNlRXZlbnQ6OmluZm8uZXF1YWxzKFY4RE9NV3Jh
cHBlcjo6ZG9tV3JhcHBlclR5cGUoZXZlbnRXcmFwcGVyKSkpCi0gICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgRXZlbnQq
IGV2ZW50ID0gVjhFdmVudDo6dG9OYXRpdmUoZXZlbnRXcmFwcGVyKTsKICAgICBpZiAoIWFyZ3Nb
MV0tPklzQXJyYXkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9
IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KGFyZ3NbMV0pOwogICAgIENvbnRleHRNZW51IG1l
bnU7CkBAIC0xMzIsMTkgKzEzMiwxOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVudUNhbGxiYWNrKGNvbnN0IHY4OgogI2VuZGlm
CiAgICAgZnJvbnRlbmRIb3N0LT5zaG93Q29udGV4dE1lbnUoZXZlbnQsIGl0ZW1zKTsKIAotICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGlzdG9ncmFtRW51bWVyYXRpb24oY29uc3Qg
Y2hhciogbmFtZSwgY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgaW50IGJvdW5kYXJ5VmFsdWUp
CiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxIHx8ICFhcmdzWzBdLT5Jc0ludDMyKCkpCi0g
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOwogCiAgICAgaW50IHNhbXBsZSA9IGFyZ3NbMF0tPlRvSW50MzIoKS0+VmFsdWUoKTsKICAg
ICBpZiAoc2FtcGxlIDwgYm91bmRhcnlWYWx1ZSkKICAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6
aGlzdG9ncmFtRW51bWVyYXRpb24obmFtZSwgc2FtcGxlLCBib3VuZGFyeVZhbHVlKTsKIAotICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAK
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6cmVjb3JkQWN0
aW9uVGFrZW5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCmlu
ZGV4IGNlNjg5ODU3NDQ1NTQwMzIxMDdjZWMxNDk0MGM0M2Y3NTA4YjFiZmMuLmViMTllZDRiYjcy
NzZjNjk4YjA4YmIwNmJmMTFkODI3Mjk1YjlkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTIwNyw3ICsy
MDcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBCaW5kaW5nU3RhdGUqIHN0YXRlID0gQmlu
ZGluZ1N0YXRlOjppbnN0YW5jZSgpOwogCiAgICAgaW1wbC0+cmVsb2FkKGFjdGl2ZURPTVdpbmRv
dyhzdGF0ZSkpOwotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNl
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKQEAgLTIyMCw3ICsyMjAsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgU3RyaW5nIHVybFN0cmluZyA9IHRvV2ViQ29yZVN0cmlu
ZyhhcmdzWzBdKTsKIAogICAgIGltcGwtPnJlcGxhY2UodXJsU3RyaW5nLCBhY3RpdmVET01XaW5k
b3coc3RhdGUpLCBmaXJzdERPTVdpbmRvdyhzdGF0ZSkpOwotICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQpAQCAtMjMzLDcgKzIzMyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjph
c3NpZ25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFN0cmluZyB1cmxT
dHJpbmcgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CiAKICAgICBpbXBsLT5hc3NpZ24odXJs
U3RyaW5nLCBhY3RpdmVET01XaW5kb3coc3RhdGUpLCBmaXJzdERPTVdpbmRvdyhzdGF0ZSkpOwot
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjp2YWx1ZU9mQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKQEAgLTI1Miw3ICsyNTIsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhMb2NhdGlvbjo6dG9TdHJpbmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIo
KTsKICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKICAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdT
dGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgU3RyaW5nIHJlc3Vs
dCA9IGltcC0+aHJlZigpOwogICAgIHJldHVybiB2OFN0cmluZyhyZXN1bHQsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMDE5YTAz
MDllMGRjNTIxODczOTA4OGE3MTc4MzllZmZjYTQxNjgzZS4uNzZmYzIzNmM2ZThkZGI2NDk1M2E1
YTExMGI2MTVkNzgxN2M2YmE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAK
QEAgLTU5LDcgKzU5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUNoYW5uZWw6
OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICAvLyBHZXQgdGhl
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgKFdvcmtlckNvbnRleHQgb3IgRG9jdW1lbnQpCiAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgLy8gTm90ZTogaXQncyBPSyB0
byBsZXQgdGhpcyBSZWZQdHIgZ28gb3V0IG9mIHNjb3BlIGJlY2F1c2Ugd2UgYWxzbyBjYWxsCiAg
ICAgLy8gU2V0RE9NV3JhcHBlcigpLCB3aGljaCBlZmZlY3RpdmVseSBob2xkcyBhIHJlZmVyZW5j
ZSB0byBvYmouCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCAzZDhlOGUxOGU4NWI5NjM2OWJhNzQ0
MzQ0ODE0NDcxYzMzNmIxOTgxLi5jNzM4YjY4YWNjNjIyZDYwZjZjNjM0ZTMyNzFiYzE0ZDY3ODJk
Nzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTEyOSwxMCArMTI5LDEwIEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVuCiAgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzddKSkgewog
ICAgICAgICBwb3J0QXJyYXkgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRBcnJheSk7CiAgICAg
ICAgIGlmICghZ2V0TWVzc2FnZVBvcnRBcnJheShhcmdzWzddLCAqcG9ydEFycmF5KSkKLSAgICAg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKICAgICB9CiAgICAgZXZlbnQtPmluaXRNZXNzYWdlRXZlbnQodHlwZUFyZywgY2Fu
QnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLCBvcmlnaW5BcmcsIGxhc3RFdmVudElk
QXJnLCBzb3VyY2VBcmcsIHBvcnRBcnJheS5yZWxlYXNlKCkpOwotICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKaW5kZXggNTIzY2I3YzY0
NzI1YzIwZTliYjgwMjkzYTdmNmViN2NmYWEwNjcxYS4uN2RhYzY0NDc5ZTcxZmEyNGQ2MTU0NGJl
ZDJkYjc3YzBiYzMwMTg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIEFycmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJB
cnJheTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEpIHsKICAgICAgICAgaWYgKCFleHRyYWN0
VHJhbnNmZXJhYmxlcyhhcmdzWzFdLCBwb3J0QXJyYXksIGFycmF5QnVmZmVyQXJyYXkpKQotICAg
ICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogICAgIH0KICAgICBib29sIGRpZFRocm93ID0gZmFsc2U7CiAgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9CkBAIC01OSw3ICs1OSw3IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZFRocm93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLkdl
dElzb2xhdGUoKSk7CiAgICAgaWYgKGRpZFRocm93KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBtZXNzYWdlUG9ydC0+cG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlKCks
ICZwb3J0QXJyYXksIGVjKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihlYywgYXJncy5HZXRJc29s
YXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAKaW5kZXggZTViMWVjZGQ3Yzk1
NzY5NDY5NjBlMDZmYzI3M2UxZDI2ZmU0ZDYwMy4uNTZiNWM0Zjc3OGViZDk3YjhhMjRjYjFiNzZm
ODMxMmFjYjgwMWY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20uY3BwCkBAIC0xMDEs
NyArMTAxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm90aWZpY2F0aW9uQ2VudGVyOjpy
ZXF1ZXN0UGVybWlzc2lvbkNhbGxiYWNrKGNvbnN0IHY4OjoKICAgICB9CiAKICAgICBub3RpZmlj
YXRpb25DZW50ZXItPnJlcXVlc3RQZXJtaXNzaW9uKGNhbGxiYWNrLnJlbGVhc2UoKSk7Ci0gICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmlj
YXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90
aWZpY2F0aW9uQ3VzdG9tLmNwcAppbmRleCBmZmMzOGFhNzJmOTg4MDJiMjI1ZWRkMjIzNTFiZDc0
N2UwZjI2MWNjLi5lZmYzZjE4YjcyNjM3NTM3N2NmMmJhMDNlN2Q5YWMxMTI0ZTZjYjRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25D
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlm
aWNhdGlvbkN1c3RvbS5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZQogICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFY4Tm90aWZpY2F0
aW9uUGVybWlzc2lvbkNhbGxiYWNrPiBjYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxi
YWNrPFY4Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPihhcmdzWzBdLCBzdWNjZWVkZWQs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBpZiAoIXN1Y2NlZWRlZCkKLSAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgQVNT
RVJUKGNhbGxiYWNrKTsKIAogICAgIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gVjhOb3Rp
ZmljYXRpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQgPSBub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICBOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKGNvbnRleHQsIGNhbGxiYWNrLnJl
bGVhc2UoKSk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20u
Y3BwCmluZGV4IDU1N2QxNDM5MDI3MzhjMGE4NjhkYzYyMGQ4NjdkYzBjZmI0M2I5MmEuLmI2MzU3
MmI3ODAwMTM3Mjc4MGIzZWMxMjQyYjY3MGQ1ZTQ2YzBkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3Rv
bS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNh
Y3Rpb246OmV4ZWN1dGVTcWxDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogCiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGdldFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwogCiAgICAgUmVmUHRyPFNRTFN0YXRlbWVudENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA+IDIgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMl0pKSB7CkBAIC0x
MTEsNyArMTExLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNhY3Rpb246OmV4
ZWN1dGVTcWxDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIHRyYW5zYWN0aW9uLT5l
eGVjdXRlU1FMKHN0YXRlbWVudCwgc3FsVmFsdWVzLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywg
ZWMpOwogICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkp
OwogCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAKaW5kZXggMzVhNjJkYjNjYjk0M2FiOTZkOTI0MjViOTlkZjhlNGFhYzY0ZGQz
MC4uNDMyZjA4NDM4ZWVjNjk0ODMxYjA1ODgzNDMwNDUwNjZjOTg1OTczZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJH
TFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KGNvbnN0IFdlYkdMR2V0SW5mbyYgaW5mbywg
djg6Oklzb2xhdGUqIGkKICAgICAgICAgcmV0dXJuIHRvVjgoaW5mby5nZXRXZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTKCksIGlzb2xhdGUpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogICAgIH0KIH0KIApAQCAtNTEwLDcgKzUxMCw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoY29uc3Qg
djg6OkFyZ3VtZW50cyYKICAgICAgICAgfQogICAgICAgICBpZiAoZWMpCiAgICAgICAgICAgICBy
ZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0g
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOwogICAgIH0KIAogICAgIGlmIChhcmdzWzFdLklzRW1wdHkoKSB8fCAhYXJnc1sxXS0+SXNB
cnJheSgpKQpAQCAtNTM4LDcgKzUzOCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBm
YXN0RnJlZShkYXRhKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRE
T01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHVuaWZvcm1IZWxwZXJpKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsCkBA
IC01NzUsNyArNTc1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bmlmb3JtSGVs
cGVyaShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLAogICAgICAgICB9CiAgICAgICAgIGlmIChl
YykKICAgICAgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgaWYgKGFyZ3NbMV0uSXNFbXB0eSgp
IHx8ICFhcmdzWzFdLT5Jc0FycmF5KCkpCkBAIC01OTksNyArNTk5LDcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB1bmlmb3JtSGVscGVyaShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
LAogICAgIGZhc3RGcmVlKGRhdGEpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIFY4UHJv
eHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdkNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCkBAIC02ODUsNyArNjg1LDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB1bmlmb3JtTWF0cml4SGVscGVyKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MsCiAgICAgICAgIH0KICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0dXJu
IFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwotICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
ICAgICB9CiAKICAgICBpZiAoYXJnc1syXS5Jc0VtcHR5KCkgfHwgIWFyZ3NbMl0tPklzQXJyYXko
KSkKQEAgLTcwOCw3ICs3MDgsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVuaWZv
cm1NYXRyaXhIZWxwZXIoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywKICAgICBmYXN0RnJlZShk
YXRhKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRp
b24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsgCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
KyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2Q2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggYzdmZDVkMDAyY2Y2
NmQwZmY3MTk1OTMzZTJmYWYzODA0MDgzNjQ0ZS4uOGI5YjEyYmNkM2UxNzdjNzNjMGFiOThiNTE0
YWZhN2FjZmQ0NWNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFNldFRpbWVvdXRPckludGVydmFsKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MsIGJvb2wgc2luZ2wKIAogICAgIGludCBhcmd1bWVudENvdW50ID0gYXJncy5M
ZW5ndGgoKTsKICAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCi0gICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGZ1bmN0aW9uID0gYXJnc1swXTsKICAgICBpbnQzMl90IHRpbWVvdXQg
PSBhcmd1bWVudENvdW50ID49IDIgPyBhcmdzWzFdLT5JbnQzMlZhbHVlKCkgOiAwOwpAQCAtNjAs
NyArNjAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9ySW50ZXJ2YWwoY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogCiAgICAgV29ya2VyQ29udGV4dEV4
ZWN1dGlvblByb3h5KiBwcm94eSA9IHdvcmtlckNvbnRleHQtPnNjcmlwdCgpLT5wcm94eSgpOwog
ICAgIGlmICghcHJveHkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhD
b250ZXh0ID0gcHJveHktPmNvbnRleHQoKTsKICAgICBpZiAoZnVuY3Rpb24tPklzU3RyaW5nKCkp
IHsKQEAgLTgwLDcgKzgwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFNldFRpbWVvdXRPcklu
dGVydmFsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJvb2wgc2luZ2wKICAgICAgICAgZGVs
ZXRlIFtdIHBhcmFtczsKICAgICAgICAgdGltZXJJZCA9IERPTVRpbWVyOjppbnN0YWxsKHdvcmtl
ckNvbnRleHQsIGFjdGlvbi5yZWxlYXNlKCksIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogICAgIH0g
ZWxzZQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKIAogICAgIHJldHVybiB2OEludGVnZXIodGltZXJJZCwgYXJncy5HZXRJc29s
YXRlKCkpOwogfQpAQCAtODksMTQgKzg5LDE0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdv
cmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uV29ya2VyQ29udGV4dC5pbXBvcnRTY3JpcHRzKCkiKTsKICAg
ICBpZiAoIWFyZ3MuTGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cisg
ICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gdXJsczsK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3MuTGVuZ3RoKCk7IGkrKykgewogICAgICAgICB2
ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gc2Ny
aXB0VXJsID0gYXJnc1tpXS0+VG9TdHJpbmcoKTsKICAgICAgICAgaWYgKHRyeUNhdGNoLkhhc0Nh
dWdodCgpIHx8IHNjcmlwdFVybC5Jc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOworICAgICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgICAgIHVy
bHMuYXBwZW5kKHRvV2ViQ29yZVN0cmluZyhzY3JpcHRVcmwpKTsKICAgICB9CiAKQEAgLTEwOCw3
ICsxMDgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjppbXBvcnRT
Y3JpcHRzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogICAgIGlmIChlYykKICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAotICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6OnNldFRpbWVvdXRDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKaW5kZXggZjQ0YmY2N2IxNDVlYWQxZmFlNjA3NjQw
ZTJkMmEzNjZmZDU1MjhjNi4uZDFhOTg1YTQ0YzZiMmZhODBjNzcxOTE3YTFhZDViNTAyZTAyY2Y0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2Vy
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3Jr
ZXJDdXN0b20uY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gaGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAg
ICAgQXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZlcnM7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PiAxKSB7CiAgICAgICAgIGlmICghZXh0cmFjdFRyYW5zZmVyYWJsZXMoYXJnc1sxXSwgcG9ydHMs
IGFycmF5QnVmZmVycykpCi0gICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAg
ICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogICAgIGJvb2wgZGlkVGhyb3cg
PSBmYWxzZTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0KQEAg
LTY1LDcgKzY1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYW5kbGVQb3N0TWVz
c2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkVGhyb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBpZiAoZGlkVGhyb3cpCi0gICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdvcmtlci0+cG9zdE1lc3NhZ2UobWVz
c2FnZS5yZWxlYXNlKCksICZwb3J0cywgZWMpOwogICAgIHJldHVybiB0aHJvd0Vycm9yKGVjLCBh
cmdzLkdldElzb2xhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggNWU2NGZjMmQz
NTgwY2JiMTY5OTBiMTcyYmZkOTljODA3NmIzZmJmOS4uODBmNWY5NmM2MjZmYTAzNTQyODgxZjg2
NDU5OWFlMmZiZWRkN2Y3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtOTksNyArOTks
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VBY2Nl
c3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6Om9wZW5DYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtMTIwLDcgKzEyMCw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKICAgICBTdHJpbmcgdXJsc3RyaW5nID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMV0pOwog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIEtVUkwgdXJsID0gY29u
dGV4dC0+Y29tcGxldGVVUkwodXJsc3RyaW5nKTsKIApAQCAtMTQ1LDcgKzE0NSw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwor
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiBzdGF0aWMgYm9vbCBpc0RvY3VtZW50VHlw
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCkBAIC0yMDIsNyArMjAyLDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cisg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQcm9jZXNz
b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WFNMVFBy
b2Nlc3NvckN1c3RvbS5jcHAKaW5kZXggM2RjOWVmNTcwZjZkYjBjMTExNmY4MDE2ZmQ4YzMxMzFl
MTQ2ZjY1NC4uMGRmYjMyYjBmMmI3OTBjZDcyNmIwNTY3YTEyN2E3YzM3MTVmMGZhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WFNMVFBy
b2Nlc3NvckN1c3RvbS5jcHAKQEAgLTUzLDEzICs1MywxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhYU0xUUHJvY2Vzc29yOjppbXBvcnRTdHlsZXNoZWV0Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZQogewogICAgIElOQ19TVEFUUygiRE9NLlhTTFRQcm9jZXNzb3IuaW1wb3J0U3R5bGVzaGVl
dCIpOwogICAgIGlmICghVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdKSkKLSAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAg
ICBYU0xUUHJvY2Vzc29yKiBpbXAgPSBWOFhTTFRQcm9jZXNzb3I6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwogCiAgICAgTm9kZSogbm9kZSA9IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSk7CiAgICAgaW1wLT5pbXBvcnRTdHlsZXNoZWV0KG5v
ZGUpOwotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CiB9CiAKIApAQCAtNjcsNyArNjcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYU0xU
UHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub0ZyYWdtZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZwogewog
ICAgIElOQ19TVEFUUygiRE9NLlhTTFRQcm9jZXNzb3IudHJhbnNmb3JtVG9GcmFnbWVudCIpOwog
ICAgIGlmICghVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdKSB8fCAhVjhEb2N1bWVudDo6SGFz
SW5zdGFuY2UoYXJnc1sxXSkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAg
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgWFNMVFByb2Nlc3NvciogaW1wID0gVjhY
U0xUUHJvY2Vzc29yOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIApAQCAtODMsMTcgKzgzLDE3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvRG9j
dW1lbnRDYWxsYmFjayhjb25zdCB2ODo6QXJnCiAgICAgSU5DX1NUQVRTKCJET00uWFNMVFByb2Nl
c3Nvci50cmFuc2Zvcm1Ub0RvY3VtZW50Iik7CiAKICAgICBpZiAoIVY4Tm9kZTo6SGFzSW5zdGFu
Y2UoYXJnc1swXSkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgWFNMVFByb2Nlc3NvciogaW1wID0gVjhYU0xUUHJv
Y2Vzc29yOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIAogICAgIE5vZGUqIHNvdXJjZSA9IFY4
Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSk7CiAg
ICAgaWYgKCFzb3VyY2UpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPERvY3VtZW50PiByZXN1bHQgPSBp
bXAtPnRyYW5zZm9ybVRvRG9jdW1lbnQoc291cmNlKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CiAKICAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBhcmdzLkdldElzb2xhdGUoKSk7
CiB9CkBAIC0xMDMsNyArMTAzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nl
c3Nvcjo6c2V0UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29yLnNldFBhcmFtZXRlciIpOwogICAgIGlmIChpc1Vu
ZGVmaW5lZE9yTnVsbChhcmdzWzFdKSB8fCBpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzJdKSkKLSAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CiAKICAgICBYU0xUUHJvY2Vzc29yKiBpbXAgPSBWOFhTTFRQcm9jZXNzb3I6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwogCkBAIC0xMTIsNyArMTEyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4WFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYKICAgICBTdHJpbmcgdmFsdWUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1syXSk7CiAgICAg
aW1wLT5zZXRQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIHZhbHVlKTsKIAotICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAK
IApAQCAtMTIwLDcgKzEyMCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNz
b3I6OmdldFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uWFNMVFByb2Nlc3Nvci5nZXRQYXJhbWV0ZXIiKTsKICAgICBpZiAoaXNVbmRl
ZmluZWRPck51bGwoYXJnc1sxXSkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cisg
ICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgWFNMVFByb2Nlc3NvciogaW1wID0g
VjhYU0xUUHJvY2Vzc29yOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIApAQCAtMTI4LDcgKzEy
OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6OmdldFBhcmFtZXRl
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgU3RyaW5nIGxvY2FsTmFtZSA9IHRv
V2ViQ29yZVN0cmluZyhhcmdzWzFdKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gaW1wLT5nZXRQYXJh
bWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIGlmIChyZXN1bHQuaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogCiAgICAgcmV0dXJuIHY4U3RyaW5nKHJlc3VsdCwgYXJncy5HZXRJc29sYXRlKCkp
OwogfQpAQCAtMTM3LDE0ICsxMzcsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFBy
b2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29yLnJlbW92ZVBhcmFtZXRlciIpOwogICAgIGlm
IChpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBYU0xUUHJvY2Vzc29y
KiBpbXAgPSBWOFhTTFRQcm9jZXNzb3I6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCiAgICAg
U3RyaW5nIG5hbWVzcGFjZVVSSSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKICAgICBTdHJp
bmcgbG9jYWxOYW1lID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMV0pOwogICAgIGltcC0+cmVtb3Zl
UGFyYW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKLSAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>