<?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>205508</bug_id>
          
          <creation_ts>2019-12-20 10:39:42 -0800</creation_ts>
          <short_desc>IsolatedObject support for multiple parameterized attributes.</short_desc>
          <delta_ts>2019-12-20 12:34:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1600794</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-20 10:39:42 -0800</bug_when>
    <thetext>IsolatedObject support for multiple parameterized attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600803</commentid>
    <comment_count>1</comment_count>
      <attachid>386224</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-20 10:51:51 -0800</bug_when>
    <thetext>Created attachment 386224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600807</commentid>
    <comment_count>2</comment_count>
      <attachid>386224</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-12-20 11:01:15 -0800</bug_when>
    <thetext>Comment on attachment 386224
Patch

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

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp:1409
&gt; +    return associatedAXObject()-&gt;documentFrameView();

do we want main thread asserts in these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600822</commentid>
    <comment_count>3</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-20 11:16:19 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #2)
&gt; Comment on attachment 386224 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=386224&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp:1409
&gt; &gt; +    return associatedAXObject()-&gt;documentFrameView();
&gt; 
&gt; do we want main thread asserts in these?

They already do because associatedAXObject calls axObjectCache() that asserts isMainThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600867</commentid>
    <comment_count>4</comment_count>
      <attachid>386224</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-20 12:33:27 -0800</bug_when>
    <thetext>Comment on attachment 386224
Patch

Clearing flags on attachment: 386224

Committed r253835: &lt;https://trac.webkit.org/changeset/253835&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600868</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-20 12:33:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600869</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-20 12:34:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/58122420&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386224</attachid>
            <date>2019-12-20 10:51:51 -0800</date>
            <delta_ts>2019-12-20 12:33:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205508-20191220135149.patch</filename>
            <type>text/plain</type>
            <size>36870</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTY0ZjQ1ZTdlMDA5NDVm
