<?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>93342</bug_id>
          
          <creation_ts>2012-08-07 00:03:59 -0700</creation_ts>
          <short_desc>[V8] Remove a bunch of Persistent::New()s on setJSWrapperForXXXObject()</short_desc>
          <delta_ts>2012-08-07 19:09:24 -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>FIXED</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>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>688895</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 00:03:59 -0700</bug_when>
    <thetext>There are a lot of custom bindings like this:

    V8DOMWrapper::setJSWrapperForDOMObject(impl.release(), v8::Persistent&lt;v8::Object&gt;::New(args.Holder()));

Manually written Persistent::New() is error-prone. We can remove the Persistent::New() by allocating the Persistent handle inside setJSWrapperForDOMObject().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688899</commentid>
    <comment_count>1</comment_count>
      <attachid>156883</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 00:07:58 -0700</bug_when>
    <thetext>Created attachment 156883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688901</commentid>
    <comment_count>2</comment_count>
      <attachid>156883</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 00:12:05 -0700</bug_when>
    <thetext>Comment on attachment 156883
Patch

Ok.  Are you sure you got them all?  If we missed one, we&apos;ll create a leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688903</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 00:17:29 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 156883 [details])
&gt; Ok.  Are you sure you got them all?  If we missed one, we&apos;ll create a leak.

Looks OK. Let me land the patch tomorrow.

