<?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>195592</bug_id>
          
          <creation_ts>2019-03-11 17:54:21 -0700</creation_ts>
          <short_desc>Web Inspector: Page: lazily create the agent</short_desc>
          <delta_ts>2019-03-21 11:22:16 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>195589</dependson>
    
    <dependson>195865</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1515147</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-11 17:54:21 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515155</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-11 17:59:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/48791916&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519486</commentid>
    <comment_count>2</comment_count>
      <attachid>365490</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-20 22:46:40 -0700</bug_when>
    <thetext>Created attachment 365490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519767</commentid>
    <comment_count>3</comment_count>
      <attachid>365490</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-21 11:22:15 -0700</bug_when>
    <thetext>Comment on attachment 365490
Patch

Clearing flags on attachment: 365490

Committed r243303: &lt;https://trac.webkit.org/changeset/243303&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519768</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-21 11:22:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365490</attachid>
            <date>2019-03-20 22:46:40 -0700</date>
            <delta_ts>2019-03-21 11:22:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195592-20190320224639.patch</filename>
            <type>text/plain</type>
            <size>49142</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ZjBiNTMzMGZkYTllODE5ZjJkZDcyY2Y2YzFhOThiN2EwMWIxYzIzLi4y
ZWI4ZmI0NmY3YmViOGE0NWFhOWMzM2U0ZGI1MjE4OTRlZmY4ODk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTEgQEAKKzIwMTktMDMtMjAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhZ2U6IGxhemlseSBjcmVhdGUgdGhlIGFnZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU1OTIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NzkxOTE2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5Lgor
CisgICAgICAgIEhhdmUgbW9yZSBhZ2VudHMgc2F2ZSB0aGUgaW5zcGVjdGVkIGBQYWdlYCBzbyB0
aGV5IGRvbid0IG5lZWQgdG8gYWNjZXNzIGl0IHZpYSB0aGUKKyAgICAgICAgYEluc3BlY3RvclBh
Z2VBZ2VudGAuIE1ha2Ugc29tZSBvZiBgSW5zcGVjdG9yUGFnZUFnZW50YCdzIGZ1bmN0aW9ucyBg
c3RhdGljYCBzbyBvdGhlcgorICAgICAgICBhZ2VudHMgY2FuIHVzZSB0aGVtIHdpdGhvdXQgbmVl
ZGluZyB0byBoYXZlIGFjY2VzcyB0byBhbiBlbmFibGVkIGBJbnNwZWN0b3JQYWdlQWdlbnRgLgor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKToKKwor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnBhZ2UpOiBEZWxldGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6
Om5hdmlnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6b3ZlcnJp
ZGVTZXR0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29v
a2llcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0ZUNvb2tp
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlVHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRMYXlvdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRTY3JvbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRSZWNhbGN1bGF0ZVN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRpYSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEZvcmNlZEFwcGVhcmFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb21wb3NpdGluZ0JvcmRlcnNW
aXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0Q29tcG9z
aXRpbmdCb3JkZXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNuYXBzaG90Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNuYXBzaG90UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFy
Y2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluRnJhbWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpoYXNJZEZv
ckZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
Ojp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmFzc2VydEZyYW1l
V2l0aERvY3VtZW50TG9hZGVyKToKKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpJ
bnNwZWN0b3JDYW52YXNBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNB
Z2VudDo6ZW5hYmxlKToKKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEpOgorCisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6Okluc3BlY3RvckluZGV4ZWREQkFnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERh
dGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1
ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6Y2xl
YXJPYmplY3RTdG9yZSk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURl
YnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVn
Z2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OlBhZ2VE
ZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3Vy
Y2VNYXBVUkxGb3JTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6
OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VOZXR3b3JrQWdl
bnQ6OlBhZ2VOZXR3b3JrQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZU5ldHdvcmtBZ2Vu
dDo6bG9hZGVySWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlTmV0d29ya0FnZW50
OjpmcmFtZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZU5ldHdvcmtBZ2VudDo6
c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZU5ldHdv
cmtBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkSW1wbCk6CisKIDIw
MTktMDMtMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIENv
bXB1dGUgcXVvdGEgYWZ0ZXIgbmV0d29yayBwcm9jZXNzIHJlc3RhcnQgYmFzZWQgb24gZGVmYXVs
dCBxdW90YSBhbmQgc3BhY2UgdXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGI5YWE2NmM4NzZiM2M3Y2U5NjQyMWY2YzMwYjcx
NDI1NTA1Njg5ODYuLjAwN2EwOWNjNTk4MmQyMjRkYzBkNTYzNTdiYTBmMTUyMDdmZTdkNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTExMCwxMCArMTEwLDYgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJv
bGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KG1faW5zcGVjdG9yQWdlbnQpOwogICAg
IG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGluc3BlY3RvckFnZW50UHRyKSk7CiAKLSAgICBhdXRv
IHBhZ2VBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFnZUFnZW50PihwYWdl
Q29udGV4dCwgaW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0KCkpOwotICAgIG1fcGFnZUFn
ZW50ID0gcGFnZUFnZW50UHRyLmdldCgpOwotICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHBh
Z2VBZ2VudFB0cikpOwotCiAgICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2VDb25zb2xlQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMtPnNldFdlYkNvbnNvbGVBZ2VudChjb25zb2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRz
LmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwpAQCAtMTYwLDIzICsxNTYsMjcgQEAgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKIAogICAgIGF1dG8gcGFn
ZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7CiAKKyAgICBhdXRvIHBhZ2VBZ2VudFB0ciA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFnZUFnZW50PihwYWdlQ29udGV4dCwgbV9pbnNw
ZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7CisgICAgbV9wYWdlQWdlbnQgPSBwYWdlQWdl
bnRQdHIuZ2V0KCk7CisgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUocGFnZUFnZW50UHRyKSk7
CisKICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlUnVudGltZUFnZW50
PihwYWdlQ29udGV4dCkpOwogCi0gICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQsIG1fcGFnZUFnZW50KTsKKyAgICBh
dXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1Z2dlckFnZW50Pihw
YWdlQ29udGV4dCk7CiAgICAgYXV0byBkZWJ1Z2dlckFnZW50UHRyID0gZGVidWdnZXJBZ2VudC5n
ZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShkZWJ1Z2dlckFnZW50KSk7CiAKLSAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlTmV0d29ya0FnZW50PihwYWdl
Q29udGV4dCwgbV9wYWdlQWdlbnQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlTmV0d29ya0FnZW50PihwYWdlQ29udGV4dCkpOwogICAgIG1fYWdlbnRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNTU0FnZW50PihwYWdlQ29udGV4dCkpOwogICAg
IG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUFnZW50PihwYWdl
Q29udGV4dCwgbV9vdmVybGF5LmdldCgpKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQsIGRlYnVnZ2Vy
QWdlbnRQdHIpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX3BhZ2VBZ2VudCkpOworICAg
IG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudD4ocGFnZUNvbnRleHQpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKICAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRl
eHQpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4ocGFnZUNvbnRleHQsIG1fcGFnZUFnZW50KSk7Cisg
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQ+KHBhZ2VDb250ZXh0KSk7CiAjZW5kaWYKIAogICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2Vu
dFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4ocGFn
ZUNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBhNTNhOTEwNDJlODUyMTQ0NzQ4MmI4YjBjM2EwZjJj
MjYxZjFkZjA4Li4yZWZlMTZjYmY4OTk5NjJmZTI2OTIzMDc0MDczNjQ1OTAyMDdkZDI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcApAQCAtMTA5LDExICsxMDksMTEgQEAgc3RhdGljIEZyYW1lKiBmcmFtZUZvclNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIAogdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1l
LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewotICAgIEluc3BlY3RvclBhZ2VBZ2VudCogcGFn
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKTsKICAgICBp
ZiAoUGFnZURlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LnBhZ2VEZWJ1Z2dlckFnZW50KCkpIHsKLSAgICAgICAgaWYgKHBhZ2VBZ2VudCAmJiAmd29ybGQg
PT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpICYmICZmcmFtZSA9PSAmcGFnZUFnZW50LT5tYWlu
RnJhbWUoKSkKKyAgICAgICAgaWYgKCZ3b3JsZCA9PSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkg
JiYgZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgIGRlYnVnZ2VyQWdlbnQtPmRpZENs
ZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CiAgICAgfQorCiAgICAgaWYgKFBhZ2VSdW50aW1l
QWdlbnQqIHBhZ2VSdW50aW1lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VSdW50aW1l
QWdlbnQoKSkgewogICAgICAgICBpZiAoJndvcmxkID09ICZtYWluVGhyZWFkTm9ybWFsV29ybGQo
KSkKICAgICAgICAgICAgIHBhZ2VSdW50aW1lQWdlbnQtPmRpZENyZWF0ZU1haW5Xb3JsZENvbnRl
eHQoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IDc2ZjMx
NmZjNGE3M2M2YzUxNzQ2Y2RhODM1MGJlNGI2MWI0MDlmYjYuLjVmMGY4NWI3YzIwNTE3Y2ZhNDEz
NDgzMWQ4MGRmZmZhNzA1NzE1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAKQEAgLTQwLDExICs0MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKLUluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCitJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0
KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJBcHBsaWNhdGlvbkNhY2hlIl9zLCBjb250ZXh0
KQogICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2Fj
aGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpKQotICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQorICAgICwgbV9pbnNwZWN0ZWRQYWdl
KGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKIH0KIApAQCAtNjcsOCArNjcsMTMgQEAgdm9pZCBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiAKIHZv
aWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp1cGRhdGVBcHBsaWNhdGlvbkNhY2hl
U3RhdHVzKEZyYW1lKiBmcmFtZSkKIHsKKyAgICBhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCk7CisgICAgaWYgKCFwYWdlQWdlbnQpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKKwogICAg
IGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7
CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNzcsNyArODIs
NyBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6dXBkYXRlQXBwbGljYXRp
b25DYWNoZVN0YXR1cyhGcmFtZSogZnJhbWUpCiAgICAgaW50IHN0YXR1cyA9IGhvc3Quc3RhdHVz
KCk7CiAgICAgYXV0byBtYW5pZmVzdFVSTCA9IGhvc3QuYXBwbGljYXRpb25DYWNoZUluZm8oKS5t
YW5pZmVzdC5zdHJpbmcoKTsKIAotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hcHBsaWNhdGlv
bkNhY2hlU3RhdHVzVXBkYXRlZChtX3BhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSksIG1hbmlmZXN0
VVJMLCBzdGF0dXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hcHBsaWNhdGlvbkNhY2hl
U3RhdHVzVXBkYXRlZChwYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpLCBtYW5pZmVzdFVSTCwgc3Rh
dHVzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Om5ldHdvcmtT
dGF0ZUNoYW5nZWQoKQpAQCAtODksNyArOTQsOSBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyYsIFJlZlB0cgog
ewogICAgIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGlj
YXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+OjpjcmVhdGUoKTsKIAotICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gJm1fcGFnZUFnZW50LT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgIGF1dG8qIHBhZ2VBZ2VudCA9IG1faW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKTsKKworICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gJm1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBhdXRvKiBkb2N1bWVudExvYWRl
ciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgICAgICBpZiAoIWRvY3Vt
ZW50TG9hZGVyKQogICAgICAgICAgICAgY29udGludWU7CkBAIC05OCw3ICsxMDUsNyBAQCB2b2lk
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhF
cnJvclN0cmluZyYsIFJlZlB0cgogICAgICAgICBTdHJpbmcgbWFuaWZlc3RVUkwgPSBob3N0LmFw
cGxpY2F0aW9uQ2FjaGVJbmZvKCkubWFuaWZlc3Quc3RyaW5nKCk7CiAgICAgICAgIGlmICghbWFu
aWZlc3RVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICByZXN1bHQtPmFkZEl0ZW0oSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q6OmNyZWF0
ZSgpCi0gICAgICAgICAgICAgICAgLnNldEZyYW1lSWQobV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJh
bWUpKQorICAgICAgICAgICAgICAgIC5zZXRGcmFtZUlkKHBhZ2VBZ2VudC0+ZnJhbWVJZChmcmFt
ZSkpCiAgICAgICAgICAgICAgICAgLnNldE1hbmlmZXN0VVJMKG1hbmlmZXN0VVJMKQogICAgICAg
ICAgICAgICAgIC5zZXRTdGF0dXMoc3RhdGljX2Nhc3Q8aW50Pihob3N0LnN0YXR1cygpKSkKICAg
ICAgICAgICAgICAgICAucmVsZWFzZSgpKTsKQEAgLTEwOCw3ICsxMTUsMTMgQEAgdm9pZCBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JT
dHJpbmcmLCBSZWZQdHIKIAogRG9jdW1lbnRMb2FkZXIqIEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudDo6YXNzZXJ0RnJhbWVXaXRoRG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9w
YWdlQWdlbnQtPmFzc2VydEZyYW1lKGVycm9yU3RyaW5nLCBmcmFtZUlkKTsKKyAgICBhdXRvKiBw
YWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCk7Cisg
ICAgaWYgKCFwYWdlQWdlbnQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBQYWdl
IGFnZW50Il9zOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBGcmFtZSog
ZnJhbWUgPSBwYWdlQWdlbnQtPmFzc2VydEZyYW1lKGVycm9yU3RyaW5nLCBmcmFtZUlkKTsKICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmgKaW5kZXggNWZlNWMyZDY3YmM0MmQ1ZWMzMTEyNzMwODIyODZlNTFiN2U4
OTYwZS4uNjQwZjBhNDg3OGVhMTFjZjkxMWZkYzJjNjIxYjgxNGZhOWIyNWI0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZyYW1lOwotY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgUGFnZTsKIAogdHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CkBAIC00NiwxNSArNDUsMTcgQEAgY2xhc3MgSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwg
cHVibGljIEkKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoUGFnZUFnZW50
Q29udGV4dCYpOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgp
ID0gZGVmYXVsdDsKIAogICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3Zl
cnJpZGU7CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCisgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uCiAgICAgdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKik7CiAg
ICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAKKyAgICAvLyBBcHBsaWNhdGlvbkNhY2hl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2b2lkIGdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcmLCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hl
OjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0TWFu
aWZlc3RGb3JGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU3RyaW5n
KiBtYW5pZmVzdFVSTCkgb3ZlcnJpZGU7CkBAIC02OSw3ICs3MCw3IEBAIHByaXZhdGU6CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNw
YXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpBcHBs
aWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAg
SW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudCB7IG51bGxwdHIgfTsKKyAgICBQYWdlJiBt
X2luc3BlY3RlZFBhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCmluZGV4IDQxMTkwODk2ODE2OWI3ZjA0ZGMwYTExMWRiMzQ1ZDA2NGJjNWYxODMuLjk0MWUy
NDlhNTcwMDNjNmE5MmYzNjJkNzZjMTcxNjFkMzAxODRiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBA
IC03MSwxMSArNzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCi1JbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQo
V2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQorSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3Rv
ckNhbnZhc0FnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoIkNhbnZhcyJfcywgY29udGV4dCkKICAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDYW52YXNGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0
b3I6OkNhbnZhc0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVj
dGVkU2NyaXB0TWFuYWdlcikKKyAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3Rl
ZFBhZ2UpCiAgICAgLCBtX2NhbnZhc0Rlc3Ryb3llZFRpbWVyKCp0aGlzLCAmSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OmNhbnZhc0Rlc3Ryb3llZFRpbWVyRmlyZWQpCiAgICAgLCBtX2NhbnZhc1JlY29y
ZGluZ1RpbWVyKCp0aGlzLCAmSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmNhbnZhc1JlY29yZGluZ1Rp
bWVyRmlyZWQpCiB7CkBAIC0xMTEsMTMgKzExMiw5IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdl
bnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiAgICAgICAgIGlmICghaXM8RG9jdW1lbnQ+KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IGlmIChhdXRvKiBpbnNwZWN0b3JQYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yUGFnZUFnZW50KCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTY4NDc1PiBXZWIgSW5zcGVjdG9yOiBDb3JyZWN0bHkgZGlzcGxheSBpZnJhbWUn
cyBXZWJTb2NrZXRzCi0gICAgICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgICAgIHJldHVybiBkb2N1bWVu
dC0+cGFnZSgpID09ICZpbnNwZWN0b3JQYWdlQWdlbnQtPnBhZ2UoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5v
cmcvYi8xNjg0NzU+IFdlYiBJbnNwZWN0b3I6IENvcnJlY3RseSBkaXNwbGF5IGlmcmFtZSdzIFdl
YlNvY2tldHMKKyAgICAgICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIHJldHVybiBkb2N1bWVudC0+cGFnZSgpID09
ICZtX2luc3BlY3RlZFBhZ2U7CiAgICAgfTsKIAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAppbmRleCA0Njll
M2VkYzVlNzQ2MmUxOTZmZjhjOWI0ZTI0ODkyM2ZmYzQxYjk4Li41YjI5OWM4OTNiYTFhOTNkMTlm
ZDUwOTk1NDE3OTU0ZmYxMjMwNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC01OSw3ICs1OSw3IEBAIGNs
YXNzIEluc3BlY3RvckNhbnZhc0FnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFz
ZSwgcHVibGljIENhbnZhc09ic2VyCiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9y
Q2FudmFzQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IGV4cGxpY2l0IEluc3BlY3RvckNhbnZhc0FnZW50KFdlYkFnZW50Q29udGV4dCYpOworICAgIGV4
cGxpY2l0IEluc3BlY3RvckNhbnZhc0FnZW50KFBhZ2VBZ2VudENvbnRleHQmKTsKICAgICB2aXJ0
dWFsIH5JbnNwZWN0b3JDYW52YXNBZ2VudCgpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CkBAIC0xMjgsMTIgKzEyOCwxNSBAQCBw
cml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmRE
aXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpD
YW52YXNCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKwogICAgIEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKKyAg
ICBQYWdlJiBtX2luc3BlY3RlZFBhZ2U7CisKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElu
c3BlY3RvckNhbnZhcz4+IG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzOwogICAgIFZlY3Rv
cjxTdHJpbmc+IG1fcmVtb3ZlZENhbnZhc0lkZW50aWZpZXJzOworICAgIE9wdGlvbmFsPHNpemVf
dD4gbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQ7CiAgICAgVGltZXIgbV9jYW52YXNE
ZXN0cm95ZWRUaW1lcjsKICAgICBUaW1lciBtX2NhbnZhc1JlY29yZGluZ1RpbWVyOwotICAgIE9w
dGlvbmFsPHNpemVfdD4gbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQ7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggZjA5NmVh
OWI3ZDdkMmRhZTA3ZmJhNjcxMjE1YTdhNTk4Y2JmMDhmOC4uNjFhOWUxMWJkOThiY2RlZWQzMWJi
ZDc2NDFkMzk2OTI2ZjI3ZDBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtNTQsMTAg
KzU0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKIAotSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQo
V2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQorSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IElu
c3BlY3RvckFnZW50QmFzZSgiRE9NU3RvcmFnZSJfcywgY29udGV4dCkKICAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJvbnRl
bmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERp
c3BhdGNoZXIoSW5zcGVjdG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShj
b250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKKyAgICAsIG1faW5zcGVjdGVkUGFnZShj
b250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CiB9CiAKQEAgLTE3OCwyMiArMTc5LDE1IEBAIFJlZlB0
cjxTdG9yYWdlQXJlYT4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEo
RXJyb3JTdHJpbmcmIGVycm9yCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGF1dG8qIHBhZ2VBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdl
bnQoKTsKLSAgICBBU1NFUlQocGFnZUFnZW50KTsKLSAgICBpZiAoIXBhZ2VBZ2VudCkgewotICAg
ICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIFBhZ2UgYWdlbnQiX3M7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIHRhcmdldEZyYW1lID0gcGFnZUFnZW50LT5maW5kRnJh
bWVXaXRoU2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOworICAgIHRhcmdldEZyYW1lID0g
SW5zcGVjdG9yUGFnZUFnZW50OjpmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4obV9pbnNwZWN0
ZWRQYWdlLCBzZWN1cml0eU9yaWdpbik7CiAgICAgaWYgKCF0YXJnZXRGcmFtZSkgewogICAgICAg
ICBlcnJvclN0cmluZyA9ICJGcmFtZSBub3QgZm91bmQgZm9yIHRoZSBnaXZlbiBzZWN1cml0eSBv
cmlnaW4iX3M7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlmICghaXNM
b2NhbFN0b3JhZ2UpCi0gICAgICAgIHJldHVybiBwYWdlQWdlbnQtPnBhZ2UoKS5zZXNzaW9uU3Rv
cmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS5kYXRhKCkpOwotICAgIHJldHVybiBwYWdlQWdlbnQtPnBhZ2UoKS5zdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIoKS5sb2NhbFN0b3JhZ2VBcmVhKCp0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKSk7
CisgICAgICAgIHJldHVybiBtX2luc3BlY3RlZFBhZ2Uuc2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFn
ZUFyZWEodGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsK
KyAgICByZXR1cm4gbV9pbnNwZWN0ZWRQYWdlLnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxv
Y2FsU3RvcmFnZUFyZWEoKnRhcmdldEZyYW1lLT5kb2N1bWVudCgpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKaW5kZXggNWQ0ZmY2Mzg2Yjg4YWYzMTEx
N2E4NmM0MDUyNDM0YTUwNDJlMjE2OC4uZmFhMWE4MzIzZjJlMGE2OGYxNWQ3YTU5MDk4MTViNTdl
NTAyNzNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBJbnNwZWN0CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQoV2ViQWdlbnRDb250ZXh0Jik7CisgICAgSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwpAQCAtNzYsNiArNzYsOCBAQCBwcml2YXRlOgogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hl
cj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6RE9NU3RvcmFn
ZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworCisgICAgUGFnZSYgbV9p
bnNwZWN0ZWRQYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcAppbmRleCBlNDQ0M2RiYWZlZjA0MWFhMTVkNDQxZGVlNTUxZGM0NzU5OWFjZGM3Li5k
ZDcxNWNiZDhjYTExYjljMWQwODVhNjZiNTQxNmQ5ZjJlOTVhN2QyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcApAQCAtNTE5LDE2ICs1MTksMTQgQEAgcHVibGljOgogCiB9IC8vIG5hbWVzcGFjZQog
Ci1JbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoV2ViQWdl
bnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKK0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudChQYWdlQWdlbnRDb250
ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJJbmRleGVkREIiX3MsIGNv
bnRleHQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2Ny
aXB0TWFuYWdlcikKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpJbmRleGVk
REJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpKQotICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQorICAgICwgbV9pbnNwZWN0ZWRQYWdl
KGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKIH0KIAotSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
On5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgpID0gZGVmYXVsdDsKLQogdm9pZCBJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJv
bnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsKIH0KQEAgLTU5
MCw3ICs1ODgsNyBAQCBzdGF0aWMgYm9vbCBnZXREb2N1bWVudEFuZElEQkZhY3RvcnlGcm9tRnJh
bWVPclNlbmRGYWlsdXJlKEZyYW1lKiBmcmFtZSwgRG9jdW1lbgogICAgIAogdm9pZCBJbnNwZWN0
b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFtZXMoY29uc3QgU3RyaW5nJiBzZWN1
cml0eU9yaWdpbiwgUmVmPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+JiYgY2FsbGJhY2sp
CiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0
eU9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgYXV0byogZnJhbWUgPSBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihtX2luc3BlY3RlZFBhZ2UsIHNlY3Vy
aXR5T3JpZ2luKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQ7CiAgICAgSURCRmFjdG9yeSogaWRi
RmFjdG9yeTsKICAgICBpZiAoIWdldERvY3VtZW50QW5kSURCRmFjdG9yeUZyb21GcmFtZU9yU2Vu
ZEZhaWx1cmUoZnJhbWUsIGRvY3VtZW50LCBpZGJGYWN0b3J5LCBjYWxsYmFjaykpCkBAIC02MTIs
NyArNjEwLDcgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNl
TmFtZXMoY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwKIAogdm9pZCBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlKGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBSZWY8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+
JiYgY2FsbGJhY2spCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFt
ZVdpdGhTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgYXV0byogZnJhbWUgPSBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihtX2luc3BlY3Rl
ZFBhZ2UsIHNlY3VyaXR5T3JpZ2luKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQ7CiAgICAgSURC
RmFjdG9yeSogaWRiRmFjdG9yeTsKICAgICBpZiAoIWdldERvY3VtZW50QW5kSURCRmFjdG9yeUZy
b21GcmFtZU9yU2VuZEZhaWx1cmUoZnJhbWUsIGRvY3VtZW50LCBpZGJGYWN0b3J5LCBjYWxsYmFj
aykpCkBAIC02MjQsNyArNjIyLDcgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVx
dWVzdERhdGFiYXNlKGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnMKIAogdm9pZCBJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0
U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBh
Z2VTaXplLCBjb25zdCBKU09OOjpPYmplY3QqIGtleVJhbmdlLCBSZWY8UmVxdWVzdERhdGFDYWxs
YmFjaz4mJiBjYWxsYmFjaykKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+Zmlu
ZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICBhdXRvKiBmcmFt
ZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKG1faW5z
cGVjdGVkUGFnZSwgc2VjdXJpdHlPcmlnaW4pOwogICAgIERvY3VtZW50KiBkb2N1bWVudDsKICAg
ICBJREJGYWN0b3J5KiBpZGJGYWN0b3J5OwogICAgIGlmICghZ2V0RG9jdW1lbnRBbmRJREJGYWN0
b3J5RnJvbUZyYW1lT3JTZW5kRmFpbHVyZShmcmFtZSwgZG9jdW1lbnQsIGlkYkZhY3RvcnksIGNh
bGxiYWNrKSkKQEAgLTczNSw3ICs3MzMsNyBAQCBwcml2YXRlOgogCiB2b2lkIEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmln
aW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3Jl
TmFtZSwgUmVmPENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKLSAgICBG
cmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKTsKKyAgICBhdXRvKiBmcmFtZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6Zmlu
ZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKG1faW5zcGVjdGVkUGFnZSwgc2VjdXJpdHlPcmlnaW4p
OwogICAgIERvY3VtZW50KiBkb2N1bWVudDsKICAgICBJREJGYWN0b3J5KiBpZGJGYWN0b3J5Owog
ICAgIGlmICghZ2V0RG9jdW1lbnRBbmRJREJGYWN0b3J5RnJvbUZyYW1lT3JTZW5kRmFpbHVyZShm
cmFtZSwgZG9jdW1lbnQsIGlkYkZhY3RvcnksIGNhbGxiYWNrKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApp
bmRleCA0ZjZmMmU5ZDUxYjIxNDFmNTJlMjgzN2Y4OGIyZjhlOTUwODMxZTM5Li40NWZlYjkxNzgx
MDI4MDZmZGMyZjg2YzY3YzI3ZWQ0YzUyZGFmYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCkBAIC00
Myw3ICs0Myw3IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CitjbGFzcyBQYWdlOwogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIApAQCAtNTEsMTMgKzUxLDEzIEBAIGNsYXNzIEluc3Bl
Y3RvckluZGV4ZWREQkFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVi
bGljIEluc3BlY3RvCiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEluc3Bl
Y3RvckluZGV4ZWREQkFnZW50KFdlYkFnZW50Q29udGV4dCYsIEluc3BlY3RvclBhZ2VBZ2VudCop
OwotICAgIHZpcnR1YWwgfkluc3BlY3RvckluZGV4ZWREQkFnZW50KCk7CisgICAgSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQoUGFnZUFnZW50Q29udGV4dCYpOworICAgIHZpcnR1YWwgfkluc3BlY3Rv
ckluZGV4ZWREQkFnZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKLSAgICAvLyBD
YWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgorICAgIC8vIEluZGV4ZWREQkJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcgogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0RGF0
YWJhc2VOYW1lcyhjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBSZWY8UmVxdWVzdERhdGFi
YXNlTmFtZXNDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CkBAIC02OCw3ICs2OCw4IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXImIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAgIEluc3BlY3RvclBhZ2VBZ2VudCog
bV9wYWdlQWdlbnQgeyBudWxscHRyIH07CisKKyAgICBQYWdlJiBtX2luc3BlY3RlZFBhZ2U7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDA1Yjk4Y2VkNjFm
NDcyNTRhM2JkMDAyYWY0NmFjMTAwZTZiZmEzYi4uZGJkZmEzNjZmZjhhZTM3ZDM4ZWJjOTI2YjQw
YzRjZGRiNzRmYTFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMzA5LDExICszMDksMjkgQEAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2Fj
aGVkUmVzb3VyY2VUeXBlSlMKICAgICByZXR1cm4gcmVzb3VyY2VUeXBlSlNPTihpbnNwZWN0b3JS
ZXNvdXJjZVR5cGUoY2FjaGVkUmVzb3VyY2UpKTsKIH0KIAorRnJhbWUqIEluc3BlY3RvclBhZ2VB
Z2VudDo6ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKFBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luUmF3U3RyaW5nKQoreworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2UubWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsK
KyAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLnRvUmF3U3Ry
aW5nKCkgPT0gb3JpZ2luUmF3U3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIGZyYW1lOworICAg
IH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworRG9jdW1lbnRMb2FkZXIqIEluc3BlY3RvclBh
Z2VBZ2VudDo6YXNzZXJ0RG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBG
cmFtZSogZnJhbWUpCit7CisgICAgRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gZnJhbWUtPmxv
YWRlcigpOworICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lTG9hZGVy
LmRvY3VtZW50TG9hZGVyKCk7CisgICAgaWYgKCFkb2N1bWVudExvYWRlcikKKyAgICAgICAgZXJy
b3JTdHJpbmcgPSAiTm8gZG9jdW1lbnRMb2FkZXIgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIl9zOwor
ICAgIHJldHVybiBkb2N1bWVudExvYWRlcjsKK30KKwogSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNw
ZWN0b3JQYWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yQ2xpZW50
KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIlBhZ2UiX3MsIGNvbnRleHQpCiAgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6UGFn
ZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cykpCi0gICAgLCBtX3BhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQorICAgICwgbV9pbnNwZWN0
ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAg
ICAsIG1fb3ZlcmxheShvdmVybGF5KQogewpAQCAtMzM2LDcgKzM1NCw5IEBAIGRvdWJsZSBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnRpbWVzdGFtcCgpCiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpl
bmFibGUoRXJyb3JTdHJpbmcmKQogewotICAgIG1fZW5hYmxlZCA9IHRydWU7CisgICAgaWYgKG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSA9PSB0aGlzKQorICAgICAg
ICByZXR1cm47CisKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yUGFnZUFn
ZW50KHRoaXMpOwogCiAgICAgYXV0byBzdG9wd2F0Y2ggPSBtX2Vudmlyb25tZW50LmV4ZWN1dGlv
blN0b3B3YXRjaCgpOwpAQCAtMzQ0LDE1ICszNjQsMTIgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiAgICAgc3RvcHdhdGNoLT5zdGFydCgpOwogCiAjaWYg
SEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5n
ZShtX3BhZ2UuZGVmYXVsdFVzZURhcmtBcHBlYXJhbmNlKCkpOworICAgIGRlZmF1bHRBcHBlYXJh
bmNlRGlkQ2hhbmdlKG1faW5zcGVjdGVkUGFnZS5kZWZhdWx0VXNlRGFya0FwcGVhcmFuY2UoKSk7
CiAjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJp
bmcmKQogewotICAgIG1fZW5hYmxlZCA9IGZhbHNlOwotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy5zZXRJbnNwZWN0b3JQYWdlQWdlbnQobnVsbHB0cik7Ci0KICAgICBFcnJvclN0cmluZyB1bnVz
ZWQ7CiAgICAgc2V0U2hvd1BhaW50UmVjdHModW51c2VkLCBmYWxzZSk7CiAgICAgc2V0U2hvd1J1
bGVycyh1bnVzZWQsIGZhbHNlKTsKQEAgLTM2MSwxMSArMzc4LDEzIEBAIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBzZXRGb3JjZWRBcHBlYXJhbmNl
KHVudXNlZCwgZW1wdHlTdHJpbmcoKSk7CiAKICNkZWZpbmUgRElTQUJMRV9JTlNQRUNUT1JfT1ZF
UlJJREVfU0VUVElORyhuYW1lKSBcCi0gICAgbV9wYWdlLnNldHRpbmdzKCkuc2V0IyNuYW1lIyNJ
bnNwZWN0b3JPdmVycmlkZShXVEY6Om51bGxvcHQpOworICAgIG1faW5zcGVjdGVkUGFnZS5zZXR0
aW5ncygpLnNldCMjbmFtZSMjSW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKIAogICAg
IEZPUl9FQUNIX0lOU1BFQ1RPUl9PVkVSUklERV9TRVRUSU5HKERJU0FCTEVfSU5TUEVDVE9SX09W
RVJSSURFX1NFVFRJTkcpCiAKICN1bmRlZiBESVNBQkxFX0lOU1BFQ1RPUl9PVkVSUklERV9TRVRU
SU5HCisKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yUGFnZUFnZW50KG51
bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKEVycm9yU3RyaW5n
JiwgY29uc3QgYm9vbCogb3B0aW9uYWxSZWxvYWRGcm9tT3JpZ2luLCBjb25zdCBib29sKiBvcHRp
b25hbFJldmFsaWRhdGVBbGxSZXNvdXJjZXMpCkBAIC0zNzksMTMgKzM5OCwxMyBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogb3B0aW9u
YWxSZWxvYWRGcm9tT3JpZwogICAgIGlmICghcmV2YWxpZGF0ZUFsbFJlc291cmNlcykKICAgICAg
ICAgcmVsb2FkT3B0aW9ucy5hZGQoUmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAKLSAgICBt
X3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOworICAgIG1f
aW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5yZWxvYWQocmVsb2FkT3B0aW9ucyk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpuYXZpZ2F0ZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgdXJsKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvciB7
IFByb2Nlc3NpbmdVc2VyR2VzdHVyZSB9OwotICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS5tYWlu
RnJhbWUoKTsKKyAgICBGcmFtZSYgZnJhbWUgPSBtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCk7
CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsgZnJhbWUuZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwodXJsKSB9OwogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVx
dWVzdCB7ICpmcmFtZS5kb2N1bWVudCgpLCBmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLCByZXNvdXJjZVJlcXVlc3QsICJfc2VsZiJfcywgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFj
a0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTDo6Tm8sIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtu
b3duIH07CkBAIC00MTQsOSArNDMzLDkgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om92ZXJy
aWRlU2V0dGluZyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICNkZWZp
bmUgQ0FTRV9JTlNQRUNUT1JfT1ZFUlJJREVfU0VUVElORyhuYW1lKSBcCiAgICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZXR0aW5nOjpuYW1lOiB7IFwKICAgICAgICAgaWYgKHZh
bHVlKSBcCi0gICAgICAgICAgICBtX3BhZ2Uuc2V0dGluZ3MoKS5zZXQjI25hbWUjI0luc3BlY3Rv
ck92ZXJyaWRlKCp2YWx1ZSk7IFwKKyAgICAgICAgICAgIG1faW5zcGVjdGVkUGFnZS5zZXR0aW5n
cygpLnNldCMjbmFtZSMjSW5zcGVjdG9yT3ZlcnJpZGUoKnZhbHVlKTsgXAogICAgICAgICBlbHNl
IFwKLSAgICAgICAgICAgIG1fcGFnZS5zZXR0aW5ncygpLnNldCMjbmFtZSMjSW5zcGVjdG9yT3Zl
cnJpZGUoV1RGOjpudWxsb3B0KTsgXAorICAgICAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLnNldHRp
bmdzKCkuc2V0IyNuYW1lIyNJbnNwZWN0b3JPdmVycmlkZShXVEY6Om51bGxvcHQpOyBcCiAgICAg
ICAgIHJldHVybjsgXAogICAgIH0gXAogCkBAIC00OTMsNyArNTEyLDcgQEAgdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3IKICAgICAvLyBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHRydWUvZmFsc2UgdmFs
dWUuCiAgICAgYm9vbCByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBmYWxzZTsKIAotICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9pbnNwZWN0ZWRQ
YWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwog
ICAgICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKQogICAgICAgICAgICAg
Y29udGludWU7CkBAIC01MjQsNyArNTQzLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6Omdl
dENvb2tpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3IKIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkZWxldGVDb29raWUoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIFVSTCBwYXJzZWRV
UkwoeyB9LCB1cmwpOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS5tYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gJm1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoYXV0byog
ZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBh
Z2UgPSBkb2N1bWVudC0+cGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmNvb2tpZUphcigp
LmRlbGV0ZUNvb2tpZSgqZG9jdW1lbnQsIHBhcnNlZFVSTCwgY29va2llTmFtZSk7CkBAIC01MzQs
NyArNTUzLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0ZUNvb2tpZShFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY28KIAogdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmdldFJlc291cmNlVHJlZShFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4mIG9iamVjdCkKIHsKLSAgICBvYmplY3Qg
PSBidWlsZE9iamVjdEZvckZyYW1lVHJlZSgmbV9wYWdlLm1haW5GcmFtZSgpKTsKKyAgICBvYmpl
Y3QgPSBidWlsZE9iamVjdEZvckZyYW1lVHJlZSgmbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgp
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlQ29udGVudChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5n
JiB1cmwsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCkKQEAgLTYwNyw3ICs2
MjYsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbgogICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9
IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENhc2VTZW5zaXRpdmUgOiBmYWxzZTsK
ICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4ID0gQ29udGVudFNlYXJjaFV0
aWxpdGllczo6Y3JlYXRlU2VhcmNoUmVnZXgodGV4dCwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCk7
CiAKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9ICZtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiBjYWNoZWRSZXNv
dXJjZSA6IGNhY2hlZFJlc291cmNlc0ZvckZyYW1lKGZyYW1lKSkgewogICAgICAgICAgICAgaWYg
KGF1dG8gdGV4dENvbnRlbnQgPSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnRleHRDb250ZW50Rm9y
Q2FjaGVkUmVzb3VyY2UoKmNhY2hlZFJlc291cmNlKSkgewogICAgICAgICAgICAgICAgIGludCBt
YXRjaGVzQ291bnQgPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpjb3VudFJlZ3VsYXJFeHByZXNz
aW9uTWF0Y2hlcyhyZWdleCwgKnRleHRDb250ZW50KTsKQEAgLTY2MiwxMSArNjgxLDYgQEAgdm9p
ZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lRGV0YWNoZWQoRnJhbWUmIGZyYW1lKQogICAgIG1f
aWRlbnRpZmllclRvRnJhbWUucmVtb3ZlKGlkZW50aWZpZXIpOwogfQogCi1GcmFtZSYgSW5zcGVj
dG9yUGFnZUFnZW50OjptYWluRnJhbWUoKQotewotICAgIHJldHVybiBtX3BhZ2UubWFpbkZyYW1l
KCk7Ci19Ci0KIEZyYW1lKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lRm9ySWQoY29uc3QgU3Ry
aW5nJiBmcmFtZUlkKQogewogICAgIHJldHVybiBmcmFtZUlkLmlzRW1wdHkoKSA/IG51bGxwdHIg
OiBtX2lkZW50aWZpZXJUb0ZyYW1lLmdldChmcmFtZUlkKTsKQEAgLTY4MywxMSArNjk3LDYgQEAg
U3RyaW5nIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVJZChGcmFtZSogZnJhbWUpCiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6aGFzSWRGb3JG
cmFtZShGcmFtZSogZnJhbWUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1lICYmIG1fZnJhbWVU
b0lkZW50aWZpZXIuY29udGFpbnMoZnJhbWUpOwotfQotCiBTdHJpbmcgSW5zcGVjdG9yUGFnZUFn
ZW50Ojpsb2FkZXJJZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIGlmICghbG9hZGVy
KQpAQCAtNjk3LDE1ICs3MDYsNiBAQCBTdHJpbmcgSW5zcGVjdG9yUGFnZUFnZW50Ojpsb2FkZXJJ
ZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAot
RnJhbWUqIEluc3BlY3RvclBhZ2VBZ2VudDo6ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGNv
bnN0IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5nKQotewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
Jm1fcGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkgewotICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCkudG9SYXdTdHJpbmcoKSA9PSBvcmlnaW5SYXdTdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4g
ZnJhbWU7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCiBGcmFtZSogSW5zcGVjdG9y
UGFnZUFnZW50Ojphc3NlcnRGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVJZCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBmcmFtZUZvcklkKGZyYW1lSWQp
OwpAQCAtNzE0LDE1ICs3MTQsNiBAQCBGcmFtZSogSW5zcGVjdG9yUGFnZUFnZW50Ojphc3NlcnRG
cmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZgogICAgIHJldHVy
biBmcmFtZTsKIH0KIAotRG9jdW1lbnRMb2FkZXIqIEluc3BlY3RvclBhZ2VBZ2VudDo6YXNzZXJ0
RG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBGcmFtZSogZnJhbWUpCi17
Ci0gICAgRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwotICAgIERv
Y3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVy
KCk7Ci0gICAgaWYgKCFkb2N1bWVudExvYWRlcikKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8g
ZG9jdW1lbnRMb2FkZXIgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIl9zOwotICAgIHJldHVybiBkb2N1
bWVudExvYWRlcjsKLX0KLQogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmxvYWRlckRldGFjaGVk
RnJvbUZyYW1lKERvY3VtZW50TG9hZGVyJiBsb2FkZXIpCiB7CiAgICAgbV9sb2FkZXJUb0lkZW50
aWZpZXIucmVtb3ZlKCZsb2FkZXIpOwpAQCAtNzU1LDcgKzc0Niw3IEBAIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZShib29sIHVzZURhcmtBcHBlYXJh
bmNlKQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCB8
fCAhbV9zaG93UGFpbnRSZWN0cykKKyAgICBpZiAoIW1fc2hvd1BhaW50UmVjdHMpCiAgICAgICAg
IHJldHVybjsKIAogICAgIExheW91dFJlY3QgYWJzb2x1dGVSZWN0ID0gTGF5b3V0UmVjdChyZW5k
ZXJlci5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChyZWN0KSkuYm91bmRpbmdCb3goKSk7
CkBAIC03ODEsMjIgKzc3MiwxNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkTGF5b3V0
KCkKICAgICBpZiAoaXNGaXJzdExheW91dCkKICAgICAgICAgbV9pc0ZpcnN0TGF5b3V0QWZ0ZXJP
bkxvYWQgPSBmYWxzZTsKIAotICAgIGlmICghbV9lbmFibGVkKQotICAgICAgICByZXR1cm47Ci0K
ICAgICBtX292ZXJsYXktPnVwZGF0ZSgpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
ZGlkU2Nyb2xsKCkKIHsKLSAgICBpZiAobV9lbmFibGVkKQotICAgICAgICBtX292ZXJsYXktPnVw
ZGF0ZSgpOworICAgIG1fb3ZlcmxheS0+dXBkYXRlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkaWRSZWNhbGN1bGF0ZVN0eWxlKCkKIHsKLSAgICBpZiAobV9lbmFibGVkKQotICAg
ICAgICBtX292ZXJsYXktPnVwZGF0ZSgpOworICAgIG1fb3ZlcmxheS0+dXBkYXRlKCk7CiB9CiAK
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZT4gSW5zcGVjdG9yUGFnZUFnZW50
OjpidWlsZE9iamVjdEZvckZyYW1lKEZyYW1lKiBmcmFtZSkKQEAgLTg3MCw5ICs4NTYsOSBAQCB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRpYShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgbWVkaWEpCiAKICAgICBtX2VtdWxhdGVkTWVkaWEgPSBtZWRpYTsKIAotICAg
IG1fcGFnZS51cGRhdGVTdHlsZUFmdGVyQ2hhbmdlSW5FbnZpcm9ubWVudCgpOworICAgIG1faW5z
cGVjdGVkUGFnZS51cGRhdGVTdHlsZUFmdGVyQ2hhbmdlSW5FbnZpcm9ubWVudCgpOwogCi0gICAg
aWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAg
aWYgKGF1dG8qIGRvY3VtZW50ID0gbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50
KCkpCiAgICAgICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKIH0KIApAQCAtODg0LDExICs4
NzAsMTEgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEZvcmNlZEFwcGVhcmFuY2UoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGFwcGVhcmEKICAgICBtX2ZvcmNlZEFwcGVhcmFuY2Ug
PSBhcHBlYXJhbmNlOwogCiAgICAgaWYgKGFwcGVhcmFuY2UgPT0gIkxpZ2h0Il9zKQotICAgICAg
ICBtX3BhZ2Uuc2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZShmYWxzZSk7CisgICAgICAgIG1f
aW5zcGVjdGVkUGFnZS5zZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKGZhbHNlKTsKICAgICBl
bHNlIGlmIChhcHBlYXJhbmNlID09ICJEYXJrIl9zKQotICAgICAgICBtX3BhZ2Uuc2V0VXNlRGFy
a0FwcGVhcmFuY2VPdmVycmlkZSh0cnVlKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLnNldFVz
ZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUodHJ1ZSk7CiAgICAgZWxzZQotICAgICAgICBtX3BhZ2Uu
c2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZShXVEY6Om51bGxvcHQpOworICAgICAgICBtX2lu
c3BlY3RlZFBhZ2Uuc2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZShXVEY6Om51bGxvcHQpOwog
fQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YXBwbHlVc2VyQWdlbnRPdmVycmlkZShTdHJp
bmcmIHVzZXJBZ2VudCkKQEAgLTkwNSwyNiArODkxLDI0IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjphcHBseUVtdWxhdGVkTWVkaWEoU3RyaW5nJiBtZWRpYSkKIAogdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcmLCBib29s
KiBvdXRQYXJhbSkKIHsKLSAgICAqb3V0UGFyYW0gPSBtX3BhZ2Uuc2V0dGluZ3MoKS5zaG93RGVi
dWdCb3JkZXJzKCkgfHwgbV9wYWdlLnNldHRpbmdzKCkuc2hvd1JlcGFpbnRDb3VudGVyKCk7Cisg
ICAgKm91dFBhcmFtID0gbV9pbnNwZWN0ZWRQYWdlLnNldHRpbmdzKCkuc2hvd0RlYnVnQm9yZGVy
cygpIHx8IG1faW5zcGVjdGVkUGFnZS5zZXR0aW5ncygpLnNob3dSZXBhaW50Q291bnRlcigpOwog
fQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJs
ZShFcnJvclN0cmluZyYsIGJvb2wgdmlzaWJsZSkKIHsKLSAgICBtX3BhZ2Uuc2V0dGluZ3MoKS5z
ZXRTaG93RGVidWdCb3JkZXJzKHZpc2libGUpOwotICAgIG1fcGFnZS5zZXR0aW5ncygpLnNldFNo
b3dSZXBhaW50Q291bnRlcih2aXNpYmxlKTsKKyAgICBtX2luc3BlY3RlZFBhZ2Uuc2V0dGluZ3Mo
KS5zZXRTaG93RGVidWdCb3JkZXJzKHZpc2libGUpOworICAgIG1faW5zcGVjdGVkUGFnZS5zZXR0
aW5ncygpLnNldFNob3dSZXBhaW50Q291bnRlcih2aXNpYmxlKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNuYXBzaG90Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBu
b2RlSWQsIFN0cmluZyogb3V0RGF0YVVSTCkKIHsKLSAgICBGcmFtZSYgZnJhbWUgPSBtYWluRnJh
bWUoKTsKLQogICAgIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOwogICAgIEFTU0VSVChkb21BZ2VudCk7CiAgICAg
Tm9kZSogbm9kZSA9IGRvbUFnZW50LT5hc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwog
ICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBzbmFwc2hvdCA9IFdlYkNvcmU6OnNuYXBzaG90Tm9kZShmcmFtZSwgKm5vZGUp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBXZWJDb3JlOjpz
bmFwc2hvdE5vZGUobV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpLCAqbm9kZSk7CiAgICAgaWYg
KCFzbmFwc2hvdCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgY2FwdHVyZSBz
bmFwc2hvdCJfczsKICAgICAgICAgcmV0dXJuOwpAQCAtOTM1LDE0ICs5MTksMTIgQEAgdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnNuYXBzaG90Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGludCBub2RlSWQsIFN0cmkKIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNuYXBzaG90UmVj
dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCBjb25zdCBTdHJpbmcmIGNvb3JkaW5hdGVTeXN0ZW0sIFN0cmluZyogb3V0RGF0YVVS
TCkKIHsKLSAgICBGcmFtZSYgZnJhbWUgPSBtYWluRnJhbWUoKTsKLQogICAgIFNuYXBzaG90T3B0
aW9ucyBvcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZTsKICAgICBpZiAoY29vcmRpbmF0ZVN5
c3RlbSA9PSAiVmlld3BvcnQiKQogICAgICAgICBvcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc0lu
Vmlld0Nvb3JkaW5hdGVzOwogCiAgICAgSW50UmVjdCByZWN0YW5nbGUoeCwgeSwgd2lkdGgsIGhl
aWdodCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdCA9IHNuYXBz
aG90RnJhbWVSZWN0KGZyYW1lLCByZWN0YW5nbGUsIG9wdGlvbnMpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdEZyYW1lUmVjdChtX2luc3BlY3Rl
ZFBhZ2UubWFpbkZyYW1lKCksIHJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICBpZiAoIXNuYXBz
aG90KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBjYXB0dXJlIHNuYXBzaG90
Il9zOwpAQCAtOTU1LDggKzkzNyw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hv
dFJlY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgeCwgaW50IHksIGluCiB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFN0cmlu
ZyogZGF0YSkKIHsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpICYmIFVTRShDRikKLSAgICBGcmFt
ZSYgZnJhbWUgPSBtYWluRnJhbWUoKTsKLSAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoZnJhbWUpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkg
ewogICAgICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgY3JlYXRlIHdlYiBhcmNoaXZlIGZv
ciBtYWluIGZyYW1lIl9zOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBjMzdiNGRkZGIz
MDQ1NDdiZWFhZDA2ZjU5MThhODA3N2QwMzFhOWM3Li4wZmY0NTc4YjRlMGY2NDZhNGI0MmE1ZTQ2
NDZmZjQ5NTdhYzVhZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTc5LDEyICs3OSwxMyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hlZFJlc291cmNlc0ZvckZyYW1l
KEZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiwg
RnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7
CiAgICAgc3RhdGljIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSopOwotCiAgICAgc3RhdGljIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZShGcmFtZSos
IGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNv
dXJjZVR5cGUgcmVzb3VyY2VUeXBlSlNPTihSZXNvdXJjZVR5cGUpOwogICAgIHN0YXRpYyBSZXNv
dXJjZVR5cGUgaW5zcGVjdG9yUmVzb3VyY2VUeXBlKENhY2hlZFJlc291cmNlOjpUeXBlKTsKICAg
ICBzdGF0aWMgUmVzb3VyY2VUeXBlIGluc3BlY3RvclJlc291cmNlVHlwZShjb25zdCBDYWNoZWRS
ZXNvdXJjZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJj
ZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlSlNPTihjb25zdCBDYWNoZWRSZXNvdXJjZSYpOworICAg
IHN0YXRpYyBGcmFtZSogZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKFBhZ2UmLCBjb25zdCBT
dHJpbmcmIG9yaWdpblJhd1N0cmluZyk7CisgICAgc3RhdGljIERvY3VtZW50TG9hZGVyKiBhc3Nl
cnREb2N1bWVudExvYWRlcihFcnJvclN0cmluZyYsIEZyYW1lKik7CiAKICAgICAvLyBQYWdlIEFQ
SSBmb3IgSW5zcGVjdG9yRnJvbnRlbmQKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIGZp
bmFsOwpAQCAtMTMyLDE1ICsxMzMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBmaW5hbDsKIAog
ICAgIC8vIENyb3NzLWFnZW50cyBBUEkKLSAgICBQYWdlJiBwYWdlKCkgeyByZXR1cm4gbV9wYWdl
OyB9Ci0gICAgRnJhbWUmIG1haW5GcmFtZSgpOwogICAgIEZyYW1lKiBmcmFtZUZvcklkKGNvbnN0
IFN0cmluZyYgZnJhbWVJZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZyYW1lSWQoRnJh
bWUqKTsKLSAgICBib29sIGhhc0lkRm9yRnJhbWUoRnJhbWUqKSBjb25zdDsKICAgICBTdHJpbmcg
bG9hZGVySWQoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICBGcmFtZSogZmluZEZyYW1lV2l0aFNlY3Vy
aXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5nKTsKICAgICBGcmFtZSogYXNz
ZXJ0RnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpOwotICAgIHN0YXRp
YyBEb2N1bWVudExvYWRlciogYXNzZXJ0RG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcmLCBGcmFt
ZSopOwogCiBwcml2YXRlOgogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKQEAgLTE1NCwxOSArMTUw
LDE4IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6UGFnZUZyb250
ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogCi0gICAgUGFn
ZSYgbV9wYWdlOworICAgIFBhZ2UmIG1faW5zcGVjdGVkUGFnZTsKICAgICBJbnNwZWN0b3JDbGll
bnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3Zlcmxh
eSB7IG51bGxwdHIgfTsKIAogICAgIEhhc2hNYXA8RnJhbWUqLCBTdHJpbmc+IG1fZnJhbWVUb0lk
ZW50aWZpZXI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIEZyYW1lKj4gbV9pZGVudGlmaWVyVG9GcmFt
ZTsKICAgICBIYXNoTWFwPERvY3VtZW50TG9hZGVyKiwgU3RyaW5nPiBtX2xvYWRlclRvSWRlbnRp
ZmllcjsKLSAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzRmlyc3RM
YXlvdXRBZnRlck9uTG9hZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3Nob3dQYWludFJlY3RzIHsg
ZmFsc2UgfTsKICAgICBTdHJpbmcgbV91c2VyQWdlbnRPdmVycmlkZTsKICAgICBTdHJpbmcgbV9l
bXVsYXRlZE1lZGlhOwogICAgIFN0cmluZyBtX2ZvcmNlZEFwcGVhcmFuY2U7CisgICAgYm9vbCBt
X2lzRmlyc3RMYXlvdXRBZnRlck9uTG9hZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3dQYWlu
dFJlY3RzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IDZlMjRkMDI0MzMyMTk4MTZlZDYyNmYwMGNkZGUxNjI3ZGRhNDAzMjIu
LmNmZjNkMjNjN2UyYjMzZDE2MTBmMmU4MmFmYzVhMWExN2NlYjdmMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFn
ZW50LmNwcApAQCAtNTYsMTAgKzU2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCi1QYWdlRGVidWdnZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdl
bnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQpCitQYWdlRGVidWdnZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdlbnQoUGFnZUFnZW50Q29udGV4
dCYgY29udGV4dCkKICAgICA6IFdlYkRlYnVnZ2VyQWdlbnQoY29udGV4dCkKLSAgICAsIG1fcGFn
ZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCi0gICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCisg
ICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewogfQogCkBAIC04
MSw3ICs4MCw3IEBAIFN0cmluZyBQYWdlRGVidWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9yU2Ny
aXB0KGNvbnN0IFNjcmlwdCYgc2NyaXB0KQogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkKE1BS0VfU1RBVElDX1NUUklOR19JTVBM
KCJYLVNvdXJjZU1hcCIpKTsKIAogICAgIGlmICghc2NyaXB0LnVybC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbV9wYWdlQWdlbnQtPmNhY2hlZFJlc291
cmNlKCZtX3BhZ2UubWFpbkZyYW1lKCksIFVSTCh7IH0sIHNjcmlwdC51cmwpKTsKKyAgICAgICAg
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNv
dXJjZSgmbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpLCBVUkwoeyB9LCBzY3JpcHQudXJsKSk7
CiAgICAgICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICAgICAgU3RyaW5nIHNvdXJjZU1hcEhl
YWRlciA9IHJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChzb3VyY2VNYXBIVFRQ
SGVhZGVyKTsKICAgICAgICAgICAgIGlmICghc291cmNlTWFwSGVhZGVyLmlzRW1wdHkoKSkKQEAg
LTExNiwxMyArMTE1LDEzIEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OnVubXV0ZUNvbnNvbGUo
KQogCiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZUFnZW50
LT5wYWdlKCkuY29uc29sZSgpLmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soJnN0YXRlKSk7CisgICAg
bV9pbnNwZWN0ZWRQYWdlLmNvbnNvbGUoKS5hZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSkp
OwogfQogCiBJbmplY3RlZFNjcmlwdCBQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgaW50KiBleGVjdXRpb25Db250
ZXh0SWQpCiB7CiAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0SWQpIHsKLSAgICAgICAgSlNDOjpF
eGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKCZtX3BhZ2VBZ2VudC0+
bWFpbkZyYW1lKCkpOworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBtYWlu
V29ybGRFeGVjU3RhdGUoJm1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSk7CiAgICAgICAgIHJl
dHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0
ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oCmluZGV4IGU4MTIyYTlmMzMyMDYxNzZiNzA4NWRj
N2JiNDIwMjgxMWNmNTdmNTAuLmEyYWNjMmRmMDBhYTIyZWZjNTk4ZjBkMjQzYTg0OTc4OTUzMmZl
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlRGVidWdnZXJBZ2VudC5oCkBAIC0zOCw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRXZlbnRMaXN0ZW5lcjsKIGNsYXNzIEV2ZW50VGFy
Z2V0OwotY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyOwogY2xhc3MgVGltZXJCYXNlOwpAQCAtNDcsNyArNDYsNyBAQCBj
bGFzcyBQYWdlRGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJEZWJ1Z2dlckFnZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUGFnZURlYnVnZ2VyQWdlbnQoUGFnZUFn
ZW50Q29udGV4dCYsIEluc3BlY3RvclBhZ2VBZ2VudCopOworICAgIFBhZ2VEZWJ1Z2dlckFnZW50
KFBhZ2VBZ2VudENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5QYWdlRGVidWdnZXJBZ2VudCgpID0g
ZGVmYXVsdDsKIAogICAgIHZvaWQgZGlkQ2xlYXJNYWluRnJhbWVXaW5kb3dPYmplY3QoKTsKQEAg
LTg1LDkgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25D
b250ZXh0SWQpIG92ZXJyaWRlOwogCi0gICAgUGFnZSYgbV9wYWdlOwotCi0gICAgSW5zcGVjdG9y
UGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKKyAgICBQYWdlJiBtX2luc3BlY3RlZFBhZ2U7CiAKICAg
ICBIYXNoTWFwPGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKiwgaW50PiBtX3JlZ2lzdGVy
ZWRFdmVudExpc3RlbmVyczsKICAgICBIYXNoTWFwPGNvbnN0IFRpbWVyQmFzZSosIGludD4gbV9w
b3N0TWVzc2FnZVRpbWVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcAppbmRleCBjNWQ5MjZhMGIxNTVmMDZk
OTc2ZjhjMmMwNmVhYzA0YTU5M2QyMGU0Li41YzE3MzFmNjQyN2I0ZmVjZDJkYzA0OTkyNzNmMDU4
ODk1ODJiYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCkBAIC0zOCwyMyArMzgsMjggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1QYWdlTmV0d29y
a0FnZW50OjpQYWdlTmV0d29ya0FnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3Bl
Y3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQorUGFnZU5ldHdvcmtBZ2VudDo6UGFnZU5ldHdvcmtB
Z2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yTmV0d29ya0Fn
ZW50KGNvbnRleHQpCi0gICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCisgICAgLCBtX2luc3Bl
Y3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewotICAgIEFTU0VSVChtX3BhZ2VBZ2Vu
dCk7CiB9CiAKIFN0cmluZyBQYWdlTmV0d29ya0FnZW50Ojpsb2FkZXJJZGVudGlmaWVyKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgcmV0dXJuIG1fcGFnZUFnZW50LT5sb2FkZXJJZChs
b2FkZXIpOworICAgIGlmIChsb2FkZXIpIHsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2VBZ2VudCA9
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICAgICAgICAg
IHJldHVybiBwYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlcik7CisgICAgfQorICAgIHJldHVybiB7
IH07CiB9CiAKIFN0cmluZyBQYWdlTmV0d29ya0FnZW50OjpmcmFtZUlkZW50aWZpZXIoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKIHsKLSAgICBpZiAoIWxvYWRlcikKLSAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICByZXR1cm4gbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKTsKKyAg
ICBpZiAobG9hZGVyKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgICAgICAgICByZXR1cm4gcGFn
ZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSk7CisgICAgfQorICAgIHJldHVybiB7IH07
CiB9CiAKIFZlY3RvcjxXZWJTb2NrZXQqPiBQYWdlTmV0d29ya0FnZW50OjphY3RpdmVXZWJTb2Nr
ZXRzKGNvbnN0IExvY2tIb2xkZXImIGxvY2spCkBAIC03Nyw3ICs4Miw3IEBAIFZlY3RvcjxXZWJT
b2NrZXQqPiBQYWdlTmV0d29ya0FnZW50OjphY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xk
ZXImIGxvY2spCiAKICAgICAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjg0
NzU+IFdlYiBJbnNwZWN0b3I6IENvcnJlY3RseSBkaXNwbGF5IGlmcmFtZSdzIFdlYlNvY2tldHMK
ICAgICAgICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4od2ViU29ja2V0LT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgICAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKSAh
PSAmbV9wYWdlQWdlbnQtPnBhZ2UoKSkKKyAgICAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkgIT0g
Jm1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHdlYlNv
Y2tldHMuYXBwZW5kKHdlYlNvY2tldCk7CkBAIC04OCwxMiArOTMsMTggQEAgVmVjdG9yPFdlYlNv
Y2tldCo+IFBhZ2VOZXR3b3JrQWdlbnQ6OmFjdGl2ZVdlYlNvY2tldHMoY29uc3QgTG9ja0hvbGRl
ciYgbG9jaykKIAogdm9pZCBQYWdlTmV0d29ya0FnZW50OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNh
YmxlZChib29sIGRpc2FibGVkKQogewotICAgIG1fcGFnZUFnZW50LT5wYWdlKCkuc2V0UmVzb3Vy
Y2VDYWNoaW5nRGlzYWJsZWRPdmVycmlkZShkaXNhYmxlZCk7CisgICAgbV9pbnNwZWN0ZWRQYWdl
LnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkT3ZlcnJpZGUoZGlzYWJsZWQpOwogfQogCiBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBQYWdlTmV0d29ya0FnZW50OjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkKQogewot
ICAgIGF1dG8qIGZyYW1lID0gbV9wYWdlQWdlbnQtPmFzc2VydEZyYW1lKGVycm9yU3RyaW5nLCBm
cmFtZUlkKTsKKyAgICBhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yUGFnZUFnZW50KCk7CisgICAgaWYgKCFwYWdlQWdlbnQpIHsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiTWlzc2luZyBQYWdlIGFnZW50Il9zOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBhdXRvKiBmcmFtZSA9IHBhZ2VBZ2VudC0+YXNzZXJ0RnJhbWUoZXJyb3JT
dHJpbmcsIGZyYW1lSWQpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZU5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VOZXR3b3JrQWdlbnQuaAppbmRleCBmZTBlYmViMzRiNGU1OTFiNDA0OWJjNzQzN2M3YjlmZjhh
ODNhNDI0Li41YTE5ZDlhYWQzMTZkOGE0OWY4ZGU2NmM2ODAyOWE0ZGRiNGI4M2FiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29y
a0FnZW50LmgKQEAgLTI5LDExICsyOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFBhZ2U7CisKIGNsYXNzIFBhZ2VOZXR3b3JrQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVj
dG9yTmV0d29ya0FnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlTmV0d29ya0Fn
ZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdlTmV0
d29ya0FnZW50KFBhZ2VBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKKyAgICBQ
YWdlTmV0d29ya0FnZW50KFBhZ2VBZ2VudENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5QYWdlTmV0
d29ya0FnZW50KCkgPSBkZWZhdWx0OwogCiBwcml2YXRlOgpAQCAtNDQsNyArNDYsNyBAQCBwcml2
YXRlOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpIGZpbmFsOwogICAgIGJvb2wgc2hv
dWxkRm9yY2VCdWZmZXJpbmdOZXR3b3JrUmVzb3VyY2VEYXRhKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KIAotICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQgeyBudWxs
cHRyIH07CisgICAgUGFnZSYgbV9pbnNwZWN0ZWRQYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>