YTc3YWE5YTk2N2IyMjc5NjhkOGUyZjA4MC4uNDQxY2Y1NWM4MTFlMDAwZTFmYzE5N2Q4YTNkMTcz
NWZhNzZmMzRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE5LTEyLTIwICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJc29sYXRlZE9i
amVjdCBzdXBwb3J0IGZvciBtdWx0aXBsZSBwYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIEFYT2JqZWN0Q2Fj
aGUgbm93IGtlZXBzIHRoZSBQYWdlSWRlbnRpZmllciBzbyB0aGF0IGl0IGlzIHBvc3NpYmxlIHRv
CisgICAgICAgIHJldHJpZXZlIGl0IG9uIHRoZSBzZWNvbmRhcnkgdGhyZWFkIHdpdGhvdXQgcXVl
cnlpbmcgdGhlIERvY3VtZW50LgorICAgICAgICAtIGlzSW5jcmVtZW50b3IgaXMgZXhwb3NlZCBv
biBBWENvcmVPYmplY3QgZm9yIHNwaW4gYnV0dG9uIHN1cHBvcnQuCisgICAgICAgIC0gU2V2ZXJh
bCBwYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZXMgaW1wbGVtZW50YXRpb24gcmVsYXRlZCB0bworICAg
ICAgICBUZXh0TWFya2VycyBhcmUgbm93IGRpc3BhdGNoIHRvIHRoZSBtYWluIHRocmVhZC4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpBWE9iamVjdENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnNldElzb2xhdGVkVHJlZUZvY3VzZWRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6aXNvbGF0ZWRUcmVlUm9vdE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24u
aDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6QVhJc29sYXRlZE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0
cmlidXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp1cGRhdGVC
YWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZmluZFRl
eHRSYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6cGVy
Zm9ybVRleHRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
YXhPYmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
Ojp3aWRnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZG9j
dW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZG9jdW1l
bnRGcmFtZVZpZXcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
aXNMb2FkZWQgY29uc3QpOiBJbXBsZW1lbnRlZCBpbiBoZWFkZXIuCisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0OjpzdXBwb3J0c1BhdGggY29uc3QpOiBJbXBsZW1lbnRlZCBpbiBo
ZWFkZXIuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWVOb2RlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIHN1YnJvbGVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZvclBhcmFtZXRlcjpdKToKKwogMjAxOS0xMi0x
OSAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgQVhJ
c29sYXRlZE9iamVjdDo6ZmluZE1hdGNoaW5nT2JqZWN0cyBpbXBsZW1lbnRhdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGY4NmYz
NzMwMDk5ZDNhODI1MTNlMWMzNDk3Y2I5NTc0MWIwOTI5NWQuLmIwOWZmOGZiZjdhMGQ0NjRiYzI0
MWVkYzNlM2VlNDQ2MDkxZDI5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMjE0LDYgKzIxNCw3IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6c2V0RW5oYW5jZWRVc2VySW50ZXJmYWNlQWNjZXNzaWJpbGl0eShib29sIGZsYWcpCiAKIEFY
T2JqZWN0Q2FjaGU6OkFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9k
b2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fcGFnZUlEKGRvY3VtZW50LnBhZ2VJRCgpKQogICAg
ICwgbV9ub3RpZmljYXRpb25Qb3N0VGltZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpub3RpZmlj
YXRpb25Qb3N0VGltZXJGaXJlZCkKICAgICAsIG1fcGFzc3dvcmROb3RpZmljYXRpb25Qb3N0VGlt
ZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpwYXNzd29yZE5vdGlmaWNhdGlvblBvc3RUaW1lckZp
cmVkKQogICAgICwgbV9saXZlUmVnaW9uQ2hhbmdlZFBvc3RUaW1lcigqdGhpcywgJkFYT2JqZWN0
Q2FjaGU6OmxpdmVSZWdpb25DaGFuZ2VkTm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpCkBAIC00
MDEsMTIgKzQwMiwxMiBAQCBBWENvcmVPYmplY3QqIEFYT2JqZWN0Q2FjaGU6Omlzb2xhdGVkVHJl
ZUZvY3VzZWRPYmplY3QoRG9jdW1lbnQmIGRvY3VtZW50KQogdm9pZCBBWE9iamVjdENhY2hlOjpz
ZXRJc29sYXRlZFRyZWVGb2N1c2VkT2JqZWN0KE5vZGUqIGZvY3VzZWROb2RlKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byogZm9jdXMgPSBnZXRPckNyZWF0ZShmb2N1
c2VkTm9kZSk7Ci0gICAgYXV0byBwYWdlSUQgPSBtX2RvY3VtZW50LnBhZ2VJRCgpOwotICAgIGlm
ICghcGFnZUlEKQorICAgIGlmICghbV9wYWdlSUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChhdXRvIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqcGFnZUlEKSkKKyAg
ICBhdXRvKiBmb2N1cyA9IGdldE9yQ3JlYXRlKGZvY3VzZWROb2RlKTsKKworICAgIGlmIChhdXRv
IHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqbV9wYWdlSUQpKQogICAgICAg
ICB0cmVlLT5zZXRGb2N1c2VkTm9kZUlEKGZvY3VzID8gZm9jdXMtPm9iamVjdElEKCkgOiBJbnZh
bGlkQVhJRCk7CiB9CiAjZW5kaWYKQEAgLTczNSwxNCArNzM2LDEyIEBAIEFYQ29yZU9iamVjdCog
QVhPYmplY3RDYWNoZTo6cm9vdE9iamVjdCgpCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNP
TEFURURfVFJFRSkKIEFYQ29yZU9iamVjdCogQVhPYmplY3RDYWNoZTo6aXNvbGF0ZWRUcmVlUm9v
dE9iamVjdCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIHBhZ2VJ
RCA9IG1fZG9jdW1lbnQucGFnZUlEKCk7Ci0gICAgaWYgKCFwYWdlSUQpCisgICAgaWYgKCFtX3Bh
Z2VJRCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHRyZWUgPSBBWElzb2xh
dGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqcGFnZUlEKTsKLSAgICBpZiAoIXRyZWUpIHsKLSAgICAg
ICAgdHJlZSA9IGdlbmVyYXRlSXNvbGF0ZWRUcmVlKCpwYWdlSUQsIG1fZG9jdW1lbnQpOworICAg
IGF1dG8gdHJlZSA9IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKCptX3BhZ2VJRCk7Cisg
ICAgaWYgKCF0cmVlICYmIGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIHRyZWUgPSBnZW5lcmF0
ZUlzb2xhdGVkVHJlZSgqbV9wYWdlSUQsIG1fZG9jdW1lbnQpOwogICAgICAgICAvLyBOb3cgdGhh
dCB3ZSBoYXZlIGNyZWF0ZWQgb3VyIHRyZWUsIGluaXRpYWxpemUgdGhlIHNlY29uZGFyeSB0aHJl
YWQsCiAgICAgICAgIC8vIHNvIGZ1dHVyZSByZXF1ZXN0cyBjb21lIGluIG9uIHRoZSBvdGhlciB0
aHJlYWQuCiAgICAgICAgIF9BWFVJRWxlbWVudFVzZVNlY29uZGFyeUFYVGhyZWFkKHRydWUpOwpA
QCAtODQ1LDggKzg0NCw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlKEFYSUQgYXhJRCkK
IAogICAgIG1faWRzSW5Vc2UucmVtb3ZlKGF4SUQpOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZ
X0lTT0xBVEVEX1RSRUUpCi0gICAgaWYgKGF1dG8gcGFnZUlEID0gbV9kb2N1bWVudC5wYWdlSUQo
KSkgewotICAgICAgICBpZiAoYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdl
SUQoKnBhZ2VJRCkpCisgICAgaWYgKG1fcGFnZUlEKSB7CisgICAgICAgIGlmIChhdXRvIHRyZWUg
PSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqbV9wYWdlSUQpKQogICAgICAgICAgICAg
dHJlZS0+cmVtb3ZlTm9kZShheElEKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggODAyYTc1NTRlNmI5MjY1MmFhOTE1
ZGNlM2I2ZGQxZWIwOWJjN2I1ZC4uZTYwNGVjYmYwNDczNjE2MDIyNzY2MTY3MmQ5NDE0NDcwNjRk
NmQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgK
QEAgLTI1LDkgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoQUNDRVNTSUJJ
TElUWV9JU09MQVRFRF9UUkVFKQotI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgiCi0jZW5kaWYK
ICNpbmNsdWRlICJBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oIgogI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJSYW5nZS5oIgpAQCAtNDgsNiArNDUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVF
KQogY2xhc3MgQVhJc29sYXRlZE9iamVjdDsKK2NsYXNzIEFYSXNvbGF0ZWRUcmVlOwogI2VuZGlm
CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxBcmVhRWxlbWVudDsKQEAgLTQ1Myw2ICs0NTEs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlTW9kYWxDaGFuZ2UoTm9kZSopOwogCiAgICAg
RG9jdW1lbnQmIG1fZG9jdW1lbnQ7CisgICAgY29uc3QgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IG1fcGFnZUlEOyAvLyBjb25zdGFudCBmb3Igb2JqZWN0J3MgbGlmZXRpbWUuCiAgICAgSGFzaE1h
cDxBWElELCBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IG1fb2JqZWN0czsKICAgICBIYXNo
TWFwPFJlbmRlck9iamVjdCosIEFYSUQ+IG1fcmVuZGVyT2JqZWN0TWFwcGluZzsKICAgICBIYXNo
TWFwPFdpZGdldCosIEFYSUQ+IG1fd2lkZ2V0T2JqZWN0TWFwcGluZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggZmU0NGU0
NGM3NjlhYjAwOTJhYzRiNzIxNTdkZGEyYWVjM2E4MmYyNi4uOGE3M2FlNjk0NjMwM2E3MzVhOWE0
MzFkMTk0ZjBlMmM2YWZhMDc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTE2Nyw2ICsxNjcsNyBAQCBwdWJsaWM6CiAg
ICAgQVhDb3JlT2JqZWN0KiBpbmNyZW1lbnRCdXR0b24oKSBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CiAgICAgQVhDb3JlT2JqZWN0KiBkZWNyZW1lbnRCdXR0b24oKSBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9CiAgICAgYm9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzSW5jcmVtZW50b3IoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNNb2NrT2JqZWN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xM
YWJlbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc01lZGlhT2JqZWN0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5k
ZXggYWRiMGQ5NGYxNjc0Yzk2NGQxYjQzMmJkMTc2MTBkZmY4ZjFhZmQ5My4uYzUwMzEzMWMzNGMx
MWQyYzdjODE5N2U4NzlmZTkwYjc3ZWE1NjhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAg
LTU0Myw2ICs1NDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGluY3Jl
bWVudEJ1dHRvbigpID0gMDsKICAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogZGVjcmVtZW50QnV0
dG9uKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0luY3JlbWVudG9yKCkgY29uc3QgPSAwOwogCiAgICAgdmly
dHVhbCBib29sIGlzTW9ja09iamVjdCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNN
ZWRpYU9iamVjdCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAppbmRleCA5OWQwYmQ0ZjM1NTYzMjYw
ZTkxMGRlZTU1ZjE0NjFlYWU5ZjMwNTZiLi42NjJkZjk1NGYyYjRlZWQ5MzhhY2U2Yzk2ZmE3MjAz
OWQ3NTZhZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTcGluQnV0dG9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydD4gY3JlYXRlKCk7CiAgICAgdmly
dHVhbCB+QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0KCkgPSBkZWZhdWx0OwogICAgIAotICAg
IGJvb2wgaXNJbmNyZW1lbnRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNJbmNyZW1lbnRvcjsgfQor
ICAgIGJvb2wgaXNJbmNyZW1lbnRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbmNy
ZW1lbnRvcjsgfQogICAgIHZvaWQgc2V0SXNJbmNyZW1lbnRvcihib29sIHZhbHVlKSB7IG1faXNJ
bmNyZW1lbnRvciA9IHZhbHVlOyB9CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlTm9kZS5jcHAKaW5kZXggMGI1NzZhZTk5YzY1NWY3MjVjNGFiMGVmYWE2NjM0YTg2ZmU3ZjNi
Ni4uYTU0OTNjYzllOWFmODZiZTk5NjA5M2MyNDY2MDBkNmI3ZTNjZDE5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkVHJlZU5vZGUuY3BwCkBAIC0yOCw4ICsyOCw2IEBACiAjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZU5vZGUuaCIK
IAotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBBWElzb2xhdGVkT2JqZWN0OjpBWElzb2xhdGVkT2JqZWN0KEFYQ29yZU9iamVjdCYgb2Jq
ZWN0LCBib29sIGlzUm9vdCkKQEAgLTM3LDkgKzM1LDcgQEAgQVhJc29sYXRlZE9iamVjdDo6QVhJ
c29sYXRlZE9iamVjdChBWENvcmVPYmplY3QmIG9iamVjdCwgYm9vbCBpc1Jvb3QpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpbml0aWFsaXplQXR0cmlidXRlRGF0YShvYmpl
Y3QsIGlzUm9vdCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIG1faW5pdGlhbGl6ZWQgPSB0
cnVlOwotI2VuZGlmCiB9CiAKIFJlZjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkT2JqZWN0
OjpjcmVhdGUoQVhDb3JlT2JqZWN0JiBvYmplY3QsIGJvb2wgaXNSb290KQpAQCAtMTYwLDYgKzE1
Niw3IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhD
b3JlT2JqZWN0JiBvYmplY3QsIGJvb2wgaXNSb290CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OlN1cHBvcnRzQ3VycmVudCwgb2JqZWN0LnN1cHBvcnRzQ3VycmVudCgpKTsKICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6S2V5U2hvcnRjdXRzVmFsdWUsIG9iamVjdC5rZXlT
aG9ydGN1dHNWYWx1ZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U3VwcG9y
dHNTZXRTaXplLCBvYmplY3Quc3VwcG9ydHNTZXRTaXplKCkpOworICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpTdXBwb3J0c1BhdGgsIG9iamVjdC5zdXBwb3J0c1BhdGgoKSk7CiAgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzUG9zSW5TZXQsIG9iamVjdC5zdXBw
b3J0c1Bvc0luU2V0KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTZXRTaXpl
LCBvYmplY3Quc2V0U2l6ZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UG9z
SW5TZXQsIG9iamVjdC5wb3NJblNldCgpKTsKQEAgLTI3MCw4ICsyNjcsMTAgQEAgdm9pZCBBWElz
b2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIG9iamVj
dCwgYm9vbCBpc1Jvb3QKICAgICB9CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFj
Y2Vzc2liaWxpdHlUZXh0LCBpc29sYXRlZFRleHRzKTsKIAorICAgIC8vIFNwaW4gYnV0dG9uIHN1
cHBvcnQuCiAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkRlY3JlbWVudEJ1
dHRvbiwgb2JqZWN0LmRlY3JlbWVudEJ1dHRvbigpKTsKICAgICBzZXRPYmplY3RQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6SW5jcmVtZW50QnV0dG9uLCBvYmplY3QuaW5jcmVtZW50QnV0dG9uKCkp
OworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0luY3JlbWVudG9yLCBvYmplY3Qu
aXNJbmNyZW1lbnRvcigpKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGNsYXNzTGlzdDsKICAgICBv
YmplY3QuY2xhc3NMaXN0KGNsYXNzTGlzdCk7CkBAIC02ODgsNyArNjg3LDkgQEAgdm9pZCBBWElz
b2xhdGVkT2JqZWN0OjpmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUKIAogdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojp1cGRhdGVCYWNraW5nU3Rv
cmUoKQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIC8vIFRoaXMgbWV0aG9k
IGNhbiBiZSBjYWxsZWQgb24gZWl0aGVyIHRoZSBtYWluIG9yIHRoZSBBWCB0aHJlYWRzLgorICAg
IC8vIEl0IGNhbiBiZSBjYWxsZWQgaW4gdGhlIG1haW4gdGhyZWFkIGZyb20gW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50XS4KKyAgICAv
LyBVcGRhdGUgdGhlIElzb2xhdGVkVHJlZSBvbmx5IGlmIGl0IGlzIGNhbGxlZCBvbiB0aGUgQVgg
dGhyZWFkLgogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgaWYgKGF1dG8gdHJl
ZSA9IHRoaXMtPnRyZWUoKSkKICAgICAgICAgICAgIHRyZWUtPmFwcGx5UGVuZGluZ0NoYW5nZXMo
KTsKQEAgLTY5NywxNSArNjk4LDE1IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6dXBkYXRlQmFj
a2luZ1N0b3JlKCkKIAogVmVjdG9yPFJlZlB0cjxSYW5nZT4+IEFYSXNvbGF0ZWRPYmplY3Q6OmZp
bmRUZXh0UmFuZ2VzKEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3JpdGVyaWEgY29uc3QmIGNyaXRl
cmlhKSBjb25zdAogewotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJv
bU1haW5UaHJlYWQ8VmVjdG9yPFJlZlB0cjxSYW5nZT4+PihbJmNyaXRlcmlhLCBheElEID0gb2Jq
ZWN0SUQoKSwgdGhpc10gKCkgLT4gVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHsKLSAgICAgICAgcmV0
dXJuIGF4T2JqZWN0Q2FjaGUoKS0+b2JqZWN0RnJvbUFYSUQoYXhJRCktPmZpbmRUZXh0UmFuZ2Vz
KGNyaXRlcmlhKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21N
YWluVGhyZWFkPFZlY3RvcjxSZWZQdHI8UmFuZ2U+Pj4oWyZjcml0ZXJpYSwgdGhpc10gKCkgLT4g
VmVjdG9yPFJlZlB0cjxSYW5nZT4+IHsKKyAgICAgICAgcmV0dXJuIGFzc29jaWF0ZWRBWE9iamVj
dCgpLT5maW5kVGV4dFJhbmdlcyhjcml0ZXJpYSk7CiAgICAgfSk7CiB9CiAKIFZlY3RvcjxTdHJp
bmc+IEFYSXNvbGF0ZWRPYmplY3Q6OnBlcmZvcm1UZXh0T3BlcmF0aW9uKEFjY2Vzc2liaWxpdHlU
ZXh0T3BlcmF0aW9uIGNvbnN0JiB0ZXh0T3BlcmF0aW9uKQogewotICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8VmVjdG9yPFN0cmluZz4+KFsmdGV4
dE9wZXJhdGlvbiwgYXhJRCA9IG9iamVjdElEKCksIHRoaXNdICgpIC0+IFZlY3RvcjxTdHJpbmc+
IHsKLSAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+b2JqZWN0RnJvbUFYSUQoYXhJRCkt
PnBlcmZvcm1UZXh0T3BlcmF0aW9uKHRleHRPcGVyYXRpb24pOworICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8VmVjdG9yPFN0cmluZz4+KFsmdGV4
dE9wZXJhdGlvbiwgdGhpc10gKCkgLT4gVmVjdG9yPFN0cmluZz4geworICAgICAgICByZXR1cm4g
YXNzb2NpYXRlZEFYT2JqZWN0KCktPnBlcmZvcm1UZXh0T3BlcmF0aW9uKHRleHRPcGVyYXRpb24p
OwogICAgIH0pOwogfQogCkBAIC05NDMsMTIgKzk0NCw2IEBAIGJvb2wgQVhJc29sYXRlZE9iamVj
dDo6aXNJbmRldGVybWluYXRlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
QVhJc29sYXRlZE9iamVjdDo6aXNMb2FkZWQoKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojpp
c09uU2NyZWVuKCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzNTks
NiArMTM1NCw3IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudHNGcm9tQXR0cmlidXRl
KFZlY3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROCiAKIEFYT2JqZWN0Q2FjaGUqIEFY
SXNvbGF0ZWRPYmplY3Q6OmF4T2JqZWN0Q2FjaGUoKSBjb25zdAogeworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuIHRyZWUoKS0+YXhPYmplY3RDYWNoZSgpOwogfQogCkBA
IC0xMzgwLDEyICsxMzc2LDYgQEAgUGF0aCBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50UGF0aCgp
IGNvbnN0CiAgICAgcmV0dXJuIFBhdGgoKTsKIH0KIAotYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojpz
dXBwb3J0c1BhdGgoKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQogVGV4dEl0ZXJhdG9yQmVoYXZpb3IgQVhJc29sYXRlZE9iamVjdDo6
dGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdAogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtMTM5NCw4ICsxMzg0LDcgQEAgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ig
QVhJc29sYXRlZE9iamVjdDo6dGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25z
dAogCiBXaWRnZXQqIEFYSXNvbGF0ZWRPYmplY3Q6OndpZGdldCgpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFzc29j
aWF0ZWRBWE9iamVjdCgpLT53aWRnZXQoKTsKIH0KIAogV2lkZ2V0KiBBWElzb2xhdGVkT2JqZWN0
Ojp3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0CkBAIC0xNDEyLDE0ICsxNDAxLDEyIEBA
IFBhZ2UqIEFYSXNvbGF0ZWRPYmplY3Q6OnBhZ2UoKSBjb25zdAogCiBEb2N1bWVudCogQVhJc29s
YXRlZE9iamVjdDo6ZG9jdW1lbnQoKSBjb25zdAogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhc3NvY2lhdGVkQVhPYmplY3QoKS0+
ZG9jdW1lbnQoKTsKIH0KIAogRnJhbWVWaWV3KiBBWElzb2xhdGVkT2JqZWN0Ojpkb2N1bWVudEZy
YW1lVmlldygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIGFzc29jaWF0ZWRBWE9iamVjdCgpLT5kb2N1bWVudEZyYW1l
VmlldygpOwogfQogCiBGcmFtZSogQVhJc29sYXRlZE9iamVjdDo6ZnJhbWUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZU5vZGUuaAppbmRleCAyY2VkM2I3NDZhZDI4MTQxOGQ3Y2FiOTQxMGI4
ZmMyNmM1ZmRiNGNhLi44NTczYjA0OTFhNWY0ZTYxN2NlYTZhNmU1NjcxMDFhMWE2MTRhNWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5B
QkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAotI2luY2x1ZGUgIkFYSXNvbGF0ZWRU
cmVlLmgiCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkxh
eW91dFJlY3QuaCIKQEAgLTcyLDcgKzcyLDggQEAgcHJpdmF0ZToKICAgICBBWElzb2xhdGVkT2Jq
ZWN0KCkgPSBkZWZhdWx0OwogICAgIEFYSXNvbGF0ZWRPYmplY3QoQVhDb3JlT2JqZWN0JiwgYm9v
bCBpc1Jvb3QpOwogICAgIHZvaWQgaW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3JlT2JqZWN0
JiwgYm9vbCBpc1Jvb3QpOwotICAgIAorICAgIEFYQ29yZU9iamVjdCogYXNzb2NpYXRlZEFYT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5vYmplY3RGcm9tQVhJRChvYmpl
Y3RJRCgpKTsgfQorCiAgICAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQ4X3Qgewog
ICAgICAgICBOb25lID0gMCwKICAgICAgICAgQWNjZXNzS2V5LApAQCAtMTUyLDYgKzE1Myw3IEBA
IHByaXZhdGU6CiAgICAgICAgIElzR3JvdXAsCiAgICAgICAgIElzSW1hZ2UsCiAgICAgICAgIElz
SW1hZ2VNYXBMaW5rLAorICAgICAgICBJc0luY3JlbWVudG9yLAogICAgICAgICBJc0luZGV0ZXJt
aW5hdGUsCiAgICAgICAgIElzSW5saW5lVGV4dCwKICAgICAgICAgSXNJbnB1dEltYWdlLApAQCAt
MjcyLDkgKzI3NCwxMCBAQCBwcml2YXRlOgogICAgICAgICBTdXBwb3J0c0V4cGFuZGVkLAogICAg
ICAgICBTdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlLAogICAgICAgICBTdXBwb3J0c0xpdmVSZWdp
b24sCi0gICAgICAgIFN1cHBvcnRzUmFuZ2VWYWx1ZSwKKyAgICAgICAgU3VwcG9ydHNQYXRoLAog
ICAgICAgICBTdXBwb3J0c1Bvc0luU2V0LAogICAgICAgICBTdXBwb3J0c1ByZXNzQWN0aW9uLAor
ICAgICAgICBTdXBwb3J0c1JhbmdlVmFsdWUsCiAgICAgICAgIFN1cHBvcnRzUmVxdWlyZWRBdHRy
aWJ1dGUsCiAgICAgICAgIFN1cHBvcnRzU2V0U2l6ZSwKICAgICAgICAgVGFiQ2hpbGRyZW4sCkBA
IC01MjIsOCArNTI1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBsaXZlUmVnaW9uQXRvbWljKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpMaXZlUmVnaW9uQXRvbWljKTsgfQogICAgIGJvb2wgaXNCdXN5KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0J1c3kpOyB9CiAg
ICAgYm9vbCBpc0lubGluZVRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzSW5saW5lVGV4dCk7IH0KKyAgICAvLyBTcGluIGJ1
dHRvbiBzdXBwb3J0LgogICAgIEFYQ29yZU9iamVjdCogaW5jcmVtZW50QnV0dG9uKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkluY3JlbWVu
dEJ1dHRvbik7IH0KICAgICBBWENvcmVPYmplY3QqIGRlY3JlbWVudEJ1dHRvbigpIG92ZXJyaWRl
IHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpEZWNyZW1lbnRC
dXR0b24pOyB9CisgICAgYm9vbCBpc0luY3JlbWVudG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0luY3JlbWVudG9yKTsgfQog
CiAgICAgLy8gUGFyYW1ldGVyaXplZCBhdHRyaWJ1dGUgcmV0cmlldmFsLgogICAgIFZlY3RvcjxS
ZWZQdHI8UmFuZ2U+PiBmaW5kVGV4dFJhbmdlcyhBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRl
cmlhIGNvbnN0JikgY29uc3Qgb3ZlcnJpZGU7CkBAIC02NTIsNyArNjU3LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29s
IGlzSG92ZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNJbmRldGVybWluYXRlKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgaXNMb2FkZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OklzTG9hZGVkKTsgfQogICAgIGJvb2wgaXNPblNjcmVlbigpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIGlzUHJlc3NlZCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNzI3LDcgKzczMiw3IEBAIHBy
aXZhdGU6CiAgICAgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBQYXRoIGVsZW1l
bnRQYXRoKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNQYXRoKTsgfQogICAg
IFRleHRJdGVyYXRvckJlaGF2aW9yIHRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDZmMjg2MTc1Y2FkYmIzNTZl
YTQ5MjJiNDE2M2JmY2UxMmFiOWFlYzkuLmIzOTllNjczZmM3N2FlNWVhNDE1YWE0YWNmNzM1ODk3
OTNkZTY5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0y
MDc1LDEwICsyMDc1LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAg
ICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdGVyKQogICAgICAgICByZXR1cm4g
QCJBWEZvb3RlciI7CiAKLSAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0Pigq
bV9vYmplY3QpKSB7Ci0gICAgICAgIGlmIChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
blBhcnQ+KCptX29iamVjdCkuaXNJbmNyZW1lbnRvcigpKQorICAgIGlmIChtX29iamVjdC0+cm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b25QYXJ0KSB7CisgICAgICAg
IGlmIChtX29iamVjdC0+aXNJbmNyZW1lbnRvcigpKQogICAgICAgICAgICAgcmV0dXJuIE5TQWNj
ZXNzaWJpbGl0eUluY3JlbWVudEFycm93U3Vicm9sZTsKLSAgICAgICAgCiAgICAgICAgIHJldHVy
biBOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBcnJvd1N1YnJvbGU7CiAgICAgfQogICAgIApAQCAt
Mzg2MywxMCArMzg2Miw2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICAKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IG1fb2JqZWN0LT5heE9iamVj
dENhY2hlKCk7Ci0gICAgaWYgKCFjYWNoZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKICAg
ICAvLyBjb21tb24gcGFyYW1ldGVyIHR5cGUgY2hlY2svY2FzdGluZy4gIE5pbCBjaGVja3MgaW4g
aGFuZGxlcnMgY2F0Y2ggd3JvbmcgdHlwZSBjYXNlLgogICAgIC8vIE5PVEU6IFRoaXMgYXNzdW1l
cyBuaWwgaXMgbm90IGEgdmFsaWQgcGFyYW1ldGVyLCBiZWNhdXNlIGl0IGlzIGluZGlzdGluZ3Vp
c2hhYmxlIGZyb20KICAgICAvLyBhIHBhcmFtZXRlciBvZiB0aGUgd3JvbmcgdHlwZS4KQEAgLTM5
NjAsMTYgKzM5NTUsMjkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eUVuZFRleHRNYXJrZXJGb3JCb3VuZHNQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgewotICAgICAg
ICBJbnRSZWN0IHdlYkNvcmVSZWN0ID0gW3NlbGYgc2NyZWVuVG9Db250ZW50czplbmNsb3NpbmdJ
bnRSZWN0KHJlY3QpXTsKLSAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9
IGNhY2hlLT5jaGFyYWN0ZXJPZmZzZXRGb3JCb3VuZHMod2ViQ29yZVJlY3QsIGZhbHNlKTsKLSAg
ICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVy
T2Zmc2V0XTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9t
TWFpblRocmVhZDxpZD4oWyZyZWN0LCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgICAgICAgICAgYXV0
byogY2FjaGUgPSBwcm90ZWN0ZWRTZWxmLT5tX29iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAg
ICAgICAgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworCisgICAg
ICAgICAgICBJbnRSZWN0IHdlYkNvcmVSZWN0ID0gW3Byb3RlY3RlZFNlbGYgc2NyZWVuVG9Db250
ZW50czplbmNsb3NpbmdJbnRSZWN0KHJlY3QpXTsKKyAgICAgICAgICAgIENoYXJhY3Rlck9mZnNl
dCBjaGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9yQm91bmRzKHdlYkNv
cmVSZWN0LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gW3Byb3RlY3RlZFNlbGYgdGV4dE1h
cmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdOworICAgICAgICB9KTsKICAg
ICB9CisKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
U3RhcnRUZXh0TWFya2VyRm9yQm91bmRzUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKLSAgICAg
ICAgSW50UmVjdCB3ZWJDb3JlUmVjdCA9IFtzZWxmIHNjcmVlblRvQ29udGVudHM6ZW5jbG9zaW5n
SW50UmVjdChyZWN0KV07Ci0gICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQg
PSBjYWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9yQm91bmRzKHdlYkNvcmVSZWN0LCB0cnVlKTsKLSAg
ICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVy
T2Zmc2V0XTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9t
TWFpblRocmVhZDxpZD4oWyZyZWN0LCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgICAgICAgICAgYXV0
byogY2FjaGUgPSBwcm90ZWN0ZWRTZWxmLT5tX29iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAg
ICAgICAgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworCisgICAg
ICAgICAgICBJbnRSZWN0IHdlYkNvcmVSZWN0ID0gW3Byb3RlY3RlZFNlbGYgc2NyZWVuVG9Db250
ZW50czplbmNsb3NpbmdJbnRSZWN0KHJlY3QpXTsKKyAgICAgICAgICAgIENoYXJhY3Rlck9mZnNl
dCBjaGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9yQm91bmRzKHdlYkNv
cmVSZWN0LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiB0ZXh0TWFy
a2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF07CisgICAgICAgIH0pOwogICAg
IH0KLSAgICAKKwogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlMaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlclBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGVdKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24gPSBbc2VsZiB2
aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwogICAgICAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IG1fb2JqZWN0LT5saW5lUmFuZ2VG
b3JQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24pOwpAQCAtNDAyNCw0NSArNDAzMiw2NiBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFtzZWxmIHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJrZXJSYW5nZV07CiAg
ICAgICAgIHJldHVybiBtX29iamVjdC0+c3RyaW5nRm9yUmFuZ2UocmFuZ2UpOwogICAgIH0KLSAg
ICAKKwogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlckZv
clBvc2l0aW9uIl0pIHsKICAgICAgICAgSW50UG9pbnQgd2ViQ29yZVBvaW50ID0gSW50UG9pbnQo
cG9pbnQpOwogICAgICAgICBpZiAoIXBvaW50U2V0KQogICAgICAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNhY2hlLT5jaGFyYWN0
ZXJPZmZzZXRGb3JQb2ludCh3ZWJDb3JlUG9pbnQsIG1fb2JqZWN0KTsKLSAgICAgICAgcmV0dXJu
IFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XTsKKwor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFk
PGlkPihbJndlYkNvcmVQb2ludCwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICAgICAgICAgIGF1dG8q
IGNhY2hlID0gcHJvdGVjdGVkU2VsZi0+bV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAg
ICAgICAgIGlmICghY2FjaGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAg
ICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNhY2hlLT5jaGFyYWN0ZXJP
ZmZzZXRGb3JQb2ludCh3ZWJDb3JlUG9pbnQsIHByb3RlY3RlZFNlbGYtPm1fb2JqZWN0KTsKKyAg
ICAgICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zm
c2V0OmNoYXJhY3Rlck9mZnNldF07CisgICAgICAgIH0pOwogICAgIH0KLSAgICAKKwogICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYQm91bmRzRm9yVGV4dE1hcmtlclJhbmdl
Il0pIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFtzZWxmIHJhbmdlRm9yVGV4dE1h
cmtlclJhbmdlOnRleHRNYXJrZXJSYW5nZV07CiAgICAgICAgIGF1dG8gYm91bmRzID0gRmxvYXRS
ZWN0KG1fb2JqZWN0LT5ib3VuZHNGb3JSYW5nZShyYW5nZSkpOwogICAgICAgICBOU1JlY3QgcmVj
dCA9IFtzZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpib3VuZHMgc3BhY2U6QWNjZXNzaWJpbGl0eUNv
bnZlcnNpb25TcGFjZTo6U2NyZWVuXTsKICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0
aFJlY3Q6cmVjdF07CiAgICAgfQotICAgIAorCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUJvdW5kc0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZV0pIHsKLSAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IHN0YXJ0ID0gY2FjaGUtPmNoYXJhY3Rlck9m
ZnNldEZvckluZGV4KHJhbmdlLmxvY2F0aW9uLCBtX29iamVjdCk7Ci0gICAgICAgIENoYXJhY3Rl
ck9mZnNldCBlbmQgPSBjYWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9ySW5kZXgocmFuZ2UubG9jYXRp
b24rcmFuZ2UubGVuZ3RoLCBtX29iamVjdCk7Ci0gICAgICAgIGlmIChzdGFydC5pc051bGwoKSB8
fCBlbmQuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gY2FjaGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhz
dGFydCwgZW5kKTsKLSAgICAgICAgYXV0byBib3VuZHMgPSBGbG9hdFJlY3QobV9vYmplY3QtPmJv
dW5kc0ZvclJhbmdlKHJhbmdlKSk7Ci0gICAgICAgIE5TUmVjdCByZWN0ID0gW3NlbGYgY29udmVy
dFJlY3RUb1NwYWNlOmJvdW5kcyBzcGFjZTpBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpT
Y3JlZW5dOworICAgICAgICBOU1JlY3QgcmVjdCA9IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFs
dWVGcm9tTWFpblRocmVhZDxOU1JlY3Q+KFsmcmFuZ2UsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5Q
dHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBOU1JlY3Qgewor
ICAgICAgICAgICAgYXV0byogY2FjaGUgPSBwcm90ZWN0ZWRTZWxmLT5tX29iamVjdC0+YXhPYmpl
Y3RDYWNoZSgpOworICAgICAgICAgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gQ0dSZWN0WmVybzsKKworICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IHN0YXJ0ID0gY2Fj
aGUtPmNoYXJhY3Rlck9mZnNldEZvckluZGV4KHJhbmdlLmxvY2F0aW9uLCBwcm90ZWN0ZWRTZWxm
LT5tX29iamVjdCk7CisgICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kID0gY2FjaGUtPmNo
YXJhY3Rlck9mZnNldEZvckluZGV4KHJhbmdlLmxvY2F0aW9uK3JhbmdlLmxlbmd0aCwgcHJvdGVj
dGVkU2VsZi0+bV9vYmplY3QpOworICAgICAgICAgICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8IGVu
ZC5pc051bGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsKKworICAgICAg
ICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGNhY2hlLT5yYW5nZUZvclVub3JkZXJlZENoYXJh
Y3Rlck9mZnNldHMoc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBhdXRvIGJvdW5kcyA9IEZsb2F0
UmVjdChwcm90ZWN0ZWRTZWxmLT5tX29iamVjdC0+Ym91bmRzRm9yUmFuZ2UocmFuZ2UpKTsKKyAg
ICAgICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6Ym91bmRz
IHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl07CisgICAgICAgIH0p
OwogICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0XTsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
U3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgewogICAgICAgICBpZiAobV9v
YmplY3QtPmlzVGV4dENvbnRyb2woKSkgewogICAgICAgICAgICAgUGxhaW5UZXh0UmFuZ2UgcGxh
aW5UZXh0UmFuZ2UgPSBQbGFpblRleHRSYW5nZShyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3Ro
KTsKICAgICAgICAgICAgIHJldHVybiBtX29iamVjdC0+ZG9BWFN0cmluZ0ZvclJhbmdlKHBsYWlu
VGV4dFJhbmdlKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0
IHN0YXJ0ID0gY2FjaGUtPmNoYXJhY3Rlck9mZnNldEZvckluZGV4KHJhbmdlLmxvY2F0aW9uLCBt
X29iamVjdCk7Ci0gICAgICAgIENoYXJhY3Rlck9mZnNldCBlbmQgPSBjYWNoZS0+Y2hhcmFjdGVy
T2Zmc2V0Rm9ySW5kZXgocmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgsIG1fb2JqZWN0KTsK
LSAgICAgICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8IGVuZC5pc051bGwoKSkKLSAgICAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBjYWNoZS0+cmFuZ2VG
b3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHN0YXJ0LCBlbmQpOwotICAgICAgICByZXR1cm4g
bV9vYmplY3QtPnN0cmluZ0ZvclJhbmdlKHJhbmdlKTsKKworICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPE5TU3RyaW5nICo+KFsmcmFuZ2Us
IHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+
KHNlbGYpXSAoKSAtPiBOU1N0cmluZyAqIHsKKyAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJv
dGVjdGVkU2VsZi0+bV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAgICAgIGlmICgh
Y2FjaGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICAgICAgQ2hhcmFj
dGVyT2Zmc2V0IHN0YXJ0ID0gY2FjaGUtPmNoYXJhY3Rlck9mZnNldEZvckluZGV4KHJhbmdlLmxv
Y2F0aW9uLCBwcm90ZWN0ZWRTZWxmLT5tX29iamVjdCk7CisgICAgICAgICAgICBDaGFyYWN0ZXJP
ZmZzZXQgZW5kID0gY2FjaGUtPmNoYXJhY3Rlck9mZnNldEZvckluZGV4KHJhbmdlLmxvY2F0aW9u
ICsgcmFuZ2UubGVuZ3RoLCBwcm90ZWN0ZWRTZWxmLT5tX29iamVjdCk7CisgICAgICAgICAgICBp
ZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBjYWNoZS0+cmFuZ2VG
b3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgcmV0
dXJuIHByb3RlY3RlZFNlbGYtPm1fb2JqZWN0LT5zdHJpbmdGb3JSYW5nZShyYW5nZSk7CisgICAg
ICAgIH0pOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFY
QXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSJdKQpAQCAtNDA4OCwxOCArNDExNywy
NCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRN
YXJrZXJzIl0pIHsKICAgICAgICAgaWYgKFthcnJheSBjb3VudF0gPCAyKQogICAgICAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICAgICAgCisKICAgICAgICAgaWQgdGV4dE1hcmtlcjEgPSBbYXJyYXkg
b2JqZWN0QXRJbmRleDowXTsKICAgICAgICAgaWQgdGV4dE1hcmtlcjIgPSBbYXJyYXkgb2JqZWN0
QXRJbmRleDoxXTsKICAgICAgICAgaWYgKCFBWE9iamVjdElzVGV4dE1hcmtlcih0ZXh0TWFya2Vy
MSkgfHwgIUFYT2JqZWN0SXNUZXh0TWFya2VyKHRleHRNYXJrZXIyKSkKICAgICAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zm
c2V0MSA9IFtzZWxmIGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXI6dGV4dE1hcmtlcjFdOwot
ICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0MiA9IFtzZWxmIGNoYXJhY3Rl
ck9mZnNldEZvclRleHRNYXJrZXI6dGV4dE1hcmtlcjJdOwotICAgICAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gY2FjaGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjaGFyYWN0
ZXJPZmZzZXQxLCBjaGFyYWN0ZXJPZmZzZXQyKTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRN
YXJrZXJSYW5nZUZyb21SYW5nZTpyYW5nZV07CisKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3RleHRNYXJrZXIxLCB0ZXh0TWFy
a2VyMiwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJvdGVj
dGVkU2VsZi0+bV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAgICAgIGlmICghY2Fj
aGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICAgICAgQ2hhcmFjdGVy
T2Zmc2V0IGNoYXJhY3Rlck9mZnNldDEgPSBbcHJvdGVjdGVkU2VsZiBjaGFyYWN0ZXJPZmZzZXRG
b3JUZXh0TWFya2VyOnRleHRNYXJrZXIxXTsKKyAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBj
aGFyYWN0ZXJPZmZzZXQyID0gW3Byb3RlY3RlZFNlbGYgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1h
cmtlcjp0ZXh0TWFya2VyMl07CisgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gY2Fj
aGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjaGFyYWN0ZXJPZmZzZXQxLCBj
aGFyYWN0ZXJPZmZzZXQyKTsKKyAgICAgICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiB0ZXh0
TWFya2VyUmFuZ2VGcm9tUmFuZ2U6cmFuZ2VdOworICAgICAgICB9KTsKICAgICB9Ci0gICAgCisK
ICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWE5leHRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlciJdKSB7CiAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQg
PSBbc2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwogICAgICAg
ICByZXR1cm4gW3NlbGYgbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVy
T2Zmc2V0XTsKQEAgLTQxMDksMTkgKzQxNDQsMzEgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBb
c2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwogICAgICAgICBy
ZXR1cm4gW3NlbGYgcHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rl
ck9mZnNldF07CiAgICAgfQotICAgIAorCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgewotICAgICAg
ICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gW3NlbGYgY2hhcmFjdGVyT2Zmc2V0
Rm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IGNhY2hlLT5sZWZ0V29yZFJhbmdlKGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgICAgIHJldHVybiBb
c2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2U6cmFuZ2VdOworICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbdGV4dE1hcmtlciwg
cHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4o
c2VsZildICgpIC0+IGlkIHsKKyAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJvdGVjdGVkU2Vs
Zi0+bV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAgICAgIGlmICghY2FjaGUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0
IGNoYXJhY3Rlck9mZnNldCA9IFtwcm90ZWN0ZWRTZWxmIGNoYXJhY3Rlck9mZnNldEZvclRleHRN
YXJrZXI6dGV4dE1hcmtlcl07CisgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gY2Fj
aGUtPmxlZnRXb3JkUmFuZ2UoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBb
cHJvdGVjdGVkU2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2U6cmFuZ2VdOworICAgICAgICB9
KTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJB
WFJpZ2h0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBDaGFy
YWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gW3NlbGYgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4
dE1hcmtlcjp0ZXh0TWFya2VyXTsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGNhY2hl
LT5yaWdodFdvcmRSYW5nZShjaGFyYWN0ZXJPZmZzZXQpOwotICAgICAgICByZXR1cm4gW3NlbGYg
dGV4dE1hcmtlclJhbmdlRnJvbVJhbmdlOnJhbmdlXTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3RleHRNYXJrZXIsIHByb3Rl
Y3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYp
XSAoKSAtPiBpZCB7CisgICAgICAgICAgICBhdXRvKiBjYWNoZSA9IHByb3RlY3RlZFNlbGYtPm1f
b2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgICAgICAgICBpZiAoIWNhY2hlKQorICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFy
YWN0ZXJPZmZzZXQgPSBbcHJvdGVjdGVkU2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2Vy
OnRleHRNYXJrZXJdOworICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGNhY2hlLT5y
aWdodFdvcmRSYW5nZShjaGFyYWN0ZXJPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuIFtwcm90
ZWN0ZWRTZWxmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZTpyYW5nZV07CisgICAgICAgIH0pOwog
ICAgIH0KLSAgICAKKwogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTGVm
dExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0
ZXh0TWFya2VyKV07CiAgICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29i
amVjdC0+bGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9zKTsKQEAgLTQxMzMs
MzEgKzQxODAsNTUgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAg
ICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cmlnaHRMaW5lVmlz
aWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvcyk7CiAgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0
TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczp2cFJhbmdlLnN0YXJ0IGVuZFBvc2l0aW9u
OnZwUmFuZ2UuZW5kXTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFs
VG9TdHJpbmc6QCJBWFNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciJdKSB7Ci0g
ICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBbc2VsZiBjaGFyYWN0ZXJP
ZmZzZXRGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwotICAgICAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gY2FjaGUtPnNlbnRlbmNlRm9yQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7
Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2U6cmFuZ2VdOwor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFk
PGlkPihbdGV4dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICAgICAgICAgIGF1dG8qIGNh
Y2hlID0gcHJvdGVjdGVkU2VsZi0+bV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAg
ICAgIGlmICghY2FjaGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICAg
ICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IFtwcm90ZWN0ZWRTZWxmIGNoYXJh
Y3Rlck9mZnNldEZvclRleHRNYXJrZXI6dGV4dE1hcmtlcl07CisgICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gY2FjaGUtPnNlbnRlbmNlRm9yQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rl
ck9mZnNldCk7CisgICAgICAgICAgICByZXR1cm4gW3Byb3RlY3RlZFNlbGYgdGV4dE1hcmtlclJh
bmdlRnJvbVJhbmdlOnJhbmdlXTsKKyAgICAgICAgfSk7CiAgICAgfQotICAgIAorCiAgICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhQYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNl
dCA9IFtzZWxmIGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXI6dGV4dE1hcmtlcl07Ci0gICAg
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBjYWNoZS0+cGFyYWdyYXBoRm9yQ2hhcmFjdGVyT2Zm
c2V0KGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFu
Z2VGcm9tUmFuZ2U6cmFuZ2VdOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmll
dmVWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbdGV4dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IFJl
dGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsK
KyAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJvdGVjdGVkU2VsZi0+bV9vYmplY3QtPmF4T2Jq
ZWN0Q2FjaGUoKTsKKyAgICAgICAgICAgIGlmICghY2FjaGUpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9
IFtwcm90ZWN0ZWRTZWxmIGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXI6dGV4dE1hcmtlcl07
CisgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gY2FjaGUtPnBhcmFncmFwaEZvckNo
YXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuIFtwcm90
ZWN0ZWRTZWxmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZTpyYW5nZV07CisgICAgICAgIH0pOwog
ICAgIH0KLSAgICAKKwogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTmV4
dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIENoYXJhY3Rlck9m
ZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBbc2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2Vy
OnRleHRNYXJrZXJdOwotICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dEVuZCA9IGNhY2hlLT5u
ZXh0V29yZEVuZENoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwotICAgICAgICByZXR1
cm4gW3NlbGYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpuZXh0RW5kXTsKKyAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3Rl
eHRNYXJrZXIsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBpZCB7CisgICAgICAgICAgICBhdXRvKiBjYWNoZSA9IHBy
b3RlY3RlZFNlbGYtPm1fb2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgICAgICAgICBpZiAo
IWNhY2hlKQorICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAgICAgIENoYXJh
Y3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBbcHJvdGVjdGVkU2VsZiBjaGFyYWN0ZXJPZmZz
ZXRGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOworICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0
IG5leHRFbmQgPSBjYWNoZS0+bmV4dFdvcmRFbmRDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zm
c2V0KTsKKyAgICAgICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiB0ZXh0TWFya2VyRm9yQ2hh
cmFjdGVyT2Zmc2V0Om5leHRFbmRdOworICAgICAgICB9KTsKICAgICB9Ci0gICAgCisKICAgICBp
ZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFByZXZpb3VzV29yZFN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVy
T2Zmc2V0ID0gW3NlbGYgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsK
LSAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzU3RhcnQgPSBjYWNoZS0+cHJldmlvdXNX
b3JkU3RhcnRDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICAgICAgcmV0dXJu
IFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6cHJldmlvdXNTdGFydF07CisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+
KFt0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgICAgICAgICAgYXV0byogY2FjaGUg
PSBwcm90ZWN0ZWRTZWxmLT5tX29iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgICAgICAgICAg
aWYgKCFjYWNoZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworCisgICAgICAgICAgICBD
aGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gW3Byb3RlY3RlZFNlbGYgY2hhcmFjdGVy
T2Zmc2V0Rm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsKKyAgICAgICAgICAgIENoYXJhY3Rlck9m
ZnNldCBwcmV2aW91c1N0YXJ0ID0gY2FjaGUtPnByZXZpb3VzV29yZFN0YXJ0Q2hhcmFjdGVyT2Zm
c2V0KGNoYXJhY3Rlck9mZnNldCk7CisgICAgICAgICAgICByZXR1cm4gW3Byb3RlY3RlZFNlbGYg
dGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpwcmV2aW91c1N0YXJ0XTsKKyAgICAgICAgfSk7
CiAgICAgfQotICAgIAorCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhO
ZXh0TGluZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0
ZXh0TWFya2VyKV07CiAgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBv
c2l0aW9uOm1fb2JqZWN0LT5uZXh0TGluZUVuZFBvc2l0aW9uKHZpc2libGVQb3MpXTsKQEAgLTQx
NjksMjkgKzQyNDAsNTMgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgfQogICAgIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTmV4dFNl
bnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBDaGFyYWN0ZXJP
ZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gW3NlbGYgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtl
cjp0ZXh0TWFya2VyXTsKLSAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHRFbmQgPSBjYWNoZS0+
bmV4dFNlbnRlbmNlRW5kQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgICAg
IHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0Om5leHRFbmRdOworICAg
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGlk
PihbdGV4dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICAgICAgICAgIGF1dG8qIGNhY2hl
ID0gcHJvdGVjdGVkU2VsZi0+bV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAgICAg
IGlmICghY2FjaGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IFtwcm90ZWN0ZWRT
ZWxmIGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXI6dGV4dE1hcmtlcl07CisgICAgICAgICAg
ICBDaGFyYWN0ZXJPZmZzZXQgbmV4dEVuZCA9IGNhY2hlLT5uZXh0U2VudGVuY2VFbmRDaGFyYWN0
ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBbcHJvdGVjdGVk
U2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0Om5leHRFbmRdOworICAgICAgICB9KTsK
ICAgICB9Ci0gICAgCisKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFBy
ZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAg
Q2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IFtzZWxmIGNoYXJhY3Rlck9mZnNldEZv
clRleHRNYXJrZXI6dGV4dE1hcmtlcl07Ci0gICAgICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91
c1N0YXJ0ID0gY2FjaGUtPnByZXZpb3VzU2VudGVuY2VTdGFydENoYXJhY3Rlck9mZnNldChjaGFy
YWN0ZXJPZmZzZXQpOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvckNoYXJhY3Rl
ck9mZnNldDpwcmV2aW91c1N0YXJ0XTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJl
dHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3RleHRNYXJrZXIsIHByb3RlY3RlZFNlbGYg
PSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBp
ZCB7CisgICAgICAgICAgICBhdXRvKiBjYWNoZSA9IHByb3RlY3RlZFNlbGYtPm1fb2JqZWN0LT5h
eE9iamVjdENhY2hlKCk7CisgICAgICAgICAgICBpZiAoIWNhY2hlKQorICAgICAgICAgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZz
ZXQgPSBbcHJvdGVjdGVkU2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyOnRleHRNYXJr
ZXJdOworICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzU3RhcnQgPSBjYWNoZS0+
cHJldmlvdXNTZW50ZW5jZVN0YXJ0Q2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7Cisg
ICAgICAgICAgICByZXR1cm4gW3Byb3RlY3RlZFNlbGYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9m
ZnNldDpwcmV2aW91c1N0YXJ0XTsKKyAgICAgICAgfSk7CiAgICAgfQotICAgIAorCiAgICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhOZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zm
c2V0ID0gW3NlbGYgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsKLSAg
ICAgICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHRFbmQgPSBjYWNoZS0+bmV4dFBhcmFncmFwaEVuZENo
YXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4
dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpuZXh0RW5kXTsKKyAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3RleHRNYXJrZXIsIHBy
b3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNl
bGYpXSAoKSAtPiBpZCB7CisgICAgICAgICAgICBhdXRvKiBjYWNoZSA9IHByb3RlY3RlZFNlbGYt
Pm1fb2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgICAgICAgICBpZiAoIWNhY2hlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBj
aGFyYWN0ZXJPZmZzZXQgPSBbcHJvdGVjdGVkU2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFy
a2VyOnRleHRNYXJrZXJdOworICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHRFbmQgPSBj
YWNoZS0+bmV4dFBhcmFncmFwaEVuZENoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwor
ICAgICAgICAgICAgcmV0dXJuIFtwcm90ZWN0ZWRTZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJP
ZmZzZXQ6bmV4dEVuZF07CisgICAgICAgIH0pOwogICAgIH0KLSAgICAKKwogICAgIGlmIChbYXR0
cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9m
ZnNldCA9IFtzZWxmIGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXI6dGV4dE1hcmtlcl07Ci0g
ICAgICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91c1N0YXJ0ID0gY2FjaGUtPnByZXZpb3VzUGFy
YWdyYXBoU3RhcnRDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICAgICAgcmV0
dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6cHJldmlvdXNTdGFydF07Cisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8
aWQ+KFt0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgICAgICAgICAgYXV0byogY2Fj
aGUgPSBwcm90ZWN0ZWRTZWxmLT5tX29iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgICAgICAg
ICAgaWYgKCFjYWNoZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworCisgICAgICAgICAg
ICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gW3Byb3RlY3RlZFNlbGYgY2hhcmFj
dGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsKKyAgICAgICAgICAgIENoYXJhY3Rl
ck9mZnNldCBwcmV2aW91c1N0YXJ0ID0gY2FjaGUtPnByZXZpb3VzUGFyYWdyYXBoU3RhcnRDaGFy
YWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBbcHJvdGVj
dGVkU2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OnByZXZpb3VzU3RhcnRdOworICAg
ICAgICB9KTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJp
bmc6QCJBWFN0eWxlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciJdKSB7CiAgICAgICAgIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1h
cmtlcjoodGV4dE1hcmtlcildOwogICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2cFJhbmdl
ID0gbV9vYmplY3QtPnN0eWxlUmFuZ2VGb3JQb3NpdGlvbih2aXNpYmxlUG9zKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>