<?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>138331</bug_id>
          
          <creation_ts>2014-11-03 15:59:28 -0800</creation_ts>
          <short_desc>Allow implicit conversion from Ref&lt;T&gt; to T&amp;</short_desc>
          <delta_ts>2014-11-03 23:22:18 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1045882</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-03 15:59:28 -0800</bug_when>
    <thetext>Allow implicit conversion from Ref&lt;T&gt; to T&amp; to reduce the amount of Ref&lt;&gt;::get() calls in the code and increase readability. Unlike for RefPtr, doing this for Ref should not be error prone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045885</commentid>
    <comment_count>1</comment_count>
      <attachid>240880</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-03 16:09:12 -0800</bug_when>
    <thetext>Created attachment 240880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045936</commentid>
    <comment_count>2</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-11-03 18:28:45 -0800</bug_when>
    <thetext>I kinda like this. Paging Darin for 2nd opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045949</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-03 18:43:56 -0800</bug_when>
    <thetext>I like it too. Unless we have to get rid of Ref completely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045992</commentid>
    <comment_count>4</comment_count>
      <attachid>240910</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-03 21:23:42 -0800</bug_when>
    <thetext>Created attachment 240910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046002</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-11-03 22:42:38 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I like it too. Unless we have to get rid of Ref completely.

We do? Let&apos;s find time to discuss that in person at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046003</commentid>
    <comment_count>6</comment_count>
      <attachid>240910</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-11-03 22:42:51 -0800</bug_when>
    <thetext>Comment on attachment 240910
Patch

r=me on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046005</commentid>
    <comment_count>7</comment_count>
      <attachid>240910</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-03 23:22:13 -0800</bug_when>
    <thetext>Comment on attachment 240910
Patch

Clearing flags on attachment: 240910

Committed r175513: &lt;http://trac.webkit.org/changeset/175513&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046006</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-03 23:22:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240880</attachid>
            <date>2014-11-03 16:09:12 -0800</date>
            <delta_ts>2014-11-03 21:23:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138331-20141103160922.patch</filename>
            <type>text/plain</type>
            <size>37966</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5NjE4MGM5MjQ1ZTk4YmEzODMzNGYy
