<?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>113231</bug_id>
          
          <creation_ts>2013-03-25 12:19:45 -0700</creation_ts>
          <short_desc>Cleanup plugin snapshotting autostart decision making</short_desc>
          <delta_ts>2013-03-25 16:37:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Plug-ins</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>esprehn+autocc</cc>
    
    <cc>jonlee</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>862968</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-03-25 12:19:45 -0700</bug_when>
    <thetext>Make a few changes to the way plugins decide to autostart or snapshot:

- move the hashing code from WebCore into the client layer (all WebCore should ask is given a tuple of plugin origin, page origin and mime type, will this plugin autostart?)
- allow for two ways to decide on autostart in WK2. The first is the hash list based on user interaction, the second is an explicit set of autostarts that come from the host</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862969</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-03-25 12:20:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/13497730&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863060</commentid>
    <comment_count>2</comment_count>
      <attachid>194922</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-03-25 14:17:46 -0700</bug_when>
    <thetext>Created attachment 194922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863061</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-03-25 14:19:14 -0700</bug_when>
    <thetext>That is the wrong radar. The real one is &lt;rdar://problem/13475462&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863099</commentid>
    <comment_count>4</comment_count>
      <attachid>194922</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-25 15:12:57 -0700</bug_when>
    <thetext>Comment on attachment 194922
Patch

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

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:415
&gt; +                String otherMimeType = plugInImageElement-&gt;serviceType();

Other?

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:586
&gt; -        if (m_pluginElement-&gt;displayState() &lt; HTMLPlugInElement::Playing)
&gt; +        if (m_pluginElement-&gt;displayState() == HTMLPlugInElement::RestartingWithPendingMouseClick)
&gt;              m_pluginElement-&gt;dispatchPendingMouseClick();

Whoops.

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:1653
&gt; +    // FIXME: webkit.org/b/113232 - Extend autostart timeout when this codepath is hit.

I&apos;m not sure how we usually format these, but I&apos;m not sure this is it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863108</commentid>
    <comment_count>5</comment_count>
      <attachid>194922</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-03-25 15:35:04 -0700</bug_when>
    <thetext>Comment on attachment 194922
Patch

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

&gt;&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:415
&gt;&gt; +                String otherMimeType = plugInImageElement-&gt;serviceType();
&gt; 
&gt; Other?

Yeah, because we&apos;re comparing against the mimeType parameter that was passed in. Following the convention that we use in operator== overloads. I&apos;ll rename it to loadedMimeType.

&gt;&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:1653
&gt;&gt; +    // FIXME: webkit.org/b/113232 - Extend autostart timeout when this codepath is hit.
&gt; 
&gt; I&apos;m not sure how we usually format these, but I&apos;m not sure this is it.

OK!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863148</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-03-25 16:30:20 -0700</bug_when>
    <thetext>Committed r146823: &lt;http://trac.webkit.org/changeset/146823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863156</commentid>
    <comment_count>7</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-03-25 16:36:59 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863157</commentid>
    <comment_count>8</comment_count>
      <attachid>194943</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-03-25 16:37:03 -0700</bug_when>
    <thetext>Created attachment 194943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863159</commentid>
    <comment_count>9</comment_count>
      <attachid>194943</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-03-25 16:37:44 -0700</bug_when>
    <thetext>Comment on attachment 194943
Patch

Sent to wrong bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194922</attachid>
            <date>2013-03-25 14:17:46 -0700</date>
            <delta_ts>2013-03-25 16:36:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113231-20130326081329.patch</filename>
            <type>text/plain</type>
            <size>44875</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I0ZjBkZTk0ZDFmMDc1