$ grep -r setJSWrapper WebCore/bindings/v8/* | grep Persistent
V8DOMWrapper.cpp:v8::Persistent&lt;v8::Object&gt; V8DOMWrapper::setJSWrapperForDOMNode(PassRefPtr&lt;Node&gt; node, v8::Handle&lt;v8::Object&gt; wrapper, v8::Isolate* isolate)
V8DOMWrapper.cpp:v8::Persistent&lt;v8::Object&gt; V8DOMWrapper::setJSWrapperForActiveDOMNode(PassRefPtr&lt;Node&gt; node, v8::Handle&lt;v8::Object&gt; wrapper, v8::Isolate* isolate)
V8DOMWrapper.h:        static v8::Persistent&lt;v8::Object&gt; setJSWrapperForDOMObject(PassRefPtr&lt;T&gt;, v8::Handle&lt;v8::Object&gt;, v8::Isolate* = 0);
V8DOMWrapper.h:        static v8::Persistent&lt;v8::Object&gt; setJSWrapperForActiveDOMObject(PassRefPtr&lt;T&gt;, v8::Handle&lt;v8::Object&gt;, v8::Isolate* = 0);
V8DOMWrapper.h:        static v8::Persistent&lt;v8::Object&gt; setJSWrapperForDOMNode(PassRefPtr&lt;Node&gt;, v8::Handle&lt;v8::Object&gt;, v8::Isolate* = 0);
V8DOMWrapper.h:        static v8::Persistent&lt;v8::Object&gt; setJSWrapperForActiveDOMNode(PassRefPtr&lt;Node&gt;, v8::Handle&lt;v8::Object&gt;, v8::Isolate* = 0);
V8DOMWrapper.h:    v8::Persistent&lt;v8::Object&gt; V8DOMWrapper::setJSWrapperForDOMObject(PassRefPtr&lt;T&gt; object, v8::Handle&lt;v8::Object&gt; wrapper, v8::Isolate* isolate)
V8DOMWrapper.h:    v8::Persistent&lt;v8::Object&gt; V8DOMWrapper::setJSWrapperForActiveDOMObject(PassRefPtr&lt;T&gt; object, v8::Handle&lt;v8::Object&gt; wrapper, v8::Isolate* isolate)
custom/V8ArrayBufferViewCustom.h:    v8::Persistent&lt;v8::Object&gt; wrapperHandle = V8DOMWrapper::setJSWrapperForDOMObject(array.release(), wrapper);
custom/V8ArrayBufferViewCustom.h:    v8::Persistent&lt;v8::Object&gt; wrapperHandle = V8DOMWrapper::setJSWrapperForDOMObject(array.release(), wrapper);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689750</commentid>
    <comment_count>4</comment_count>
      <attachid>156883</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 19:09:20 -0700</bug_when>
    <thetext>Comment on attachment 156883
Patch

Clearing flags on attachment: 156883

Committed r124968: &lt;http://trac.webkit.org/changeset/124968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689751</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 19:09:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156883</attachid>
            <date>2012-08-07 00:07:58 -0700</date>
            <delta_ts>2012-08-07 19:09:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93342-20120807160733.patch</filename>
            <type>text/plain</type>
            <size>42995</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGI5MDRiYjcwZDdlZDVm
ODJmYWUxNjE1Y2RjNGFjYTZlMTRhNjhlMC4uMWI1ZDA0ZTcyM2I5MzUxOTk1MzYyNzZkNGE1YjQx
NzgyMWVmNmZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEyLTA4LTA3ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlbW92ZSBh
IGJ1bmNoIG9mIFBlcnNpc3RlbnQ6Ok5ldygpcyBvbiBzZXRKU1dyYXBwZXJGb3JYWFhPYmplY3Qo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzNDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBh
cmUgYSBsb3Qgb2YgY3VzdG9tIGJpbmRpbmdzIGxpa2UgdGhpczoKKworICAgICAgICAgICAgVjhE
T01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbC5yZWxlYXNlKCksIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOworCisgICAgICAgIE1h
bnVhbGx5IHdyaXR0ZW4gUGVyc2lzdGVudDo6TmV3KCkgaXMgZXJyb3ItcHJvbmUuIFdlIGNhbiBy
ZW1vdmUgdGhlCisgICAgICAgIFBlcnNpc3RlbnQ6Ok5ldygpIGJ5IGFsbG9jYXRpbmcgdGhlIFBl
cnNpc3RlbnQgaGFuZGxlIGluc2lkZQorICAgICAgICBzZXRKU1dyYXBwZXJGb3JET01PYmplY3Qo
KS4KKworICAgICAgICBBIG5ldyBzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoKSByZWNlaXZlcyBh
IHdyYXBwZXIgb2JqZWN0LCBhbGxvY2F0ZXMKKyAgICAgICAgdGhlIFBlcnNpc3RlbnQgaGFuZGxl
IG9mIHRoZSB3cmFwcGVyIG9iamVjdCwgYW5kIHJldHVybiB0aGUgUGVyc2lzdGVudCBoYW5kbGUu
CisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVD
b25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlRXZlbnRDb25zdHJ1Y3RvckNh
bGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAg
ICAgICAgKEdlbmVyYXRlVG9WOENvbnZlcnRlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0
NjRBcnJheTo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZl
RE9NT2JqZWN0Ojp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyOjp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3RFdmVudENvbnN0cnVjdG9yOjp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGVzdEV2ZW50VGFyZ2V0Ojp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RFeGNlcHRpb246OndyYXBTbG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFj
ZTo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZh
Y2U6OndyYXBTbG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyOjp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdE5vZGU6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
Tm9kZTo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6d3JhcFNsb3cpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6d3JhcFNsb3cpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
aW5kb3dTaGVsbDo6aW5zdGFsbERPTVdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0SlNXcmFw
cGVyRm9yRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OnNldEpTV3Jh
cHBlckZvckFjdGl2ZURPTU5vZGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5oOgorICAgICAgICAoVjhET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojppbml0Q29udGV4dElmTmVlZGVkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOEFycmF5QnVmZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OndyYXBBcnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0V2ViR0xBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9y
bURhdGFDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Gb3JtRGF0YTo6Y29uc3Ry
dWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEYXRhVmlldzo6Y29uc3RydWN0b3JDYWxs
YmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnY4SFRNTEltYWdlRWxlbWVudENvbnN0
cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW50ZW50Ojpjb25zdHJ1Y3RvckNh
bGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUNoYW5uZWw6OmNvbnN0
cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9u
T2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbk9ic2VydmVy
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViS2l0UG9p
bnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYlNvY2tldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYlNvY2tldDo6Y29u
c3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0
cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1
ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKwogMjAxMi0wOC0wNiAgTWF4IFZ1am92aWMgIDxt
dnVqb3ZpY0BhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBTaGFkZXJzXSBQYXJzZSBtaXggZnVu
Y3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KaW5kZXggNmYxNmZlYzhmNTM4MDY0YjJiZTk2MTVkOTUyZTAxOWY1MjA5YWI4NC4u
MjNlYjFiZjk1Y2E3M2YxY2UwMDJhOTc5M2FiZjI5MmYyYWRmZTNmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTE4NTUs
OCArMTg1NSw4IEBAIEVORAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKICAgICBW
OERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOwot
ICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yJHtET01PYmplY3R9KGltcGwucmVsZWFz
ZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpLCBhcmdzLkdldElz
b2xhdGUoKSk7Ci0gICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisgICAgVjhET01XcmFwcGVyOjpz
ZXRKU1dyYXBwZXJGb3Ike0RPTU9iamVjdH0oaW1wbC5yZWxlYXNlKCksIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKIEVORAogCiAgICAgaWYgKCRyYWlz
ZXNFeGNlcHRpb25zKSB7CkBAIC0xODk5LDkgKzE4OTksMTAgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4JHtpbXBsQ2xhc3NOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnQKIAogICAgIFJlZlB0cjwke2ltcGxDbGFzc05hbWV9PiBldmVudCA9ICR7aW1wbENsYXNz
TmFtZX06OmNyZWF0ZSh0eXBlLCBldmVudEluaXQpOwogCi0gICAgVjhET01XcmFwcGVyOjpzZXRE
T01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBldmVudC5nZXQoKSk7Ci0gICAgVjhET01X
cmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoZXZlbnQucmVsZWFzZSgpLCB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpLCBhcmdzLkdldElzb2xhdGUo
KSk7Ci0gICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBw
ZXIod3JhcHBlciwgJmluZm8sIGV2ZW50LmdldCgpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpT
V3JhcHBlckZvckRPTU9iamVjdChldmVudC5yZWxlYXNlKCksIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAogYm9vbCBmaWxsJHtpbXBsQ2xhc3NO
YW1lfUluaXQoJHtpbXBsQ2xhc3NOYW1lfUluaXQmIGV2ZW50SW5pdCwgY29uc3QgRGljdGlvbmFy
eSYgb3B0aW9ucykKQEAgLTIwMzAsOCArMjAzMSw4IEBAIEVORAogICAgIHB1c2goQGltcGxDb250
ZW50LCA8PEVORCk7CiAKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwg
JlY4JHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9yOjppbmZvLCBpbXBsLmdldCgpKTsKLSAgICBW
OERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvciR7RE9NT2JqZWN0fShpbXBsLnJlbGVhc2UoKSwg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKSwgYXJncy5HZXRJc29sYXRl
KCkpOwotICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNX
cmFwcGVyRm9yJHtET01PYmplY3R9KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXI7CiBFTkQKIAogICAgIGlmICgkcmFpc2VzRXhj
ZXB0aW9ucykgewpAQCAtMzM3MSw5ICszMzcyLDcgQEAgRU5ECiAgICAgfQogCiAgICAgcHVzaChA
aW1wbENvbnRlbnQsIDw8RU5EKTsKLQotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdy
YXBwZXJIYW5kbGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpOwot
CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yJHtkb21NYXBOYW1lfShpbXBsLCB3cmFwcGVyLCBpc29sYXRl
KTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxl
Lk1hcmtJbmRlcGVuZGVudCgpOwogRU5ECkBAIC0zMzgzLDcgKzMzODIsNiBAQCBFTkQKIEVORAog
ICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgIFY4RE9NV3JhcHBlcjo6
c2V0SlNXcmFwcGVyRm9yJHtkb21NYXBOYW1lfShpbXBsLCB3cmFwcGVySGFuZGxlLCBpc29sYXRl
KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIEVORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKaW5kZXgg
NTYxODEzNWJhY2U0ZGJjNjk1MTRjZDIxYTA3NzljMGU5NjllMDE2Ny4uOTNlMjQzYzc5NWMwZDMw
YjMxOWQ2ZWNkMWYzNDM5ZjJkY2YwYmMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCkBAIC0xMjgs
MTIgKzEyOCw5IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhGbG9hdDY0QXJyYXk6OndyYXBT
bG93KFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBpbXBsLCB2CiAgICAgd3JhcHBlciA9IFY4RE9N
V3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChwcm94eSwgJmluZm8sIGltcGwuZ2V0KCkpOwog
ICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFw
cGVyOwotCi0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcik7Ci0KKyAgICB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBw
ZXJGb3JET01PYmplY3QoaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBl
bmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsK
LSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVy
SGFuZGxlLCBpc29sYXRlKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCA4NzBkOTk2ZDEyNmMwOTgyMDcyNzIwMWE4NzkyN2Iz
ZmNlMzMyNWEwLi4zMmRiMjg1MzE4MWFiODhkNDY3MzBlZWViNjU4ZjlmMzBkM2ZjMGY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTgzLDEyICsxODMsOSBAQCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6d3JhcFNsb3coUGFzc1Jl
ZlB0cjxUZXN0QWN0aXZlRE9NTwogICAgICAgICBjb250ZXh0LT5FeGl0KCk7CiAgICAgaWYgKFVO
TElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0KLSAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKLQorICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9i
amVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0
aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwotICAgIFY4RE9N
V3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXJIYW5kbGUsIGlz
b2xhdGUpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5h
bWVkR2V0dGVyLmNwcAppbmRleCBhZmFlNWM3Yzk3Y2RjNTRkYzJiYmJjNzQ4OGY4OTlmZmNmNzk0
NWZjLi5hNjg4MDgwZjBlNTM0NmQxNTcyZTc2YmY3YzY4NThiNzEyMTM1NzhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTExOCwxMiArMTE4LDkgQEAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6d3JhcFNsb3coUGFzc1Jl
ZlB0cjxUZXN0Q3VzdG9tTmEKICAgICB3cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0
ZVY4T2JqZWN0KHByb3h5LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdy
YXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0KLSAgICB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD46Ok5ldyh3cmFwcGVyKTsKLQorICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdy
YXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBs
LCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAg
ICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwotICAgIFY4RE9NV3JhcHBlcjo6
c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXJIYW5kbGUsIGlzb2xhdGUpOwog
ICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggMjEwNzM1MDFmZDBiYTIyZWRjZGM1YzVhM2JjYTMzM2NhZDhkMzljYi4uYWM0OTEx
MDQ0ZGU3ZmU3NzJjZTIzZDk1YWU0NmUzOTY5NTE5ZWRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcApAQCAtODYsOSArODYsMTAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3UKIAogICAgIFJlZlB0cjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gZXZlbnQgPSBUZXN0RXZlbnRD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHR5cGUsIGV2ZW50SW5pdCk7CiAKLSAgICBWOERPTVdyYXBwZXI6
OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIGV2ZW50LmdldCgpKTsKLSAgICBW
OERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChldmVudC5yZWxlYXNlKCksIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSksIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKLSAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9N
V3JhcHBlcih3cmFwcGVyLCAmaW5mbywgZXZlbnQuZ2V0KCkpOworICAgIFY4RE9NV3JhcHBlcjo6
c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGV2ZW50LnJlbGVhc2UoKSwgd3JhcHBlciwgYXJncy5H
ZXRJc29sYXRlKCkpOworICAgIHJldHVybiB3cmFwcGVyOwogfQogCiBib29sIGZpbGxUZXN0RXZl
bnRDb25zdHJ1Y3RvckluaXQoVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0JiBldmVudEluaXQsIGNv
bnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCkBAIC0xNTQsMTIgKzE1NSw5IEBAIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6d3JhcFNsb3coUGFzc1JlZlB0cjxU
ZXN0RXZlbnRDb25zCiAgICAgd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9i
amVjdChwcm94eSwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVy
LklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwotCi0gICAgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
OjpOZXcod3JhcHBlcik7Ci0KKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVy
SGFuZGxlID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbCwgd3Jh
cHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAg
d3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpT
V3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVySGFuZGxlLCBpc29sYXRlKTsKICAgICBy
ZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggZWNiYzk3
MzcyNDg3NGEzOTlmNjM2YjY0MzQzOTRhMDBmNDI1MWQ0ZS4uZGFiODQyYWY5ODg4ODVjZmExMDUw
NWQ2YTNiMjNiMDUzM2U2NDM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xNzks
MTIgKzE3OSw5IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRUYXJnZXQ6Ondy
YXBTbG93KFBhc3NSZWZQdHI8VGVzdEV2ZW50VGFyZ2V0PiBpCiAgICAgd3JhcHBlciA9IFY4RE9N
V3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChwcm94eSwgJmluZm8sIGltcGwuZ2V0KCkpOwog
ICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFw
cGVyOwotCi0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcik7Ci0KKyAgICB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBw
ZXJGb3JET01PYmplY3QoaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBl
bmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsK
LSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVy
SGFuZGxlLCBpc29sYXRlKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0
aW9uLmNwcAppbmRleCBhMTc0MmNiYmVjYmExZTgwY2NmNTc3YjZiYjFiOTJlY2VmNGFmZTJiLi40
MTU2NzE1OWI4YmY5YzE4NWI3OWQ1YmM0ODA1NTllYmJkNTBkNDdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0
aW9uLmNwcApAQCAtMTA4LDEyICsxMDgsOSBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVz
dEV4Y2VwdGlvbjo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0RXhjZXB0aW9uPiBpbXBsLAogICAg
IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QocHJveHksICZpbmZv
LCBpbXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAg
ICAgICByZXR1cm4gd3JhcHBlcjsKLQotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdy
YXBwZXJIYW5kbGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpOwot
CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwog
ICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFy
a0luZGVwZW5kZW50KCk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmpl
Y3QoaW1wbCwgd3JhcHBlckhhbmRsZSwgaXNvbGF0ZSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKaW5kZXggMzhhMDlhNzg2NmQ2ZmFmNjFiMzYxZGJkYTM5
N2M1ODAzZGMzYTQxYy4uNDNkZGVjMzkzYjYwN2NlNGQxNzczNGRkNzc0OWYyNGE0OWRmN2IwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKQEAgLTI2OSw4ICsyNjksOCBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmCiAgICAgICAgIGdvdG8gZmFpbDsKIAogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9N
V3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7Ci0gICAgVjhET01XcmFwcGVyOjpz
ZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QoaW1wbC5yZWxlYXNlKCksIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlciksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICBy
ZXR1cm4gYXJncy5Ib2xkZXIoKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFj
dGl2ZURPTU9iamVjdChpbXBsLnJlbGVhc2UoKSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkp
OworICAgIHJldHVybiB3cmFwcGVyOwogICBmYWlsOgogICAgIHJldHVybiB0aHJvd0Vycm9yKGVj
LCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CkBAIC0zNTIsMTIgKzM1Miw5IEBAIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gVjhUZXN0SW50ZXJmYWNlOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RJbnRl
cmZhY2U+IGltcGwsCiAgICAgd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9i
amVjdChwcm94eSwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVy
LklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwotCi0gICAgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
OjpOZXcod3JhcHBlcik7Ci0KKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVy
SGFuZGxlID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QoaW1w
bCwgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAg
ICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKLSAgICBWOERPTVdyYXBwZXI6
OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdChpbXBsLCB3cmFwcGVySGFuZGxlLCBpc29s
YXRlKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IGUxMmQzYzNhOWJlZTlhZDA4ZjEwMDc1MDg2ODI0
NTUzMTNjYWUxZWQuLjg5MTMwMTE2MTc3NGM0NmY3NDgyYWE4YTc5MmE3OGI4YmViYjhkNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTExOCwx
MiArMTE4LDkgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RNZWQKICAgICB3cmFwcGVyID0gVjhET01X
cmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KHByb3h5LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAg
ICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7Ci0KLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKLQorICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBl
ckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVu
ZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwot
ICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXJI
YW5kbGUsIGlzb2xhdGUpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjRhZmQxZjJlOGE4OWZmYWM0M2IxNjEwZGMwYTc1
MjY4MjY1Njg4Zi4uOGEyYmIxMWE0ZDgxODRkZWVmMzZkMjJjMGNjN2M4ZjgzMWJjN2M1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtNzgsOCArNzgsOCBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
ckNhbGxiYWNrKGNvbnN0IHY4OgogICAgICAgICBnb3RvIGZhaWw7CiAKICAgICBWOERPTVdyYXBw
ZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJlY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1
Y3Rvcjo6aW5mbywgaW1wbC5nZXQoKSk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJG
b3JBY3RpdmVET01PYmplY3QoaW1wbC5yZWxlYXNlKCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+OjpOZXcod3JhcHBlciksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICByZXR1cm4gYXJncy5I
b2xkZXIoKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVj
dChpbXBsLnJlbGVhc2UoKSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVy
biB3cmFwcGVyOwogICBmYWlsOgogICAgIHJldHVybiB0aHJvd0Vycm9yKGVjLCBhcmdzLkdldElz
b2xhdGUoKSk7CiB9CkBAIC0xNjIsMTIgKzE2Miw5IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0TmFtZWRDb25z
CiAgICAgd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChwcm94eSwg
JmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkp
CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwotCi0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlckhhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBl
cik7Ci0KKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhE
T01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QoaW1wbCwgd3JhcHBlciwg
aXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBl
ckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBl
ckZvckFjdGl2ZURPTU9iamVjdChpbXBsLCB3cmFwcGVySGFuZGxlLCBpc29sYXRlKTsKICAgICBy
ZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCmluZGV4IGI5ZTI3MGE3NzA2NTlkZjU4OTE5
M2IyZjYxYjEzODM2MzY0ZjU4ZjMuLjQxMmYxZGNkZTY5YTQ1YzhkMjUwZWI3OTA4MDlkYjQxZDY5
MjE4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5jcHAKQEAgLTU1LDggKzU1LDggQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4VGVzdE5vZGU6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigp
OwogCiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCBpbXBs
LmdldCgpKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU5vZGUoaW1wbC5y
ZWxlYXNlKCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlciksIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKLSAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKKyAgICBWOERPTVdyYXBw
ZXI6OnNldEpTV3JhcHBlckZvckRPTU5vZGUoaW1wbC5yZWxlYXNlKCksIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAogc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUo
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MpCkBAIC0xMjksMTMgKzEy
OSwxMCBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE5vZGU6OndyYXBTbG93KFBhc3NS
ZWZQdHI8VGVzdE5vZGU+IGltcGwsIHY4OjpJc29sYQogICAgICAgICBjb250ZXh0LT5FeGl0KCk7
CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdy
YXBwZXI7Ci0KLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0g
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKLQorICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpTV3Jh
cHBlckZvckRPTU5vZGUoaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBl
bmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsK
ICAgICB3cmFwcGVySGFuZGxlLlNldFdyYXBwZXJDbGFzc0lkKHY4RE9NU3VidHJlZUNsYXNzSWQp
OwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZShpbXBsLCB3cmFwcGVy
SGFuZGxlLCBpc29sYXRlKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRl
eCA2MDhhNDhmZGNmODc5OTg1YmJjOTgwNGNjNTcxMWQ5NjcxNWI0ZDcwLi40NTU1ODgwZmNhZTg4
M2RjOWM3YTFiMTBkZjQxYjllOGI0NDZhMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMjE0OSw4ICsyMTQ5
LDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE9iajo6Y29uc3RydWN0b3JDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBw
ZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNX
cmFwcGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0Pjo6TmV3KHdyYXBwZXIpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgcmV0dXJuIGFyZ3Mu
SG9sZGVyKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1w
bC5yZWxlYXNlKCksIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gd3Jh
cHBlcjsKIH0KIAogc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gZGVzYykKQEAgLTIzMjQsMTIgKzIzMjQsOSBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IFY4VGVzdE9iajo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0T2JqPiBpbXBsLCB2ODo6SXNvbGF0
ZQogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdl
dCgpKTsKLQotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpOwotCisgICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFw
cGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVw
ZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7
Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbCwgd3JhcHBl
ckhhbmRsZSwgaXNvbGF0ZSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXgg
ZjdmNWMzYjQwOGI4ZTc0YzEzZGI1MDE5YTkwNzg3ODBlNDJjYTRlMC4uYWQxOTE2OTkzZDJlMThj
M2ZlMDY2YjA0MDFkNjgyYzU0ODE1Y2Y5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTIzNiw4ICsyMzYsOCBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IGFyZ3MuSG9sZGVyKCk7CiAKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3Jh
cHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVy
Rm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6
TmV3KHdyYXBwZXIpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgcmV0dXJuIGFyZ3MuSG9sZGVy
KCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbC5yZWxl
YXNlKCksIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcjsK
IH0KIAogc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1wbGF0ZSh2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykKQEAgLTMwMSwxMiArMzAxLDkgQEAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6
OndyYXBTbG93KFBhc3NSZWZQdHIKICAgICB3cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50
aWF0ZVY4T2JqZWN0KHByb3h5LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZ
KHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0KLSAgICB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKLQorICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChp
bXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQog
ICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwotICAgIFY4RE9NV3JhcHBl
cjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXJIYW5kbGUsIGlzb2xhdGUp
OwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDc1NThhZTY5NDg4OTljZjZiMDJhYTI5ZDMx
YzZlYjUyMDI3NDAyM2MuLmQyOGExZDI4ZjUzMWQxMmYyZjgyNmY0NGM3NTUyN2Q2MmEyMzlhOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3Bw
CkBAIC00MTcsNyArNDE3LDcgQEAgYm9vbCBWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxsRE9NV2lu
ZG93KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQsIERPTVdpbmQKICAgICAvLyBXcmFw
IHRoZSB3aW5kb3cuCiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGpzV2luZG93LCAm
VjhET01XaW5kb3c6OmluZm8sIHdpbmRvdyk7CiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFw
cGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoanNXaW5kb3ctPkdldFByb3RvdHlwZSgp
KSwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3cpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNX
cmFwcGVyRm9yRE9NT2JqZWN0KFBhc3NSZWZQdHI8RE9NV2luZG93Pih3aW5kb3cpLCB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGpzV2luZG93KSk7CisgICAgVjhET01XcmFwcGVyOjpz
ZXRKU1dyYXBwZXJGb3JET01PYmplY3QoUGFzc1JlZlB0cjxET01XaW5kb3c+KHdpbmRvdyksIGpz
V2luZG93KTsKIAogICAgIC8vIEluc2VydCB0aGUgd2luZG93IGluc3RhbmNlIGFzIHRoZSBwcm90
b3R5cGUgb2YgdGhlIHNoYWRvdyBvYmplY3QuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2
OFJlYWxHbG9iYWwgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnRleHQtPkdsb2Jh
bCgpLT5HZXRQcm90b3R5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmNwcAppbmRleCA4MTEzYTc4ZTFmNjkwZGE0OWZiNWFiZWY5N2ZjMjU1MTMxNGI4ODA0
Li41NTEwMWUxNDQyZDMzNGZiNjZiNjM5MjhlM2FhN2IxOWI5ZDk4Y2M0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTcwLDE4ICs3MCwyMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJG
b3JET01Ob2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0PiBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU5vZGUoUGFzc1JlZlB0cjxOb2Rl
PiBub2RlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQogewotICAgIEFTU0VSVChtYXliZURPTVdyYXBwZXIod3JhcHBlcikpOworICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0Pjo6TmV3KHdyYXBwZXIpOworICAgIEFTU0VSVChtYXliZURPTVdyYXBwZXIod3JhcHBl
ckhhbmRsZSkpOwogICAgIEFTU0VSVCghbm9kZS0+aXNBY3RpdmVOb2RlKCkpOwotICAgIGdldERP
TU5vZGVNYXAoaXNvbGF0ZSkuc2V0KG5vZGUubGVha1JlZigpLCB3cmFwcGVyKTsKKyAgICBnZXRE
T01Ob2RlTWFwKGlzb2xhdGUpLnNldChub2RlLmxlYWtSZWYoKSwgd3JhcHBlckhhbmRsZSk7Cisg
ICAgcmV0dXJuIHdyYXBwZXJIYW5kbGU7CiB9CiAKLXZvaWQgVjhET01XcmFwcGVyOjpzZXRKU1dy
YXBwZXJGb3JBY3RpdmVET01Ob2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU5v
ZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIEFTU0VSVChtYXliZURPTVdyYXBwZXIod3Jh
cHBlcikpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpOworICAgIEFTU0VSVChtYXli
ZURPTVdyYXBwZXIod3JhcHBlckhhbmRsZSkpOwogICAgIEFTU0VSVChub2RlLT5pc0FjdGl2ZU5v
ZGUoKSk7Ci0gICAgZ2V0QWN0aXZlRE9NTm9kZU1hcChpc29sYXRlKS5zZXQobm9kZS5sZWFrUmVm
KCksIHdyYXBwZXIpOworICAgIGdldEFjdGl2ZURPTU5vZGVNYXAoaXNvbGF0ZSkuc2V0KG5vZGUu
bGVha1JlZigpLCB3cmFwcGVySGFuZGxlKTsKKyAgICByZXR1cm4gd3JhcHBlckhhbmRsZTsKIH0K
IAogdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gVjhET01XcmFwcGVyOjpjb25zdHJ1Y3RvckZvclR5
cGUoV3JhcHBlclR5cGVJbmZvKiB0eXBlLCBET01XaW5kb3cqIHdpbmRvdykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKaW5kZXggZDAwNDhjNGFmMjdmZDczZWZkMTkw
YjEyODg4YWFlMjc0ZmQ3ZDYwYS4uZGVhOGU4ODA1Mjk5NGEyMjVjNmZiZTllYjljYzdmNDEyNzdi
ODJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKQEAgLTEw
NCwxMCArMTA0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHY4OjpM
b2NhbDx2ODo6RnVuY3Rpb24+IGNvbnN0cnVjdG9yRm9yVHlwZShXcmFwcGVyVHlwZUluZm8qLCBX
b3JrZXJDb250ZXh0Kik7CiAjZW5kaWYKIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgdm9pZCBzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoUGFzc1JlZlB0cjxUPiwgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiA9IDApOwotICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3Qo
UGFzc1JlZlB0cjxUPiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiA9
IDApOwotICAgICAgICBzdGF0aWMgdm9pZCBzZXRKU1dyYXBwZXJGb3JET01Ob2RlKFBhc3NSZWZQ
dHI8Tm9kZT4sIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSogPSAwKTsK
LSAgICAgICAgc3RhdGljIHZvaWQgc2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NTm9kZShQYXNzUmVm
UHRyPE5vZGU+LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqID0gMCk7
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiBzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoUGFzc1JlZlB0cjxUPiwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqID0gMCk7CisgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
PiBzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QoUGFzc1JlZlB0cjxUPiwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqID0gMCk7CisgICAgICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiBzZXRKU1dyYXBwZXJGb3JET01Ob2RlKFBhc3NSZWZQdHI8Tm9k
ZT4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiA9IDApOworICAgICAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gc2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9N
Tm9kZShQYXNzUmVmUHRyPE5vZGU+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0
ZSogPSAwKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRE9NT2JqZWN0KHY4OjpIYW5k
bGU8djg6OlZhbHVlPik7CiAKQEAgLTE1MywxOSArMTU1LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KFBhc3NSZWZQdHI8VD4gb2JqZWN0LCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZv
ckRPTU9iamVjdChQYXNzUmVmUHRyPFQ+IG9iamVjdCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtYXli
ZURPTVdyYXBwZXIod3JhcHBlcikpOwotICAgICAgICBBU1NFUlQoIWRvbVdyYXBwZXJUeXBlKHdy
YXBwZXIpLT50b0FjdGl2ZURPTU9iamVjdEZ1bmN0aW9uKTsKLSAgICAgICAgZ2V0RE9NT2JqZWN0
TWFwKGlzb2xhdGUpLnNldChvYmplY3QubGVha1JlZigpLCB3cmFwcGVyKTsKKyAgICAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+OjpOZXcod3JhcHBlcik7CisgICAgICAgIEFTU0VSVChtYXliZURPTVdyYXBwZXIo
d3JhcHBlckhhbmRsZSkpOworICAgICAgICBBU1NFUlQoIWRvbVdyYXBwZXJUeXBlKHdyYXBwZXJI
YW5kbGUpLT50b0FjdGl2ZURPTU9iamVjdEZ1bmN0aW9uKTsKKyAgICAgICAgZ2V0RE9NT2JqZWN0
TWFwKGlzb2xhdGUpLnNldChvYmplY3QubGVha1JlZigpLCB3cmFwcGVySGFuZGxlKTsKKyAgICAg
ICAgcmV0dXJuIHdyYXBwZXJIYW5kbGU7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLSAgICB2b2lkIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0
KFBhc3NSZWZQdHI8VD4gb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVy
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBW
OERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdChQYXNzUmVmUHRyPFQ+
IG9iamVjdCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtYXliZURPTVdyYXBwZXIod3JhcHBlcikpOwot
ICAgICAgICBBU1NFUlQoZG9tV3JhcHBlclR5cGUod3JhcHBlciktPnRvQWN0aXZlRE9NT2JqZWN0
RnVuY3Rpb24pOwotICAgICAgICBnZXRBY3RpdmVET01PYmplY3RNYXAoaXNvbGF0ZSkuc2V0KG9i
amVjdC5sZWFrUmVmKCksIHdyYXBwZXIpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0PiB3cmFwcGVySGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFw
cGVyKTsKKyAgICAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVySGFuZGxlKSk7Cisg
ICAgICAgIEFTU0VSVChkb21XcmFwcGVyVHlwZSh3cmFwcGVySGFuZGxlKS0+dG9BY3RpdmVET01P
YmplY3RGdW5jdGlvbik7CisgICAgICAgIGdldEFjdGl2ZURPTU9iamVjdE1hcChpc29sYXRlKS5z
ZXQob2JqZWN0LmxlYWtSZWYoKSwgd3JhcHBlckhhbmRsZSk7CisgICAgICAgIHJldHVybiB3cmFw
cGVySGFuZGxlOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXggMWY0ODQ4YmFk
OTY1YTI5MTI5ZWYwNmIyYzQ4Yzk5NzI3MzUzMWQ2OC4uODBmYjdkNmQ2ODE2ZTNkMzNiMGQzOGU2
MmRiMzUyNGU5ZmE4ZjllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC0xNzksNyArMTc5LDcg
QEAgYm9vbCBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmluaXRDb250ZXh0SWZOZWVkZWQo
KQogICAgIC8vIFdyYXAgdGhlIG9iamVjdC4KICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBw
ZXIoanNXb3JrZXJDb250ZXh0LCBjb250ZXh0VHlwZSwgbV93b3JrZXJDb250ZXh0KTsKIAotICAg
IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KFBhc3NSZWZQdHI8V29ya2Vy
Q29udGV4dD4obV93b3JrZXJDb250ZXh0KSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5l
dyhqc1dvcmtlckNvbnRleHQpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRP
TU9iamVjdChQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+KG1fd29ya2VyQ29udGV4dCksIGpzV29y
a2VyQ29udGV4dCk7CiAKICAgICAvLyBJbnNlcnQgdGhlIG9iamVjdCBpbnN0YW5jZSBhcyB0aGUg
cHJvdG90eXBlIG9mIHRoZSBzaGFkb3cgb2JqZWN0LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gZ2xvYmFsT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtX2NvbnRleHQt
Pkdsb2JhbCgpLT5HZXRQcm90b3R5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKaW5kZXggMzE5NmRk
ODlhYzE1NjQ5NGUyOTQyMGNiZjc5OWIyN2FiYTM5MWQ5Mi4uZTcxODI1ZDcwY2JlMDhhZDU3OTFh
ZDA1NzRiYjhhMGRiOTc3YjE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcApAQCAtNzIsOSArNzIsMTAg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXJyYXlCdWZmZXI6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKICAgICAg
ICAgcmV0dXJuIFY4UHJveHk6OnRocm93RXJyb3IoVjhQcm94eTo6UmFuZ2VFcnJvciwgIkFycmF5
QnVmZmVyIHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIiwgYXJn
cy5HZXRJc29sYXRlKCkpOwogICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFw
cGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBl
cihhcmdzLkhvbGRlcigpLCAmaW5mbywgYnVmZmVyLmdldCgpKTsKLSAgICBWOERPTVdyYXBwZXI6
OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChidWZmZXIucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKLSAgICByZXR1cm4gYXJncy5Ib2xk
ZXIoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigp
OworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgYnVmZmVy
LmdldCgpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChidWZm
ZXIucmVsZWFzZSgpLCB3cmFwcGVyKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAppbmRleCA3M2NhNWFlMDEwNzMy
OTc1OWFlMDNjYWIyMzM0NWM2N2ZhOThkODI3Li4yNzdjOTc4ZDBkZjY0MDMwZWIyOTY5OTVhZmI1
NWU5YzFiYmVjZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaApAQCAtNTEsMTAgKzUxLDEwIEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwQXJyYXlCdWZmZXJWaWV3KGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBlCiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVy
KGFyZ3MuSG9sZGVyKCksIHR5cGUsIGFycmF5LmdldCgpKTsKICAgICBpZiAoaGFzSW5kZXhlcikK
ICAgICAgICAgYXJncy5Ib2xkZXIoKS0+U2V0SW5kZXhlZFByb3BlcnRpZXNUb0V4dGVybmFsQXJy
YXlEYXRhKGFycmF5LmdldCgpLT5iYXNlQWRkcmVzcygpLCBhcnJheVR5cGUsIGFycmF5LmdldCgp
LT5sZW5ndGgoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSk7Ci0gICAgd3JhcHBl
ci5NYXJrSW5kZXBlbmRlbnQoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRP
TU9iamVjdChhcnJheS5yZWxlYXNlKCksIHdyYXBwZXIpOwotICAgIHJldHVybiBhcmdzLkhvbGRl
cigpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7
CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGFycmF5LnJlbGVhc2UoKSwgd3JhcHBlcik7
CisgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICByZXR1cm4gd3JhcHBl
cjsKIH0KIAogLy8gVGVtcGxhdGUgZnVuY3Rpb24gdXNlZCBieSB0aGUgQXJyYXlCdWZmZXJWaWV3
KkNvbnN0cnVjdG9yIGNhbGxiYWNrcy4KQEAgLTE5NCwxMCArMTk0LDEwIEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjb25zdHJ1Y3RXZWJHTEFycmF5KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Ms
IFdyYXBwZXJUeXBlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhv
bGRlcigpKTsKLSAgICB3cmFwcGVyLk1hcmtJbmRlcGVuZGVudCgpOwotICAgIFY4RE9NV3JhcHBl
cjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGFycmF5LnJlbGVhc2UoKSwgd3JhcHBlcik7Ci0g
ICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gYXJncy5Ib2xkZXIoKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFw
cGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoYXJyYXku
cmVsZWFzZSgpLCB3cmFwcGVyKTsKKyAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgp
OworICAgIHJldHVybiB3cmFwcGVyOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgQ1BsdXNQbHVzQXJy
YXlUeXBlLCBjbGFzcyBKYXZhU2NyaXB0V3JhcHBlckFycmF5VHlwZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNw
cAppbmRleCA4Zjc1YzBlNTcyMjExY2M2YTYzMTkzZTA4Y2M0MTk1ZDc2MGY5OTQ1Li5lYzIwMmNj
ZTQ2Njk0ZmM2M2U2MTIwMzFhMzA5NTljNWQ5MWQ4ZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCkBA
IC01NSw5ICs1NSwxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6Y29u
c3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAgICAgICBmb3JtID0g
VjhIVE1MRm9ybUVsZW1lbnQ6OnRvTmF0aXZlKGFyZ3NbMF0tPlRvT2JqZWN0KCkpOwogICAgIFJl
ZlB0cjxET01Gb3JtRGF0YT4gZG9tRm9ybURhdGEgPSBET01Gb3JtRGF0YTo6Y3JlYXRlKGZvcm0p
OwogCi0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZv
LCBkb21Gb3JtRGF0YS5nZXQoKSk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JE
T01PYmplY3QoZG9tRm9ybURhdGEucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKLSAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOworICAgIFY4RE9N
V3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgZG9tRm9ybURhdGEuZ2V0KCkp
OworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGRvbUZvcm1EYXRh
LnJlbGVhc2UoKSwgd3JhcHBlcik7CisgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERPTUZvcm1EYXRhOjphcHBlbmRDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCmluZGV4IGJkZGJhOWFhMDhhZTgxYjkyYjE1NTkwMTAz
ZjE1ZjU3MTkwMmZhNDIuLmM5ZTZlMjBlOTZlMGE3N2YxMDM1YjE1OTE0MTFlOGZkZjk2NmZjMDUg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRh
Vmlld0N1c3RvbS5jcHAKQEAgLTQ4LDkgKzQ4LDEwIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERhdGFWaWV3Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAgICAgICAgIC8vIHNlZSBjb25zdHJ1Y3RXZWJHTEFycmF5IC0tIHdlIGRvbid0IHNlZW0gdG8g
YmUgYWJsZSB0byBkaXN0aW5naXNoIGJldHdlZW4KICAgICAgICAgLy8gJ25ldyBEYXRhVmlldygp
JyBhbmQgdGhlIGNhbGwgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGNhY2hlZCBEYXRhVmlldyBvYmpl
Y3QuCiAgICAgICAgIFJlZlB0cjxEYXRhVmlldz4gZGF0YVZpZXcgPSBEYXRhVmlldzo6Y3JlYXRl
KDApOwotICAgICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwg
JmluZm8sIGRhdGFWaWV3LmdldCgpKTsKLSAgICAgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBw
ZXJGb3JET01PYmplY3QoZGF0YVZpZXcucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKLSAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7
CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7
CisgICAgICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgZGF0
YVZpZXcuZ2V0KCkpOworICAgICAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9i
amVjdChkYXRhVmlldy5yZWxlYXNlKCksIHdyYXBwZXIpOworICAgICAgICByZXR1cm4gd3JhcHBl
cjsKICAgICB9CiAgICAgaWYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8ICFWOEFycmF5QnVmZmVyOjpI
YXNJbnN0YW5jZShhcmdzWzBdKSkKICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93VHlwZUVy
cm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0
b3IuY3BwCmluZGV4IDBjZjZlODM0ZGM2NzM0YzRkMGU5NDU5YmNiMmE3ZWEzNDAzYzg2ZjYuLmMw
NmQ3N2E3ZWE0NTJlOWRlYjQyOTU4ZDM2NjQ0ODdiZDk3MWJkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdl
RWxlbWVudENvbnN0cnVjdG9yLmNwcApAQCAtODUsOSArODUsMTAgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmcKICAgICB9CiAKICAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW1hZ2UgPSBI
VE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKGRvY3VtZW50LCBvcHRpb25h
bFdpZHRoLCBvcHRpb25hbEhlaWdodCk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVy
KGFyZ3MuSG9sZGVyKCksICZWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5mbywgaW1h
Z2UuZ2V0KCkpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZShpbWFn
ZS5yZWxlYXNlKCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIo
KSkpOwotICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFw
cGVyKHdyYXBwZXIsICZWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5mbywgaW1hZ2Uu
Z2V0KCkpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZShpbWFnZS5y
ZWxlYXNlKCksIHdyYXBwZXIpOworICAgIHJldHVybiB3cmFwcGVyOwogfQogCiB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6
OkdldFRlbXBsYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEludGVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEludGVudENvbnN0cnVjdG9yLmNwcAppbmRleCA3OWQ0ZDI0ZmRmYmVjNzRjMmE5
OWRhODBlYjMzNTM0NmMwNmQ5MmRlLi5iZjA4NTA2MGI1OGIwYThkZTNhNTZjMWE4YTUyZmNkNGZk
OTM3MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bnRlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW50ZW50Q29uc3RydWN0b3IuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEludGVudDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogCiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFy
Z3MuSG9sZGVyKCk7CiAgICAgICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVy
LCAmaW5mbywgaW1wbC5nZXQoKSk7Ci0gICAgICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVy
Rm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6
TmV3KHdyYXBwZXIpKTsKKyAgICAgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01P
YmplY3QoaW1wbC5yZWxlYXNlKCksIHdyYXBwZXIpOwogICAgICAgICByZXR1cm4gd3JhcHBlcjsK
ICAgICB9CiAKQEAgLTg5LDcgKzg5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogICAgIFY4RE9N
V3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7Ci0gICAg
VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbC5yZWxlYXNlKCksIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcikpOworICAgIFY4RE9NV3JhcHBl
cjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyKTsKICAg
ICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcApp
bmRleCAwMTlhMDMwOWUwZGM1MjE4NzM5MDg4YTcxNzgzOWVmZmNhNDE2ODNlLi43MDEzMWRjYzNm
NDk3MTMzMTcwZjZkMDlkYzQyY2ZiZDI0MmYwOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENvbnN0
cnVjdG9yLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNz
YWdlQ2hhbm5lbDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogCiAg
ICAgLy8gU2V0dXAgdGhlIHN0YW5kYXJkIHdyYXBwZXIgb2JqZWN0IGludGVybmFsIGZpZWxkcy4K
ICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIobWVzc2FnZUNoYW5uZWwsICZpbmZvLCBv
YmouZ2V0KCkpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KG9i
ai5yZWxlYXNlKCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcobWVzc2FnZUNoYW5u
ZWwpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChvYmoucmVs
ZWFzZSgpLCBtZXNzYWdlQ2hhbm5lbCk7CiAgICAgcmV0dXJuIG1lc3NhZ2VDaGFubmVsOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlv
bk9ic2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCmluZGV4IGRmNDhhMTI2MjAzYjA0NDNmMWUxNWJj
ZTdmM2QzNjgzOWIwN2U5YjkuLjkzMTk5YTdkNTg1YWJhMDY0NjZjNDliMTM0MGRjMzMxNGMyMzhh
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0
aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCkBAIC02OSw5ICs2OSwxMCBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhNdXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudAogICAgIFJlZlB0cjxNdXRhdGlvbkNhbGxiYWNrPiBjYWxsYmFj
ayA9IFY4TXV0YXRpb25DYWxsYmFjazo6Y3JlYXRlKGFyZywgY29udGV4dCk7CiAgICAgUmVmUHRy
PE11dGF0aW9uT2JzZXJ2ZXI+IG9ic2VydmVyID0gTXV0YXRpb25PYnNlcnZlcjo6Y3JlYXRlKGNh
bGxiYWNrLnJlbGVhc2UoKSk7CiAKLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJn
cy5Ib2xkZXIoKSwgJmluZm8sIG9ic2VydmVyLmdldCgpKTsKLSAgICBWOERPTVdyYXBwZXI6OnNl
dEpTV3JhcHBlckZvckRPTU9iamVjdChvYnNlcnZlci5yZWxlYXNlKCksIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOwotICAgIHJldHVybiBhcmdzLkhvbGRl
cigpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7
CisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCBvYnNlcnZl
ci5nZXQoKSk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3Qob2Jz
ZXJ2ZXIucmVsZWFzZSgpLCB3cmFwcGVyKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcAppbmRleCBiNmY5
ZjA3NDU4YzNiNjYyMzk0NjdkOTE1ZTIwNTUxYzhhOWY5MjRkLi5jODQ0NTJjN2M1YjQ0ZDEwZGNm
ZjE2MTQ5NGY3NjdlMjY1OTIwMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcApAQCAt
NjUsOSArNjUsMTAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViS2l0UG9pbnQ6OmNvbnN0
cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKICAgICAgICAgfQogICAgIH0K
ICAgICBSZWZQdHI8V2ViS2l0UG9pbnQ+IHBvaW50ID0gV2ViS2l0UG9pbnQ6OmNyZWF0ZSh4LCB5
KTsKLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8s
IHBvaW50LmdldCgpKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVj
dChwb2ludC5yZWxlYXNlKCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5I
b2xkZXIoKSkpOwotICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRE
T01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCBwb2ludC5nZXQoKSk7CisgICAgVjhET01XcmFwcGVy
OjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QocG9pbnQucmVsZWFzZSgpLCB3cmFwcGVyKTsKKyAg
ICByZXR1cm4gd3JhcHBlcjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5j
cHAKaW5kZXggMmQ4MzE4YzQ4MjZmNWM1NGYzMGQxMWI4MmQ5OTc0NDYxNGQxOTg2Yy4uZTBjY2Rh
MTczZWU3OTEzZWVkMWRlMjZmYjhhNDkwMjBmOGMxYjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0x
MDcsOSArMTA3LDEwIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYlNvY2tldDo6Y29uc3Ry
dWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgaWYgKGVjKQogICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCi0gICAgVjhE
T01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCB3ZWJTb2NrZXQu
Z2V0KCkpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0
KHdlYlNvY2tldC5yZWxlYXNlKCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJn
cy5Ib2xkZXIoKSkpOwotICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisgICAgVjhET01XcmFwcGVyOjpz
ZXRET01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCB3ZWJTb2NrZXQuZ2V0KCkpOworICAgIFY4RE9N
V3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KHdlYlNvY2tldC5yZWxlYXNl
KCksIHdyYXBwZXIpOworICAgIHJldHVybiB3cmFwcGVyOwogfQogCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhXZWJTb2NrZXQ6OnNlbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0
cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAppbmRleCA4ZWE5ZWJjNGIwMjNhZTFj
MDgzMjI2MTBhNWI5MGMyYjg5NGE1Yjg2Li45ZTg3MjA5YjJiMDQ5ZDk0ZDhlYjk0MmUzOWQ5Y2Vl
ZTdmOTdmYjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcApAQCAtNjMsOSAr
NjMsMTAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVj
dG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBpZiAoVjhJc29sYXRlZENvbnRl
eHQqIGlzb2xhdGVkQ29udGV4dCA9IFY4SXNvbGF0ZWRDb250ZXh0OjpnZXRFbnRlcmVkKCkpCiAg
ICAgICAgIHNlY3VyaXR5T3JpZ2luID0gaXNvbGF0ZWRDb250ZXh0LT5zZWN1cml0eU9yaWdpbigp
OwogICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4geG1sSHR0cFJlcXVlc3QgPSBYTUxIdHRwUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKTsKLSAgICBWOERPTVdyYXBwZXI6
OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIHhtbEh0dHBSZXF1ZXN0LmdldCgp
KTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdCh4bWxI
dHRwUmVxdWVzdC5yZWxlYXNlKCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJn
cy5Ib2xkZXIoKSkpOwotICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CisgICAgVjhET01XcmFwcGVyOjpz
ZXRET01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCB4bWxIdHRwUmVxdWVzdC5nZXQoKSk7CisgICAg
VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QoeG1sSHR0cFJlcXVl
c3QucmVsZWFzZSgpLCB3cmFwcGVyKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>