MWNkNzI0M2QzNWNmOGMyM2EuLmQyMDNmOGM1YjBjZDg5NzdjZDgxNGE0OTMxNzAyZmFhYTBlYmVm
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTQtMTEtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gUmVm
PFQ+IHRvIFQmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzgzMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBbGxvdyBpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gUmVmPFQ+IHRvIFQmIHRvIHJlZHVjZSB0
aGUgYW1vdW50IG9mCisgICAgICAgIFJlZjw+OjpnZXQoKSBjYWxscyBpbiB0aGUgY29kZSBhbmQg
aW5jcmVhc2UgcmVhZGFiaWxpdHkuIFVubGlrZSBmb3IKKyAgICAgICAgUmVmUHRyLCBkb2luZyB0
aGlzIGZvciBSZWYgc2hvdWxkIG5vdCBiZSBlcnJvciBwcm9uZS4KKworICAgICAgICAqIHd0Zi9S
ZWYuaDoKKyAgICAgICAgKFdURjo6UmVmOjpvcGVyYXRvciBUJik6CisgICAgICAgIChXVEY6OlJl
Zjo6b3BlcmF0b3IgY29uc3QgVCYpOgorICAgICAgICAqIHd0Zi9SdW5Mb29wLmNwcDoKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6SG9sZGVyOjpydW5Mb29wKToKKwogMjAxNC0xMC0zMSAgSmVmZnJl
eSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBBU2Fu
IGJ1aWxkIGFmdGVyIHIxNzUzODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NDQ0MDI4MGVkMjE1ODEyMDBlYzI5
Zjk1NDRmYWMzMzkyZTUxNzUyLi4yODQwOTIwNTgzYzBlNmEwZDlmZDRjZWU5Mjk4OGQyYWRlOGNi
YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTQtMTEtMDMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBBbGxvdyBpbXBsaWNpdCBjb252ZXJzaW9u
IGZyb20gUmVmPFQ+IHRvIFQmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzgzMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgY2FsbHMgdG8gUmVmPFQ+OjpnZXQoKSBub3cg
dGhhdCBhIFJlZjxUPiBjYW4gYmUKKyAgICAgICAgY29udmVydGVkIGltcGxpY2l0bHkgdG8gYSBU
Ji4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworMjAxNC0x
MS0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN1cHBvcnQg
bW9kZXJuIHJhbmdlIGxvb3BzIG92ZXIgQ1NTVmFsdWVMaXN0CiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgyODUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDMyNjUz
ZjI0YjQ5NWNkODQ4OGYyMjdmYzA5N2Q0NzExMjJmYjc0YTYuLmYyY2NkNGJlYWQyNTEwNjZlZGVk
ODE4N2M1MTJiODg0YmE1ZTgyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0x
MS0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGlt
cGxpY2l0IGNvbnZlcnNpb24gZnJvbSBSZWY8VD4gdG8gVCYKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODMzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBjYWxscyB0byBS
ZWY8VD46OmdldCgpIG5vdyB0aGF0IGEgUmVmPFQ+IGNhbiBiZQorICAgICAgICBjb252ZXJ0ZWQg
aW1wbGljaXRseSB0byBhIFQmLgorCiAyMDE0LTExLTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIF9hY3Rpb25NZW51SXRlbXNGb3JIaXRUZXN0UmVz
dWx0IGlzIGdpdmVuIGtXS0FjdGlvbk1lbnVMaW5rIGJ1dCBhbiBlbXB0eSBhcnJheSBvZiBkZWZh
dWx0TWVudUl0ZW1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWYuaCBiL1NvdXJjZS9X
VEYvd3RmL1JlZi5oCmluZGV4IGY5YzY1ODg1MTU2MDQ3ZDNkYjA1MzZmZDBhYTBiYTc2ZDY5Mzg3
YjkuLmUzZjM0ZGNjZTQzOWExNGY4MDViZjgwYTRmNmEyNjg2Yjc2ZDE1ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1JlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCkBAIC02MSw2
ICs2MSw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IHJldHVybiAqbV9w
dHI7IH0KICAgICBUJiBnZXQoKSB7IHJldHVybiAqbV9wdHI7IH0KIAorICAgIG9wZXJhdG9yIFQm
KCkgeyByZXR1cm4gKm1fcHRyOyB9CisgICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdCB7IHJl
dHVybiAqbV9wdHI7IH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NSZWY8VD4gcmVw
bGFjZShQYXNzUmVmPFU+KSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3Au
Y3BwCmluZGV4IDg1YWQ2ZDg1OGI0M2JhNzY5NGM0OGViZDQyMTM0OTc2NjMwYjk2N2YuLjRkNDMx
MGEyMTg4MmU5ZjU1NDkyODM2OTE0NTUwMzg5YTZmNzkyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1J1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgUnVuTG9vcCYgcnVuTG9v
cCgpIHsgcmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsgfQorICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSB7
IHJldHVybiBtX3J1bkxvb3A7IH0KIAogcHJpdmF0ZToKICAgICBSZWY8UnVuTG9vcD4gbV9ydW5M
b29wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCmlu
ZGV4IDUzMTA1M2RjMzZmM2MzYTg3NzRjOWU2OTRhZDk5YzQwYjIwYTMxZTcuLmNlZGI1OWM3MzUy
YWNkZjEwYTMxNzZhMDdiMjE4M2FlNzUyYzY4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIDAs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6OlB1cmVGb3J3YXJkaW5nUHJveHlUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAgIH0KIAotICAgICAgICBET01XcmFwcGVy
V29ybGQmIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQorICAgICAgICBET01XcmFw
cGVyV29ybGQmIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZDsgfQogCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSosIERPTVdy
YXBwZXJXb3JsZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggMjA1OTNhMTJm
ZmQ0NTA1YmRjMzc2ZWRhNWYxZDNiZWViYjlkZDMyMS4uNDAxN2I5ZmEzZDhiZDc3ZWRmZGU1MjBi
ZTlmMTA5ODVhMTBlYjRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC0xMTMs
NyArMTEzLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJDaGlsZFJ1bGVDU1NPTVdyYXBwZXJz
KCk7CiAgICAgdm9pZCByZWF0dGFjaENoaWxkUnVsZUNTU09NV3JhcHBlcnMoKTsKIAotICAgIFN0
eWxlU2hlZXRDb250ZW50cyYgY29udGVudHMoKSB7IHJldHVybiBtX2NvbnRlbnRzLmdldCgpOyB9
CisgICAgU3R5bGVTaGVldENvbnRlbnRzJiBjb250ZW50cygpIHsgcmV0dXJuIG1fY29udGVudHM7
IH0KIAogICAgIHZvaWQgZGV0YWNoRnJvbURvY3VtZW50KCkgeyBtX293bmVyTm9kZSA9IG51bGxw
dHI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCAwZTgxNmMyMmQzYmEyY2JhYjVmMDRiN2Fl
Mjg2ZTBlM2Y5ZDViYmVhLi4wMWVlNjJhZWI5NWM4NDNjZTNjYjQ1M2YzN2Q4Yzc5MGI1MzNlNmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMjQ3LDcgKzI0Nyw3IEBAIGlubGluZSBib29sIGNv
bXBhcmVDU1NWYWx1ZVB0cihjb25zdCBSZWZQdHI8Q1NTVmFsdWVUeXBlPiYgZmlyc3QsIGNvbnN0
IFJlZlB0cjxDCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDU1NWYWx1ZVR5cGU+CiBpbmxpbmUgYm9vbCBj
b21wYXJlQ1NTVmFsdWUoY29uc3QgUmVmPENTU1ZhbHVlVHlwZT4mIGZpcnN0LCBjb25zdCBSZWY8
Q1NTVmFsdWVUeXBlPiYgc2Vjb25kKQogewotICAgIHJldHVybiBmaXJzdC5nZXQoKS5lcXVhbHMo
c2Vjb25kLmdldCgpKTsKKyAgICByZXR1cm4gZmlyc3QuZ2V0KCkuZXF1YWxzKHNlY29uZCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAK
aW5kZXggOWVhYTdhYTE0OTM5YWExYTMwMjlmYTVmYjZmNjA3ZDlmZjgxMmRiMy4uOTExODQ0ZTY5
YjAyNjk4NTdkMjI5NzEzMzg5OGJhNTZlNWY3MTk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
TGlzdC5jcHAKQEAgLTk2LDggKzk2LDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1Zh
bHVlTGlzdDo6Y29weSgpCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBtX3ZhbHVlcy5zaXpl
KCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIG5ld0xpc3QtPmFwcGVuZChtX3ZhbHVlc1tpXS5n
ZXQoKSk7CisgICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fdmFsdWVzKQorICAgICAgICBuZXdMaXN0
LT5hcHBlbmQodmFsdWUuZ2V0KCkpOwogICAgIHJldHVybiBuZXdMaXN0LnJlbGVhc2UoKTsKIH0K
IApAQCAtMTE5LDEwICsxMTksMTAgQEAgU3RyaW5nIENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ1NTVGV4
dCgpIGNvbnN0CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIGZv
ciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBtX3ZhbHVlcy5zaXplKCk7IGkgPCBzaXplOyBpKysp
IHsKKyAgICBmb3IgKGF1dG8mIHZhbHVlIDogbV92YWx1ZXMpIHsKICAgICAgICAgaWYgKCFyZXN1
bHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzZXBhcmF0b3IpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kKG1fdmFsdWVzW2ldLmdldCgpLmNzc1RleHQoKSk7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQodmFsdWUuZ2V0KCkuY3NzVGV4dCgpKTsKICAgICB9CiAKICAgICByZXR1
cm4gcmVzdWx0LnRvU3RyaW5nKCk7CkBAIC0xMzcsNyArMTM3LDcgQEAgYm9vbCBDU1NWYWx1ZUxp
c3Q6OmVxdWFscyhjb25zdCBDU1NWYWx1ZUxpc3QmIG90aGVyKSBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gbV92YWx1ZXMuc2l6
ZSgpOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmICghbV92YWx1ZXNbaV0uZ2V0KCkuZXF1
YWxzKG90aGVyLm1fdmFsdWVzW2ldLmdldCgpKSkKKyAgICAgICAgaWYgKCFtX3ZhbHVlc1tpXS5n
ZXQoKS5lcXVhbHMob3RoZXIubV92YWx1ZXNbaV0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1
bGVDb2xsZWN0b3IuY3BwCmluZGV4IDNhYTJiYmFiYjIyYTc2M2Y5OGViZTY5YjVmMjU1ZjRiNDFm
NWJhNTMuLmRlNzM3NzdjOTc4NGIwODY5Zjc0ZWY2MTkzYjBkNDk4ZDc3YTY4OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApAQCAtNTIsNyArNTIsNyBA
QCBzdGF0aWMgY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBsZWZ0VG9SaWdodERlY2xhcmF0aW9uKCkK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+PiBs
ZWZ0VG9SaWdodERlY2woTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCkpOwogICAgIGlm
IChsZWZ0VG9SaWdodERlY2wuZ2V0KCktPmlzRW1wdHkoKSkKICAgICAgICAgbGVmdFRvUmlnaHRE
ZWNsLmdldCgpLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVMdHIp
OwotICAgIHJldHVybiBsZWZ0VG9SaWdodERlY2wuZ2V0KCkuZ2V0KCk7CisgICAgcmV0dXJuIGxl
ZnRUb1JpZ2h0RGVjbC5nZXQoKTsKIH0KIAogc3RhdGljIGNvbnN0IFN0eWxlUHJvcGVydGllcyYg
cmlnaHRUb0xlZnREZWNsYXJhdGlvbigpCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBjb25zdCBT
dHlsZVByb3BlcnRpZXMmIHJpZ2h0VG9MZWZ0RGVjbGFyYXRpb24oKQogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4+IHJpZ2h0VG9MZWZ0RGVjbChN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKSk7CiAgICAgaWYgKHJpZ2h0VG9MZWZ0RGVj
bC5nZXQoKS0+aXNFbXB0eSgpKQogICAgICAgICByaWdodFRvTGVmdERlY2wuZ2V0KCktPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZVJ0bCk7Ci0gICAgcmV0dXJuIHJp
Z2h0VG9MZWZ0RGVjbC5nZXQoKS5nZXQoKTsKKyAgICByZXR1cm4gcmlnaHRUb0xlZnREZWNsLmdl
dCgpOwogfQogCiBjbGFzcyBNYXRjaFJlcXVlc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4
IGRkOWQzYmQ4ZDljYTE0NmRmYzVkYTIyOThkZDAzYWE2OWZjNWVhZWUuLmEyNGQ5MjRiNDlhOTAw
YjFjMjhiMzVjZTdlOTM2ZDQ0MWZjMjc5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTEx
MCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgflN0eWxlUnVsZSgpOwogCiAgICAgY29uc3QgQ1NT
U2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yTGlz
dDsgfQotICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgcHJvcGVydGllcygpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvcGVydGllcy5nZXQoKTsgfQorICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgcHJv
cGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllczsgfQogICAgIE11dGFibGVTdHls
ZVByb3BlcnRpZXMmIG11dGFibGVQcm9wZXJ0aWVzKCk7CiAgICAgCiAgICAgdm9pZCBwYXJzZXJB
ZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+PiYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2Vs
ZWN0b3JzKTsgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB+U3R5bGVS
dWxlRm9udEZhY2UoKTsKIAotICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgcHJvcGVydGllcygp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5nZXQoKTsgfQorICAgIGNvbnN0IFN0eWxlUHJv
cGVydGllcyYgcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllczsgfQogICAg
IE11dGFibGVTdHlsZVByb3BlcnRpZXMmIG11dGFibGVQcm9wZXJ0aWVzKCk7CiAKICAgICBQYXNz
UmVmPFN0eWxlUnVsZUZvbnRGYWNlPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZVJ1bGVGb250RmFjZSgqdGhpcykpOyB9CkBAIC0xNjUsNyArMTY1LDcgQEAgcHVibGlj
OgogICAgIH5TdHlsZVJ1bGVQYWdlKCk7CiAKICAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yTGlzdC5maXJzdCgpOyB9ICAgIAotICAgIGNv
bnN0IFN0eWxlUHJvcGVydGllcyYgcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVy
dGllcy5nZXQoKTsgfQorICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgcHJvcGVydGllcygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvcGVydGllczsgfQogICAgIE11dGFibGVTdHlsZVByb3BlcnRpZXMm
IG11dGFibGVQcm9wZXJ0aWVzKCk7CiAKICAgICB2b2lkIHBhcnNlckFkb3B0U2VsZWN0b3JWZWN0
b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+JiBzZWxlY3RvcnMp
IHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvcnMpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmgKaW5kZXggOWIwZWM0NDU1NTQy
NzlmZWE3ZDEzZWEwY2IxZDczOTEwNDRiYTEyZC4uZDUxYTMyZjQ4ZTJmYTIzZWE4MGEzYWU3OGZj
NzE3ZjI4ZmMzM2ZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0tl
eWZyYW1lUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZVJ1
bGUuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldEtleXMoVmVjdG9y
PGRvdWJsZT4mIGtleXMpIGNvbnN0ICAgeyBwYXJzZUtleVN0cmluZyhtX2tleSwga2V5cyk7IH0K
ICAgICAKLSAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMmIHByb3BlcnRpZXMoKSBjb25zdCB7IHJl
dHVybiBtX3Byb3BlcnRpZXMuZ2V0KCk7IH0KKyAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMmIHBy
b3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnRpZXM7IH0KICAgICBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzJiBtdXRhYmxlUHJvcGVydGllcygpOwogICAgIAogICAgIFN0cmluZyBjc3NU
ZXh0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0
YXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29w
ZS5jcHAKaW5kZXggOWIxNmM2YmFjOGFiMmE5ZjMwMDE5MTYwZThjOTgwMGFhOTg0MTYzZS4uY2I1
YzJiMDUxNDBiYmQ4NmNhNTk5NmU2N2RiY2U3MjQ5YzRjMTU0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lk
IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmNoaWxkQWRkZWQoTm9kZSYgY2hpbGRSZWYp
CiAKICAgICBSZWY8Tm9kZT4gY2hpbGQoY2hpbGRSZWYpOwogCi0gICAgaWYgKCFpc0FkZGVkTm9k
ZUluT3JkZXIoY2hpbGQuZ2V0KCkpKQorICAgIGlmICghaXNBZGRlZE5vZGVJbk9yZGVyKGNoaWxk
KSkKICAgICAgICAgZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7CiAKICAgICBpZiAoaXNFbXB0eSgp
KSB7CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9y
Ojp3aWxsUmVtb3ZlQ2hpbGQoTm9kZSYgY2hpbGRSZWYpCiAKICAgICBSZWY8Tm9kZT4gY2hpbGQo
Y2hpbGRSZWYpOwogCi0gICAgaWYgKCFtX2FkZGVkTm9kZXMuaXNFbXB0eSgpIHx8ICFpc1JlbW92
ZWROb2RlSW5PcmRlcihjaGlsZC5nZXQoKSkpCisgICAgaWYgKCFtX2FkZGVkTm9kZXMuaXNFbXB0
eSgpIHx8ICFpc1JlbW92ZWROb2RlSW5PcmRlcihjaGlsZCkpCiAgICAgICAgIGVucXVldWVNdXRh
dGlvblJlY29yZCgpOwogCiAgICAgaWYgKGlzRW1wdHkoKSkgewpAQCAtMTI4LDcgKzEyOCw3IEBA
IHZvaWQgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6ZW5xdWV1ZU11dGF0aW9uUmVjb3Jk
KCkKIAogICAgIFJlZlB0cjxOb2RlTGlzdD4gYWRkZWROb2RlcyA9IFN0YXRpY05vZGVMaXN0Ojph
ZG9wdChtX2FkZGVkTm9kZXMpOwogICAgIFJlZlB0cjxOb2RlTGlzdD4gcmVtb3ZlZE5vZGVzID0g
U3RhdGljTm9kZUxpc3Q6OmFkb3B0KG1fcmVtb3ZlZE5vZGVzKTsKLSAgICBSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+IHJlY29yZCA9IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZExpc3QobV90YXJn
ZXQuZ2V0KCksIGFkZGVkTm9kZXMucmVsZWFzZSgpLCByZW1vdmVkTm9kZXMucmVsZWFzZSgpLCBt
X3ByZXZpb3VzU2libGluZy5yZWxlYXNlKCksIG1fbmV4dFNpYmxpbmcucmVsZWFzZSgpKTsKKyAg
ICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IHJlY29yZCA9IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVD
aGlsZExpc3QobV90YXJnZXQsIGFkZGVkTm9kZXMucmVsZWFzZSgpLCByZW1vdmVkTm9kZXMucmVs
ZWFzZSgpLCBtX3ByZXZpb3VzU2libGluZy5yZWxlYXNlKCksIG1fbmV4dFNpYmxpbmcucmVsZWFz
ZSgpKTsKICAgICBtX29ic2VydmVycy0+ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKHJlY29yZC5yZWxl
YXNlKCkpOwogICAgIG1fbGFzdEFkZGVkID0gMDsKICAgICBBU1NFUlQoaXNFbXB0eSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmNwcAppbmRleCBlMGMxNjY1NmNkY2VmZDA0MDgxMTNk
YjIzMTMzNGYwOTQ4ZmM2Yjg5Li5iNjkzYmNkOTRhOTc3YTE0MjZhMmFlY2Y2NzJmNGYyMTAwMDQ3
NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuY3BwCkBAIC05MSw3ICs5MSw3IEBA
IE5vZGUqIENoaWxkTm9kZUxpc3Q6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0CiAgICAgICAgIGlmICghZWxlbWVudCB8fCAhbV9wYXJlbnQuZ2V0KCkudHJlZVNjb3Bl
KCkuY29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKG5hbWUpKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGNoaWxkcmVuT2ZU
eXBlPEVsZW1lbnQ+KG1fcGFyZW50LmdldCgpKSkgeworICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KG1fcGFyZW50KSkgewogICAgICAgICBpZiAoZWxlbWVu
dC5oYXNJRCgpICYmIGVsZW1lbnQuaWRGb3JTdHlsZVJlc29sdXRpb24oKSA9PSBuYW1lKQogICAg
ICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RWxlbWVudCo+KCZlbGVtZW50KTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaAppbmRleCBiMTlmY2E4ZThiMjU5OWY1MzRjNTY5YTJm
Yjg1NjQzMzBiOTJjNDFkLi43ZTkyM2VlYjcwY2JiNGE1MWVjYjEzNWFlMTVhMThlMjFhYWNiMzFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGlj
OgogICAgIH0KICAgICB2aXJ0dWFsIH5FbXB0eU5vZGVMaXN0KCk7CiAKLSAgICBOb2RlJiBvd25l
ck5vZGUoKSB7IHJldHVybiBtX293bmVyLmdldCgpOyB9CisgICAgTm9kZSYgb3duZXJOb2RlKCkg
eyByZXR1cm4gbV9vd25lcjsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEVtcHR5Tm9kZUxp
c3QoTm9kZSYgb3duZXIpIDogbV9vd25lcihvd25lcikgeyB9CkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgfkNoaWxkTm9kZUxpc3QoKTsKIAotICAgIENvbnRhaW5lck5v
ZGUmIG93bmVyTm9kZSgpIHsgcmV0dXJuIG1fcGFyZW50LmdldCgpOyB9CisgICAgQ29udGFpbmVy
Tm9kZSYgb3duZXJOb2RlKCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KIAogICAgIHZvaWQgaW52YWxp
ZGF0ZUNhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCAxMWZl
OTZiNzdjOWZjMjc4NjA2NTRmYjkyODI2YWU2NjJmNDg4YzAxLi4yOWM2YmVlMzg3ODM0MDQ4OTZl
M2M2NTcxYzk5MDExZTc0ZGQwMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CkBAIC0xMTUsOCArMTE1LDggQEAgdm9pZCBDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5G
cm9tKENvbnRhaW5lck5vZGUqIG9sZFBhcmVudCkKIAogICAgIGlmIChvbGRQYXJlbnQtPmRvY3Vt
ZW50KCkuaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25PYnNlcnZlcjo6Q2hpbGRM
aXN0KSkgewogICAgICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKCpvbGRQYXJl
bnQpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyAr
K2kpCi0gICAgICAgICAgICBtdXRhdGlvbi53aWxsUmVtb3ZlQ2hpbGQoY2hpbGRyZW5baV0uZ2V0
KCkpOworICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pCisgICAgICAgICAgICBt
dXRhdGlvbi53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIGRvIG5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJzTm9kZVdpbGxEZXRhY2goKSBmb3Ig
ZWFjaCBjaGlsZCwKQEAgLTEyNCwxMyArMTI0LDExIEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFr
ZUFsbENoaWxkcmVuRnJvbShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQpCiAKICAgICBvbGRQYXJl
bnQtPnJlbW92ZURldGFjaGVkQ2hpbGRyZW4oKTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkgewotICAgICAgICBOb2RlJiBjaGlsZCA9IGNoaWxk
cmVuW2ldLmdldCgpOwotCisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7CiAgICAg
ICAgIGRlc3Ryb3lSZW5kZXJUcmVlSWZOZWVkZWQoY2hpbGQpOwogCiAgICAgICAgIC8vIEZJWE1F
OiBXZSBuZWVkIGEgbm8gbXV0YXRpb24gZXZlbnQgdmVyc2lvbiBvZiBhZG9wdE5vZGUuCi0gICAg
ICAgIFJlZlB0cjxOb2RlPiBhZG9wdGVkQ2hpbGQgPSBkb2N1bWVudCgpLmFkb3B0Tm9kZSgmY2hp
bGRyZW5baV0uZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICBSZWZQdHI8Tm9k
ZT4gYWRvcHRlZENoaWxkID0gZG9jdW1lbnQoKS5hZG9wdE5vZGUoJmNoaWxkLmdldCgpLCBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgcGFyc2VyQXBwZW5kQ2hpbGQoYWRvcHRlZENoaWxk
LmdldCgpKTsKICAgICAgICAgLy8gRklYTUU6IFRvZ2V0aGVyIHdpdGggYWRvcHROb2RlIGFib3Zl
LCB0aGUgdHJlZSBzY29wZSBtaWdodCBnZXQgdXBkYXRlZCByZWN1cnNpdmVseSB0d2ljZQogICAg
ICAgICAvLyAoaWYgdGhlIGRvY3VtZW50IGNoYW5nZWQgb3Igb2xkUGFyZW50IHdhcyBpbiBhIHNo
YWRvdyB0cmVlLCBBTkQgKnRoaXMgaXMgaW4gYSBzaGFkb3cgdHJlZSkuCkBAIC0yOTksNyArMjk3
LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBu
ZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKIAogICAgICAgICB0cmVlU2NvcGUoKS5hZG9w
dElmTmVlZGVkKCZjaGlsZCk7CiAKLSAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHQuZ2V0
KCksIGNoaWxkKTsKKyAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHQsIGNoaWxkKTsKIAog
ICAgICAgICB1cGRhdGVUcmVlQWZ0ZXJJbnNlcnRpb24oY2hpbGQpOwogICAgIH0KQEAgLTU0OSw3
ICs1NDcsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkKE5vZGUqIG9sZENoaWxk
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IHdpbGxSZW1vdmVDaGlsZChjaGlsZC5nZXQoKSk7CisgICAgd2lsbFJlbW92ZUNoaWxkKGNoaWxk
KTsKIAogICAgIC8vIE11dGF0aW9uIGV2ZW50cyBtaWdodCBoYXZlIG1vdmVkIHRoaXMgY2hpbGQg
aW50byBhIGRpZmZlcmVudCBwYXJlbnQuCiAgICAgaWYgKGNoaWxkLT5wYXJlbnROb2RlKCkgIT0g
dGhpcykgewpAQCAtNTYyLDExICs1NjAsMTEgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVD
aGlsZChOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAgICAgTm9kZSog
cHJldiA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgTm9kZSogbmV4dCA9IGNo
aWxkLT5uZXh0U2libGluZygpOwotICAgICAgICByZW1vdmVCZXR3ZWVuKHByZXYsIG5leHQsIGNo
aWxkLmdldCgpKTsKKyAgICAgICAgcmVtb3ZlQmV0d2VlbihwcmV2LCBuZXh0LCBjaGlsZCk7CiAK
LSAgICAgICAgbm90aWZ5Q2hpbGRSZW1vdmVkKGNoaWxkLmdldCgpLCBwcmV2LCBuZXh0LCBDaGls
ZENoYW5nZVNvdXJjZUFQSSk7CisgICAgICAgIG5vdGlmeUNoaWxkUmVtb3ZlZChjaGlsZCwgcHJl
diwgbmV4dCwgQ2hpbGRDaGFuZ2VTb3VyY2VBUEkpOwogCi0gICAgICAgIENoaWxkTm9kZVJlbW92
YWxOb3RpZmllcigqdGhpcykubm90aWZ5KGNoaWxkLmdldCgpKTsKKyAgICAgICAgQ2hpbGROb2Rl
UmVtb3ZhbE5vdGlmaWVyKCp0aGlzKS5ub3RpZnkoY2hpbGQpOwogICAgIH0KIAogCkBAIC02NjMs
OCArNjYxLDggQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigpCiAgICAgICAg
IENoaWxkQ2hhbmdlIGNoYW5nZSA9IHsgQWxsQ2hpbGRyZW5SZW1vdmVkLCBudWxscHRyLCBudWxs
cHRyLCBDaGlsZENoYW5nZVNvdXJjZUFQSSB9OwogICAgICAgICBjaGlsZHJlbkNoYW5nZWQoY2hh
bmdlKTsKICAgICAgICAgCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVtb3ZlZENo
aWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVy
KCp0aGlzKS5ub3RpZnkocmVtb3ZlZENoaWxkcmVuW2ldLmdldCgpKTsKKyAgICAgICAgZm9yIChh
dXRvJiByZW1vdmVkQ2hpbGQgOiByZW1vdmVkQ2hpbGRyZW4pCisgICAgICAgICAgICBDaGlsZE5v
ZGVSZW1vdmFsTm90aWZpZXIoKnRoaXMpLm5vdGlmeShyZW1vdmVkQ2hpbGQpOwogICAgIH0KIAog
ICAgIGlmIChkb2N1bWVudCgpLnN2Z0V4dGVuc2lvbnMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKaW5kZXggMzdjOTQ2Nzg3NTY5YWJiODFl
NmVhOWMzMDVjMWE4NzdhZmUxNjA2Ni4uOTkyZGEyYzFhMTRiNWNlZjM0YWVkMWI1ZGY5MDJjOThl
MDQ2ZWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuY3BwCkBAIC0xNjcsMTIgKzE2NywxMyBAQCB2b2lkIGRpc2Nvbm5lY3RTdWJmcmFtZXMoQ29u
dGFpbmVyTm9kZSYgcm9vdCwgU3ViZnJhbWVEaXNjb25uZWN0UG9saWN5IHBvbGljeSkKICAgICAv
LyBpbnNlcnQgbW9yZSBmcmFtZXMgYW5kIGNyZWF0ZSBsb2FkZWQgZnJhbWVzIGluIGRldGFjaGVk
IHN1YnRyZWVzLgogICAgIFN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyIGRpc2FibGVyKHJvb3QpOwog
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lT3duZXJzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIGF1dG8mIG93bmVyID0gZnJhbWVPd25lcnNbaV0uZ2V0KCk7CisgICAgYm9vbCBp
c0ZpcnN0ID0gdHJ1ZTsKKyAgICBmb3IgKGF1dG8mIG93bmVyIDogZnJhbWVPd25lcnMpIHsKICAg
ICAgICAgLy8gRG9uJ3QgbmVlZCB0byB0cmF2ZXJzZSB1cCB0aGUgdHJlZSBmb3IgdGhlIGZpcnN0
IG93bmVyIHNpbmNlIG5vCiAgICAgICAgIC8vIHNjcmlwdCBjb3VsZCBoYXZlIG1vdmVkIGl0Lgot
ICAgICAgICBpZiAoIWkgfHwgcm9vdC5jb250YWluc0luY2x1ZGluZ1NoYWRvd0RPTSgmb3duZXIp
KQotICAgICAgICAgICAgb3duZXIuZGlzY29ubmVjdENvbnRlbnRGcmFtZSgpOworICAgICAgICBp
ZiAoaXNGaXJzdCB8fCByb290LmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKCZvd25lci5nZXQo
KSkpCisgICAgICAgICAgICBvd25lci5nZXQoKS5kaXNjb25uZWN0Q29udGVudEZyYW1lKCk7Cisg
ICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAz
MWIzMmY1MGY0ZGVkNjdmNWFkNTU2YzdjYjMwYjcyODY5ODI5OTFhLi4wZTZhNWJhZTE3MmYzNmUy
YjlkYzgxMDFlM2ZkMTQyZTdhNDNmNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMzY0LDcgKzEz
NjQsNyBAQCB2b2lkIE5vZGU6OnNldFRleHRDb250ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGNhc2UgRU5USVRZX1JFRkVSRU5DRV9OT0RFOgogICAg
ICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6IHsKICAgICAgICAgICAgIFJlZjxDb250
YWluZXJOb2RlPiBjb250YWluZXIoZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKnRoaXMpKTsKLSAg
ICAgICAgICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24oY29udGFpbmVyLmdldCgp
KTsKKyAgICAgICAgICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24oY29udGFpbmVy
KTsKICAgICAgICAgICAgIGNvbnRhaW5lci0+cmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgICAg
IGlmICghdGV4dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGFpbmVyLT5hcHBlbmRD
aGlsZChkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKHRleHQpLCBlYyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGUzMTBkYTQyMTI0MzVjZjdh
OWYzODI4ZmJkOTMyZTQwZDJmZWI5M2EuLjc4NTdmZDkxOWMzYWU0N2I4NDZkNTE5MTM1NWY4YmY2
ZWE4YjQ1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwCkBAIC0xMDUxLDggKzEwNTEsOCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93
bklubGluZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUqIHN0eWxlLCBOb2RlKgogCiAgICAg
ICAgIC8vIFRoZSBpbm5lciBsb29wIHdpbGwgZ28gdGhyb3VnaCBjaGlsZHJlbiBvbiBlYWNoIGxl
dmVsCiAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgYWdncmVnYXRlIGlubGluZSBjaGlsZCBl
bGVtZW50cyB0b2dldGhlciBzbyB0aGF0IHdlIGRvbid0IHdyYXAgZWFjaCBjaGlsZCBzZXBhcmF0
ZWx5LgotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1cnJlbnRDaGlsZHJlbi5zaXpl
KCk7ICsraSkgewotICAgICAgICAgICAgTm9kZSYgY2hpbGQgPSBjdXJyZW50Q2hpbGRyZW5baV0u
Z2V0KCk7CisgICAgICAgIGZvciAoUmVmPE5vZGU+JiBjaGlsZFJlZiA6IGN1cnJlbnRDaGlsZHJl
bikgeworICAgICAgICAgICAgTm9kZSYgY2hpbGQgPSBjaGlsZFJlZjsKICAgICAgICAgICAgIGlm
ICghY2hpbGQucGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgaWYgKCFjaGlsZC5jb250YWlucyh0YXJnZXROb2RlKSAmJiBlbGVtZW50c1RvUHVzaERv
d24uc2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21t
YW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgKaW5kZXggMGI2NWMx
ZmRiNTkyNzQxNDUzOWNlNmNiMGNkNjRjYmQ3MDFjY2U1Ni4uMDNlNmMzN2JkZTVhZDU4OTI1MTFk
NzhhNDBhNWU0MmJiOTc0YzA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaApA
QCAtNjQsNyArNjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRWRpdENvbW1hbmQoRG9jdW1lbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogCiAgICAg
RnJhbWUmIGZyYW1lKCk7Ci0gICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1
bWVudC5nZXQoKTsgfQorICAgIERvY3VtZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1l
bnQ7IH0KICAgICBDb21wb3NpdGVFZGl0Q29tbWFuZCogcGFyZW50KCkgY29uc3QgeyByZXR1cm4g
bV9wYXJlbnQ7IH0KICAgICB2b2lkIHNldFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVuZGluZ1NlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
NmUwODk1MTUzN2UyMjY1ZGNkYWI3ZWUxNjIyNWRkMGQwYTBjMjdjMS4uODRhOGRkMWZiMjExZGQw
NDNkZTI4MTZkZTAyZTZmMTAzMDU0MWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApA
QCAtMTIyMSw3ICsxMjIxLDcgQEAgYm9vbCBFZGl0b3I6Omluc2VydFRleHRXaXRob3V0U2VuZGlu
Z1RleHRFdmVudChjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2VsZWN0SW4KICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9ucyB8PSBUeXBpbmdDb21tYW5kOjpTZWxlY3RJbnNlcnRlZFRleHQ7CiAg
ICAgICAgICAgICAgICAgaWYgKGF1dG9jb3JyZWN0aW9uV2FzQXBwbGllZCkKICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9ucyB8PSBUeXBpbmdDb21tYW5kOjpSZXRhaW5BdXRvY29ycmVjdGlvbklu
ZGljYXRvcjsKLSAgICAgICAgICAgICAgICBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KGRvY3Vt
ZW50LmdldCgpLCB0ZXh0LCBzZWxlY3Rpb24sIG9wdGlvbnMsIHRyaWdnZXJpbmdFdmVudCAmJiB0
cmlnZ2VyaW5nRXZlbnQtPmlzQ29tcG9zaXRpb24oKSA/IFR5cGluZ0NvbW1hbmQ6OlRleHRDb21w
b3NpdGlvbkNvbmZpcm0gOiBUeXBpbmdDb21tYW5kOjpUZXh0Q29tcG9zaXRpb25Ob25lKTsKKyAg
ICAgICAgICAgICAgICBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KGRvY3VtZW50LCB0ZXh0LCBz
ZWxlY3Rpb24sIG9wdGlvbnMsIHRyaWdnZXJpbmdFdmVudCAmJiB0cmlnZ2VyaW5nRXZlbnQtPmlz
Q29tcG9zaXRpb24oKSA/IFR5cGluZ0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvbkNvbmZpcm0gOiBU
eXBpbmdDb21tYW5kOjpUZXh0Q29tcG9zaXRpb25Ob25lKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgLy8gUmV2ZWFsIHRoZSBjdXJyZW50IHNlbGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGJiNzYwY2M3NWRjZmNhOTA4
ZDYyMjNhYWRjOWZhNmRmYTMwMzc5NTguLjlmMjc5ODRjYTRlZjlkMTI3MThmZWY1ZTQ4OGFmMGI4
MzIxOTM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KQEAgLTU2Myw3ICs1NjMsNyBAQCBIVE1MQ29udmVydGVyOjp+SFRNTENvbnZlcnRlcigp
CiAKIE5TQXR0cmlidXRlZFN0cmluZyAqSFRNTENvbnZlcnRlcjo6Y29udmVydCgpCiB7Ci0gICAg
Tm9kZSogY29tbW9uQW5jZXN0b3JDb250YWluZXIgPSBfY2FjaGVzLT5jYWNoZUFuY2VzdG9yc09m
U3RhcnRUb0JlQ29udmVydGVkKG1fcmFuZ2UuZ2V0KCkpOworICAgIE5vZGUqIGNvbW1vbkFuY2Vz
dG9yQ29udGFpbmVyID0gX2NhY2hlcy0+Y2FjaGVBbmNlc3RvcnNPZlN0YXJ0VG9CZUNvbnZlcnRl
ZChtX3JhbmdlKTsKICAgICBBU1NFUlQoY29tbW9uQW5jZXN0b3JDb250YWluZXIpOwogCiAgICAg
bV9kYXRhU291cmNlID0gY29tbW9uQW5jZXN0b3JDb250YWluZXItPmRvY3VtZW50KCkuZnJhbWUo
KS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApp
bmRleCAwZThmZjgzN2ZlZTQwYmZjMDIxZDlmYzJmOTllYjEyM2QzYjQyZGNhLi40MWQ2ZDU5ZjYy
ZmE1Y2MzN2NjZTQxMGFjOGRjNTIxNWI1OTkwNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCkBAIC05NTcsMjUgKzk1NywyNSBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNy
ZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmIG1hcmt1cCwgSFRNTAogICAgIEFT
U0VSVChlbGVtZW50KTsKICAgICBpZiAoZWxlbWVudC0+aWVGb3JiaWRzSW5zZXJ0SFRNTCgpKSB7
CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFt
ZShjb2xUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoY29sZ3JvdXBUYWcpIHx8IGVsZW1lbnQt
Pmhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpCiAgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUo
aGVhZFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShzdHlsZVRhZykgfHwgZWxlbWVudC0+aGFz
VGFnTmFtZSh0aXRsZVRhZykpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJP
dXRlckhUTUwobWFya3VwLCBlbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5LCBlYyk7CiAgICAg
aWYgKCFmcmFnbWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgLy8gV2UgbmVlZCB0byBwb3AgPGh0bWw+IGFuZCA8Ym9keT4gZWxlbWVudHMgYW5k
IHJlbW92ZSA8aGVhZD4gdG8KICAgICAvLyBhY2NvbW1vZGF0ZSBmb2xrcyBwYXNzaW5nIGNvbXBs
ZXRlIEhUTUwgZG9jdW1lbnRzIHRvIG1ha2UgdGhlCiAgICAgLy8gY2hpbGQgb2YgYW4gZWxlbWVu
dC4KICAgICBhdXRvIHRvUmVtb3ZlID0gY29sbGVjdEVsZW1lbnRzVG9SZW1vdmVGcm9tRnJhZ21l
bnQoKmZyYWdtZW50KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG9SZW1vdmUuc2l6
ZSgpOyArK2kpCi0gICAgICAgIHJlbW92ZUVsZW1lbnRGcm9tRnJhZ21lbnRQcmVzZXJ2aW5nQ2hp
bGRyZW4oKmZyYWdtZW50LCB0b1JlbW92ZVtpXS5nZXQoKSk7CisgICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogdG9SZW1vdmUpCisgICAgICAgIHJlbW92ZUVsZW1lbnRGcm9tRnJhZ21lbnRQcmVzZXJ2
aW5nQ2hpbGRyZW4oKmZyYWdtZW50LCBlbGVtZW50KTsKIAogICAgIHJldHVybiBmcmFnbWVudC5y
ZWxlYXNlKCk7CiB9CkBAIC05OTQsNyArOTk0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGhhc09u
ZVRleHRDaGlsZChDb250YWluZXJOb2RlKiBub2RlKQogdm9pZCByZXBsYWNlQ2hpbGRyZW5XaXRo
RnJhZ21lbnQoQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWY8Q29udGFpbmVy
Tm9kZT4gY29udGFpbmVyTm9kZShjb250YWluZXIpOwotICAgIENoaWxkTGlzdE11dGF0aW9uU2Nv
cGUgbXV0YXRpb24oY29udGFpbmVyTm9kZS5nZXQoKSk7CisgICAgQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZSBtdXRhdGlvbihjb250YWluZXJOb2RlKTsKIAogICAgIGlmICghZnJhZ21lbnQtPmZpcnN0
Q2hpbGQoKSkgewogICAgICAgICBjb250YWluZXJOb2RlLT5yZW1vdmVDaGlsZHJlbigpOwpAQCAt
MTAxOCw3ICsxMDE4LDcgQEAgdm9pZCByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoQ29udGFp
bmVyTm9kZSYgY29udGFpbmVyLCBQYXNzUmVmUHRyPERvY3VtZW50RnIKIHZvaWQgcmVwbGFjZUNo
aWxkcmVuV2l0aFRleHQoQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCBjb25zdCBTdHJpbmcmIHRl
eHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZjxDb250YWluZXJOb2RlPiBjb250YWlu
ZXJOb2RlKGNvbnRhaW5lcik7Ci0gICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbihj
b250YWluZXJOb2RlLmdldCgpKTsKKyAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9u
KGNvbnRhaW5lck5vZGUpOwogCiAgICAgaWYgKGhhc09uZVRleHRDaGlsZCgmY29udGFpbmVyTm9k
ZS5nZXQoKSkpIHsKICAgICAgICAgZG93bmNhc3Q8VGV4dD4oKmNvbnRhaW5lck5vZGUtPmZpcnN0
Q2hpbGQoKSkuc2V0RGF0YSh0ZXh0LCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzR3JhZGllbnQuaAppbmRleCBhNGE3N2FhYjc2MDYzYjZhODA2NjI0YmM4ZWQ2NjRlOTIy
MDQ3MzNlLi42YmZiMTZlMTI0NTMxNzcwM2U3ZjZmZDRmOTVkYTQ4YWZlMzYxOGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmgKQEAgLTQ3LDggKzQ3LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
YW52YXNHcmFkaWVudChwMCwgcjAsIHAxLCByMSkpOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBHcmFkaWVudCYgZ3JhZGllbnQoKSB7IHJldHVybiBtX2dyYWRpZW50LmdldCgpOyB9Ci0g
ICAgICAgIGNvbnN0IEdyYWRpZW50JiBncmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhZGll
bnQuZ2V0KCk7IH0KKyAgICAgICAgR3JhZGllbnQmIGdyYWRpZW50KCkgeyByZXR1cm4gbV9ncmFk
aWVudDsgfQorICAgICAgICBjb25zdCBHcmFkaWVudCYgZ3JhZGllbnQoKSBjb25zdCB7IHJldHVy
biBtX2dyYWRpZW50OyB9CiAKICAgICAgICAgdm9pZCBhZGRDb2xvclN0b3AoZmxvYXQgdmFsdWUs
IGNvbnN0IFN0cmluZyYgY29sb3IsIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCmluZGV4IDBlYTBiYzk0N2YxOTUwYWI2NDE0NzBj
YmMxNTAwZWNmYTFkMjg5ODAuLjg1M2NlMjYyZmNiNDExN2Y1NjNmODZmY2RlZWUxZDMwMTFmNGUy
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKQEAgLTQ1
LDggKzQ1LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcGFyc2VSZXBldGl0aW9uVHlw
ZShjb25zdCBTdHJpbmcmLCBib29sJiByZXBlYXRYLCBib29sJiByZXBlYXRZLCBFeGNlcHRpb25D
b2RlJik7CiAKLSAgICBQYXR0ZXJuJiBwYXR0ZXJuKCkgeyByZXR1cm4gbV9wYXR0ZXJuLmdldCgp
OyB9Ci0gICAgY29uc3QgUGF0dGVybiYgcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVy
bi5nZXQoKTsgfQorICAgIFBhdHRlcm4mIHBhdHRlcm4oKSB7IHJldHVybiBtX3BhdHRlcm47IH0K
KyAgICBjb25zdCBQYXR0ZXJuJiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuOyB9
CiAKICAgICBib29sIG9yaWdpbkNsZWFuKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5DbGVhbjsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDc2OThmZmI4NGZi
ZjcwMmU4NGYxYzFkMmZlMGQ5ZTFiYWM1MjU5N2IuLjZkMDgxMGU3MWNkZGFhNzU1NzJiZDBkNWUw
MWVhZDUzMzQwY2JjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBA
IC0xMDIsNyArMTAyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdDsKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCk7CiAKLSAgICAgICAgQ2FjaGVk
UmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyKCkgeyByZXR1cm4gbV9jYWNoZWRS
ZXNvdXJjZUxvYWRlci5nZXQoKTsgfQorICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiBtX2NhY2hlZFJlc291cmNlTG9hZGVyOyB9CiAK
ICAgICAgICAgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdWJzdGl0dXRlRGF0YTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAppbmRleCBmYzhiYjE2ZWQ4Zjg2NjU2YWU3NjczZTIyZDRmN2FjODA3MDA5Y2Q4Li4wZDRm
ZDNjZGJlY2Y0MGMwOGI2YjhjMTc0YWZhZTFmZDRjZDFjYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKQEAgLTMyODYsOCArMzI4Niw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKQogCiAgICAgVmVjdG9y
PFJlZjxET01XcmFwcGVyV29ybGQ+PiB3b3JsZHM7CiAgICAgU2NyaXB0Q29udHJvbGxlcjo6Z2V0
QWxsV29ybGRzKHdvcmxkcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JsZHMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKHdv
cmxkc1tpXS5nZXQoKSk7CisgICAgZm9yIChhdXRvJiB3b3JsZCA6IHdvcmxkcykKKyAgICAgICAg
ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQod29ybGQpOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDA4YmY5MDk4NjYz
NDY1N2NkNDc0Mjc2OWRkOGI0YjExZGU4YTg2NDEuLmZiYzMxZDIzZDNhNjFhMzBiOTAyOGVhM2Ux
NDU1YmRiYTU4Mjg1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTI1NCw4ICsy
NTQsOCBAQCBib29sIERPTVdpbmRvdzo6ZGlzcGF0Y2hBbGxQZW5kaW5nQmVmb3JlVW5sb2FkRXZl
bnRzKCkKICAgICBmb3IgKGF1dG8gaXQgPSBzZXQuYmVnaW4oKSwgZW5kID0gc2V0LmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIHdpbmRvd3MudW5jaGVja2VkQXBwZW5kKCppdC0+a2V5
KTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3aW5kb3dzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIERPTVdpbmRvdyYgd2luZG93ID0gd2luZG93c1tpXS5nZXQoKTsKKyAgICBmb3Ig
KFJlZjxET01XaW5kb3c+JiB3aW5kb3dSZWYgOiB3aW5kb3dzKSB7CisgICAgICAgIERPTVdpbmRv
dyYgd2luZG93ID0gd2luZG93UmVmOwogICAgICAgICBpZiAoIXNldC5jb250YWlucygmd2luZG93
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0yOTEsMTEgKzI5MSwxMSBAQCB2b2lkIERP
TVdpbmRvdzo6ZGlzcGF0Y2hBbGxQZW5kaW5nVW5sb2FkRXZlbnRzKCkKIAogICAgIFZlY3RvcjxS
ZWY8RE9NV2luZG93Pj4gd2luZG93czsKICAgICB3aW5kb3dzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc2V0LnNpemUoKSk7Ci0gICAgZm9yIChhdXRvIGl0ID0gc2V0LmJlZ2luKCksIGVuZCA9IHNl
dC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICB3aW5kb3dzLnVuY2hlY2tlZEFwcGVu
ZCgqaXQtPmtleSk7CisgICAgZm9yIChhdXRvJiBrZXlWYWx1ZSA6IHNldCkKKyAgICAgICAgd2lu
ZG93cy51bmNoZWNrZWRBcHBlbmQoKmtleVZhbHVlLmtleSk7CiAKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgd2luZG93cy5zaXplKCk7ICsraSkgewotICAgICAgICBET01XaW5kb3cmIHdp
bmRvdyA9IHdpbmRvd3NbaV0uZ2V0KCk7CisgICAgZm9yIChSZWY8RE9NV2luZG93PiYgd2luZG93
UmVmIDogd2luZG93cykgeworICAgICAgICBET01XaW5kb3cmIHdpbmRvdyA9IHdpbmRvd1JlZjsK
ICAgICAgICAgaWYgKCFzZXQuY29udGFpbnMoJndpbmRvdykpCiAgICAgICAgICAgICBjb250aW51
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25D
b250cm9sbGVyLmNwcAppbmRleCA3MzJjOTgxMWIzZjk0NTBjZWY4ZjM5ZmFhMGUyMTJlMzJjYmUw
NTJmLi4xYTdjZDJhMzRiMWY5Mzk1M2JhOWYyMTFkZGIxNWM2NzkyYWJkODQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNw
cApAQCAtNTE2LDcgKzUxNiw3IEBAIFBhc3NSZWY8UmVuZGVyU3R5bGU+IEFuaW1hdGlvbkNvbnRy
b2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyCiAgICAgUmVmPFJl
bmRlclN0eWxlPiBuZXdTdHlsZUJlZm9yZUFuaW1hdGlvbihXVEY6Om1vdmUobmV3U3R5bGUpKTsK
IAogICAgIENvbXBvc2l0ZUFuaW1hdGlvbiYgcmVuZGVyZXJBbmltYXRpb25zID0gbV9kYXRhLT5l
bnN1cmVDb21wb3NpdGVBbmltYXRpb24ocmVuZGVyZXIpOwotICAgIGF1dG8gYmxlbmRlZFN0eWxl
ID0gcmVuZGVyZXJBbmltYXRpb25zLmFuaW1hdGUocmVuZGVyZXIsIG9sZFN0eWxlLCBuZXdTdHls
ZUJlZm9yZUFuaW1hdGlvbi5nZXQoKSk7CisgICAgYXV0byBibGVuZGVkU3R5bGUgPSByZW5kZXJl
ckFuaW1hdGlvbnMuYW5pbWF0ZShyZW5kZXJlciwgb2xkU3R5bGUsIG5ld1N0eWxlQmVmb3JlQW5p
bWF0aW9uKTsKIAogICAgIGlmIChyZW5kZXJlci5wYXJlbnQoKSB8fCBuZXdTdHlsZUJlZm9yZUFu
aW1hdGlvbi0+YW5pbWF0aW9ucygpIHx8IChvbGRTdHlsZSAmJiBvbGRTdHlsZS0+YW5pbWF0aW9u
cygpKSkgewogICAgICAgICBtX2RhdGEtPnVwZGF0ZUFuaW1hdGlvblRpbWVyRm9yUmVuZGVyZXIo
cmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvdmVyYWdlTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAKaW5kZXggOTI2YWE1Yzc1YmM0MWI1NjIzODM3ZjFmNjhi
ZDNmMzM0YzdlOTEyMC4uYTJiNjJkYmVjMjA4MDU2NDc0NGUzMjQ2ZDZjODNiNjhiYzA3MjhmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVy
YWdlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q292ZXJhZ2VNYXAuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFRpbGVDb3ZlcmFnZU1hcDo6VGlsZUNv
dmVyYWdlTWFwKGNvbnN0IFRpbGVDb250cm9sbGVyJiBjb250cm9sbGVyKQogICAgIG1fdmlzaWJs
ZVJlY3RJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7
CiAgICAgbV92aXNpYmxlUmVjdEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKENv
bG9yKDI1NSwgMCwgMCkpOwogCi0gICAgbV9sYXllci5nZXQoKS5hcHBlbmRTdWJsYXllcihtX3Zp
c2libGVSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkpOworICAgIG1fbGF5ZXIuZ2V0KCkuYXBwZW5k
U3VibGF5ZXIobV92aXNpYmxlUmVjdEluZGljYXRvckxheWVyKTsKIAogICAgIHVwZGF0ZSgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNv
dmVyYWdlTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292
ZXJhZ2VNYXAuaAppbmRleCAwNGUzYzI1MDNhZDIwMjY4MDEwNDU5MzMzYjNmYjA3MzgyNDdkZDEz
Li4yYjk4YWZjYWYzN2YwMjVkNDE4YjAzOGYwYWM5YTM3ZWM5ZTYwMmJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuaApA
QCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGUoKTsKICAgICB2b2lkIHNl
dFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fcG9zaXRpb24gPSBwb3Np
dGlvbjsgfQogCi0gICAgUGxhdGZvcm1DQUxheWVyJiBsYXllcigpIHsgcmV0dXJuIG1fbGF5ZXIu
Z2V0KCk7IH0KKyAgICBQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKCkgeyByZXR1cm4gbV9sYXllcjsg
fQogCiAgICAgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCmluZGV4IGJiMGE1OGNmY2E3
MzU5ODFiYTIzZTNiZTkwNjg2Y2VjYTAxOTFkZmEuLjE4ZmIzMjYyNzdlOWMzM2U2Mzc2OGRkMDgw
ZGVkYWFjOTg5ZWFkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUdyaWQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgVGlsZUdyaWQoVGls
ZUNvbnRyb2xsZXImKTsKICAgICB+VGlsZUdyaWQoKTsKIAotICAgIFBsYXRmb3JtQ0FMYXllciYg
Y29udGFpbmVyTGF5ZXIoKSB7IHJldHVybiBtX2NvbnRhaW5lckxheWVyLmdldCgpOyB9CisgICAg
UGxhdGZvcm1DQUxheWVyJiBjb250YWluZXJMYXllcigpIHsgcmV0dXJuIG1fY29udGFpbmVyTGF5
ZXI7IH0KIAogICAgIHZvaWQgc2V0U2NhbGUoZmxvYXQpOwogICAgIGZsb2F0IHNjYWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zY2FsZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NsaXBQYXRoT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBh
dGhPcGVyYXRpb24uaAppbmRleCBlNzIzMWU2Y2E0MDMyOGVmZTRiMDYyZTI5YTgxMTM3MmNkY2Q2
NTU5Li5iOWU3MDI0N2JjZTAwZjI3MWEyYTgzODRlNzJlMDRkNmJmYzljNWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApAQCAtMTAxLDcgKzEwMSw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFwZUNsaXBQYXRoT3Bl
cmF0aW9uKFdURjo6bW92ZShzaGFwZSkpKTsKICAgICB9CiAKLSAgICBjb25zdCBCYXNpY1NoYXBl
JiBiYXNpY1NoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZS5nZXQoKTsgfQorICAgIGNvbnN0
IEJhc2ljU2hhcGUmIGJhc2ljU2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlOyB9CiAgICAg
V2luZFJ1bGUgd2luZFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlLmdldCgpLndpbmRSdWxl
KCk7IH0KICAgICBjb25zdCBQYXRoIHBhdGhGb3JSZWZlcmVuY2VSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdSZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAppbmRleCBkODczZjFiN2IzZmY1NjZlMjQ3YzVlZGVhOWEy
ZWYwMzA5MmIyZjA2Li43MzRkMDJlOTUwODQ4ZTljOGU5NDlmNWE2ZDJkMzQ2MzU0Y2E3ZGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5o
CkBAIC0xMjgsOCArMTI4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQ29udGVudEVsZW1l
bnRzKCk7CiAgICAgdm9pZCB1cGRhdGVXcml0aW5nTW9kZSgpOwogCi0gICAgV2ViS2l0TmFtZWRG
bG93JiBuYW1lZEZsb3coKSB7IHJldHVybiBtX25hbWVkRmxvdy5nZXQoKTsgfQotICAgIGNvbnN0
IFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEZsb3cu
Z2V0KCk7IH0KKyAgICBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdygpIHsgcmV0dXJuIG1fbmFt
ZWRGbG93OyB9CisgICAgY29uc3QgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3coKSBjb25zdCB7
IHJldHVybiBtX25hbWVkRmxvdzsgfQogCiAgICAgLy8gT2JzZXJ2ZXIgZmxvdyB0aHJlYWRzIGhh
dmUgaW52YWxpZCByZWdpb25zIHRoYXQgZGVwZW5kIG9uIHRoZSBzdGF0ZSBvZiB0aGlzIHRocmVh
ZAogICAgIC8vIHRvIHJlLXZhbGlkYXRlIHRoZWlyIHJlZ2lvbnMuIEtlZXBpbmcgYSBzZXQgb2Yg
b2JzZXJ2ZXIgdGhyZWFkcyBtYWtlIGl0IGVhc3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDFkYmQyMzhkZjI4YTg4
N2Q4ODg3NTUxYTA0YzczNjM0ZGUxMzMyNTUuLjdjZDA4YmU0ZmUxZWFhZDUyMGQ1M2YxZjA3NjYw
ZTQxMjI0NTQzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlR2VuZXJhdGVkSW1hZ2UuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVHZW5lcmF0ZWRJbWFnZShXVEY6Om1vdmUodmFsdWUp
KSk7CiAgICAgfQogCi0gICAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgaW1hZ2VWYWx1ZSgpIHsg
cmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5nZXQoKTsgfQorICAgIENTU0ltYWdlR2VuZXJh
dG9yVmFsdWUmIGltYWdlVmFsdWUoKSB7IHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWU7IH0K
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBkYXRhKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gJm1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5nZXQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2MjJkMTIzZGFjZWRlZjVjNjU2
OTk2M2RiMTkwNjNjZjFkOTI5ZWNmLi5mMTQ5NzMwOTQxZmY2YTgzZGZlMWUzN2EzNzhjN2M4N2E0
MTM2Y2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
Mzc1LDcgKzM3NSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAgICAgaWYgKG1fcHJvY2Vz
cy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpSdW5uaW5nKSB7CiAgICAgICAg
IGlmIChtX3VzZXJDb250ZW50Q29udHJvbGxlcikKICAgICAgICAgICAgIG1fcHJvY2Vzcy0+YWRk
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKm1fdXNlckNvbnRlbnRDb250cm9sbGVyKTsK
LSAgICAgICAgbV9wcm9jZXNzLT5hZGRWaXNpdGVkTGlua1Byb3ZpZGVyKG1fdmlzaXRlZExpbmtQ
cm92aWRlci5nZXQoKSk7CisgICAgICAgIG1fcHJvY2Vzcy0+YWRkVmlzaXRlZExpbmtQcm92aWRl
cihtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIpOwogICAgIH0KIAogICAgIHVwZGF0ZVZpZXdTdGF0ZSgp
OwpAQCAtMzE2OSw3ICszMTY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRGaW5p
c2hMYXVuY2hpbmcoKQogCiAgICAgaWYgKG1fdXNlckNvbnRlbnRDb250cm9sbGVyKQogICAgICAg
ICBtX3Byb2Nlc3MtPmFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCptX3VzZXJDb250
ZW50Q29udHJvbGxlcik7Ci0gICAgbV9wcm9jZXNzLT5hZGRWaXNpdGVkTGlua1Byb3ZpZGVyKG1f
dmlzaXRlZExpbmtQcm92aWRlci5nZXQoKSk7CisgICAgbV9wcm9jZXNzLT5hZGRWaXNpdGVkTGlu
a1Byb3ZpZGVyKG1fdmlzaXRlZExpbmtQcm92aWRlcik7CiB9CiAKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCAzZDIxNjVmNGI2NDM0NmM4Y2I2MjIwNzhkN2IxMmRjODE5MDRjZmE3Li42YzdhM2EwNWM0OWQ0
MGYxYTQ2Mzc5NzU0NjRjZjM4YjIxMmYxNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0yNTUsNyArMjU1LDcgQEAgcHVibGljOgogICAgIFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHkqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuZ2V0KCk7IH0KICNlbmRpZgogCi0g
ICAgV2ViQmFja0ZvcndhcmRMaXN0JiBiYWNrRm9yd2FyZExpc3QoKSB7IHJldHVybiBtX2JhY2tG
b3J3YXJkTGlzdC5nZXQoKTsgfQorICAgIFdlYkJhY2tGb3J3YXJkTGlzdCYgYmFja0ZvcndhcmRM
aXN0KCkgeyByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3Q7IH0KIAogICAgIGJvb2wgYWRkc1Zpc2l0
ZWRMaW5rcygpIGNvbnN0IHsgcmV0dXJuIG1fYWRkc1Zpc2l0ZWRMaW5rczsgfQogICAgIHZvaWQg
c2V0QWRkc1Zpc2l0ZWRMaW5rcyhib29sIGFkZHNWaXNpdGVkTGlua3MpIHsgbV9hZGRzVmlzaXRl
ZExpbmtzID0gYWRkc1Zpc2l0ZWRMaW5rczsgfQpAQCAtNzM4LDEzICs3MzgsMTMgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNWYWxpZEtleXByZXNzQ29tbWFuZE5hbWUoY29uc3QgU3RyaW5nJiBuYW1l
KSBjb25zdCB7IHJldHVybiBtX2tub3duS2V5cHJlc3NDb21tYW5kTmFtZXMuY29udGFpbnMobmFt
ZSk7IH0KICNlbmRpZgogCi0gICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgeyByZXR1cm4g
bV9wcm9jZXNzLmdldCgpOyB9CisgICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgeyByZXR1
cm4gbV9wcm9jZXNzOyB9CiAgICAgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRl
bnRpZmllcigpIGNvbnN0OwogCi0gICAgV2ViUHJlZmVyZW5jZXMmIHByZWZlcmVuY2VzKCkgeyBy
ZXR1cm4gbV9wcmVmZXJlbmNlcy5nZXQoKTsgfQorICAgIFdlYlByZWZlcmVuY2VzJiBwcmVmZXJl
bmNlcygpIHsgcmV0dXJuIG1fcHJlZmVyZW5jZXM7IH0KICAgICB2b2lkIHNldFByZWZlcmVuY2Vz
KFdlYlByZWZlcmVuY2VzJik7CiAKLSAgICBXZWJQYWdlR3JvdXAmIHBhZ2VHcm91cCgpIHsgcmV0
dXJuIG1fcGFnZUdyb3VwLmdldCgpOyB9CisgICAgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAoKSB7
IHJldHVybiBtX3BhZ2VHcm91cDsgfQogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggYjIwYzA3
MWVmODcxYTRkNWQ5NzJjNWI1MmNhN2Q0OTM0ZDlkNTgxZC4uODg0ZWM0NDllM2Q4ZGI4NGE0NDg3
YjRlYmNlNzJmMDcxNmI4OTc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKQEAgLTYxNiw3ICs2MTYsNyBAQCBEb3dubG9hZFByb3h5KiBXZWJQcm9j
ZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZQogICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQogICAgICAgICBtX2Rvd25sb2FkUHJveHlN
YXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkUHJveHlNYXA+KHRoaXMpOwogCi0gICAgcmV0
dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eShtX2NvbnRleHQuZ2V0
KCksIHJlcXVlc3QpOworICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25s
b2FkUHJveHkobV9jb250ZXh0LCByZXF1ZXN0KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
TmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIHVpbnQ2NF90IGZyYW1lSUQpIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGI2M2Y2ZTM0NjA2NTVkZDJm
OWE3MGU2NWEyNDkxMDU0MjJiYmRkYjIuLjZjNzQwMjZlMzA4NWM2Y2VkZDUwMTU2ODA3MWMyZTU1
OTZhYzIyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
QEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogCiAgICAgV2ViQ29ubmVjdGlvbiogd2ViQ29ubmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQoKTsgfQogCi0gICAgV2Vi
Q29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIFdlYkNv
bnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogICAgIHN0YXRpYyBXZWJQ
YWdlUHJveHkqIHdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKICAgICBQYXNzUmVmUHRyPFdlYlBh
Z2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgY29uc3QgV2ViUGFnZUNvbmZpZ3Vy
YXRpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IDYzOWMyMGUwMDBh
ZWQ3OThjMmI3M2NkMWYwNGNmYjZjMmI1ZDY0ZjYuLmMyNWMyZThjODhlMjljNWUyYTg0YzY4MDI2
N2I1ZGY1MDhjY2Q0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtNDEs
NyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyPiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKICAgICB2aXJ0dWFs
IH5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIoKTsKIAotICAgIFdlYkNvcmU6OlVzZXJDb250ZW50
Q29udHJvbGxlciYgdXNlckNvbnRlbnRDb250cm9sbGVyKCkgeyByZXR1cm4gbV91c2VyQ29udGVu
dENvbnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXIm
IHVzZXJDb250ZW50Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
OyB9CiAKICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
IAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240910</attachid>
            <date>2014-11-03 21:23:42 -0800</date>
            <delta_ts>2014-11-03 23:22:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138331-20141103212353.patch</filename>
            <type>text/plain</type>
            <size>40994</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5NjE4MGM5MjQ1ZTk4YmEzODMzNGYy