MDU5MGMzZjc1ODIwZTQ2MTdmZTUxNTY5MS4uZDcyYjQwMjdjZTMzY2YwOThjYTY3ZDU1NDcwMDgy
YTQ0ZTllOTZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAzLTI1ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbnVwIHBsdWdpbiBzbmFw
c2hvdHRpbmcgYXV0b3N0YXJ0IGRlY2lzaW9uIG1ha2luZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzMjMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgY29kZSB0aGF0IGNyZWF0ZXMgYSBo
YXNoIG9mIHBsdWdpbiBvcmlnaW4gaW5mbworICAgICAgICBvdXQgb2YgV2ViQ29yZS4gQWxsIFdl
YkNvcmUgbmVlZHMgdG8gZG8gbm93IGlzIHNpbXBseSBhc2sgaXRzCisgICAgICAgIGhvc3QgbGF5
ZXIgd2hldGhlciBvciBub3QgYSB0dXBsZSBvZiAocGx1Z2luT3JpZ2luLCBwYWdlT3JpZ2luLCBt
aW1lVHlwZSkKKyAgICAgICAgc2hvdWxkIGF1dG9zdGFydCBvciBub3QuCisKKyAgICAgICAgQXMg
YSBkcml2ZS1ieSwgdGhlIGNvZGUgaW4gc3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luIHdh
cyBub3QgcXVpdGUKKyAgICAgICAgcmVzdGFydGluZyBwcm9wZXJseSB3aGVuIHRoZSBkaXNwbGF5
U3RhdGUgd2FzIFJlc3RhcnRpbmcgb3IKKyAgICAgICAgUmVzdGFydGluZ1dpdGhQZW5kaW5nTW91
c2VDbGljay4gSXQgc3RpbGwgd29ya2VkIG1vc3Qgb2YgdGhlIHRpbWUsIGJ1dCB1c3VhbGx5Cisg
ICAgICAgIGJlY2F1c2UgdGhlIGNvZGUgcmFuIHNvb24gYWZ0ZXIgYSBtb3VzZSBjbGljay4gTm93
IGl0IHNob3VsZCBiZSBleHBsaWNpdCBhbmQKKyAgICAgICAgYWxzbyBhbGxvd2VkIHVzIHRvIGJl
IG1vcmUgY2xlYXIgYWJvdXQgc25hcHNob3R0aW5nIGF0IHRoZSBlbmQgb2YgdGhlIG1ldGhvZC4K
KworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaDogTm8gbW9yZSBwbHVnaW5Pcmln
aW5IYXNoKCkuCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFkZFBsdWdJbnNGcm9tTm9kZUxpc3RNYXRjaGluZ1BsdWdJbk9yaWdp
bik6IENoYW5nZSBzaWduYXR1cmUgdG8gYWNjZXB0IHRoZSB0dXBsZQorICAgICAgICAgICAgZGVz
Y3JpYmVkIGFib3ZlLCBhbmQgY29tcGFyZSBzdHJpbmdzIHJhdGhlciB0aGFuIGhhc2hlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBz
aG90KTogVGVsbCBob3N0IGxheWVyIHRoZSBvcmlnaW4KKyAgICAgICAgICAgIGluZm8gcmF0aGVy
IHRoYW4gaGFzaCBpbmZvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKTogUmVtZW1iZXIgdGhlIHVybCB0aGF0
CisgICAgICAgICAgICB0aGUgcGx1Z2luIHdhcyBsb2FkZWQgZnJvbS4gTWFrZSBzb21lIG9mIHRo
ZSBsb2dnaW5nIG1lc3NhZ2VzIG1vcmUgY2xlYXIuIFRlc3QgZm9yCisgICAgICAgICAgICBwbHVn
aW4gYW5kIHBhZ2Ugb3JpZ2luIHJhdGhlciB0aGFuIGhhc2guCisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Ojpsb2FkZWRVcmwpOiBOZXcgbG9hZGVkVVJMIG1lbWJlciBmdW5jdGlvbi4KKyAgICAg
ICAgKiBwYWdlL1BsdWdJbkNsaWVudC5oOgorICAgICAgICAoUGx1Z0luQ2xpZW50KTogQ2hhbmdl
IHNpZ25hdHVyZSBvZiB2aXJ0dWFsIGNsYXNzIHRvIGFjY2VwdCBvcmlnaW4gYW5kIG1pbWVUeXBl
IGluZm8KKyAgICAgICAgICAgIHJhdGhlciB0aGFuIGhhc2guCisKIDIwMTMtMDMtMjMgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1Jl
Z3Jlc3Npb25dIHdlYmtpdF9kb21faHRtbF90YWJsZV9lbGVtZW50X2luc2VydF9yb3cgcmV0dXJu
cyB2YWx1ZSB0aGF0IGRvZXNuJ3QgcGFzcyBXRUJLSVRfRE9NX0lTX0hUTUxfVEFCTEVfUk9XX0VM
RU1FTlQgbWFjcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNDZmZTYyOWU0YjFiOWI5ZWNmOGU3NWVlZmJhOWZm
YTQ3MjYwNDFhLi5lNzZlY2UzNTM2OGU1NDE1ZTlmOGRlNzgzY2Q0YTdhNzY4ZWYzZmE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMTMtMDMtMjUgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgorCisgICAgICAgIENsZWFudXAgcGx1Z2luIHNuYXBzaG90dGluZyBhdXRvc3Rh
cnQgZGVjaXNpb24gbWFraW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTMyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUd28gbWFqb3IgY2hhbmdlcyB0byB0aGUgd2F5IHNuYXBzaG90dGluZyBwbHVn
aW5zIG1heSBhdXRvc3RhcnQuCisKKyAgICAgICAgVGhlIGZpcnN0IGlzIHRoYXQgcHJldmlvdXNs
eSBXZWJDb3JlIHdhcyBrZWVwaW5nIGEgaGFzaCB0aGF0CisgICAgICAgIHJlcHJlc2VudGVkIHRo
ZSBjb21iaW5hdGlvbiBvZiBwYWdlIG9yaWdpbiwgcGx1Z2luIG9yaWdpbiBhbmQKKyAgICAgICAg
bWltZSB0eXBlLiBXZWJLaXQgd2FzIHJlc3BvbnNpYmxlIGZvciBkZWNpZGluZyBpZiB0aGF0IHBh
cnRpY3VsYXIKKyAgICAgICAgaGFzaCBzaG91bGQgYXV0b3N0YXJ0LiBOb3csIFdlYktpdCBrZWVw
cyB0aGUgaGFzaCwgYW5kIFdlYkNvcmUKKyAgICAgICAganVzdCBhc2tzIHVzIHdoZXRoZXIgdGhl
IGNvbWJpbmF0aW9uIG9mIG9yaWdpbnMgYW5kIG1pbWV0eXBlCisgICAgICAgIHNob3VsZCBzdGFy
dCBpbW1lZGlhdGVseS4gWW91IGNhbiBzZWUgdGhpcyBjaGFuZ2UgdGhlIGluIFdlYlBsdWdpbkNs
aWVudAorICAgICAgICBhbmQgV2ViUHJvY2VzcyBBUElzLgorCisgICAgICAgIFRoZSBzZWNvbmQg
Y2hhbmdlIGlzIHRoYXQgd2Ugbm93IGtlZXAgdHdvIHR5cGVzIG9mIHN0cnVjdHVyZXMKKyAgICAg
ICAgYXJvdW5kIHRvIGRlY2lkZSB3aGV0aGVyIGEgcGx1Z2luIHNob3VsZCBhdXRvc3RhcnQuIE9u
ZSBpcyB0aGUKKyAgICAgICAgZXhpc3RpbmcgcGFnZSArIHBsdWdpbiBvcmlnaW4gY29tYmluYXRp
b24uIFRoZSBvdGhlciBpcyBzaW1wbHkKKyAgICAgICAgdGhlIHBsdWdpbiBvcmlnaW4sIHdoaWNo
IGFsbG93cyBwbHVnaW5zIGZyb20gbWFqb3IgcHJvdmlkZXJzCisgICAgICAgIHRvIGF1dG9zdGFy
dCBubyBtYXR0ZXIgd2hhdCBwYWdlIHRoZXkgd2VyZSBlbWJlZGRlZCBvbi4KKworICAgICAgICAq
IFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKTogRW5jb2RlIHRoZSBuZXcg
cGFyYW1ldGVyLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOiBEZWNvZGUgdGhlIG5ldyBwYXJhbWV0ZXIuCisgICAgICAgICogU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDogQWxzbyBrZWVwIGEgbGlzdCBvZiBzdHJpbmdz
IGFyb3VuZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAg
ICAgICAoV0tDb250ZXh0U2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyk6IFRoZSBDIEFQSSB0byBz
ZW5kIHRoZSBsaXN0IG9mIHBsdWdpbgorICAgICAgICAgICAgb3JpZ2lucyBvdmVyIHRvIHRoZSBj
b250ZXh0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmFkZEF1dG9TdGFydE9yaWdpbkhh
c2gpOiBSZW5hbWVkIGZyb20gYWRkQXV0b1N0YXJ0T3JpZ2luLgorICAgICAgICAgICAgTm8gZnVu
Y3Rpb25hbCBjaGFuZ2Ugb3RoZXIgdGhhbiBuZXcgbmFtZXMgZm9yIG1lbWJlcnMuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5IYXNoZXND
b3B5KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjph
dXRvU3RhcnRPcmlnaW5zVGFibGVDb3B5KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlBsdWdJ
bkF1dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9yaWdp
bnNBcnJheSk6IE5ldyBtZXRob2QgdGhhdCBjb252ZXJ0cyB0aGUKKyAgICAgICAgICAgIGluY29t
aW5nIEltbXV0YWJsZUFycmF5IGludG8gYSBWZWN0b3Igb2YgU3RyaW5ncy4KKyAgICAgICAgKFdl
YktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24p
OiBSZW5hbWUgZm9yIG5ldyBtZW1iZXJzLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdJbkF1dG9TdGFydFByb3ZpZGVyLmg6IFJlbmFtaW5nIG1lbWJlciB2YXJpYWJsZXMuIEFkZGlu
ZworICAgICAgICAgICAgc29tZSB0eXBlZGVmcyB0byBjbGVhbiB1cCBjb2RlLgorICAgICAgICAo
V2ViS2l0OjpQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YXV0b1N0YXJ0T3JpZ2lucyk6IE5ldyBh
Y2Nlc3Nvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6IFJlbmFtaW5nLCBhbmQg
Y29weSB0aGUgbmV3IHBhcmFtZXRlciBpbnRvIHRoZSBwcm9jZXNzIGNyZWF0aW9uLgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjphZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKTogUmVu
YW1pbmcuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldFBsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2hlcyk6IFJlbmFtaW5nLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRQ
bHVnSW5BdXRvU3RhcnRPcmlnaW5zKTogTmV3IG1ldGhvZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQ29udGV4dC5oOiBBZGRzIHRoZSBuZXcgc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luIG1ldGhv
ZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6ZGlkSW5pdGlhbGl6ZVBsdWdpbik6IERyaXZlLWJ5IGZp
eCB0aGF0IHdhcyBhdHRlbXB0aW5nIHRvIHJlc3RhcnQgcGx1Z2lucworICAgICAgICAgICAgdGhh
dCB3ZXJlIGluIHRoZSBwcm9jZXNzIG9mIHJlc3RhcnRpbmcuCisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OnBsdWdpbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24pOiBUZW1wb3JhcmlseSBz
dXNwZW5kIHVwZGF0ZSBvZgorICAgICAgICAgICAgZXhwaXJhdGlvbiB0aW1lIGlmIHRoZSB1c2Vy
IGludGVyYWN0cyB3aXRoIGEgcGx1Z2luLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnSW5D
bGllbnQ6OnNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4pOiBSZW5hbWluZy4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGx1Z0luQ2xpZW50OjpkaWRTdGFydEZyb21PcmlnaW4pOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oOiBSZW5hbWlu
Zy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6IERyaXZlLWJ5IC0gbm90
aWNlZCB0aGF0IHdlIGZvcmdvdCB0byBjb3VudCBzZWNvbmRzIGluCisgICAgICAgICAgICBhIHRp
bWVvdXQgdGhyZXNob2xkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXpl
V2ViUHJvY2Vzcyk6IEFsc28gYWRkIHRoZSBsaXN0IG9mIG9yaWdpbnMgd2hlbiB3ZSBpbml0aWFs
aXplLgorICAgICAgICAoV2ViS2l0OjphZGRDYXNlRm9sZGVkQ2hhcmFjdGVycyk6IENvcGllZCBm
cm9tIFdlYkNvcmUgLSBhZGRzIGEgU3RyaW5nIHRvIGEgaGFzaCBpbnB1dC4KKyAgICAgICAgKFdl
YktpdDo6aGFzaEZvclBsdWdJbk9yaWdpbik6IENvcGllZCBmcm9tIFdlYkNvcmUgLSBoYXNoaW5n
IGZ1bmN0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppc1BsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2gpOiBSZW5hbWluZy4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2hv
dWxkUGx1Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbik6IENoZWNrIHRoZSBsaXN0IG9mIHB1cmUgb3Jp
Z2lucyBmaXJzdC4gSWYKKyAgICAgICAgICAgIHRoYXQgZmFpbHMsIGZhbGwgYmFjayB0byB0aGUg
aGFzaCBsaXN0IG9mIHBhaXJzLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbHVnSW5E
aWRTdGFydEZyb21PcmlnaW4pOiBSZW5hbWluZy4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpyZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVy
YWN0aW9uKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6IFJlbmFt
aW5nIHNvbWUgbWV0aG9kcywgYnV0IGFsc28gYWRkaW5nIHRoZSBpbnB1dCBvZiB0aGUgbmV3Cisg
ICAgICAgICAgICBvcmlnaW4tb25seSBsaXN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluOiBSZW5hbWluZyBhIG1lc3NhZ2UuCisKIDIwMTMtMDMtMjMgIEdl
b2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRlZCBhIHNldHRp
bmcgZm9yIHdoZXRoZXIgSmF2YVNjcmlwdCBtYXJrdXAgaXMgZW5hYmxlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCmluZGV4IGNhYjJiNjFhNWNmNDg3NGZhMzgxYmIyY2Ey
MmNhYjlkYWYwMjVlYTkuLjQ5NDM2ZTRmMWI1ZDgzMTFjNWQ4YTYzZDUxZDYwYjE5YjY3OTQxZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKQEAgLTYwLDggKzYwLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRyPElt
YWdlPikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoUGVuZGluZ01vdXNlQ2xpY2soKSB7
IH0KIAotICAgIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2goKSBjb25zdCB7IHJldHVybiBtX3Bs
dWdJbk9yaWdpbkhhc2g7IH0KLQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAg
IE5QT2JqZWN0KiBnZXROUE9iamVjdCgpOwogI2VuZGlmCkBAIC04OSw4ICs4Nyw2IEBAIHByb3Rl
Y3RlZDoKIAogICAgIGJvb2wgbV9pbkJlZm9yZUxvYWRFdmVudEhhbmRsZXI7CiAKLSAgICB1bnNp
Z25lZCBtX3BsdWdJbk9yaWdpbkhhc2g7Ci0KIHByaXZhdGU6CiAgICAgYm9vbCBkaXNwYXRjaEJl
Zm9yZUxvYWRFdmVudChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7IC8vIE5vdCBpbXBsZW1lbnRl
ZCwgZ2VuZXJhdGVzIGEgY29tcGlsZSBlcnJvciBpZiBzdWJjbGFzc2VzIGNhbGwgdGhpcyBieSBt
aXN0YWtlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcAppbmRleCA3M2I3YzVmZmVjMDBlZTM0NWExMjY5NzJlNjk0ZDI1ODY3ZWU4YTk2Li45NWU0
NjY3ZTZhOGE1ZmMyMzZiYWJjMmFkZGE3YTA4MTQwN2ZlN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTMyMyw3ICszMjMsNyBAQCBz
dGF0aWMgQXRvbWljU3RyaW5nIGNsYXNzTmFtZUZvclNoYWRvd1Jvb3QoY29uc3QgTm9kZSogbm9k
ZSkKIAogICAgIHJldHVybiBwbHVnSW5MYXJnZVNpemVDbGFzc05hbWU7CiB9Ci0gICAgCisKIHZv
aWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2V0SXNQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4o
Ym9vbCBpc1ByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbikKIHsKICAgICBpZiAoaXNQcmltYXJ5U25h
cHNob3R0ZWRQbHVnSW4pCkBAIC0zODcsNyArMzg3LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAg
Y29tYmluZWRUZXh0LmFwcGVuZChzdWJ0aXRsZVRleHQpOwogICAgIGNvbnRhaW5lci0+c2V0QXR0
cmlidXRlKGFyaWFfbGFiZWxBdHRyLCBjb21iaW5lZFRleHQpOwogICAgIGNvbnRhaW5lci0+c2V0
QXR0cmlidXRlKHJvbGVBdHRyLCAiYnV0dG9uIik7Ci0gICAgCisKICAgICBzaGFkb3dDb250YWlu
ZXItPmFwcGVuZENoaWxkKGNvbnRhaW5lciwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgcm9v
dC0+YXBwZW5kQ2hpbGQoc2hhZG93Q29udGFpbmVyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0K
QEAgLTQwMywxNCArNDAzLDIxIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3dhcFJl
bmRlcmVyVGltZXJGaXJlZChUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50CiAgICAgZW5zdXJl
VXNlckFnZW50U2hhZG93Um9vdCgpOwogfQogCi1zdGF0aWMgdm9pZCBhZGRQbHVnSW5zRnJvbU5v
ZGVMaXN0TWF0Y2hpbmdPcmlnaW5IYXNoKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnRMaXN0JiBwbHVn
SW5MaXN0LCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBjb2xsZWN0aW9uLCB1bnNpZ25lZCBvcmlnaW5I
YXNoKQorc3RhdGljIHZvaWQgYWRkUGx1Z0luc0Zyb21Ob2RlTGlzdE1hdGNoaW5nUGx1Z0luT3Jp
Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnRMaXN0JiBwbHVnSW5MaXN0LCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBjb2xsZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBsdWdJbk9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBjb2xs
ZWN0aW9uLT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIE5vZGUqIG5vZGUg
PSBjb2xsZWN0aW9uLT5pdGVtKGkpOwogICAgICAgICBpZiAobm9kZS0+aXNQbHVnaW5FbGVtZW50
KCkpIHsKICAgICAgICAgICAgIEhUTUxQbHVnSW5FbGVtZW50KiBwbHVnSW5FbGVtZW50ID0gdG9I
VE1MUGx1Z0luRWxlbWVudChub2RlKTsKLSAgICAgICAgICAgIGlmIChwbHVnSW5FbGVtZW50LT5p
c1BsdWdJbkltYWdlRWxlbWVudCgpICYmIHBsdWdJbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDw9
IEhUTUxQbHVnSW5FbGVtZW50OjpEaXNwbGF5aW5nU25hcHNob3QgJiYgcGx1Z0luRWxlbWVudC0+
cGx1Z0luT3JpZ2luSGFzaCgpID09IG9yaWdpbkhhc2gpCi0gICAgICAgICAgICAgICAgcGx1Z0lu
TGlzdC5hcHBlbmQodG9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50KG5vZGUpKTsKKyAgICAgICAgICAg
IGlmIChwbHVnSW5FbGVtZW50LT5pc1BsdWdJbkltYWdlRWxlbWVudCgpICYmIHBsdWdJbkVsZW1l
bnQtPmRpc3BsYXlTdGF0ZSgpIDw9IEhUTUxQbHVnSW5FbGVtZW50OjpEaXNwbGF5aW5nU25hcHNo
b3QpIHsKKyAgICAgICAgICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVnSW5JbWFn
ZUVsZW1lbnQgPSB0b0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQobm9kZSk7CisgICAgICAgICAgICAg
ICAgY29uc3QgS1VSTCYgbG9hZGVkVVJMID0gcGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRVcmwo
KTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgb3RoZXJNaW1lVHlwZSA9IHBsdWdJbkltYWdlRWxl
bWVudC0+c2VydmljZVR5cGUoKTsKKyAgICAgICAgICAgICAgICBpZiAob3RoZXJNaW1lVHlwZS5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIG90aGVyTWltZVR5cGUgPSBtaW1lVHlwZUZy
b21VUkwobG9hZGVkVVJMKTsKKyAgICAgICAgICAgICAgICBpZiAocGx1Z0luT3JpZ2luID09IGxv
YWRlZFVSTC5ob3N0KCkgJiYgbWltZVR5cGUgPT0gb3RoZXJNaW1lVHlwZSkKKyAgICAgICAgICAg
ICAgICAgICAgcGx1Z0luTGlzdC5hcHBlbmQocGx1Z0luSW1hZ2VFbGVtZW50KTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KQEAgLTQxOCw4ICs0MjUsMTIgQEAgc3RhdGljIHZv
aWQgYWRkUGx1Z0luc0Zyb21Ob2RlTGlzdE1hdGNoaW5nT3JpZ2luSGFzaChIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50TGlzdCYKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXNlckRpZENsaWNr
U25hcHNob3QoUGFzc1JlZlB0cjxNb3VzZUV2ZW50PiBldmVudCkKIHsKICAgICBtX3BlbmRpbmdD
bGlja0V2ZW50RnJvbVNuYXBzaG90ID0gZXZlbnQ7CisgICAgU3RyaW5nIHBsdWdJbk9yaWdpbiA9
IG1fbG9hZGVkVXJsLmhvc3QoKTsKKyAgICBTdHJpbmcgbWltZVR5cGUgPSBzZXJ2aWNlVHlwZSgp
OworICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgIG1pbWVUeXBlID0gbWltZVR5
cGVGcm9tVVJMKG1fbG9hZGVkVXJsKTsKICAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpICYmICFT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKGRvY3VtZW50KCktPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCktPmJhc2VVUkwoKS5wcm90b2NvbCgpKSkKLSAg
ICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5wbHVnSW5DbGllbnQoKS0+YWRkQXV0b1N0YXJ0T3Jp
Z2luKGRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCktPmJhc2VVUkwo
KS5ob3N0KCksIG1fcGx1Z0luT3JpZ2luSGFzaCk7CisgICAgICAgIGRvY3VtZW50KCktPnBhZ2Uo
KS0+cGx1Z0luQ2xpZW50KCktPmRpZFN0YXJ0RnJvbU9yaWdpbihkb2N1bWVudCgpLT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgpLCBwbHVnSW5PcmlnaW4s
IG1pbWVUeXBlKTsKIAogICAgIHJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOwogCkBAIC00Mzgs
MTEgKzQ0OSwxMSBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1Nu
YXBzaG90KFBhc3NSZWZQdHI8TW91c2VFdmVudD4gZXZlbnQpCiAKICAgICAgICAgICAgIFJlZlB0
cjxOb2RlTGlzdD4gcGx1Z2lucyA9IGZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50c0J5VGFn
TmFtZShlbWJlZFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBpZiAocGx1Z2lucykKLSAg
ICAgICAgICAgICAgICBhZGRQbHVnSW5zRnJvbU5vZGVMaXN0TWF0Y2hpbmdPcmlnaW5IYXNoKHBs
dWdpbnNOZWVkaW5nUmVzdGFydCwgcGx1Z2lucywgbV9wbHVnSW5PcmlnaW5IYXNoKTsKKyAgICAg
ICAgICAgICAgICBhZGRQbHVnSW5zRnJvbU5vZGVMaXN0TWF0Y2hpbmdQbHVnSW5PcmlnaW4ocGx1
Z2luc05lZWRpbmdSZXN0YXJ0LCBwbHVnaW5zLCBwbHVnSW5PcmlnaW4sIG1pbWVUeXBlKTsKIAog
ICAgICAgICAgICAgcGx1Z2lucyA9IGZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50c0J5VGFn
TmFtZShvYmplY3RUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgaWYgKHBsdWdpbnMpCi0g
ICAgICAgICAgICAgICAgYWRkUGx1Z0luc0Zyb21Ob2RlTGlzdE1hdGNoaW5nT3JpZ2luSGFzaChw
bHVnaW5zTmVlZGluZ1Jlc3RhcnQsIHBsdWdpbnMsIG1fcGx1Z0luT3JpZ2luSGFzaCk7CisgICAg
ICAgICAgICAgICAgYWRkUGx1Z0luc0Zyb21Ob2RlTGlzdE1hdGNoaW5nUGx1Z0luT3JpZ2luKHBs
dWdpbnNOZWVkaW5nUmVzdGFydCwgcGx1Z2lucywgcGx1Z0luT3JpZ2luLCBtaW1lVHlwZSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTQ3OSwxMCArNDkwLDI2IEBAIHZvaWQgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNo
b3RUaW1lCiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxs
Q3JlYXRlUGx1Z0luKGNvbnN0IEtVUkwmIHVybCkKIHsKKyAgICBMT0coUGx1Z2lucywgIiVwIFBs
dWctaW4gVVJMOiAlcyIsIHRoaXMsIG1fdXJsLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhQbHVn
aW5zLCAiICAgTG9hZGVkIFVSTDogJXMiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisK
KyAgICBtX2xvYWRlZFVybCA9IHVybDsKKwogICAgIGlmICghZG9jdW1lbnQoKS0+cGFnZSgpCiAg
ICAgICAgIHx8ICFkb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnBsdWdJblNuYXBzaG90
dGluZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGRpc3BsYXlTdGF0ZSgp
ID09IFJlc3RhcnRpbmcpIHsKKyAgICAgICAgc2V0RGlzcGxheVN0YXRlKFBsYXlpbmcpOworICAg
ICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gaXMgZXhwbGljaXRseSByZXN0YXJ0aW5nIiwg
dGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGlzcGxheVN0YXRlKCkg
PT0gUmVzdGFydGluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykgeworICAgICAgICBMT0coUGx1Z2lu
cywgIiVwIFBsdWctaW4gaXMgZXhwbGljaXRseSByZXN0YXJ0aW5nIGJ1dCBhbHNvIHdhaXRpbmcg
Zm9yIGEgY2xpY2siLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGJvb2wg
aW5NYWluRnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpID09IGRvY3VtZW50KCktPnBhZ2UoKS0+
bWFpbkZyYW1lKCk7CiAKICAgICBpZiAoZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpICYm
IGluTWFpbkZyYW1lKSB7CkBAIC00OTEsNyArNTE4LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpzdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4oY29uc3QgS1VSTCYgdXJsKQog
ICAgIH0KIAogICAgIGlmIChTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUo
KSkgewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIFNjcmlwdCBpcyBwcm9jZXNzaW5nIHVzZXIg
Z2VzdHVyZSwgc2V0IHRvIHBsYXkiLCB0aGlzKTsKKyAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBT
Y3JpcHQgaXMgY3VycmVudGx5IHByb2Nlc3NpbmcgdXNlciBnZXN0dXJlLCBzZXQgdG8gcGxheSIs
IHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MjYsMjkgKzU1MywyNiBAQCB2
b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJ
bihjb25zdCBLVVJMJiB1cmwpCiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnRXaWR0aCA8PSBzaXpp
bmdUaW55RGltZW5zaW9uVGhyZXNob2xkIHx8IGNvbnRlbnRIZWlnaHQgPD0gc2l6aW5nVGlueURp
bWVuc2lvblRocmVzaG9sZCkgewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gaXMg
JWR4JWQsIHNldCB0byBwbGF5IiwgdGhpcywgY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsK
KyAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIGlzIHZlcnkgc21hbGwgJWR4JWQsIHNl
dCB0byBwbGF5IiwgdGhpcywgY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmICghZG9jdW1lbnQoKS0+cGFnZSgpIHx8ICFkb2N1bWVu
dCgpLT5wYWdlKCktPnBsdWdJbkNsaWVudCgpKSB7CisgICAgaWYgKCFkb2N1bWVudCgpLT5wYWdl
KCktPnBsdWdJbkNsaWVudCgpKSB7CiAgICAgICAgIHNldERpc3BsYXlTdGF0ZShXYWl0aW5nRm9y
U25hcHNob3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTE9HKFBsdWdpbnMsICIl
cCBQbHVnLWluIFVSTDogJXMiLCB0aGlzLCBtX3VybC51dGY4KCkuZGF0YSgpKTsKLSAgICBMT0co
UGx1Z2lucywgIiAgICAgICAgICAgIGxvYWRlZCBVUkw6ICVzIiwgdXJsLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIFN0cmluZyBtaW1lVHlwZSA9IHNlcnZpY2VUeXBlKCk7CisgICAgaWYg
KG1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgbWltZVR5cGUgPSBtaW1lVHlwZUZyb21VUkwo
dXJsKTsKIAotICAgIG1fcGx1Z0luT3JpZ2luSGFzaCA9IFBsdWdJbk9yaWdpbkhhc2g6Omhhc2go
dGhpcywgdXJsKTsKLSAgICBpZiAobV9wbHVnSW5PcmlnaW5IYXNoICYmIGRvY3VtZW50KCktPnBh
Z2UoKS0+cGx1Z0luQ2xpZW50KCktPmlzQXV0b1N0YXJ0T3JpZ2luKG1fcGx1Z0luT3JpZ2luSGFz
aCkpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIGhhc2ggJXggaXMgYXV0by1z
dGFydCwgc2V0IHRvIHBsYXkiLCB0aGlzLCBtX3BsdWdJbk9yaWdpbkhhc2gpOworICAgIGlmIChk
b2N1bWVudCgpLT5wYWdlKCktPnBsdWdJbkNsaWVudCgpLT5zaG91bGRBdXRvU3RhcnRGcm9tT3Jp
Z2luKGRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCktPmJhc2VVUkwo
KS5ob3N0KCksIHVybC5ob3N0KCksIG1pbWVUeXBlKSkgeworICAgICAgICBMT0coUGx1Z2lucywg
IiVwIFBsdWctaW4gZnJvbSAoJXMsICVzKSBpcyBtYXJrZWQgdG8gYXV0by1zdGFydCwgc2V0IHRv
IHBsYXkiLCB0aGlzLCBkb2N1bWVudCgpLT5wYWdlKCktPm1haW5GcmFtZSgpLT5kb2N1bWVudCgp
LT5iYXNlVVJMKCkuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHVybC5ob3N0KCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBMT0coUGx1Z2lucywgIiVwIFBsdWct
aW4gaGFzaCAleCBpcyAlZHglZCwgb3JpZ2luIGlzIG5vdCBhdXRvLXN0YXJ0LCBzZXQgdG8gd2Fp
dCBmb3Igc25hcHNob3QiLCB0aGlzLCBtX3BsdWdJbk9yaWdpbkhhc2gsIGNvbnRlbnRXaWR0aCwg
Y29udGVudEhlaWdodCk7Ci0gICAgLy8gV2UgbWF5IGhhdmUgZ290IHRvIHRoaXMgcG9pbnQgYnkg
cmVzdGFydGluZyBhIHNuYXBzaG90dGVkIHBsdWctaW4sIGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3Qg
d2FudCB0bwotICAgIC8vIHJlc2V0IHRoZSBkaXNwbGF5IHN0YXRlLgotICAgIGlmIChkaXNwbGF5
U3RhdGUoKSAhPSBSZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrICYmIGRpc3BsYXlTdGF0
ZSgpICE9IFJlc3RhcnRpbmcpCi0gICAgICAgIHNldERpc3BsYXlTdGF0ZShXYWl0aW5nRm9yU25h
cHNob3QpOworICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBmcm9tICglcywgJXMpIGlzIG5v
dCBhdXRvLXN0YXJ0LCBzaXplZCBhdCAlZHglZCwgc2V0IHRvIHdhaXQgZm9yIHNuYXBzaG90Iiwg
dGhpcywgZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+YmFzZVVS
TCgpLmhvc3QoKS51dGY4KCkuZGF0YSgpLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIGNvbnRl
bnRXaWR0aCwgY29udGVudEhlaWdodCk7CisgICAgc2V0RGlzcGxheVN0YXRlKFdhaXRpbmdGb3JT
bmFwc2hvdCk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2Fk
ZXJEaWRDcmVhdGVQbHVnSW4oY29uc3QgV2lkZ2V0KiB3aWRnZXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDExYTA0NzYzMDFkYzhjMjVjNmE2
NzcxYzhkYTExODUxN2Y2NzJjMzkuLmYxNWU4MDQ3ODc3OThjNGE5ZWM4ZjIwN2ZlZDkxM2I2ODk3
NTdiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5o
CkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VUeXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IEtVUkwmIGxvYWRlZFVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVkVXJsOyB9CiAgICAgYm9vbCBzaG91bGRQcmVmZXJQbHVn
SW5zRm9ySW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1h
Z2VzOyB9CiAKICAgICAvLyBQdWJsaWMgZm9yIEZyYW1lVmlldzo6YWRkV2lkZ2V0VG9VcGRhdGUo
KQpAQCAtODIsNiArODMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3duUHRyPEhUTUxJbWFnZUxvYWRl
cj4gbV9pbWFnZUxvYWRlcjsKICAgICBTdHJpbmcgbV9zZXJ2aWNlVHlwZTsKICAgICBTdHJpbmcg
bV91cmw7CisgICAgS1VSTCBtX2xvYWRlZFVybDsKICAgICAKICAgICBzdGF0aWMgdm9pZCB1cGRh
dGVXaWRnZXRDYWxsYmFjayhOb2RlKiwgdW5zaWduZWQgPSAwKTsKICAgICB2aXJ0dWFsIHZvaWQg
YXR0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnSW5DbGllbnQuaAppbmRleCBjZDY1YTcwODliMGJm
ZWE4ZDViOTVlMmQ4OTNiOTQ4ZmNhNDkwOWQ5Li42NTgyYzRlZmUxMDdhZTVhNWRkMTY2ZTBiM2I1
NGQ0MjExYmQ5MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50LmgKQEAgLTMzLDggKzMz
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGx1Z0luQ2xpZW50IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNBdXRvU3RhcnRPcmlnaW4odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBhZGRBdXRvU3RhcnRPcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1
bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZEF1
dG9TdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcm
IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBT
dHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgPSAwOwogCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGx1Z0luQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXgg
ODM1NDNjMWQwZGM4YzViYTA4N2Q2YmFlOTRjNDE0YzcxMWZkNTljNS4uNTZmMTQ0ZDZkYTRiMjU3
M2M5ZGZlNTYwNmFjMzQyOTMyMDgxOTQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTEwLDYgKzExMCw3
IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uCiAgICAgZW5jb2RlciA8PCB1c2VzTmV0d29ya1By
b2Nlc3M7CiAjZW5kaWYKIAorICAgIGVuY29kZXIgPDwgcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzOwogICAgIGVuY29kZXIgPDwgcGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKIH0KIApAQCAtMjIz
LDYgKzIyNCw4IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICNlbmRpZgogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2hlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2lucykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggM2RiYzUyMzIxZWIxMzZlZmFmZDc5OTZhMTAy
MmRjY2I2MTJiOWZlZS4uZDIxOTNjNzQ2NzY3ODhlZjJkZTZlYTc5MWFmNzkzZjc0ODZmMWViMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oCkBAIC0xMzIsNyArMTMyLDggQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgewogICAgIGJvb2wgdXNlc05ldHdvcmtQcm9jZXNzOwogI2VuZGlmCiAKLSAgICBI
YXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+IHBsdWdJbkF1dG9TdGFydE9yaWdpbnM7CisgICAgSGFz
aE1hcDx1bnNpZ25lZCwgZG91YmxlPiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7CisgICAg
VmVjdG9yPFN0cmluZz4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAppbmRleCAyZmVlMWUyNTFjZGRlNzRhNTc4ODUxN2YwYzNkYzEzZmI5NzNmNmZjLi4yYzAyMjI3
YjZiYzZkMWIxNWIyYzcxZmI3ZjMyODAwZTAwMjExZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtMzY2LDYgKzM2NiwxMyBAQCB2b2lkIFdL
Q29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgV0tEaWN0aW9uYQogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0UGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzKCp0b0ltcGwoZGljdGlvbmFyeVJlZikpOwogfQogCit2b2lkIFdLQ29u
dGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdL
QXJyYXlSZWYgYXJyYXlSZWYpCit7CisgICAgaWYgKCFhcnJheVJlZikKKyAgICAgICAgcmV0dXJu
OworICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lucygqdG9J
bXBsKGFycmF5UmVmKSk7Cit9CisKIC8vIERlcHJlY2F0ZWQgZnVuY3Rpb25zLgogdm9pZCBfV0tD
b250ZXh0U2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLU3RyaW5nUmVmIHBsdWdpbnNEaXJlY3RvcnkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmgKaW5kZXggMThhNzhlZTBjMjI3NTI4MzYwMWVjOTZmMmMxMTNi
ZTFhMGFmYTgwOS4uNGE0MTE1M2I2ZDdkMjY1YmY1NjczZjEyYzMxYTZiNGMyMDNlZWE4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaApAQCAtMjA3LDYgKzIw
Nyw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVj
dG9yVGltZXJFbmFibGVkKFdLQ29udGV4dFJlZiBjCiAKIFdLX0VYUE9SVCBXS0RpY3Rpb25hcnlS
ZWYgV0tDb250ZXh0Q29weVBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhXS0NvbnRleHRSZWYg
Y29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRQbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoZXMoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIFdLQXJyYXlSZWYgYXJyYXlSZWYpOwogCiAjaWZkZWYgX19j
cGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcAppbmRleCAxOTk2OWYyNWExNzIyODc0
NTY3OWI5YjRlMzQ5NDIyMzJhNjNhZDRmLi5iMzkwYjg5Y2I5OWNkZGI1MTFmZmMyYWYxNzNhMjE4
NzY0NWRlNGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaCIK
IAorI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlv
bmFyeS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC00NiwzMCArNDgsMzAg
QEAgc3RhdGljIGRvdWJsZSBleHBpcmF0aW9uVGltZUZyb21Ob3coKQogICAgIHJldHVybiBjdXJy
ZW50VGltZSgpICsgcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRpbWVUaHJlc2hvbGQ7CiB9CiAK
LXZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmFkZEF1dG9TdGFydE9yaWdpbihjb25zdCBT
dHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpCit2b2lkIFBsdWdJ
bkF1dG9TdGFydFByb3ZpZGVyOjphZGRBdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYg
cGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCkKIHsKLSAgICBpZiAobV9hdXRv
U3RhcnRIYXNoZXMuY29udGFpbnMocGx1Z0luT3JpZ2luSGFzaCkpCisgICAgaWYgKG1faGFzaFRv
T3JpZ2luTWFwLmNvbnRhaW5zKHBsdWdJbk9yaWdpbkhhc2gpKQogICAgICAgICByZXR1cm47Ci0g
ICAgCisKICAgICBBdXRvU3RhcnRUYWJsZTo6aXRlcmF0b3IgaXQgPSBtX2F1dG9TdGFydFRhYmxl
LmZpbmQocGFnZU9yaWdpbik7CiAgICAgaWYgKGl0ID09IG1fYXV0b1N0YXJ0VGFibGUuZW5kKCkp
Ci0gICAgICAgIGl0ID0gbV9hdXRvU3RhcnRUYWJsZS5hZGQocGFnZU9yaWdpbiwgSGFzaE1hcDx1
bnNpZ25lZCwgZG91YmxlPigpKS5pdGVyYXRvcjsKKyAgICAgICAgaXQgPSBtX2F1dG9TdGFydFRh
YmxlLmFkZChwYWdlT3JpZ2luLCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKCkpLml0ZXJhdG9y
OwogCiAgICAgZG91YmxlIGV4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWVGcm9tTm93KCk7
CiAgICAgaXQtPnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBleHBpcmF0aW9uVGltZSk7Ci0g
ICAgbV9hdXRvU3RhcnRIYXNoZXMuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIHBhZ2VPcmlnaW4pOwot
ICAgIAotICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW4ocGx1Z0luT3JpZ2luSGFzaCwgZXhwaXJh
dGlvblRpbWUpKTsKKyAgICBtX2hhc2hUb09yaWdpbk1hcC5zZXQocGx1Z0luT3JpZ2luSGFzaCwg
cGFnZU9yaWdpbik7CisKKyAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViUHJvY2Vzczo6RGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChwbHVnSW5Pcmln
aW5IYXNoLCBleHBpcmF0aW9uVGltZSkpOwogICAgIG1fY29udGV4dC0+Y2xpZW50KCkucGx1Z0lu
QXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ2hhbmdlZChtX2NvbnRleHQpOwogfQogCi1IYXNoTWFwPHVu
c2lnbmVkLCBkb3VibGU+IFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5z
Q29weSgpIGNvbnN0CitQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoIFBsdWdJbkF1dG9TdGFydFBy
b3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5KCkgY29uc3QKIHsKLSAgICBIYXNoTWFw
PHVuc2lnbmVkLCBkb3VibGU+IGNvcHlNYXA7CisgICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aCBjb3B5TWFwOwogICAgIEF1dG9TdGFydFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2F1
dG9TdGFydFRhYmxlLmVuZCgpOwogICAgIGZvciAoQXV0b1N0YXJ0VGFibGU6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9hdXRvU3RhcnRUYWJsZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPjo6Y29uc3RfaXRlcmF0b3IgbWFwRW5kID0g
aXQtPnZhbHVlLmVuZCgpOwotICAgICAgICBmb3IgKEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT46
OmNvbnN0X2l0ZXJhdG9yIG1hcEl0ID0gaXQtPnZhbHVlLmJlZ2luKCk7IG1hcEl0ICE9IG1hcEVu
ZDsgKyttYXBJdCkKKyAgICAgICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaDo6Y29uc3RfaXRl
cmF0b3IgbWFwRW5kID0gaXQtPnZhbHVlLmVuZCgpOworICAgICAgICBmb3IgKFBsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2g6OmNvbnN0X2l0ZXJhdG9yIG1hcEl0ID0gaXQtPnZhbHVlLmJlZ2luKCk7
IG1hcEl0ICE9IG1hcEVuZDsgKyttYXBJdCkKICAgICAgICAgICAgIGNvcHlNYXAuc2V0KG1hcEl0
LT5rZXksIG1hcEl0LT52YWx1ZSk7CiAgICAgfQogICAgIHJldHVybiBjb3B5TWFwOwpAQCAtODIs
OCArODQsOCBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IFBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5zVGFibGVDbwogICAgIGRvdWJsZSBub3cgPSBjdXJy
ZW50VGltZSgpOwogICAgIGZvciAoQXV0b1N0YXJ0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9hdXRvU3RhcnRUYWJsZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgSW1t
dXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSBoYXNoTWFwOwotICAgICAgICBIYXNoTWFwPHVuc2ln
bmVkLCBkb3VibGU+Ojpjb25zdF9pdGVyYXRvciB2YWx1ZUVuZCA9IGl0LT52YWx1ZS5lbmQoKTsK
LSAgICAgICAgZm9yIChIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+Ojpjb25zdF9pdGVyYXRvciB2
YWx1ZUl0ID0gaXQtPnZhbHVlLmJlZ2luKCk7IHZhbHVlSXQgIT0gdmFsdWVFbmQ7ICsrdmFsdWVJ
dCkgeworICAgICAgICBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoOjpjb25zdF9pdGVyYXRvciB2
YWx1ZUVuZCA9IGl0LT52YWx1ZS5lbmQoKTsKKyAgICAgICAgZm9yIChQbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoOjpjb25zdF9pdGVyYXRvciB2YWx1ZUl0ID0gaXQtPnZhbHVlLmJlZ2luKCk7IHZh
bHVlSXQgIT0gdmFsdWVFbmQ7ICsrdmFsdWVJdCkgewogICAgICAgICAgICAgaWYgKG5vdyA+IHZh
bHVlSXQtPnZhbHVlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaGFz
aE1hcC5zZXQoU3RyaW5nOjpudW1iZXIodmFsdWVJdC0+a2V5KSwgV2ViRG91YmxlOjpjcmVhdGUo
dmFsdWVJdC0+dmFsdWUpKTsKQEAgLTk4LDEzICsxMDAsMTMgQEAgUGFzc1JlZlB0cjxJbW11dGFi
bGVEaWN0aW9uYXJ5PiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YXV0b1N0YXJ0T3JpZ2luc1Rh
YmxlQ28KIAogdm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2lu
c1RhYmxlKEltbXV0YWJsZURpY3Rpb25hcnkmIHRhYmxlKQogeworICAgIG1faGFzaFRvT3JpZ2lu
TWFwLmNsZWFyKCk7CiAgICAgbV9hdXRvU3RhcnRUYWJsZS5jbGVhcigpOwotICAgIG1fYXV0b1N0
YXJ0SGFzaGVzLmNsZWFyKCk7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiBoYXNoTWFw
OwogCiAgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gdGFibGUubWFwKCkuZW5kKCk7CiAgICAgZm9yIChJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBU
eXBlOjpjb25zdF9pdGVyYXRvciBpdCA9IHRhYmxlLm1hcCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+IGhhc2hlczsKKyAgICAg
ICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCBoYXNoZXM7CiAgICAgICAgIEltbXV0YWJsZURp
Y3Rpb25hcnkqIGhhc2hlc0ZvclBhZ2UgPSBzdGF0aWNfY2FzdDxJbW11dGFibGVEaWN0aW9uYXJ5
Kj4oaXQtPnZhbHVlLmdldCgpKTsKICAgICAgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlw
ZTo6Y29uc3RfaXRlcmF0b3IgaGFzaEVuZCA9IGhhc2hlc0ZvclBhZ2UtPm1hcCgpLmVuZCgpOwog
ICAgICAgICBmb3IgKEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9y
IGhhc2hJdCA9IGhhc2hlc0ZvclBhZ2UtPm1hcCgpLmJlZ2luKCk7IGhhc2hJdCAhPSBoYXNoRW5k
OyArK2hhc2hJdCkgewpAQCAtMTE5LDI2ICsxMjEsMzYgQEAgdm9pZCBQbHVnSW5BdXRvU3RhcnRQ
cm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlKEltbXV0YWJsZURpY3Rpb25hcnkmIHRh
YmwKICAgICAgICAgICAgIGRvdWJsZSBleHBpcmF0aW9uVGltZSA9IHN0YXRpY19jYXN0PFdlYkRv
dWJsZSo+KGhhc2hJdC0+dmFsdWUuZ2V0KCkpLT52YWx1ZSgpOwogICAgICAgICAgICAgaGFzaGVz
LnNldChoYXNoLCBleHBpcmF0aW9uVGltZSk7CiAgICAgICAgICAgICBoYXNoTWFwLnNldChoYXNo
LCBleHBpcmF0aW9uVGltZSk7Ci0gICAgICAgICAgICBtX2F1dG9TdGFydEhhc2hlcy5zZXQoaGFz
aCwgaXQtPmtleSk7CisgICAgICAgICAgICBtX2hhc2hUb09yaWdpbk1hcC5zZXQoaGFzaCwgaXQt
PmtleSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2F1dG9TdGFydFRhYmxlLnNldChpdC0+a2V5
LCBoYXNoZXMpOwogICAgIH0KIAotICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpSZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMoaGFzaE1hcCkp
OworICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpSZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhoYXNoTWFwKSk7Cit9CisKK3ZvaWQg
UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9yaWdpbnNBcnJheShJbW11dGFi
bGVBcnJheSYgb3JpZ2luTGlzdCkKK3sKKyAgICBtX2F1dG9TdGFydE9yaWdpbnMuY2xlYXIoKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMCwgbGVuZ3RoID0gb3JpZ2luTGlzdC5zaXplKCk7IGkgPCBs
ZW5ndGg7ICsraSkgeworICAgICAgICBpZiAob3JpZ2luTGlzdC5hdChpKS0+dHlwZSgpICE9IFdl
YlN0cmluZzo6QVBJVHlwZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBtX2F1dG9T
dGFydE9yaWdpbnMuYXBwZW5kKHN0YXRpY19jYXN0PFdlYlN0cmluZyo+KG9yaWdpbkxpc3QuYXQo
aSkpLT5zdHJpbmcoKSk7CisgICAgfQogfQogCiB2b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVy
OjpkaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpCiB7
Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2F1
dG9TdGFydEhhc2hlcy5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOwotICAgIGlmIChpdCA9PSBtX2F1
dG9TdGFydEhhc2hlcy5lbmQoKSkgeworICAgIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9oYXNoVG9PcmlnaW5NYXAuZmluZChwbHVnSW5PcmlnaW5IYXNo
KTsKKyAgICBpZiAoaXQgPT0gbV9oYXNoVG9PcmlnaW5NYXAuZW5kKCkpIHsKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBkb3VibGUg
bmV3RXhwaXJhdGlvblRpbWUgPSBleHBpcmF0aW9uVGltZUZyb21Ob3coKTsKICAgICBtX2F1dG9T
dGFydFRhYmxlLmZpbmQoaXQtPnZhbHVlKS0+dmFsdWUuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIG5l
d0V4cGlyYXRpb25UaW1lKTsKLSAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6V2ViUHJvY2Vzczo6RGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luKHBsdWdJbk9yaWdp
bkhhc2gsIG5ld0V4cGlyYXRpb25UaW1lKSk7CisgICAgbV9jb250ZXh0LT5zZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhh
c2gocGx1Z0luT3JpZ2luSGFzaCwgbmV3RXhwaXJhdGlvblRpbWUpKTsKICAgICBtX2NvbnRleHQt
PmNsaWVudCgpLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlc0NoYW5nZWQobV9jb250ZXh0KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0lu
QXV0b1N0YXJ0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdJbkF1dG9TdGFydFByb3ZpZGVyLmgKaW5kZXggZTI0NjYxMDQ2NmQ5ZGZjYWFiMjY0MTUyOWQ5
YzYyZDJmYzBlMWE5Ny4uODdjODFmZTNhOTc2OGFkNTgyYjAzNDdhZTJkOTk2YjcxZjFlMWFiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
SW5BdXRvU3RhcnRQcm92aWRlci5oCkBAIC0yOSwzMSArMjksNDMgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2NsYXNzIEltbXV0YWJsZUFycmF5OwogY2xhc3MgSW1tdXRhYmxlRGljdGlv
bmFyeTsKIGNsYXNzIFdlYkNvbnRleHQ7CiAKK3R5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgZG91
YmxlPiBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoOwordHlwZWRlZiBWZWN0b3I8U3RyaW5nPiBQ
bHVnSW5BdXRvU3RhcnRPcmlnaW5zOworCiBjbGFzcyBQbHVnSW5BdXRvU3RhcnRQcm92aWRlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIpOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyKFdlYkNvbnRleHQqKTsK
IAotICAgIHZvaWQgYWRkQXV0b1N0YXJ0T3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwg
dW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7CisgICAgdm9pZCBhZGRBdXRvU3RhcnRPcmlnaW5I
YXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7
CisgICAgdm9pZCBkaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdp
bkhhc2gpOwogCi0gICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiBhdXRvU3RhcnRPcmlnaW5z
Q29weSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gYXV0b1N0
YXJ0T3JpZ2luc1RhYmxlQ29weSgpIGNvbnN0OwogICAgIHZvaWQgc2V0QXV0b1N0YXJ0T3JpZ2lu
c1RhYmxlKEltbXV0YWJsZURpY3Rpb25hcnkmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVVc2VySW50
ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7CisgICAgdm9pZCBzZXRBdXRvU3Rh
cnRPcmlnaW5zQXJyYXkoSW1tdXRhYmxlQXJyYXkmKTsKKworICAgIFBsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2ggYXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ29weSgpIGNvbnN0OworICAgIGNvbnN0IFBs
dWdJbkF1dG9TdGFydE9yaWdpbnMmIGF1dG9TdGFydE9yaWdpbnMoKSBjb25zdCB7IHJldHVybiBt
X2F1dG9TdGFydE9yaWdpbnM7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb250ZXh0KiBtX2NvbnRl
eHQ7Ci0gICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDx1bnNpZ25lZCwg
ZG91YmxlPiwgQ2FzZUZvbGRpbmdIYXNoPiBBdXRvU3RhcnRUYWJsZTsKKworICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gsIENhc2VGb2xkaW5nSGFz
aD4gQXV0b1N0YXJ0VGFibGU7CiAgICAgQXV0b1N0YXJ0VGFibGUgbV9hdXRvU3RhcnRUYWJsZTsK
LSAgICBIYXNoTWFwPHVuc2lnbmVkLCBTdHJpbmc+IG1fYXV0b1N0YXJ0SGFzaGVzOworCisgICAg
SGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5nPiBtX2hhc2hUb09yaWdpbk1hcDsKKworICAgIFBsdWdJ
bkF1dG9TdGFydE9yaWdpbnMgbV9hdXRvU3RhcnRPcmlnaW5zOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggODAy
MWRiYmM3NmI3NWVkYTc1NWM0NjMzNWUwOTg3MDA3YTllODRiNi4uNTg1NWI3ZWFkMmJmN2E0MDdk
NWJkZDg0MjYyNDc1N2IzOGJiOGIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcApAQCAtNTI2LDcgKzUyNiw4IEBAIFdlYlByb2Nlc3NQcm94eSogV2ViQ29udGV4dDo6
Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgcGFyYW1ldGVycy51c2VzTmV0d29ya1Byb2Nlc3Mg
PSBtX3VzZXNOZXR3b3JrUHJvY2VzczsKICNlbmRpZgogCi0gICAgcGFyYW1ldGVycy5wbHVnSW5B
dXRvU3RhcnRPcmlnaW5zID0gbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5hdXRvU3RhcnRPcmln
aW5zQ29weSgpOworICAgIHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzID0g
bV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5hdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5KCk7Cisg
ICAgY29weVRvVmVjdG9yKG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuYXV0b1N0YXJ0T3JpZ2lu
cygpLCBwYXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdpbnMpOwogCiAgICAgLy8gQWRkIGFu
eSBwbGF0Zm9ybSBzcGVjaWZpYyBwYXJhbWV0ZXJzCiAgICAgcGxhdGZvcm1Jbml0aWFsaXplV2Vi
UHJvY2VzcyhwYXJhbWV0ZXJzKTsKQEAgLTExNjUsNyArMTE2Niw3IEBAIHZvaWQgV2ViQ29udGV4
dDo6c2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9vbCBmbGFnKQog
CiB2b2lkIFdlYkNvbnRleHQ6OmFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3Ry
aW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKQogewotICAgIG1fcGx1
Z0luQXV0b1N0YXJ0UHJvdmlkZXIuYWRkQXV0b1N0YXJ0T3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdJ
bk9yaWdpbkhhc2gpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuYWRkQXV0b1N0YXJ0
T3JpZ2luSGFzaChwYWdlT3JpZ2luLCBwbHVnSW5PcmlnaW5IYXNoKTsKIH0KIAogdm9pZCBXZWJD
b250ZXh0OjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9y
aWdpbkhhc2gpCkBAIC0xMTgwLDcgKzExODEsMTIgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0
aW9uYXJ5PiBXZWJDb250ZXh0OjpwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoKSBjb25zdAog
CiB2b2lkIFdlYkNvbnRleHQ6OnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhJbW11dGFi
bGVEaWN0aW9uYXJ5JiBkaWN0aW9uYXJ5KQogewotICAgIHJldHVybiBtX3BsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyLnNldEF1dG9TdGFydE9yaWdpbnNUYWJsZShkaWN0aW9uYXJ5KTsKKyAgICBtX3Bs
dWdJbkF1dG9TdGFydFByb3ZpZGVyLnNldEF1dG9TdGFydE9yaWdpbnNUYWJsZShkaWN0aW9uYXJ5
KTsKK30KKwordm9pZCBXZWJDb250ZXh0OjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zKEltbXV0
YWJsZUFycmF5JiBhcnJheSkKK3sKKyAgICBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLnNldEF1
dG9TdGFydE9yaWdpbnNBcnJheShhcnJheSk7CiB9CiAKICNpZiBFTkFCTEUoQ1VTVE9NX1BST1RP
Q09MUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IGRkMTdiMjI0MDcz
Njg3MmMxNDExZDU4NjVmYjNhZjlmYWY5MTk0YjQuLjA5YTEyMjg1MmEwZGViZDdkZDU4ZGIzMjc0
NTM1ZmU3NGQzMjc4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
UHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJJbW11
dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKQEAg
LTI2Niw2ICsyNjcsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rp
b25hcnk+IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcygpIGNvbnN0OwogICAgIHZvaWQgc2V0
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEltbXV0YWJsZURpY3Rpb25hcnkmKTsKKyAgICB2
b2lkIHNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMoSW1tdXRhYmxlQXJyYXkmKTsKIAogICAgIC8v
IE5ldHdvcmsgUHJvY2VzcyBNYW5hZ2VtZW50CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAyMDcxM2FlMWJmOTNmODllOGQ1ZDYw
MjZlYzk3M2Q4MWU0M2E1MGJhLi40NTUyNTU5MmMyYzlkYzdhYWQ4YmYzZjY0YzUzZjhiMDgwODkw
OTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCkBAIC01ODIsNyArNTgyLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpkaWRJbml0aWFsaXpl
UGx1Z2luKCkKICAgICAgICAgICAgICAgICBtX3BsdWdpbkVsZW1lbnQtPnNldE5lZWRzU3R5bGVS
ZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0g
ICAgICAgIGlmIChtX3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVs
ZW1lbnQ6OlBsYXlpbmcpCisgICAgICAgIGlmIChtX3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0
ZSgpID09IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNr
KQogICAgICAgICAgICAgbV9wbHVnaW5FbGVtZW50LT5kaXNwYXRjaFBlbmRpbmdNb3VzZUNsaWNr
KCk7CiAgICAgfQogCkBAIC0xNjUwLDYgKzE2NTAsOCBAQCBib29sIFBsdWdpblZpZXc6OnNob3Vs
ZEFsd2F5c0F1dG9TdGFydCgpIGNvbnN0CiAKIHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luRGlkUmVj
ZWl2ZVVzZXJJbnRlcmFjdGlvbigpCiB7CisgICAgLy8gRklYTUU6IHdlYmtpdC5vcmcvYi8xMTMy
MzIgLSBFeHRlbmQgYXV0b3N0YXJ0IHRpbWVvdXQgd2hlbiB0aGlzIGNvZGVwYXRoIGlzIGhpdC4K
KwogICAgIGlmIChmcmFtZSgpICYmICFmcmFtZSgpLT5zZXR0aW5ncygpLT5wbHVnSW5TbmFwc2hv
dHRpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTY1Nyw3ICsxNjU5LDYgQEAg
dm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9kaWRSZWNlaXZlVXNlckludGVyYWN0aW9uID0gdHJ1ZTsKLSAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKG1f
cGx1Z2luRWxlbWVudC0+cGx1Z0luT3JpZ2luSGFzaCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsdWdJbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAKaW5kZXggOGU5YjczMzBjOWVkMjQwZGQ5MTYz
YmRjMTY3MjBiNWU5OTU4YzZjYi4uNmQ2MjJkNmQ3NjgyNGI5YzY4ZTdjZjYxN2ZkZTM0Yzg5ZGIx
NDBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbHVnSW5DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcApAQCAtNDYsMTQgKzQ2LDE0IEBAIHZvaWQg
V2ViUGx1Z0luQ2xpZW50OjpwYWdlRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAot
Ym9vbCBXZWJQbHVnSW5DbGllbnQ6OmlzQXV0b1N0YXJ0T3JpZ2luKHVuc2lnbmVkIHBsdWdJbk9y
aWdpbkhhc2gpCitib29sIFdlYlBsdWdJbkNsaWVudDo6c2hvdWxkQXV0b1N0YXJ0RnJvbU9yaWdp
bihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5pc1BsdWdJbkF1dG9TdGFydE9yaWdpbihwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICByZXR1cm4g
V2ViUHJvY2Vzczo6c2hhcmVkKCkuc2hvdWxkUGx1Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbihwYWdl
T3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKTsKIH0KIAotdm9pZCBXZWJQbHVnSW5DbGll
bnQ6OmFkZEF1dG9TdGFydE9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVk
IHBsdWdJbk9yaWdpbkhhc2gpCit2b2lkIFdlYlBsdWdJbkNsaWVudDo6ZGlkU3RhcnRGcm9tT3Jp
Z2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4s
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRk
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdJbk9yaWdpbkhhc2gpOworICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihwYWdlT3JpZ2lu
LCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdJbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbHVnSW5DbGllbnQuaAppbmRleCA5YTdhOGU4YzYzMzRhMGUyNmRlYTFmMDE2YmE5MmNiOGQy
MjNlYjg3Li4xMmU5ZGNjOTkxNjA0OThmMWQyNDZmMWE3ZWQxZTY5OWM2YzIwNTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGx1Z0luQ2xpZW50LmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgV2ViUGx1Z0luQ2xpZW50
X2gKIAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z0luQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM5LDggKzM4LDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgfldlYlBsdWdJbkNsaWVudCgpOwogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGFnZURlc3Ryb3llZCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9TdGFydE9yaWdp
bih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQXV0b1N0
YXJ0T3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2lu
SGFzaCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oY29uc3Qg
U3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0RnJvbU9yaWdpbihjb25z
dCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMzI1ODI0OWNhY2Q2ZmYyMmUwZGUz
ZjQ2MTAzMzI5NWYzNWQ0YmE5OS4uZDkwNWNkZDAxYWVlZmJiODJmNWMyZDAwMmU5MTI4YmM5YmRh
ZDZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04Myw2
ICs4Myw3IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQogI2luY2x1
ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC0xMjgsNyArMTI5LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBUaGlz
IHNob3VsZCBiZSBsZXNzIHRoYW4gcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRpbWVUaHJlc2hv
bGQgaW4gUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuCi1zdGF0aWMgY29uc3QgZG91YmxlIHBsdWdJ
bkF1dG9TdGFydEV4cGlyYXRpb25UaW1lVXBkYXRlVGhyZXNob2xkID0gMjkgKiAyNCAqIDYwOwor
c3RhdGljIGNvbnN0IGRvdWJsZSBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVVwZGF0ZVRo
cmVzaG9sZCA9IDI5ICogMjQgKiA2MCAqIDYwOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAt
MzMwLDcgKzMzMSw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29u
c3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1lCiAjZW5kaWYKICAgICBzZXRU
ZXJtaW5hdGlvblRpbWVvdXQocGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQpOwogCi0gICAg
cmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zKHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3Jp
Z2lucyk7CisgICAgcmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMocGFyYW1ldGVycy5w
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cGFyYW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5zLnNpemUoKTsgKytpKQorICAgICAgICBt
X3BsdWdJbkF1dG9TdGFydE9yaWdpbnMuYWRkKHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luc1tpXSk7CiB9CiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpAQCAtNzU2LDIyICs3
NTksNTQgQEAgdm9pZCBXZWJQcm9jZXNzOjpjbGVhclBsdWdpblNpdGVEYXRhKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwbHVnaW5QYXRocywgY29uc3QgVmUKIH0KICNlbmRpZgogCi1ib29sIFdlYlBy
b2Nlc3M6OmlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gp
CitzdGF0aWMgaW5saW5lIHZvaWQgYWRkQ2FzZUZvbGRlZENoYXJhY3RlcnMoU3RyaW5nSGFzaGVy
JiBoYXNoZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIEhhc2hNYXA8dW5zaWduZWQs
IGRvdWJsZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5zLmZp
bmQocGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAgaWYgKGl0ID09IG1fcGx1Z0luQXV0b1N0YXJ0T3Jp
Z2lucy5lbmQoKSkKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBoYXNoZXIuYWRkQ2hhcmFj
dGVyczxMQ2hhciwgQ2FzZUZvbGRpbmdIYXNoOjpmb2xkQ2FzZTxMQ2hhcj4gPihzdHJpbmcuY2hh
cmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gaGFzaGVyLmFkZENoYXJh
Y3RlcnM8VUNoYXIsIENhc2VGb2xkaW5nSGFzaDo6Zm9sZENhc2U8VUNoYXI+ID4oc3RyaW5nLmNo
YXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOworfQorCitzdGF0aWMgdW5zaWduZWQgaGFz
aEZvclBsdWdJbk9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYg
cGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIC8vIFdlIHdhbnQg
dG8gYXZvaWQgY29uY2F0ZW5hdGluZyB0aGUgc3RyaW5ncyBhbmQgdGhlbiB0YWtpbmcgdGhlIGhh
c2gsIHNpbmNlIHRoYXQgY291bGQgbGVhZCB0byBhbiBleHBlbnNpdmUgY29udmVyc2lvbi4KKyAg
ICAvLyBXZSBhbHNvIHdhbnQgdG8gYXZvaWQgdXNpbmcgdGhlIGhhc2goKSBmdW5jdGlvbiBpbiBT
dHJpbmdJbXBsIG9yIENhc2VGb2xkaW5nSGFzaCBiZWNhdXNlIHRoYXQgbWFza3Mgb3V0IGJpdHMg
Zm9yIHRoZSB1c2Ugb2YgZmxhZ3MuCisgICAgU3RyaW5nSGFzaGVyIGhhc2hlcjsKKyAgICBhZGRD
YXNlRm9sZGVkQ2hhcmFjdGVycyhoYXNoZXIsIHBhZ2VPcmlnaW4pOworICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXIoMCk7CisgICAgYWRkQ2FzZUZvbGRlZENoYXJhY3RlcnMoaGFzaGVyLCBwbHVnaW5P
cmlnaW4pOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIoMCk7CisgICAgYWRkQ2FzZUZvbGRlZENo
YXJhY3RlcnMoaGFzaGVyLCBtaW1lVHlwZSk7CisgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9
CisKK2Jvb2wgV2ViUHJvY2Vzczo6aXNQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVuc2lnbmVk
IHBsdWdJbk9yaWdpbkhhc2gpCit7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5maW5kKHBsdWdJ
bk9yaWdpbkhhc2gpOworICAgIGlmIChpdCA9PSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hl
cy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBjdXJyZW50VGltZSgp
IDwgaXQtPnZhbHVlOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmFkZFBsdWdJbkF1dG9TdGFydE9y
aWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gp
Citib29sIFdlYlByb2Nlc3M6OnNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4oY29uc3Qg
U3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKK3sKKyAgICBpZiAobV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5zLmNvbnRh
aW5zKHBsdWdpbk9yaWdpbikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gVGhlIHBs
dWdpbiB3YXNuJ3QgaW4gdGhlIGdlbmVyYWwgd2hpdGVsaXN0LCBzbyBjaGVjayBhZ2FpbnN0IHRo
ZSBtb3JlIGV4cGxpY2l0IGhhc2ggbGlzdC4KKyAgICByZXR1cm4gaXNQbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoKGhhc2hGb3JQbHVnSW5PcmlnaW4ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBt
aW1lVHlwZSkpOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdp
bihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmIChwYWdlT3JpZ2luLmlzRW1wdHkoKSkg
ewogICAgICAgICBMT0coUGx1Z2lucywgIk5vdCBhZGRpbmcgZW1wdHkgcGFnZSBvcmlnaW4iKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChpc1BsdWdJbkF1dG9TdGFydE9yaWdp
bihwbHVnSW5PcmlnaW5IYXNoKSkgeworICAgIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2ggPSBo
YXNoRm9yUGx1Z0luT3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpOwor
ICAgIGlmIChpc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCkpIHsK
ICAgICAgICAgTE9HKFBsdWdpbnMsICJIYXNoICV4IGFscmVhZHkgZXhpc3RzIGFzIGF1dG8tc3Rh
cnQgb3JpZ2luIChyZXF1ZXN0IGZvciAlcykiLCBwbHVnSW5PcmlnaW5IYXNoLCBwYWdlT3JpZ2lu
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzgwLDIyICs4MTUs
MjIgQEAgdm9pZCBXZWJQcm9jZXNzOjphZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW4oY29uc3QgU3Ry
aW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBwbHUKICAgICAvLyBjb21lcyBiYWNrIGZyb20gdGhl
IHBhcmVudCBwcm9jZXNzLiBUZW1wb3JhcmlseSBhZGQgdGhpcyBoYXNoIHRvIHRoZSBsaXN0IHdp
dGggYSB0aGlydHkKICAgICAvLyBzZWNvbmQgdGltZW91dC4gVGhhdCB3YXksIGV2ZW4gaWYgdGhl
IHBhcmVudCBkZWNpZGVzIG5vdCB0byBhZGQgaXQsIHdlJ2xsIG9ubHkgYmUKICAgICAvLyBpbmNv
cnJlY3QgZm9yIGEgbGl0dGxlIHdoaWxlLgotICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2lucy5z
ZXQocGx1Z0luT3JpZ2luSGFzaCwgY3VycmVudFRpbWUoKSArIDMwICogMTAwMCk7CisgICAgbV9w
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIGN1cnJlbnRU
aW1lKCkgKyAzMCAqIDEwMDApOwogCiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViQ29udGV4dDo6QWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChwYWdl
T3JpZ2luLCBwbHVnSW5PcmlnaW5IYXNoKSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZGlk
QWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIGRvdWJs
ZSBleHBpcmF0aW9uVGltZSkKK3ZvaWQgV2ViUHJvY2Vzczo6ZGlkQWRkUGx1Z0luQXV0b1N0YXJ0
T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBkb3VibGUgZXhwaXJhdGlvblRp
bWUpCiB7CiAgICAgLy8gV2hlbiBjYWxsZWQsIHNvbWUgd2ViIHByb2Nlc3MgKHdoaWNoIGFsc28g
bWlnaHQgYmUgdGhpcyBvbmUpIGFkZGVkIHRoZSBvcmlnaW4gZm9yIGF1dG8tc3RhcnRpbmcsCiAg
ICAgLy8gb3IgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlvbi4KICAgICAvLyBTZXQgdGhlIGJpdCB0
byBhdm9pZCBoYXZpbmcgcmVkdW5kYW50bHkgY2FsbCBpbnRvIHRoZSBVSSBwcm9jZXNzIHVwb24g
dXNlciBpbnRlcmFjdGlvbi4KLSAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbnMuc2V0KHBsdWdJ
bk9yaWdpbkhhc2gsIGV4cGlyYXRpb25UaW1lKTsKKyAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2hlcy5zZXQocGx1Z0luT3JpZ2luSGFzaCwgZXhwaXJhdGlvblRpbWUpOwogfQogCi12b2lk
IFdlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyhjb25zdCBIYXNoTWFwPHVu
c2lnbmVkLCBkb3VibGU+JiBoYXNoZXMpCit2b2lkIFdlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzKGNvbnN0IEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4mIGhhc2hl
cykKIHsKLSAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbnMuc3dhcChjb25zdF9jYXN0PEhhc2hN
YXA8dW5zaWduZWQsIGRvdWJsZT4mPihoYXNoZXMpKTsKKyAgICBtX3BsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2hlcy5zd2FwKGNvbnN0X2Nhc3Q8SGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiY+KGhh
c2hlcykpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJh
Y3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCkKQEAgLTgwMyw4ICs4MzgsOCBAQCB2b2lk
IFdlYlByb2Nlc3M6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odW5zaWduZWQgcGx1
Z0luT3JpZ2luSGFzaCkKICAgICBpZiAoIXBsdWdJbk9yaWdpbkhhc2gpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT46Oml0ZXJhdG9yIGl0ID0gbV9wbHVn
SW5BdXRvU3RhcnRPcmlnaW5zLmZpbmQocGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAgaWYgKGl0ID09
IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2lucy5lbmQoKSkKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBk
b3VibGU+OjppdGVyYXRvciBpdCA9IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmZpbmQo
cGx1Z0luT3JpZ2luSGFzaCk7CisgICAgaWYgKGl0ID09IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaGVzLmVuZCgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGl0LT52YWx1ZSAtIGN1cnJl
bnRUaW1lKCkgPiBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVVwZGF0ZVRocmVzaG9sZCkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRl
eCA1ZTFjN2Y2YTg5Y2Y2ZmMzYmQ1OGIwZmViMTY3MDEwZDI2Zjc4MmVhLi4xMmI0MTdjZGIzZGUw
MWJlZTM4YmFjMWI3NjM2NWQyNTQzMTg5ZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaApAQCAtMTI1LDggKzEyNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFZpc2l0
ZWRMaW5rKFdlYkNvcmU6OkxpbmtIYXNoKTsKICAgICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29y
ZTo6TGlua0hhc2gpIGNvbnN0OwogCi0gICAgYm9vbCBpc1BsdWdJbkF1dG9TdGFydE9yaWdpbih1
bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICB2b2lkIGFkZFBsdWdJbkF1dG9TdGFydE9y
aWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gp
OworICAgIGJvb2wgc2hvdWxkUGx1Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcm
IHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKKyAgICB2b2lkIHBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcm
IHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKICAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odW5zaWdu
ZWQgcGx1Z0luT3JpZ2luSGFzaCk7CiAKICAgICBib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7IH0KQEAgLTIw
OSw4ICsyMDksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkxpbmtIYXNoPiYgbGlua0hhc2hlcyk7CiAgICAgdm9pZCBh
bGxWaXNpdGVkTGlua1N0YXRlQ2hhbmdlZCgpOwogCi0gICAgdm9pZCBkaWRBZGRQbHVnSW5BdXRv
U3RhcnRPcmlnaW4odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgZG91YmxlIGV4cGlyYXRpb25U
aW1lKTsKLSAgICB2b2lkIHJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyhjb25zdCBIYXNoTWFw
PHVuc2lnbmVkLCBkb3VibGU+JiBoYXNoZXMpOworICAgIGJvb2wgaXNQbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOworICAgIHZvaWQgZGlkQWRkUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBkb3VibGUg
ZXhwaXJhdGlvblRpbWUpOworICAgIHZvaWQgcmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNo
ZXMoY29uc3QgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiYgaGFzaGVzKTsKIAogICAgIHZvaWQg
cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOwogICAgIHZvaWQgcGxhdGZvcm1DbGVh
clJlc291cmNlQ2FjaGVzKFJlc291cmNlQ2FjaGVzVG9DbGVhcik7CkBAIC0yNzgsNyArMjc5LDgg
QEAgcHJpdmF0ZToKICAgICBWaXNpdGVkTGlua1RhYmxlIG1fdmlzaXRlZExpbmtUYWJsZTsKICAg
ICBib29sIG1fc2hvdWxkVHJhY2tWaXNpdGVkTGlua3M7CiAKLSAgICBIYXNoTWFwPHVuc2lnbmVk
LCBkb3VibGU+IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKKyAgICBIYXNoTWFwPHVuc2lnbmVk
LCBkb3VibGU+IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOworICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbnM7CiAKICAgICBib29sIG1faGFzU2V0Q2FjaGVN
b2RlbDsKICAgICBDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAzYTdjZDI1OTRhNmViNTVk
ZWM1YjhlNzg0M2U5N2Q3ZGZkMzE4NTNjLi4wNGVjYjM0ZTEwN2JlYmJmMDg3N2EwMjc0NmZmYWI4
MzExY2NmNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC02MCw4ICs2MCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoVmVjdG9yPFdURjo6U3Ry
aW5nPiBwbHVnaW5QYXRocywgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBDbGVhclBsdWdpblNp
dGVEYXRhKFZlY3RvcjxXVEY6OlN0cmluZz4gcGx1Z2luUGF0aHMsIFZlY3RvcjxXVEY6OlN0cmlu
Zz4gc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1aW50NjRfdCBtYXhBZ2VJblNlY29uZHMsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCiAjZW5kaWYKLSAgICBEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW4o
dWludDMyX3QgaGFzaCwgZG91YmxlIGV4cGlyYXRpb25UaW1lKQotICAgIFJlc2V0UGx1Z0luQXV0
b1N0YXJ0T3JpZ2lucyhIYXNoTWFwPHVpbnQzMl90LGRvdWJsZT4gaGFzaGVzKQorICAgIERpZEFk
ZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godWludDMyX3QgaGFzaCwgZG91YmxlIGV4cGlyYXRp
b25UaW1lKQorICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEhhc2hNYXA8dWlu
dDMyX3QsZG91YmxlPiBoYXNoZXMpCiAKICAgICB2b2lkIFN0YXJ0TWVtb3J5U2FtcGxlcihXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1wbGVMb2dGaWxlSGFuZGxlLCBXVEY6OlN0
cmluZyBzYW1wbGVMb2dGaWxlUGF0aCwgZG91YmxlIGludGVydmFsKTsKICAgICB2b2lkIFN0b3BN
ZW1vcnlTYW1wbGVyKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194943</attachid>
            <date>2013-03-25 16:37:03 -0700</date>
            <delta_ts>2013-03-25 16:37:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113231-20130326103246.patch</filename>
            <type>text/plain</type>
            <size>17328</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNlZTA4ZDc1ODgyZjM3