MWNkNzI0M2QzNWNmOGMyM2EuLmQyMDNmOGM1YjBjZDg5NzdjZDgxNGE0OTMxNzAyZmFhYTBlYmVm
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTQtMTEtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gUmVm
PFQ+IHRvIFQmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzgzMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBbGxvdyBpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gUmVmPFQ+IHRvIFQmIHRvIHJlZHVjZSB0
aGUgYW1vdW50IG9mCisgICAgICAgIFJlZjw+OjpnZXQoKSBjYWxscyBpbiB0aGUgY29kZSBhbmQg
aW5jcmVhc2UgcmVhZGFiaWxpdHkuIFVubGlrZSBmb3IKKyAgICAgICAgUmVmUHRyLCBkb2luZyB0
aGlzIGZvciBSZWYgc2hvdWxkIG5vdCBiZSBlcnJvciBwcm9uZS4KKworICAgICAgICAqIHd0Zi9S
ZWYuaDoKKyAgICAgICAgKFdURjo6UmVmOjpvcGVyYXRvciBUJik6CisgICAgICAgIChXVEY6OlJl
Zjo6b3BlcmF0b3IgY29uc3QgVCYpOgorICAgICAgICAqIHd0Zi9SdW5Mb29wLmNwcDoKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6SG9sZGVyOjpydW5Mb29wKToKKwogMjAxNC0xMC0zMSAgSmVmZnJl
eSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBBU2Fu
IGJ1aWxkIGFmdGVyIHIxNzUzODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NDgyZGM0MTkyMGIzZWJhZmNjODU3
MWFiMDQ1YjVmYmNjZmRjMDkzLi45YzZkMjIxOWQ0OWQ4M2JhYTZiYTliNzFlNjYyOWMzZjA1NWIx
NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMTEtMDMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBpbXBsaWNpdCBjb252ZXJzaW9u
IGZyb20gUmVmPFQ+IHRvIFQmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzgzMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgY2FsbHMgdG8gUmVmPFQ+OjpnZXQoKSBub3cg
dGhhdCBhIFJlZjxUPiBjYW4gYmUKKyAgICAgICAgY29udmVydGVkIGltcGxpY2l0bHkgdG8gYSBU
Ji4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwogMjAxNC0x
MS0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBO
b24tZmFzdCBzY3JvbGxhYmxlIHJlZ2lvbiBvdmVybGF5IG9mZnNldHMgdGhlIG92ZXJsYXkgYnkg
dG9wQ29udGVudEluc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDZkYzFkZjA0ZTNhYTEyMjYxOWE0NTE5ZjZl
MWRiOWI0ZDRlNzM4Yi4uMzg1YTJmMTAxZDViMTI4Yzc1OWZlMTI4OWMwMTk1N2E3M2JjOGMxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTExLTAzICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgaW1wbGljaXQgY29udmVyc2lvbiBmcm9t
IFJlZjxUPiB0byBUJgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTM4MzMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGNhbGxzIHRvIFJlZjxUPjo6Z2V0KCkgbm93IHRoYXQg
YSBSZWY8VD4gY2FuIGJlCisgICAgICAgIGNvbnZlcnRlZCBpbXBsaWNpdGx5IHRvIGEgVCYuCisK
IDIwMTQtMTEtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgRXhwb3NlIHZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zIHByZWYgdmlhIHRoZSBXSzIg
QyBTUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZi5oIGIvU291cmNlL1dURi93dGYv
UmVmLmgKaW5kZXggZjljNjU4ODUxNTYwNDdkM2RiMDUzNmZkMGFhMGJhNzZkNjkzODdiOS4uZTNm
MzRkY2NlNDM5YTE0ZjgwNWJmODBhNGY2YTI2ODZiNzZkMTVkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvUmVmLmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmLmgKQEAgLTYxLDYgKzYxLDkg
QEAgcHVibGljOgogICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICptX3B0cjsgfQog
ICAgIFQmIGdldCgpIHsgcmV0dXJuICptX3B0cjsgfQogCisgICAgb3BlcmF0b3IgVCYoKSB7IHJl
dHVybiAqbV9wdHI7IH0KKyAgICBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgcmV0dXJuICpt
X3B0cjsgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUGFzc1JlZjxUPiByZXBsYWNlKFBh
c3NSZWY8VT4pIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAKaW5k
ZXggODVhZDZkODU4YjQzYmE3Njk0YzQ4ZWJkNDIxMzQ5NzY2MzBiOTY3Zi4uNGQ0MzEwYTIxODgy
ZTlmNTU0OTI4MzY5MTQ1NTAzODlhNmY3OTJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBSdW5Mb29wJiBydW5Mb29wKCkgeyBy
ZXR1cm4gbV9ydW5Mb29wLmdldCgpOyB9CisgICAgUnVuTG9vcCYgcnVuTG9vcCgpIHsgcmV0dXJu
IG1fcnVuTG9vcDsgfQogCiBwcml2YXRlOgogICAgIFJlZjxSdW5Mb29wPiBtX3J1bkxvb3A7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggNTMx
MDUzZGMzNmYzYzNhODc3NGM5ZTY5NGFkOTljNDBiMjBhMzFlNy4uY2VkYjU5YzczNTJhY2RmMTBh
MzE3NmEwN2IyMTgzYWU3NTJjNjhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93U2hlbGwuaApAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgMCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6UHVyZUZvcndhcmRpbmdQcm94eVR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKICAgICAgICAgfQogCi0gICAgICAgIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CisgICAgICAgIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IEpTRE9NV2luZG93U2hlbGwoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgRE9NV3JhcHBlcldv
cmxkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCAyMDU5M2ExMmZmZDQ1MDVi
ZGMzNzZlZGE1ZjFkM2JlZWJiOWRkMzIxLi40MDE3YjlmYTNkOGJkNzdlZGZkZTUyMGJlOWYxMDk4
NWExMGViNGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTExMyw3ICsxMTMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckNoaWxkUnVsZUNTU09NV3JhcHBlcnMoKTsKICAg
ICB2b2lkIHJlYXR0YWNoQ2hpbGRSdWxlQ1NTT01XcmFwcGVycygpOwogCi0gICAgU3R5bGVTaGVl
dENvbnRlbnRzJiBjb250ZW50cygpIHsgcmV0dXJuIG1fY29udGVudHMuZ2V0KCk7IH0KKyAgICBT
dHlsZVNoZWV0Q29udGVudHMmIGNvbnRlbnRzKCkgeyByZXR1cm4gbV9jb250ZW50czsgfQogCiAg
ICAgdm9pZCBkZXRhY2hGcm9tRG9jdW1lbnQoKSB7IG1fb3duZXJOb2RlID0gbnVsbHB0cjsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKaW5kZXggNDRhNTc2MmUzNTJjZTRlZjg4
YzNlMDk3NjgyMjc3NjdiMDkwNDAyYy4uMDE2ZjMzMjVkNDk3NWYwZDE4MDk0Njg0ZmU2NDg0MGFm
YTEyMDA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcApAQCAtNTUwLDcgKzU1
MCw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2UoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgQ1NTVmFsdWUqIHZhbHVlLCBOCiAgICAgICAgICAgICApCiAgICAgICAgICAg
ICBpbWFnZS5zZXRJbWFnZShzdHlsZUltYWdlKGltYWdlUHJvcGVydHksIGN1cnJlbnQuZ2V0KCkp
KTsKICAgICAgICAgZWxzZSBpZiAoaXM8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPihjdXJyZW50
LmdldCgpKSkKLSAgICAgICAgICAgIG1hcE5pbmVQaWVjZUltYWdlU2xpY2UoY3VycmVudC5nZXQo
KSwgaW1hZ2UpOworICAgICAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2VTbGljZShjdXJyZW50LCBp
bWFnZSk7CiAgICAgICAgIGVsc2UgaWYgKGlzPENTU1ZhbHVlTGlzdD4oY3VycmVudC5nZXQoKSkp
IHsKICAgICAgICAgICAgIENTU1ZhbHVlTGlzdCYgc2xhc2hMaXN0ID0gZG93bmNhc3Q8Q1NTVmFs
dWVMaXN0PihjdXJyZW50LmdldCgpKTsKICAgICAgICAgICAgIC8vIE1hcCBpbiB0aGUgaW1hZ2Ug
c2xpY2VzLgpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwTmluZVBp
ZWNlSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTVmFsdWUqIHZhbHVlLCBOCiAgICAg
ICAgICAgICAgICAgaW1hZ2Uuc2V0T3V0c2V0KG1hcE5pbmVQaWVjZUltYWdlUXVhZCgqc2xhc2hM
aXN0Lml0ZW0oMikpKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4o
Y3VycmVudC5nZXQoKSkpIHsKICAgICAgICAgICAgIC8vIFNldCB0aGUgYXBwcm9wcmlhdGUgcnVs
ZXMgZm9yIHN0cmV0Y2gvcm91bmQvcmVwZWF0IG9mIHRoZSBzbGljZXMuCi0gICAgICAgICAgICBt
YXBOaW5lUGllY2VJbWFnZVJlcGVhdChjdXJyZW50LmdldCgpLCBpbWFnZSk7CisgICAgICAgICAg
ICBtYXBOaW5lUGllY2VJbWFnZVJlcGVhdChjdXJyZW50LCBpbWFnZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXggMGU4MTZjMjJkM2JhMmNiYWI1ZjA0YjdhZTI4
NmUwZTNmOWQ1YmJlYS4uMDFlZTYyYWViOTVjODQzY2UzY2I0NTNmMzdkOGM3OTBiNTMzZTZlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAgLTI0Nyw3ICsyNDcsNyBAQCBpbmxpbmUgYm9vbCBjb21w
YXJlQ1NTVmFsdWVQdHIoY29uc3QgUmVmUHRyPENTU1ZhbHVlVHlwZT4mIGZpcnN0LCBjb25zdCBS
ZWZQdHI8QwogdGVtcGxhdGU8dHlwZW5hbWUgQ1NTVmFsdWVUeXBlPgogaW5saW5lIGJvb2wgY29t
cGFyZUNTU1ZhbHVlKGNvbnN0IFJlZjxDU1NWYWx1ZVR5cGU+JiBmaXJzdCwgY29uc3QgUmVmPENT
U1ZhbHVlVHlwZT4mIHNlY29uZCkKIHsKLSAgICByZXR1cm4gZmlyc3QuZ2V0KCkuZXF1YWxzKHNl
Y29uZC5nZXQoKSk7CisgICAgcmV0dXJuIGZpcnN0LmdldCgpLmVxdWFscyhzZWNvbmQpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCmlu
ZGV4IDllYWE3YWExNDkzOWFhMWEzMDI5ZmE1ZmI2ZjYwN2Q5ZmY4MTJkYjMuLjkxMTg0NGU2OWIw
MjY5ODU3ZDIyOTcxMzM4OThiYTU2ZTVmNzE5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxp
c3QuY3BwCkBAIC05Niw4ICs5Niw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1
ZUxpc3Q6OmNvcHkoKQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gbV92YWx1ZXMuc2l6ZSgp
OyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBuZXdMaXN0LT5hcHBlbmQobV92YWx1ZXNbaV0uZ2V0
KCkpOworICAgIGZvciAoYXV0byYgdmFsdWUgOiBtX3ZhbHVlcykKKyAgICAgICAgbmV3TGlzdC0+
YXBwZW5kKHZhbHVlLmdldCgpKTsKICAgICByZXR1cm4gbmV3TGlzdC5yZWxlYXNlKCk7CiB9CiAK
QEAgLTExOSwxMCArMTE5LDEwIEBAIFN0cmluZyBDU1NWYWx1ZUxpc3Q6OmN1c3RvbUNTU1RleHQo
KSBjb25zdAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwLCBzaXplID0gbV92YWx1ZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7
CisgICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fdmFsdWVzKSB7CiAgICAgICAgIGlmICghcmVzdWx0
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc2VwYXJhdG9yKTsKLSAgICAg
ICAgcmVzdWx0LmFwcGVuZChtX3ZhbHVlc1tpXS5nZXQoKS5jc3NUZXh0KCkpOworICAgICAgICBy
ZXN1bHQuYXBwZW5kKHZhbHVlLmdldCgpLmNzc1RleHQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHJlc3VsdC50b1N0cmluZygpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIGJvb2wgQ1NTVmFsdWVMaXN0
OjplcXVhbHMoY29uc3QgQ1NTVmFsdWVMaXN0JiBvdGhlcikgY29uc3QKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IG1fdmFsdWVzLnNpemUo
KTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAoIW1fdmFsdWVzW2ldLmdldCgpLmVxdWFs
cyhvdGhlci5tX3ZhbHVlc1tpXS5nZXQoKSkpCisgICAgICAgIGlmICghbV92YWx1ZXNbaV0uZ2V0
KCkuZXF1YWxzKG90aGVyLm1fdmFsdWVzW2ldKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRl
ZFN0eWxlQnVpbGRlci5jcHAKaW5kZXggYzJiNDg3NWUzYzk5OGI1OTE0OTg1M2RmMDNhNzliZmQ3
NTUxMTYxMi4uZTcyN2VkMmU1YzUzNThlMThhZjE5NTQ1YTU4ZGJlYjE3ZmEwYTY4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcApAQCAtMTU3OSw3
ICsxNTc5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUg
OiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICBpZiAo
Y2hpbGRJbmRleCA8PSBsaXN0LT5zaXplKCkpCiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsKLSAgICAgICAgICAgICAgICBtYXAoc3R5bGVSZXNv
bHZlciwgbGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCBjdXJyZW50VmFsdWUuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgIG1hcChzdHlsZVJlc29sdmVyLCBsaXN0LT5hbmltYXRpb24oY2hpbGRJ
bmRleCksIGN1cnJlbnRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgKytjaGlsZEluZGV4OwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5jcHAKaW5kZXggM2FhMmJiYWJiMjJhNzYzZjk4ZWJlNjliNWYyNTVmNGI0
MWY1YmE1My4uZGU3Mzc3N2M5Nzg0YjA4NjlmNzRlZjYxOTNiMGQ0OThkNzdhNjg5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC01Miw3ICs1Miw3
IEBAIHN0YXRpYyBjb25zdCBTdHlsZVByb3BlcnRpZXMmIGxlZnRUb1JpZ2h0RGVjbGFyYXRpb24o
KQogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4+
IGxlZnRUb1JpZ2h0RGVjbChNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKSk7CiAgICAg
aWYgKGxlZnRUb1JpZ2h0RGVjbC5nZXQoKS0+aXNFbXB0eSgpKQogICAgICAgICBsZWZ0VG9SaWdo
dERlY2wuZ2V0KCktPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZUx0
cik7Ci0gICAgcmV0dXJuIGxlZnRUb1JpZ2h0RGVjbC5nZXQoKS5nZXQoKTsKKyAgICByZXR1cm4g
bGVmdFRvUmlnaHREZWNsLmdldCgpOwogfQogCiBzdGF0aWMgY29uc3QgU3R5bGVQcm9wZXJ0aWVz
JiByaWdodFRvTGVmdERlY2xhcmF0aW9uKCkKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIGNvbnN0
IFN0eWxlUHJvcGVydGllcyYgcmlnaHRUb0xlZnREZWNsYXJhdGlvbigpCiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPj4gcmlnaHRUb0xlZnREZWNs
KE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpKTsKICAgICBpZiAocmlnaHRUb0xlZnRE
ZWNsLmdldCgpLT5pc0VtcHR5KCkpCiAgICAgICAgIHJpZ2h0VG9MZWZ0RGVjbC5nZXQoKS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIENTU1ZhbHVlUnRsKTsKLSAgICByZXR1cm4g
cmlnaHRUb0xlZnREZWNsLmdldCgpLmdldCgpOworICAgIHJldHVybiByaWdodFRvTGVmdERlY2wu
Z2V0KCk7CiB9CiAKIGNsYXNzIE1hdGNoUmVxdWVzdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKaW5kZXggNmVjMDkyMmNkZjJkMzhjMGE2ODkyZTkxZDIyODNmYWQzYmZmZmNiYi4u
YzJhZjcxYmRmMTMyODMzNmRjYzc1NTRmNzQ4NTQ3ZmVmYWQ3YzliNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTk3OSw3ICsxOTc5LDcgQEAgc3RhdGljIGJvb2wgY3Jl
YXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1ZSogdmFsdWUsIFZlY3RvcjxHcmlkVHJhY2tTaXplPiYg
dHJhY2tTaXoKIAogICAgICAgICArK2N1cnJlbnROYW1lZEdyaWRMaW5lOwogICAgICAgICBHcmlk
VHJhY2tTaXplIHRyYWNrU2l6ZTsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tTaXplKGN1
cnJlbnRWYWx1ZS5nZXQoKSwgdHJhY2tTaXplLCBzdGF0ZSkpCisgICAgICAgIGlmICghY3JlYXRl
R3JpZFRyYWNrU2l6ZShjdXJyZW50VmFsdWUsIHRyYWNrU2l6ZSwgc3RhdGUpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHRyYWNrU2l6ZXMuYXBwZW5kKHRyYWNrU2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggZGQ5ZDNiZDhkOWNhMTQ2ZGZjNWRhMjI5OGRkMDNh
YTY5ZmM1ZWFlZS4uYTI0ZDkyNGI0OWE5MDBiMWMyOGIzNWNlN2U5MzZkNDQxZmMyNzkxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICB+U3R5
bGVSdWxlKCk7CiAKICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JMaXN0OyB9Ci0gICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVz
JiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLmdldCgpOyB9CisgICAg
Y29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9w
ZXJ0aWVzOyB9CiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgbXV0YWJsZVByb3BlcnRpZXMo
KTsKICAgICAKICAgICB2b2lkIHBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxp
c3QuYWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvcnMpOyB9CkBAIC0xNDUsNyArMTQ1LDcgQEAg
cHVibGljOgogICAgIAogICAgIH5TdHlsZVJ1bGVGb250RmFjZSgpOwogCi0gICAgY29uc3QgU3R5
bGVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLmdl
dCgpOyB9CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9wZXJ0aWVzOyB9CiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgbXV0YWJs
ZVByb3BlcnRpZXMoKTsKIAogICAgIFBhc3NSZWY8U3R5bGVSdWxlRm9udEZhY2U+IGNvcHkoKSBj
b25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZUZvbnRGYWNlKCp0aGlzKSk7IH0K
QEAgLTE2NSw3ICsxNjUsNyBAQCBwdWJsaWM6CiAgICAgflN0eWxlUnVsZVBhZ2UoKTsKIAogICAg
IGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JM
aXN0LmZpcnN0KCk7IH0gICAgCi0gICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVz
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLmdldCgpOyB9CisgICAgY29uc3QgU3R5bGVQ
cm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzOyB9CiAg
ICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgbXV0YWJsZVByb3BlcnRpZXMoKTsKIAogICAgIHZv
aWQgcGFyc2VyQWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1Bh
cnNlclNlbGVjdG9yPj4mIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9y
VmVjdG9yKHNlbGVjdG9ycyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NLZXlmcmFtZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFt
ZVJ1bGUuaAppbmRleCA5YjBlYzQ0NTU1NDI3OWZlYTdkMTNlYTBjYjFkNzM5MTA0NGJhMTJkLi5k
NTFhMzJmNDhlMmZhMjNlYTgwYTNhZTc4ZmM3MTdmMjhmYzMzZmY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU0tleWZyYW1lUnVsZS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZ2V0S2V5cyhWZWN0b3I8ZG91YmxlPiYga2V5cykgY29uc3QgICB7IHBhcnNl
S2V5U3RyaW5nKG1fa2V5LCBrZXlzKTsgfQogICAgIAotICAgIGNvbnN0IFN0eWxlUHJvcGVydGll
cyYgcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5nZXQoKTsgfQorICAg
IGNvbnN0IFN0eWxlUHJvcGVydGllcyYgcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
cGVydGllczsgfQogICAgIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIG11dGFibGVQcm9wZXJ0aWVz
KCk7CiAgICAgCiAgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCA5YjE2YzZiYWM4YWIyYTlmMzAw
MTkxNjBlOGM5ODAwYWE5ODQxNjNlLi5jYjVjMmIwNTE0MGJiZDg2Y2E1OTk2ZTY3ZGJjZTcyNDlj
NGMxNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6
Y2hpbGRBZGRlZChOb2RlJiBjaGlsZFJlZikKIAogICAgIFJlZjxOb2RlPiBjaGlsZChjaGlsZFJl
Zik7CiAKLSAgICBpZiAoIWlzQWRkZWROb2RlSW5PcmRlcihjaGlsZC5nZXQoKSkpCisgICAgaWYg
KCFpc0FkZGVkTm9kZUluT3JkZXIoY2hpbGQpKQogICAgICAgICBlbnF1ZXVlTXV0YXRpb25SZWNv
cmQoKTsKIAogICAgIGlmIChpc0VtcHR5KCkpIHsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIENo
aWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OndpbGxSZW1vdmVDaGlsZChOb2RlJiBjaGlsZFJl
ZikKIAogICAgIFJlZjxOb2RlPiBjaGlsZChjaGlsZFJlZik7CiAKLSAgICBpZiAoIW1fYWRkZWRO
b2Rlcy5pc0VtcHR5KCkgfHwgIWlzUmVtb3ZlZE5vZGVJbk9yZGVyKGNoaWxkLmdldCgpKSkKKyAg
ICBpZiAoIW1fYWRkZWROb2Rlcy5pc0VtcHR5KCkgfHwgIWlzUmVtb3ZlZE5vZGVJbk9yZGVyKGNo
aWxkKSkKICAgICAgICAgZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7CiAKICAgICBpZiAoaXNFbXB0
eSgpKSB7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxh
dG9yOjplbnF1ZXVlTXV0YXRpb25SZWNvcmQoKQogCiAgICAgUmVmUHRyPE5vZGVMaXN0PiBhZGRl
ZE5vZGVzID0gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG1fYWRkZWROb2Rlcyk7CiAgICAgUmVmUHRy
PE5vZGVMaXN0PiByZW1vdmVkTm9kZXMgPSBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobV9yZW1vdmVk
Tm9kZXMpOwotICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gcmVjb3JkID0gTXV0YXRpb25SZWNv
cmQ6OmNyZWF0ZUNoaWxkTGlzdChtX3RhcmdldC5nZXQoKSwgYWRkZWROb2Rlcy5yZWxlYXNlKCks
IHJlbW92ZWROb2Rlcy5yZWxlYXNlKCksIG1fcHJldmlvdXNTaWJsaW5nLnJlbGVhc2UoKSwgbV9u
ZXh0U2libGluZy5yZWxlYXNlKCkpOworICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gcmVjb3Jk
ID0gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxkTGlzdChtX3RhcmdldCwgYWRkZWROb2Rlcy5y
ZWxlYXNlKCksIHJlbW92ZWROb2Rlcy5yZWxlYXNlKCksIG1fcHJldmlvdXNTaWJsaW5nLnJlbGVh
c2UoKSwgbV9uZXh0U2libGluZy5yZWxlYXNlKCkpOwogICAgIG1fb2JzZXJ2ZXJzLT5lbnF1ZXVl
TXV0YXRpb25SZWNvcmQocmVjb3JkLnJlbGVhc2UoKSk7CiAgICAgbV9sYXN0QWRkZWQgPSAwOwog
ICAgIEFTU0VSVChpc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0No
aWxkTm9kZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuY3BwCmlu
ZGV4IGUwYzE2NjU2Y2RjZWZkMDQwODExM2RiMjMxMzM0ZjA5NDhmYzZiODkuLmI2OTNiY2Q5NGE5
NzdhMTQyNmEyYWVjZjY3MmY0ZjIxMDAwNDc1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGlsZE5vZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2Rl
TGlzdC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgTm9kZSogQ2hpbGROb2RlTGlzdDo6bmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKICAgICAgICAgaWYgKCFlbGVtZW50IHx8
ICFtX3BhcmVudC5nZXQoKS50cmVlU2NvcGUoKS5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRo
SWQobmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgZm9yIChh
dXRvJiBlbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4obV9wYXJlbnQuZ2V0KCkpKSB7
CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4obV9wYXJl
bnQpKSB7CiAgICAgICAgIGlmIChlbGVtZW50Lmhhc0lEKCkgJiYgZWxlbWVudC5pZEZvclN0eWxl
UmVzb2x1dGlvbigpID09IG5hbWUpCiAgICAgICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxFbGVt
ZW50Kj4oJmVsZW1lbnQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGlsZE5vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oCmluZGV4
IGIxOWZjYThlOGIyNTk5ZjUzNGM1NjlhMmZiODU2NDMzMGI5MmM0MWQuLjdlOTIzZWViNzBjYmI0
YTUxZWNiMTM1YWUxNWExOGUyMWFhY2IzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGlsZE5vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3Qu
aApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkVtcHR5Tm9k
ZUxpc3QoKTsKIAotICAgIE5vZGUmIG93bmVyTm9kZSgpIHsgcmV0dXJuIG1fb3duZXIuZ2V0KCk7
IH0KKyAgICBOb2RlJiBvd25lck5vZGUoKSB7IHJldHVybiBtX293bmVyOyB9CiAKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgRW1wdHlOb2RlTGlzdChOb2RlJiBvd25lcikgOiBtX293bmVyKG93bmVy
KSB7IH0KQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+Q2hpbGROb2Rl
TGlzdCgpOwogCi0gICAgQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKCkgeyByZXR1cm4gbV9wYXJl
bnQuZ2V0KCk7IH0KKyAgICBDb250YWluZXJOb2RlJiBvd25lck5vZGUoKSB7IHJldHVybiBtX3Bh
cmVudDsgfQogCiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCmluZGV4IDExZmU5NmI3N2M5ZmMyNzg2MDY1NGZiOTI4MjZhZTY2MmY0
ODhjMDEuLjI5YzZiZWUzODc4MzQwNDg5NmUzYzY1NzFjOTkwMTFlNzRkZDAyMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTExNSw4ICsxMTUsOCBAQCB2b2lkIENvbnRh
aW5lck5vZGU6OnRha2VBbGxDaGlsZHJlbkZyb20oQ29udGFpbmVyTm9kZSogb2xkUGFyZW50KQog
CiAgICAgaWYgKG9sZFBhcmVudC0+ZG9jdW1lbnQoKS5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlw
ZShNdXRhdGlvbk9ic2VydmVyOjpDaGlsZExpc3QpKSB7CiAgICAgICAgIENoaWxkTGlzdE11dGF0
aW9uU2NvcGUgbXV0YXRpb24oKm9sZFBhcmVudCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG11dGF0aW9uLndpbGxS
ZW1vdmVDaGlsZChjaGlsZHJlbltpXS5nZXQoKSk7CisgICAgICAgIGZvciAoYXV0byYgY2hpbGQg
OiBjaGlsZHJlbikKKyAgICAgICAgICAgIG11dGF0aW9uLndpbGxSZW1vdmVDaGlsZChjaGlsZCk7
CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZG8gbm90aWZ5TXV0YXRpb25PYnNl
cnZlcnNOb2RlV2lsbERldGFjaCgpIGZvciBlYWNoIGNoaWxkLApAQCAtMTI0LDEzICsxMjQsMTEg
QEAgdm9pZCBDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKENvbnRhaW5lck5vZGUq
IG9sZFBhcmVudCkKIAogICAgIG9sZFBhcmVudC0+cmVtb3ZlRGV0YWNoZWRDaGlsZHJlbigpOwog
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIE5vZGUmIGNoaWxkID0gY2hpbGRyZW5baV0uZ2V0KCk7Ci0KKyAgICBmb3IgKGF1dG8m
IGNoaWxkIDogY2hpbGRyZW4pIHsKICAgICAgICAgZGVzdHJveVJlbmRlclRyZWVJZk5lZWRlZChj
aGlsZCk7CiAKICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgYSBubyBtdXRhdGlvbiBldmVudCB2
ZXJzaW9uIG9mIGFkb3B0Tm9kZS4KLSAgICAgICAgUmVmUHRyPE5vZGU+IGFkb3B0ZWRDaGlsZCA9
IGRvY3VtZW50KCkuYWRvcHROb2RlKCZjaGlsZHJlbltpXS5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CisgICAgICAgIFJlZlB0cjxOb2RlPiBhZG9wdGVkQ2hpbGQgPSBkb2N1bWVudCgpLmFk
b3B0Tm9kZSgmY2hpbGQuZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICBwYXJz
ZXJBcHBlbmRDaGlsZChhZG9wdGVkQ2hpbGQuZ2V0KCkpOwogICAgICAgICAvLyBGSVhNRTogVG9n
ZXRoZXIgd2l0aCBhZG9wdE5vZGUgYWJvdmUsIHRoZSB0cmVlIHNjb3BlIG1pZ2h0IGdldCB1cGRh
dGVkIHJlY3Vyc2l2ZWx5IHR3aWNlCiAgICAgICAgIC8vIChpZiB0aGUgZG9jdW1lbnQgY2hhbmdl
ZCBvciBvbGRQYXJlbnQgd2FzIGluIGEgc2hhZG93IHRyZWUsIEFORCAqdGhpcyBpcyBpbiBhIHNo
YWRvdyB0cmVlKS4KQEAgLTI5OSw3ICsyOTcsNyBAQCBib29sIENvbnRhaW5lck5vZGU6Omluc2Vy
dEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZQog
CiAgICAgICAgIHRyZWVTY29wZSgpLmFkb3B0SWZOZWVkZWQoJmNoaWxkKTsKIAotICAgICAgICBp
bnNlcnRCZWZvcmVDb21tb24obmV4dC5nZXQoKSwgY2hpbGQpOworICAgICAgICBpbnNlcnRCZWZv
cmVDb21tb24obmV4dCwgY2hpbGQpOwogCiAgICAgICAgIHVwZGF0ZVRyZWVBZnRlckluc2VydGlv
bihjaGlsZCk7CiAgICAgfQpAQCAtNTQ5LDcgKzU0Nyw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6
cmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgd2lsbFJlbW92ZUNoaWxkKGNoaWxkLmdldCgpKTsK
KyAgICB3aWxsUmVtb3ZlQ2hpbGQoY2hpbGQpOwogCiAgICAgLy8gTXV0YXRpb24gZXZlbnRzIG1p
Z2h0IGhhdmUgbW92ZWQgdGhpcyBjaGlsZCBpbnRvIGEgZGlmZmVyZW50IHBhcmVudC4KICAgICBp
ZiAoY2hpbGQtPnBhcmVudE5vZGUoKSAhPSB0aGlzKSB7CkBAIC01NjIsMTEgKzU2MCwxMSBAQCBi
b29sIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkKE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25D
b2RlJiBlYykKIAogICAgICAgICBOb2RlKiBwcmV2ID0gY2hpbGQtPnByZXZpb3VzU2libGluZygp
OwogICAgICAgICBOb2RlKiBuZXh0ID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIHJl
bW92ZUJldHdlZW4ocHJldiwgbmV4dCwgY2hpbGQuZ2V0KCkpOworICAgICAgICByZW1vdmVCZXR3
ZWVuKHByZXYsIG5leHQsIGNoaWxkKTsKIAotICAgICAgICBub3RpZnlDaGlsZFJlbW92ZWQoY2hp
bGQuZ2V0KCksIHByZXYsIG5leHQsIENoaWxkQ2hhbmdlU291cmNlQVBJKTsKKyAgICAgICAgbm90
aWZ5Q2hpbGRSZW1vdmVkKGNoaWxkLCBwcmV2LCBuZXh0LCBDaGlsZENoYW5nZVNvdXJjZUFQSSk7
CiAKLSAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKCp0aGlzKS5ub3RpZnkoY2hpbGQu
Z2V0KCkpOworICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoKnRoaXMpLm5vdGlmeShj
aGlsZCk7CiAgICAgfQogCiAKQEAgLTY2Myw4ICs2NjEsOCBAQCB2b2lkIENvbnRhaW5lck5vZGU6
OnJlbW92ZUNoaWxkcmVuKCkKICAgICAgICAgQ2hpbGRDaGFuZ2UgY2hhbmdlID0geyBBbGxDaGls
ZHJlblJlbW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIENoaWxkQ2hhbmdlU291cmNlQVBJIH07CiAg
ICAgICAgIGNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogICAgICAgICAKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByZW1vdmVkQ2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgICAg
ICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoKnRoaXMpLm5vdGlmeShyZW1vdmVkQ2hpbGRyZW5b
aV0uZ2V0KCkpOworICAgICAgICBmb3IgKGF1dG8mIHJlbW92ZWRDaGlsZCA6IHJlbW92ZWRDaGls
ZHJlbikKKyAgICAgICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcigqdGhpcykubm90aWZ5
KHJlbW92ZWRDaGlsZCk7CiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50KCkuc3ZnRXh0ZW5zaW9u
cygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29y
aXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNw
cAppbmRleCAzN2M5NDY3ODc1NjlhYmI4MWU2ZWE5YzMwNWMxYTg3N2FmZTE2MDY2Li45OTJkYTJj
MWExNGI1Y2VmMzRhZWQxYjVkZjkwMmM5OGUwNDZlYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKQEAgLTE2NywxMiArMTY3LDEzIEBAIHZv
aWQgZGlzY29ubmVjdFN1YmZyYW1lcyhDb250YWluZXJOb2RlJiByb290LCBTdWJmcmFtZURpc2Nv
bm5lY3RQb2xpY3kgcG9saWN5KQogICAgIC8vIGluc2VydCBtb3JlIGZyYW1lcyBhbmQgY3JlYXRl
IGxvYWRlZCBmcmFtZXMgaW4gZGV0YWNoZWQgc3VidHJlZXMuCiAgICAgU3ViZnJhbWVMb2FkaW5n
RGlzYWJsZXIgZGlzYWJsZXIocm9vdCk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZnJhbWVPd25lcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgb3duZXIgPSBmcmFtZU93
bmVyc1tpXS5nZXQoKTsKKyAgICBib29sIGlzRmlyc3QgPSB0cnVlOworICAgIGZvciAoYXV0byYg
b3duZXIgOiBmcmFtZU93bmVycykgewogICAgICAgICAvLyBEb24ndCBuZWVkIHRvIHRyYXZlcnNl
IHVwIHRoZSB0cmVlIGZvciB0aGUgZmlyc3Qgb3duZXIgc2luY2Ugbm8KICAgICAgICAgLy8gc2Ny
aXB0IGNvdWxkIGhhdmUgbW92ZWQgaXQuCi0gICAgICAgIGlmICghaSB8fCByb290LmNvbnRhaW5z
SW5jbHVkaW5nU2hhZG93RE9NKCZvd25lcikpCi0gICAgICAgICAgICBvd25lci5kaXNjb25uZWN0
Q29udGVudEZyYW1lKCk7CisgICAgICAgIGlmIChpc0ZpcnN0IHx8IHJvb3QuY29udGFpbnNJbmNs
dWRpbmdTaGFkb3dET00oJm93bmVyLmdldCgpKSkKKyAgICAgICAgICAgIG93bmVyLmdldCgpLmRp
c2Nvbm5lY3RDb250ZW50RnJhbWUoKTsKKyAgICAgICAgaXNGaXJzdCA9IGZhbHNlOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDMxYjMyZjUwZjRkZWQ2N2Y1YWQ1NTZjN2NiMzBiNzI4
Njk4Mjk5MWEuLjBlNmE1YmFlMTcyZjM2ZTJiOWRjODEwMWUzZmQxNDJlN2E0M2Y1YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTEzNjQsNyArMTM2NCw3IEBAIHZvaWQgTm9kZTo6c2V0VGV4dENvbnRl
bnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgY2FzZSBF
TlRJVFlfUkVGRVJFTkNFX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9E
RTogewogICAgICAgICAgICAgUmVmPENvbnRhaW5lck5vZGU+IGNvbnRhaW5lcihkb3duY2FzdDxD
b250YWluZXJOb2RlPigqdGhpcykpOwotICAgICAgICAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29w
ZSBtdXRhdGlvbihjb250YWluZXIuZ2V0KCkpOworICAgICAgICAgICAgQ2hpbGRMaXN0TXV0YXRp
b25TY29wZSBtdXRhdGlvbihjb250YWluZXIpOwogICAgICAgICAgICAgY29udGFpbmVyLT5yZW1v
dmVDaGlsZHJlbigpOwogICAgICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAg
ICAgICAgICBjb250YWluZXItPmFwcGVuZENoaWxkKGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUo
dGV4dCksIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHAKaW5kZXggZTMxMGRhNDIxMjQzNWNmN2E5ZjM4MjhmYmQ5MzJlNDBkMmZlYjkzYS4uNzg1N2Zk
OTE5YzNhZTQ3Yjg0NmQ1MTkxMzU1ZjhiZjZlYThiNDUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTEwNTEsOCArMTA1MSw4IEBAIHZvaWQg
QXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKEVkaXRpbmdT
dHlsZSogc3R5bGUsIE5vZGUqCiAKICAgICAgICAgLy8gVGhlIGlubmVyIGxvb3Agd2lsbCBnbyB0
aHJvdWdoIGNoaWxkcmVuIG9uIGVhY2ggbGV2ZWwKICAgICAgICAgLy8gRklYTUU6IHdlIHNob3Vs
ZCBhZ2dyZWdhdGUgaW5saW5lIGNoaWxkIGVsZW1lbnRzIHRvZ2V0aGVyIHNvIHRoYXQgd2UgZG9u
J3Qgd3JhcCBlYWNoIGNoaWxkIHNlcGFyYXRlbHkuCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY3VycmVudENoaWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBOb2RlJiBj
aGlsZCA9IGN1cnJlbnRDaGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgZm9yIChSZWY8Tm9kZT4m
IGNoaWxkUmVmIDogY3VycmVudENoaWxkcmVuKSB7CisgICAgICAgICAgICBOb2RlJiBjaGlsZCA9
IGNoaWxkUmVmOwogICAgICAgICAgICAgaWYgKCFjaGlsZC5wYXJlbnROb2RlKCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIWNoaWxkLmNvbnRhaW5zKHRhcmdl
dE5vZGUpICYmIGVsZW1lbnRzVG9QdXNoRG93bi5zaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdENvbW1hbmQuaAppbmRleCAwYjY1YzFmZGI1OTI3NDE0NTM5Y2U2Y2IwY2Q2NGNiZDcwMWNj
ZTU2Li4wM2U2YzM3YmRlNWFkNTg5MjUxMWQ3OGE0MGE1ZTQyYmI5NzRjMDgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCkBAIC02NCw3ICs2NCw3IEBAIHByb3RlY3RlZDoKICAg
ICBFZGl0Q29tbWFuZChEb2N1bWVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJik7CiAKICAgICBGcmFtZSYgZnJhbWUoKTsKLSAgICBEb2N1bWVudCYg
ZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CisgICAgRG9jdW1lbnQmIGRv
Y3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5k
KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIHZvaWQgc2V0U3RhcnRp
bmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0RW5kaW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA2ZTA4OTUxNTM3ZTIyNjVkY2RhYjdlZTE2MjI1ZGQw
ZDBhMGMyN2MxLi44NGE4ZGQxZmIyMTFkZDA0M2RlMjgxNmRlMDJlNmYxMDMwNTQxYzUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xMjIxLDcgKzEyMjEsNyBAQCBib29sIEVkaXRv
cjo6aW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwg
Ym9vbCBzZWxlY3RJbgogICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IFR5cGluZ0NvbW1h
bmQ6OlNlbGVjdEluc2VydGVkVGV4dDsKICAgICAgICAgICAgICAgICBpZiAoYXV0b2NvcnJlY3Rp
b25XYXNBcHBsaWVkKQogICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IFR5cGluZ0NvbW1h
bmQ6OlJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yOwotICAgICAgICAgICAgICAgIFR5cGlu
Z0NvbW1hbmQ6Omluc2VydFRleHQoZG9jdW1lbnQuZ2V0KCksIHRleHQsIHNlbGVjdGlvbiwgb3B0
aW9ucywgdHJpZ2dlcmluZ0V2ZW50ICYmIHRyaWdnZXJpbmdFdmVudC0+aXNDb21wb3NpdGlvbigp
ID8gVHlwaW5nQ29tbWFuZDo6VGV4dENvbXBvc2l0aW9uQ29uZmlybSA6IFR5cGluZ0NvbW1hbmQ6
OlRleHRDb21wb3NpdGlvbk5vbmUpOworICAgICAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6Omlu
c2VydFRleHQoZG9jdW1lbnQsIHRleHQsIHNlbGVjdGlvbiwgb3B0aW9ucywgdHJpZ2dlcmluZ0V2
ZW50ICYmIHRyaWdnZXJpbmdFdmVudC0+aXNDb21wb3NpdGlvbigpID8gVHlwaW5nQ29tbWFuZDo6
VGV4dENvbXBvc2l0aW9uQ29uZmlybSA6IFR5cGluZ0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvbk5v
bmUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBSZXZlYWwgdGhlIGN1cnJlbnQg
c2VsZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0KaW5kZXggYmI3NjBjYzc1ZGNmY2E5MDhkNjIyM2FhZGM5ZmE2ZGZhMzAzNzk1OC4uOWYyNzk4
NGNhNGVmOWQxMjcxOGZlZjVlNDg4YWYwYjgzMjE5MzcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNTYzLDcgKzU2Myw3IEBAIEhUTUxD
b252ZXJ0ZXI6On5IVE1MQ29udmVydGVyKCkKIAogTlNBdHRyaWJ1dGVkU3RyaW5nICpIVE1MQ29u
dmVydGVyOjpjb252ZXJ0KCkKIHsKLSAgICBOb2RlKiBjb21tb25BbmNlc3RvckNvbnRhaW5lciA9
IF9jYWNoZXMtPmNhY2hlQW5jZXN0b3JzT2ZTdGFydFRvQmVDb252ZXJ0ZWQobV9yYW5nZS5nZXQo
KSk7CisgICAgTm9kZSogY29tbW9uQW5jZXN0b3JDb250YWluZXIgPSBfY2FjaGVzLT5jYWNoZUFu
Y2VzdG9yc09mU3RhcnRUb0JlQ29udmVydGVkKG1fcmFuZ2UpOwogICAgIEFTU0VSVChjb21tb25B
bmNlc3RvckNvbnRhaW5lcik7CiAKICAgICBtX2RhdGFTb3VyY2UgPSBjb21tb25BbmNlc3RvckNv
bnRhaW5lci0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDBlOGZmODM3ZmVlNDBiZmMwMjFkOWZjMmY5
OWViMTIzZDNiNDJkY2EuLjQxZDZkNTlmNjJmYTVjYzM3Y2NlNDEwYWM4ZGM1MjE1YjU5OTA0ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTk1NywyNSArOTU3LDI1IEBAIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0
cmluZyYgbWFya3VwLCBIVE1MCiAgICAgQVNTRVJUKGVsZW1lbnQpOwogICAgIGlmIChlbGVtZW50
LT5pZUZvcmJpZHNJbnNlcnRIVE1MKCkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAog
ICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGNvbFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFt
ZShjb2xncm91cFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykKICAgICAg
ICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShoZWFkVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1l
KHN0eWxlVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKHRpdGxlVGFnKSkgewogICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50
ID0gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChtYXJrdXAsIGVsZW1lbnQsIHBhcnNl
ckNvbnRlbnRQb2xpY3ksIGVjKTsKICAgICBpZiAoIWZyYWdtZW50KQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBXZSBuZWVkIHRvIHBvcCA8aHRt
bD4gYW5kIDxib2R5PiBlbGVtZW50cyBhbmQgcmVtb3ZlIDxoZWFkPiB0bwogICAgIC8vIGFjY29t
bW9kYXRlIGZvbGtzIHBhc3NpbmcgY29tcGxldGUgSFRNTCBkb2N1bWVudHMgdG8gbWFrZSB0aGUK
ICAgICAvLyBjaGlsZCBvZiBhbiBlbGVtZW50LgogICAgIGF1dG8gdG9SZW1vdmUgPSBjb2xsZWN0
RWxlbWVudHNUb1JlbW92ZUZyb21GcmFnbWVudCgqZnJhZ21lbnQpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b1JlbW92ZS5zaXplKCk7ICsraSkKLSAgICAgICAgcmVtb3ZlRWxlbWVu
dEZyb21GcmFnbWVudFByZXNlcnZpbmdDaGlsZHJlbigqZnJhZ21lbnQsIHRvUmVtb3ZlW2ldLmdl
dCgpKTsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiB0b1JlbW92ZSkKKyAgICAgICAgcmVtb3Zl
RWxlbWVudEZyb21GcmFnbWVudFByZXNlcnZpbmdDaGlsZHJlbigqZnJhZ21lbnQsIGVsZW1lbnQp
OwogCiAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKIH0KQEAgLTk5NCw3ICs5OTQsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzT25lVGV4dENoaWxkKENvbnRhaW5lck5vZGUqIG5vZGUp
CiB2b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudChDb250YWluZXJOb2RlJiBjb250YWlu
ZXIsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIFJlZjxDb250YWluZXJOb2RlPiBjb250YWluZXJOb2RlKGNvbnRhaW5lcik7
Ci0gICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbihjb250YWluZXJOb2RlLmdldCgp
KTsKKyAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKGNvbnRhaW5lck5vZGUpOwog
CiAgICAgaWYgKCFmcmFnbWVudC0+Zmlyc3RDaGlsZCgpKSB7CiAgICAgICAgIGNvbnRhaW5lck5v
ZGUtPnJlbW92ZUNoaWxkcmVuKCk7CkBAIC0xMDE4LDcgKzEwMTgsNyBAQCB2b2lkIHJlcGxhY2VD
aGlsZHJlbldpdGhGcmFnbWVudChDb250YWluZXJOb2RlJiBjb250YWluZXIsIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcgogdm9pZCByZXBsYWNlQ2hpbGRyZW5XaXRoVGV4dChDb250YWluZXJOb2RlJiBj
b250YWluZXIsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
UmVmPENvbnRhaW5lck5vZGU+IGNvbnRhaW5lck5vZGUoY29udGFpbmVyKTsKLSAgICBDaGlsZExp
c3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKGNvbnRhaW5lck5vZGUuZ2V0KCkpOworICAgIENoaWxk
TGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24oY29udGFpbmVyTm9kZSk7CiAKICAgICBpZiAoaGFz
T25lVGV4dENoaWxkKCZjb250YWluZXJOb2RlLmdldCgpKSkgewogICAgICAgICBkb3duY2FzdDxU
ZXh0PigqY29udGFpbmVyTm9kZS0+Zmlyc3RDaGlsZCgpKS5zZXREYXRhKHRleHQsIGVjKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5oCmluZGV4IGE0YTc3YWFi
NzYwNjNiNmE4MDY2MjRiYzhlZDY2NGU5MjIwNDczM2UuLjZiZmIxNmUxMjQ1MzE3NzAzZTdmNmZk
NGY5NWRhNDhhZmUzNjE4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc0dyYWRpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
R3JhZGllbnQuaApAQCAtNDcsOCArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc0dyYWRpZW50KHAwLCByMCwgcDEsIHIxKSk7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEdyYWRpZW50JiBncmFkaWVudCgpIHsgcmV0
dXJuIG1fZ3JhZGllbnQuZ2V0KCk7IH0KLSAgICAgICAgY29uc3QgR3JhZGllbnQmIGdyYWRpZW50
KCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVudC5nZXQoKTsgfQorICAgICAgICBHcmFkaWVudCYg
Z3JhZGllbnQoKSB7IHJldHVybiBtX2dyYWRpZW50OyB9CisgICAgICAgIGNvbnN0IEdyYWRpZW50
JiBncmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhZGllbnQ7IH0KIAogICAgICAgICB2b2lk
IGFkZENvbG9yU3RvcChmbG9hdCB2YWx1ZSwgY29uc3QgU3RyaW5nJiBjb2xvciwgRXhjZXB0aW9u
Q29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKaW5k
ZXggMGVhMGJjOTQ3ZjE5NTBhYjY0MTQ3MGNiYzE1MDBlY2ZhMWQyODk4MC4uODUzY2UyNjJmY2I0
MTE3ZjU2M2Y4NmZjZGVlZTFkMzAxMWY0ZTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1BhdHRlcm4uaApAQCAtNDUsOCArNDUsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgdm9pZCBwYXJzZVJlcGV0aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVhdFgs
IGJvb2wmIHJlcGVhdFksIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhdHRlcm4mIHBhdHRlcm4o
KSB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KLSAgICBjb25zdCBQYXR0ZXJuJiBwYXR0ZXJu
KCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmdldCgpOyB9CisgICAgUGF0dGVybiYgcGF0dGVy
bigpIHsgcmV0dXJuIG1fcGF0dGVybjsgfQorICAgIGNvbnN0IFBhdHRlcm4mIHBhdHRlcm4oKSBj
b25zdCB7IHJldHVybiBtX3BhdHRlcm47IH0KIAogICAgIGJvb2wgb3JpZ2luQ2xlYW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbkNsZWFuOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKaW5kZXggNDAzZTE5NTcxYzZkNjZkZmQwNzc2ZjY3NTA5NzUzZWE5MTU5MjU1Ni4u
YzFkZjlmYzU3ZmMxN2I0M2QyMTdjZWNhMzdiZTEwZjA4NWVhY2Q4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCgpIGNvbnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QoKTsKIAotICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VM
b2FkZXIoKSB7IHJldHVybiBtX2NhY2hlZFJlc291cmNlTG9hZGVyLmdldCgpOyB9CisgICAgICAg
IENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIG1f
Y2FjaGVkUmVzb3VyY2VMb2FkZXI7IH0KIAogICAgICAgICBjb25zdCBTdWJzdGl0dXRlRGF0YSYg
c3Vic3RpdHV0ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3N1YnN0aXR1dGVEYXRhOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGZjOGJiMTZlZDhmODY2NTZhZTc2
NzNlMjJkNGY3YWM4MDcwMDljZDguLjY3NWI3NmE1NmVlMzdhNTFkZDU3YTU2YTI3MzAwNzA4ZGFi
OTgzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzI4Niw4ICsz
Mjg2LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdHNJ
bkFsbFdvcmxkcygpCiAKICAgICBWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+IHdvcmxkczsK
ICAgICBTY3JpcHRDb250cm9sbGVyOjpnZXRBbGxXb3JsZHMod29ybGRzKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdvcmxkcy5zaXplKCk7ICsraSkKLSAgICAgICAgZGlzcGF0Y2hEaWRD
bGVhcldpbmRvd09iamVjdEluV29ybGQod29ybGRzW2ldLmdldCgpKTsKKyAgICBmb3IgKGF1dG8m
IHdvcmxkIDogd29ybGRzKQorICAgICAgICBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5X
b3JsZCh3b3JsZCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC0zMzA5LDggKzMzMDks
OCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZUluQWxs
V29ybGRzKCkKIHsKICAgICBWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+IHdvcmxkczsKICAg
ICBTY3JpcHRDb250cm9sbGVyOjpnZXRBbGxXb3JsZHMod29ybGRzKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHdvcmxkcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9jbGllbnQuZGlzcGF0
Y2hHbG9iYWxPYmplY3RBdmFpbGFibGUod29ybGRzW2ldLmdldCgpKTsKKyAgICBmb3IgKGF1dG8m
IHdvcmxkIDogd29ybGRzKQorICAgICAgICBtX2NsaWVudC5kaXNwYXRjaEdsb2JhbE9iamVjdEF2
YWlsYWJsZSh3b3JsZCk7CiB9CiAKIFNhbmRib3hGbGFncyBGcmFtZUxvYWRlcjo6ZWZmZWN0aXZl
U2FuZGJveEZsYWdzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAwOGJm
OTA5ODY2MzQ2NTdjZDQ3NDI3NjlkZDhiNGIxMWRlOGE4NjQxLi5mYmMzMWQyM2QzYTYxYTMwYjkw
MjhlYTNlMTQ1NWJkYmE1ODI4NTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0y
NTQsOCArMjU0LDggQEAgYm9vbCBET01XaW5kb3c6OmRpc3BhdGNoQWxsUGVuZGluZ0JlZm9yZVVu
bG9hZEV2ZW50cygpCiAgICAgZm9yIChhdXRvIGl0ID0gc2V0LmJlZ2luKCksIGVuZCA9IHNldC5l
bmQoKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICB3aW5kb3dzLnVuY2hlY2tlZEFwcGVuZCgq
aXQtPmtleSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2luZG93cy5zaXplKCk7
ICsraSkgewotICAgICAgICBET01XaW5kb3cmIHdpbmRvdyA9IHdpbmRvd3NbaV0uZ2V0KCk7Cisg
ICAgZm9yIChSZWY8RE9NV2luZG93PiYgd2luZG93UmVmIDogd2luZG93cykgeworICAgICAgICBE
T01XaW5kb3cmIHdpbmRvdyA9IHdpbmRvd1JlZjsKICAgICAgICAgaWYgKCFzZXQuY29udGFpbnMo
JndpbmRvdykpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMjkxLDExICsyOTEsMTEgQEAg
dm9pZCBET01XaW5kb3c6OmRpc3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50cygpCiAKICAgICBW
ZWN0b3I8UmVmPERPTVdpbmRvdz4+IHdpbmRvd3M7CiAgICAgd2luZG93cy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHNldC5zaXplKCkpOwotICAgIGZvciAoYXV0byBpdCA9IHNldC5iZWdpbigpLCBl
bmQgPSBzZXQuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgd2luZG93cy51bmNoZWNr
ZWRBcHBlbmQoKml0LT5rZXkpOworICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiBzZXQpCisgICAg
ICAgIHdpbmRvd3MudW5jaGVja2VkQXBwZW5kKCprZXlWYWx1ZS5rZXkpOwogCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHdpbmRvd3Muc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgRE9NV2lu
ZG93JiB3aW5kb3cgPSB3aW5kb3dzW2ldLmdldCgpOworICAgIGZvciAoUmVmPERPTVdpbmRvdz4m
IHdpbmRvd1JlZiA6IHdpbmRvd3MpIHsKKyAgICAgICAgRE9NV2luZG93JiB3aW5kb3cgPSB3aW5k
b3dSZWY7CiAgICAgICAgIGlmICghc2V0LmNvbnRhaW5zKCZ3aW5kb3cpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNzMyYzk4MTFiM2Y5NDUwY2VmOGYzOWZhYTBlMjEy
ZTMyY2JlMDUyZi4uMWE3Y2QyYTM0YjFmOTM5NTNiYTlmMjExZGRiMTVjNjc5MmFiZDg0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJv
bGxlci5jcHAKQEAgLTUxNiw3ICs1MTYsNyBAQCBQYXNzUmVmPFJlbmRlclN0eWxlPiBBbmltYXRp
b25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25zKFJlbmRlckVsZW1lbnQmIHJlbmRlcgogICAg
IFJlZjxSZW5kZXJTdHlsZT4gbmV3U3R5bGVCZWZvcmVBbmltYXRpb24oV1RGOjptb3ZlKG5ld1N0
eWxlKSk7CiAKICAgICBDb21wb3NpdGVBbmltYXRpb24mIHJlbmRlcmVyQW5pbWF0aW9ucyA9IG1f
ZGF0YS0+ZW5zdXJlQ29tcG9zaXRlQW5pbWF0aW9uKHJlbmRlcmVyKTsKLSAgICBhdXRvIGJsZW5k
ZWRTdHlsZSA9IHJlbmRlcmVyQW5pbWF0aW9ucy5hbmltYXRlKHJlbmRlcmVyLCBvbGRTdHlsZSwg
bmV3U3R5bGVCZWZvcmVBbmltYXRpb24uZ2V0KCkpOworICAgIGF1dG8gYmxlbmRlZFN0eWxlID0g
cmVuZGVyZXJBbmltYXRpb25zLmFuaW1hdGUocmVuZGVyZXIsIG9sZFN0eWxlLCBuZXdTdHlsZUJl
Zm9yZUFuaW1hdGlvbik7CiAKICAgICBpZiAocmVuZGVyZXIucGFyZW50KCkgfHwgbmV3U3R5bGVC
ZWZvcmVBbmltYXRpb24tPmFuaW1hdGlvbnMoKSB8fCAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPmFu
aW1hdGlvbnMoKSkpIHsKICAgICAgICAgbV9kYXRhLT51cGRhdGVBbmltYXRpb25UaW1lckZvclJl
bmRlcmVyKHJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuY3BwCmluZGV4IDkyNmFhNWM3NWJjNDFiNTYyMzgz
N2YxZjY4YmQzZjMzNGM3ZTkxMjAuLmEyYjYyZGJlYzIwODA1NjQ3NDRlMzI0NmQ2YzgzYjY4YmMw
NzI4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb3ZlcmFnZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvdmVyYWdlTWFwLmNwcApAQCAtNDgsNyArNDgsNyBAQCBUaWxlQ292ZXJhZ2VNYXA6
OlRpbGVDb3ZlcmFnZU1hcChjb25zdCBUaWxlQ29udHJvbGxlciYgY29udHJvbGxlcikKICAgICBt
X3Zpc2libGVSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dDNEKCkpOwogICAgIG1fdmlzaWJsZVJlY3RJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRCb3JkZXJD
b2xvcihDb2xvcigyNTUsIDAsIDApKTsKIAotICAgIG1fbGF5ZXIuZ2V0KCkuYXBwZW5kU3VibGF5
ZXIobV92aXNpYmxlUmVjdEluZGljYXRvckxheWVyLmdldCgpKTsKKyAgICBtX2xheWVyLmdldCgp
LmFwcGVuZFN1YmxheWVyKG1fdmlzaWJsZVJlY3RJbmRpY2F0b3JMYXllcik7CiAKICAgICB1cGRh
dGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb3ZlcmFnZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUNvdmVyYWdlTWFwLmgKaW5kZXggMDRlM2MyNTAzYWQyMDI2ODAxMDQ1OTMzM2IzZmIwNzM4
MjQ3ZGQxMy4uMmI5OGFmY2FmMzdmMDI1ZDQxOGIwMzhmMGFjOWEzN2VjOWU2MDJiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFw
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdl
TWFwLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlKCk7CiAgICAg
dm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikgeyBtX3Bvc2l0aW9u
ID0gcG9zaXRpb247IH0KIAotICAgIFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIoKSB7IHJldHVybiBt
X2xheWVyLmdldCgpOyB9CisgICAgUGxhdGZvcm1DQUxheWVyJiBsYXllcigpIHsgcmV0dXJuIG1f
bGF5ZXI7IH0KIAogICAgIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaAppbmRleCBiYjBh
NThjZmNhNzM1OTgxYmEyM2UzYmU5MDY4NmNlY2EwMTkxZGZhLi4xOGZiMzI2Mjc3ZTljMzNlNjM3
NjhkZDA4MGRlZGFhYzk4OWVhZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVHcmlkLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIFRpbGVH
cmlkKFRpbGVDb250cm9sbGVyJik7CiAgICAgflRpbGVHcmlkKCk7CiAKLSAgICBQbGF0Zm9ybUNB
TGF5ZXImIGNvbnRhaW5lckxheWVyKCkgeyByZXR1cm4gbV9jb250YWluZXJMYXllci5nZXQoKTsg
fQorICAgIFBsYXRmb3JtQ0FMYXllciYgY29udGFpbmVyTGF5ZXIoKSB7IHJldHVybiBtX2NvbnRh
aW5lckxheWVyOyB9CiAKICAgICB2b2lkIHNldFNjYWxlKGZsb2F0KTsKICAgICBmbG9hdCBzY2Fs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0NsaXBQYXRoT3BlcmF0aW9uLmgKaW5kZXggZTcyMzFlNmNhNDAzMjhlZmU0YjA2MmUyOWE4MTEz
NzJjZGNkNjU1OS4uYjllNzAyNDdiY2UwMGYyNzFhMmE4Mzg0ZTcyZTA0ZDZiZmM5YzVmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgKQEAgLTEwMSw3
ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcGVDbGlw
UGF0aE9wZXJhdGlvbihXVEY6Om1vdmUoc2hhcGUpKSk7CiAgICAgfQogCi0gICAgY29uc3QgQmFz
aWNTaGFwZSYgYmFzaWNTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUuZ2V0KCk7IH0KKyAg
ICBjb25zdCBCYXNpY1NoYXBlJiBiYXNpY1NoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZTsg
fQogICAgIFdpbmRSdWxlIHdpbmRSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZS5nZXQoKS53
aW5kUnVsZSgpOyB9CiAgICAgY29uc3QgUGF0aCBwYXRoRm9yUmVmZXJlbmNlUmVjdChjb25zdCBG
bG9hdFJlY3QmIGJvdW5kaW5nUmVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKaW5kZXggZDg3M2YxYjdiM2ZmNTY2ZTI0N2M1
ZWRlYTlhMmVmMDMwOTJiMmYwNi4uNzM0ZDAyZTk1MDg0OGU5YzhlOTQ5ZjVhNmQyZDM0NjM1NGNh
N2RiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dU
aHJlYWQuaApAQCAtMTI4LDggKzEyOCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckNvbnRl
bnRFbGVtZW50cygpOwogICAgIHZvaWQgdXBkYXRlV3JpdGluZ01vZGUoKTsKIAotICAgIFdlYktp
dE5hbWVkRmxvdyYgbmFtZWRGbG93KCkgeyByZXR1cm4gbV9uYW1lZEZsb3cuZ2V0KCk7IH0KLSAg
ICBjb25zdCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZWRGbG93LmdldCgpOyB9CisgICAgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3coKSB7IHJldHVy
biBtX25hbWVkRmxvdzsgfQorICAgIGNvbnN0IFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lZEZsb3c7IH0KIAogICAgIC8vIE9ic2VydmVyIGZsb3cgdGhy
ZWFkcyBoYXZlIGludmFsaWQgcmVnaW9ucyB0aGF0IGRlcGVuZCBvbiB0aGUgc3RhdGUgb2YgdGhp
cyB0aHJlYWQKICAgICAvLyB0byByZS12YWxpZGF0ZSB0aGVpciByZWdpb25zLiBLZWVwaW5nIGEg
c2V0IG9mIG9ic2VydmVyIHRocmVhZHMgbWFrZSBpdCBlYXN5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAxZGJkMjM4
ZGYyOGE4ODdkODg4NzU1MWEwNGM3MzYzNGRlMTMzMjU1Li43Y2QwOGJlNGZlMWVhYWQ1MjBkNTNm
MWYwNzY2MGU0MTIyNDU0MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlR2VuZXJhdGVkSW1hZ2UoV1RGOjptb3Zl
KHZhbHVlKSkpOwogICAgIH0KIAotICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUmIGltYWdlVmFs
dWUoKSB7IHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCk7IH0KKyAgICBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlJiBpbWFnZVZhbHVlKCkgeyByZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZh
bHVlOyB9CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICZtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNjIyZDEyM2RhY2Vk
ZWY1YzY1Njk5NjNkYjE5MDYzY2YxZDkyOWVjZi4uZjE0OTczMDk0MWZmNmE4M2RmZTFlMzdhMzc4
YzdjODdhNDEzNmNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTM3NSw3ICszNzUsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogICAgIGlmICht
X3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6UnVubmluZykgewog
ICAgICAgICBpZiAobV91c2VyQ29udGVudENvbnRyb2xsZXIpCiAgICAgICAgICAgICBtX3Byb2Nl
c3MtPmFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCptX3VzZXJDb250ZW50Q29udHJv
bGxlcik7Ci0gICAgICAgIG1fcHJvY2Vzcy0+YWRkVmlzaXRlZExpbmtQcm92aWRlcihtX3Zpc2l0
ZWRMaW5rUHJvdmlkZXIuZ2V0KCkpOworICAgICAgICBtX3Byb2Nlc3MtPmFkZFZpc2l0ZWRMaW5r
UHJvdmlkZXIobV92aXNpdGVkTGlua1Byb3ZpZGVyKTsKICAgICB9CiAKICAgICB1cGRhdGVWaWV3
U3RhdGUoKTsKQEAgLTMxNjksNyArMzE2OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNz
RGlkRmluaXNoTGF1bmNoaW5nKCkKIAogICAgIGlmIChtX3VzZXJDb250ZW50Q29udHJvbGxlcikK
ICAgICAgICAgbV9wcm9jZXNzLT5hZGRXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgqbV91
c2VyQ29udGVudENvbnRyb2xsZXIpOwotICAgIG1fcHJvY2Vzcy0+YWRkVmlzaXRlZExpbmtQcm92
aWRlcihtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIuZ2V0KCkpOworICAgIG1fcHJvY2Vzcy0+YWRkVmlz
aXRlZExpbmtQcm92aWRlcihtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIpOwogfQogCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggNTk1MzIwMDY0MWQ2Mzc4YjMxZjlkZWE4ZWQzODkyNzkyODYwYzk0Mi4uOTJhMzFh
MzQyNWVmMzVjMjJjMjI5NzYxMzA4Y2E1MDhiYWFmMjI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjU1LDcgKzI1NSw3IEBAIHB1YmxpYzoKICAgICBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5KiBzY3JvbGxpbmdDb29yZGluYXRvclByb3h5KCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmdldCgpOyB9CiAjZW5k
aWYKIAotICAgIFdlYkJhY2tGb3J3YXJkTGlzdCYgYmFja0ZvcndhcmRMaXN0KCkgeyByZXR1cm4g
bV9iYWNrRm9yd2FyZExpc3QuZ2V0KCk7IH0KKyAgICBXZWJCYWNrRm9yd2FyZExpc3QmIGJhY2tG
b3J3YXJkTGlzdCgpIHsgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0OyB9CiAKICAgICBib29sIGFk
ZHNWaXNpdGVkTGlua3MoKSBjb25zdCB7IHJldHVybiBtX2FkZHNWaXNpdGVkTGlua3M7IH0KICAg
ICB2b2lkIHNldEFkZHNWaXNpdGVkTGlua3MoYm9vbCBhZGRzVmlzaXRlZExpbmtzKSB7IG1fYWRk
c1Zpc2l0ZWRMaW5rcyA9IGFkZHNWaXNpdGVkTGlua3M7IH0KQEAgLTczOCwxMyArNzM4LDEzIEBA
IHB1YmxpYzoKICAgICBib29sIGlzVmFsaWRLZXlwcmVzc0NvbW1hbmROYW1lKGNvbnN0IFN0cmlu
ZyYgbmFtZSkgY29uc3QgeyByZXR1cm4gbV9rbm93bktleXByZXNzQ29tbWFuZE5hbWVzLmNvbnRh
aW5zKG5hbWUpOyB9CiAjZW5kaWYKIAotICAgIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIHsg
cmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQorICAgIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vzcygp
IHsgcmV0dXJuIG1fcHJvY2VzczsgfQogICAgIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgcHJv
Y2Vzc0lkZW50aWZpZXIoKSBjb25zdDsKIAotICAgIFdlYlByZWZlcmVuY2VzJiBwcmVmZXJlbmNl
cygpIHsgcmV0dXJuIG1fcHJlZmVyZW5jZXMuZ2V0KCk7IH0KKyAgICBXZWJQcmVmZXJlbmNlcyYg
cHJlZmVyZW5jZXMoKSB7IHJldHVybiBtX3ByZWZlcmVuY2VzOyB9CiAgICAgdm9pZCBzZXRQcmVm
ZXJlbmNlcyhXZWJQcmVmZXJlbmNlcyYpOwogCi0gICAgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAo
KSB7IHJldHVybiBtX3BhZ2VHcm91cC5nZXQoKTsgfQorICAgIFdlYlBhZ2VHcm91cCYgcGFnZUdy
b3VwKCkgeyByZXR1cm4gbV9wYWdlR3JvdXA7IH0KIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IGIyMGMwNzFlZjg3MWE0ZDVkOTcyYzViNTJjYTdkNDkzNGQ5ZDU4MWQuLjg4NGVjNDQ5ZTNkOGRi
ODRhNDQ4N2I0ZWJjZTcyZjA3MTZiODk3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC02MTYsNyArNjE2LDcgQEAgRG93bmxvYWRQcm94eSog
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWUKICAgICBpZiAoIW1fZG93bmxvYWRQcm94eU1hcCkKICAgICAgICAgbV9kb3dubG9h
ZFByb3h5TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZFByb3h5TWFwPih0aGlzKTsKIAot
ICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHkobV9jb250
ZXh0LmdldCgpLCByZXF1ZXN0KTsKKyAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVh
dGVEb3dubG9hZFByb3h5KG1fY29udGV4dCwgcmVxdWVzdCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCB1aW50NjRfdCBmcmFtZUlEKSAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBiNjNmNmUzNDYw
NjU1ZGQyZjlhNzBlNjVhMjQ5MTA1NDIyYmJkZGIyLi42Yzc0MDI2ZTMwODVjNmNlZGQ1MDE1Njgw
NzFjMmU1NTk2YWMyMjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvbm5lY3Rpb24qIHdl
YkNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3dlYkNvbm5lY3Rpb24uZ2V0KCk7IH0KIAot
ICAgIFdlYkNvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAg
ICBXZWJDb250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CiAKICAgICBzdGF0
aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgUGFzc1JlZlB0
cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIGNvbnN0IFdlYlBhZ2VD
b25maWd1cmF0aW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAppbmRleCA2Mzlj
MjBlMDAwYWVkNzk4YzJiNzNjZDFmMDRjZmI2YzJiNWQ2NGY2Li5jMjVjMmU4Yzg4ZTI5YzVlMmE4
NGM2ODAyNjdiNWRmNTA4Y2NkNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcj4gZ2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcik7CiAgICAg
dmlydHVhbCB+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyKCk7CiAKLSAgICBXZWJDb3JlOjpVc2Vy
Q29udGVudENvbnRyb2xsZXImIHVzZXJDb250ZW50Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyLmdldCgpOyB9CisgICAgV2ViQ29yZTo6VXNlckNvbnRlbnRDb250
cm9sbGVyJiB1c2VyQ29udGVudENvbnRyb2xsZXIoKSB7IHJldHVybiBtX3VzZXJDb250ZW50Q29u
dHJvbGxlcjsgfQogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfSAKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>