YjZhNDAwNDM5ZTdkNTdmMGMzM2Y3ODBkYi4uNzkxN2M5NWNjMWEyOTk5Mjc4ODMzZGFjZTdjOWE3
M2Y1OTNlMTYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEzLTAzLTI1ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAorICAgICAgICBSZW1vdmUgYXV0b3N0YXJ0IGhh
c2hpbmcgY29kZSBmcm9tIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMzI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZSBQbHVnSW5PcmlnaW5IYXNoIGFuZCBhbGwgdGhlIHJlbGF0
ZWQgYnVpbGQgZW50cmllcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgICogcGx1Z2lucy9QbHVnSW5PcmlnaW5IYXNoLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbHVnaW5zL1BsdWdJbk9yaWdpbkhhc2guaDogUmVtb3ZlZC4KKwor
MjAxMy0wMy0yNSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKICAgICAgICAgQ2xl
YW51cCBwbHVnaW4gc25hcHNob3R0aW5nIGF1dG9zdGFydCBkZWNpc2lvbiBtYWtpbmcKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzIzMQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDkyYWE3ZDgwNGE2YTYwNjI3OTdhYzU4ODcxNjcwNjZkMjkyYmY3
OWUuLjlhOTliMjgwMDczOWVkZjEwNTkyNTBmYjczMTUzZmMwMDE4ZjBlODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0yMTIwLDcgKzIxMjAsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGx1Z2lucy9ET01NaW1lVHlwZS5jcHAKICAgICBwbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcAog
ICAgIHBsdWdpbnMvRE9NUGx1Z2luLmNwcAotICAgIHBsdWdpbnMvUGx1Z0luT3JpZ2luSGFzaC5j
cHAKICAgICBwbHVnaW5zL1BsdWdpbkRhdGEuY3BwCiAgICAgcGx1Z2lucy9QbHVnaW5NYWluVGhy
ZWFkU2NoZWR1bGVyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAyY2Rk
NTU4NWQwYWNkZjZjOTRkYzYzYTk4NzlhZDM4NWE3MGYzNWFlLi41M2FjYTIxODNjYmUyZGIwNDBh
MjJkYzBhMmQxMTFhYTg5MzUzOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTQzNDgsOCArNDM0OCw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9ET01QbHVnaW4uaCBcCiAJU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ucGFwaS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnBmdW5jdGlvbnMuaCBcCi0JU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnSW5PcmlnaW5IYXNoLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnSW5PcmlnaW5IYXNoLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0
YWJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXgg
NWZhNDMyMTBiZDI0MTUwNzdjMGE5NjRkNGQ3YjNiZjgzNWVlZTk4MC4uNmFmZWExN2VkN2E2ZThm
MzI4NzUzMjNhMmM4YjJiOGE1MmQ4YjUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC05NzUsNyArOTc1LDYg
QEAgU09VUkNFUyArPSBcCiAgICAgcGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNw
cCBcCiAgICAgcGx1Z2lucy9ET01NaW1lVHlwZS5jcHAgXAogICAgIHBsdWdpbnMvRE9NTWltZVR5
cGVBcnJheS5jcHAgXAotICAgIHBsdWdpbnMvUGx1Z0luT3JpZ2luSGFzaC5jcHAgXAogICAgIHBs
YXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9hbmltYXRpb24v
QW5pbWF0aW9uTGlzdC5jcHAgXAogICAgIHBsYXRmb3JtL0FyZW5hLmNwcCBcCkBAIC0yNDQ5LDcg
KzI0NDgsNiBAQCBIRUFERVJTICs9IFwKICAgICBwbHVnaW5zL1BsdWdpbkRlYnVnLmggXAogICAg
IHBsdWdpbnMvRE9NUGx1Z2luLmggXAogICAgIHBsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuaCBc
Ci0gICAgcGx1Z2lucy9QbHVnSW5PcmlnaW5IYXNoLmggXAogICAgIHBsdWdpbnMvUGx1Z2luTWFp
blRocmVhZFNjaGVkdWxlci5oIFwKICAgICBwbHVnaW5zL1BsdWdpblBhY2thZ2UuaCBcCiAgICAg
cGx1Z2lucy9QbHVnaW5TdHJlYW0uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNzBkNmJiOTI0NzJj
ZTZlOThkNWZmODM3MmUxZDViNDVjOGMzZjQ4Ni4uOGQxOGU2MzhlMjdmMGIxNThiOTEzZTZhMmIy
NTIxYjBmOWQ0NWE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjM1Niw4ICsyMzU2LDYgQEAKICAg
ICAgICAgICAgICdwbHVnaW5zL0RPTVBsdWdpbkFycmF5LmgnLAogICAgICAgICAgICAgJ3BsdWdp
bnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwJywKICAgICAgICAgICAgICdwbHVnaW5zL0lGcmFtZVNo
aW1TdXBwb3J0LmgnLAotICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z0luT3JpZ2luSGFzaC5jcHAn
LAotICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z0luT3JpZ2luSGFzaC5oJywKICAgICAgICAgICAg
ICdwbHVnaW5zL1BsdWdpbkRhdGEuY3BwJywKICAgICAgICAgICAgICdwbHVnaW5zL1BsdWdpbkRh
dGFOb25lLmNwcCcsCiAgICAgICAgICAgICAncGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxOGM4
MzljMDVmNjA3MjE1NzI1MTY1YWE0ZjEyNTQ3NTc0ZmRjMmVjLi43NjYxZTEzODI2YjYwZWIxMTYy
N2ZhZjg1OGI2ZTgwZDg2NGM4NTYxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNzM1NTksMTQgKzczNTU5LDYgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGx1Z2luc1xQbHVnSW5PcmlnaW5I
YXNoLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGx1Z2luc1xQbHVnSW5PcmlnaW5IYXNoLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZp
bGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsdWdpbnNcUGx1Z2luUGFja2FnZS5jcHAiCiAJCQkJ
PgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKaW5kZXggYTczY2MwMWFlNmJkZDBmZGFiZDkyODgxODg0YzcxNTk1ZGI2ZmI5My4u
NzY1NjY4ZjExOTdkZGVmNjc2MTZjN2I5NjNlMDI1MTM0MWJhMjRiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xMDE5OCw3ICsxMDE5
OCw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbHVnaW5zXFBsdWdpbkRhdGFiYXNl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsdWdpbnNcUGx1Z2luRGVidWcu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGx1Z2luc1xQbHVnaW5NYWluVGhy
ZWFkU2NoZWR1bGVyLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsdWdpbnNc
UGx1Z0luT3JpZ2luSGFzaC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbHVn
aW5zXFBsdWdpblBhY2thZ2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGx1
Z2luc1xQbHVnaW5TdHJlYW0uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGx1
Z2luc1xQbHVnaW5WaWV3LmNwcCIgLz4KQEAgLTEzMDAwLDcgKzEyOTk5LDYgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsdWdpbnNcUGx1Z2luRGF0YWJhc2UuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsdWdpbnNcUGx1Z2luRGVidWcuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsdWdpbnNcUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5oIiAvPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGx1Z2luc1xQbHVnSW5PcmlnaW5IYXNoLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbHVnaW5zXFBsdWdpblBhY2thZ2UuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsdWdpbnNcUGx1Z2luUXVpcmtTZXQuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsdWdpbnNcUGx1Z2luU3RyYXRlZ3kuaCIgLz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycwppbmRleCAyOTM0ZTQ3MDU3NTMzYjMwZmVmNDdhNDIzNTdlNjU5MmUyYzgzZDJk
Li5lYjk3Y2ZmZDU5N2U0OTA2MTQ0YTczMWYxMmEyZmU1YzEzODI4ZGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
CkBAIC02MjE5LDkgKzYyMTksNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGx1Z2lu
c1xQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsdWdpbnM8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
dWdpbnNcUGx1Z0luT3JpZ2luSGFzaC5jcHAiPgotICAgICAgPEZpbHRlcj5wbHVnaW5zPC9GaWx0
ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbHVnaW5z
XFBsdWdpblBhY2thZ2UuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGx1Z2luczwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtMTMwMTcsOSArMTMwMTQsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGx1Z2luc1xQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmgiPgogICAgICAgPEZp
bHRlcj5wbHVnaW5zPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbHVnaW5zXFBsdWdJbk9yaWdpbkhhc2guaCI+Ci0gICAgICA8RmlsdGVyPnBs
dWdpbnM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsdWdpbnNcUGx1Z2luUGFja2FnZS5oIj4KICAgICAgIDxGaWx0ZXI+cGx1Z2luczwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNkMTM0NjJiOGVlYTIzYjM4YWZjMDQ5ODI4Y2E5
NmNhNjY0ZWU4MjguLjIxNjI0ZGY5YTFlYTBmZDZiNTI2NjhjY2UzNmUwYmE3YmE5YzY0MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTk0OCw4ICs5NDgsNiBAQAogCQkzMUMwRkY0RDBFNENFRkREMDA3RDZGRTUgLyogRE9NV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFDMEZGNDcwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRp
b25FdmVudC5tbSAqLzsgfTsKIAkJMzFDMEZGNEUwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktp
dFRyYW5zaXRpb25FdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMUMwRkY0ODBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJh
bnNpdGlvbkV2ZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJMzFENTkxQjMxNjY5N0E2QzAwRTZCRjAy
IC8qIFBsdWdJbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzFENTkxQjExNjY5N0E2QzAwRTZCRjAyIC8qIFBsdWdJbkNsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxRDU5MUJCMTY2
QzJFNkMwMEU2QkYwMiAvKiBQbHVnSW5PcmlnaW5IYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRDU5MUI5MTY2QzJFNkMwMEU2QkYwMiAvKiBQ
bHVnSW5PcmlnaW5IYXNoLmNwcCAqLzsgfTsKLQkJMzFENTkxQkMxNjZDMkU2QzAwRTZCRjAyIC8q
IFBsdWdJbk9yaWdpbkhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxRDU5MUJBMTY2QzJFNkMwMEU2QkYwMiAvKiBQbHVnSW5PcmlnaW5IYXNoLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMzFFQzFFMjgxNEZGNjBF
RTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRUMxRTI2MTRGRjYwRUUw
MEM5NDY2MiAvKiBKU05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi87IH07CiAJ
CTMxRUMxRTI5MTRGRjYwRUUwMEM5NDY2MiAvKiBKU05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFF
QzFFMjcxNEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmggKi87IH07CiAJCTMxRkIxQTU3MTIwQTVEMDYwMERDMDJBMCAvKiBEZXZpY2VNb3Rpb25DbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRkIx
QTRGMTIwQTVEMDYwMERDMDJBMCAvKiBEZXZpY2VNb3Rpb25DbGllbnQuaCAqLzsgfTsKQEAgLTgz
NTQsOCArODM1Miw2IEBACiAJCTMxQzBGRjQ3MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRU
cmFuc2l0aW9uRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMxQzBGRjQ4MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XZWJLaXRUcmFu
c2l0aW9uRXZlbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUQ1
OTFCMTE2Njk3QTZDMDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBsdWdJbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzMUQ1OTFCOTE2NkMyRTZDMDBFNkJGMDIgLyogUGx1Z0luT3JpZ2luSGFzaC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnSW5PcmlnaW5IYXNoLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzFENTkxQkExNjZDMkU2QzAwRTZCRjAyIC8q
IFBsdWdJbk9yaWdpbkhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1
Z0luT3JpZ2luSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUU4RDhCQTE2
MEJDOTRCMDA0Q0U4RjUgLyogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUU4RDhCQjE2MEJDOTRDMDA0Q0U4RjUgLyog
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzFFQzFENTAxNEZFRkQwODAwQzk0NjYyIC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxs
YmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmlkbDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYxNzgs
OCArMTYxNzQsNiBAQAogCQkJCUE5QzZFNEYyMEQ3NDVFNDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRh
LmggKi8sCiAJCQkJMUFEQTE0MEUwRTFBRTVEOTAwMDIzRUU1IC8qIFBsdWdpbk1haW5UaHJlYWRT
Y2hlZHVsZXIuY3BwICovLAogCQkJCTFBREExNDBGMEUxQUU1RDkwMDAyM0VFNSAvKiBQbHVnaW5N
YWluVGhyZWFkU2NoZWR1bGVyLmggKi8sCi0JCQkJMzFENTkxQjkxNjZDMkU2QzAwRTZCRjAyIC8q
IFBsdWdJbk9yaWdpbkhhc2guY3BwICovLAotCQkJCTMxRDU5MUJBMTY2QzJFNkMwMEU2QkYwMiAv
KiBQbHVnSW5PcmlnaW5IYXNoLmggKi8sCiAJCQkJMUFBODc5OEYxMUNCRTg0NjAwM0M2NjRGIC8q
IFBsdWdpblN0cmF0ZWd5LmggKi8sCiAJCQkJMEFGREFDM0MxMEY1NDQ4QzAwRTFGM0QyIC8qIFBs
dWdpblZpZXdCYXNlLmggKi8sCiAJCQkJNzZGRjE3RTIxMTIzNTY3MzAwMUQ2MUI1IC8qIFBsdWdp
blZpZXdOb25lLmNwcCAqLywKQEAgLTI1NzgxLDcgKzI1Nzc1LDYgQEAKIAkJCQlBOUM2RTRGNDBE
NzQ1RTQ4MDA2NDQyRTkgLyogUGx1Z2luRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyMDVB
QkMxMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQURBMTQxMTBFMUFFNUQ5MDAwMjNFRTUgLyogUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMzFENTkxQkMxNjZDMkU2QzAwRTZCRjAyIC8qIFBsdWdJbk9y
aWdpbkhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTg3OTkwMTFDQkU4NDYwMDNDNjY0RiAv
KiBQbHVnaW5TdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEFGREFDM0QxMEY1NDQ4QzAw
RTFGM0QyIC8qIFBsdWdpblZpZXdCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JCOEFCODEz
RjFBRkIwMDA3MzRERjAgLyogUE9EQXJlbmEuaCBpbiBIZWFkZXJzICovLApAQCAtMjkxNzIsNyAr
MjkxNjUsNiBAQAogCQkJCUE5QzZFNEYzMEQ3NDVFNDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRhLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk3MjA1QUJCMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5E
b2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQURBMTQxMDBFMUFFNUQ5MDAwMjNFRTUg
LyogUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzMUQ1
OTFCQjE2NkMyRTZDMDBFNkJGMDIgLyogUGx1Z0luT3JpZ2luSGFzaC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3NkZGMTdFMzExMjM1NjczMDAxRDYxQjUgLyogUGx1Z2luVmlld05vbmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjJCMUY3MTYwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVu
dHNIaXRSdWxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUxMTU0NjEzMDE1QzRFMDA1NEFD
OEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IDk1ZTQ2NjdlNmE4YTVm
YzIzNmJhYmMyYWRkYTdhMDgxNDA3ZmU3YTEuLjU5MjA1YjEzNDhjZDlhNzg2M2Y0OGM5MTljMzE1
ZjgzZDA1OTUwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsdWdJbkNsaWVudC5oIgotI2lu
Y2x1ZGUgIlBsdWdJbk9yaWdpbkhhc2guaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgog
I2luY2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2Uu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z0luT3JpZ2luSGFzaC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdJbk9yaWdpbkhhc2guY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDViMGRiNDcxNWUzOWE0NzAwOTdhYjQxNWJkZDY3MTU5
Y2I4NWIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z0luT3JpZ2luSGFzaC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlBsdWdJbk9yaWdpbkhhc2guaCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVk
ZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgiCi0jaW5jbHVk
ZSAiS1VSTC5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIHZvaWQgYWRkQ2FzZUZv
bGRlZENoYXJhY3RlcnMoU3RyaW5nSGFzaGVyJiBoYXNoZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KQotewotICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYg
KHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGhhc2hlci5hZGRDaGFyYWN0ZXJzPExD
aGFyLCBDYXNlRm9sZGluZ0hhc2g6OmZvbGRDYXNlPExDaGFyPiA+KHN0cmluZy5jaGFyYWN0ZXJz
OCgpLCBzdHJpbmcubGVuZ3RoKCkpOwotICAgIHJldHVybiBoYXNoZXIuYWRkQ2hhcmFjdGVyczxV
Q2hhciwgQ2FzZUZvbGRpbmdIYXNoOjpmb2xkQ2FzZTxVQ2hhcj4gPihzdHJpbmcuY2hhcmFjdGVy
czE2KCksIHN0cmluZy5sZW5ndGgoKSk7Ci19Ci0KLXVuc2lnbmVkIFBsdWdJbk9yaWdpbkhhc2g6
Omhhc2goSFRNTFBsdWdJbkltYWdlRWxlbWVudCogcGx1Z0luRWxlbWVudCwgY29uc3QgS1VSTCYg
cGx1Z0luVVJMKQotewotICAgIEFTU0VSVChwbHVnSW5FbGVtZW50LT5kb2N1bWVudCgpLT5wYWdl
KCkpOwotCi0gICAgU3RyaW5nIG1pbWVUeXBlID0gcGx1Z0luRWxlbWVudC0+c2VydmljZVR5cGUo
KTsKLSAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICBtaW1lVHlwZSA9IG1pbWVU
eXBlRnJvbVVSTChwbHVnSW5VUkwpOwotCi0gICAgLy8gV2Ugd2FudCB0byBhdm9pZCBjb25jYXRl
bmF0aW5nIHRoZSBzdHJpbmdzIGFuZCB0aGVuIHRha2luZyB0aGUgaGFzaCwgc2luY2UgdGhhdCBj
b3VsZCBsZWFkIHRvIGFuIGV4cGVuc2l2ZSBjb252ZXJzaW9uLgotICAgIC8vIFdlIGFsc28gd2Fu
dCB0byBhdm9pZCB1c2luZyB0aGUgaGFzaCgpIGZ1bmN0aW9uIGluIFN0cmluZ0ltcGwgb3IgQ2Fz
ZUZvbGRpbmdIYXNoIGJlY2F1c2UgdGhhdCBtYXNrcyBvdXQgYml0cyBmb3IgdGhlIHVzZSBvZiBm
bGFncy4KLSAgICBTdHJpbmdIYXNoZXIgaGFzaGVyOwotICAgIGFkZENhc2VGb2xkZWRDaGFyYWN0
ZXJzKGhhc2hlciwgcGx1Z0luRWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKSk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3Rl
cigwKTsKLSAgICBhZGRDYXNlRm9sZGVkQ2hhcmFjdGVycyhoYXNoZXIsIHBsdWdJblVSTC5ob3N0
KCkpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIoMCk7Ci0gICAgYWRkQ2FzZUZvbGRlZENoYXJh
Y3RlcnMoaGFzaGVyLCBtaW1lVHlwZSk7Ci0gICAgTE9HKFBsdWdpbnMsICJIYXNoOiAlcyAlcyAl
cyIsIHBsdWdJbkVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvY3Vt
ZW50KCktPmJhc2VVUkwoKS5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcGx1Z0luVVJMLmhvc3QoKS51
dGY4KCkuZGF0YSgpLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gaGFzaGVy
Lmhhc2goKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnSW5PcmlnaW5IYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdJbk9yaWdpbkhhc2guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUx
MDhlZGNhNWQ4NjEyYzU0MzYyYjU3OGVjYWM2NmNjMWRhZDg4MS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdJ
bk9yaWdpbkhhc2guaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFBsdWdJbk9yaWdpbkhhc2hfaAotI2RlZmluZSBQbHVnSW5PcmlnaW5IYXNoX2gK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Owot
Y2xhc3MgS1VSTDsKLQotc3RydWN0IFBsdWdJbk9yaWdpbkhhc2ggewotICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqLCBjb25zdCBLVVJMJik7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvKiBQbHVnSW5PcmlnaW5IYXNoX2ggKi8K
</data>

          </attachment>
      

    </bug>

</bugzilla>