<?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>95619</bug_id>
          
          <creation_ts>2012-08-31 15:53:47 -0700</creation_ts>
          <short_desc>Add ClipPathOperation for -webkit-clip-path organization</short_desc>
          <delta_ts>2012-09-15 21:29:43 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>95389</blocked>
    
    <blocked>96876</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eric</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>710042</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-08-31 15:53:47 -0700</bug_when>
    <thetext>Investigate if storing a Path member in RenderStyle can improve -webkit-clip-path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716920</commentid>
    <comment_count>1</comment_count>
      <attachid>163296</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-09-11 00:56:07 -0700</bug_when>
    <thetext>Created attachment 163296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717017</commentid>
    <comment_count>2</comment_count>
      <attachid>163322</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-09-11 03:28:52 -0700</bug_when>
    <thetext>Created attachment 163322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717055</commentid>
    <comment_count>3</comment_count>
      <attachid>163337</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-09-11 04:44:48 -0700</bug_when>
    <thetext>Created attachment 163337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717263</commentid>
    <comment_count>4</comment_count>
      <attachid>163337</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-09-11 09:27:08 -0700</bug_when>
    <thetext>Comment on attachment 163337
Patch

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

&gt; Source/WebCore/rendering/ClipPathOperation.h:104
&gt; +class ReferenceClipPathOperation : public ClipPathOperation {
&gt; +public:

Why not wait until you use this class before adding it?

&gt; Source/WebCore/rendering/ClipPathOperation.h:135
&gt; +    void* m_data;

It&apos;s a bit frustrating that we can&apos;t reference a real type from here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717265</commentid>
    <comment_count>5</comment_count>
      <attachid>163337</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-09-11 09:27:40 -0700</bug_when>
    <thetext>Comment on attachment 163337
Patch

You should update the bug title. Did you actually measure that this is an improvement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717531</commentid>
    <comment_count>6</comment_count>
      <attachid>163337</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-11 14:06:03 -0700</bug_when>
    <thetext>Comment on attachment 163337
Patch

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

&gt;&gt; Source/WebCore/rendering/ClipPathOperation.h:135
&gt;&gt; +    void* m_data;
&gt; 
&gt; It&apos;s a bit frustrating that we can&apos;t reference a real type from here.

I&apos;d like to see a comment that tells me what this data really is, and its ownership model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717853</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-09-11 20:17:59 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 163337 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163337&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/ClipPathOperation.h:135
&gt; &gt;&gt; +    void* m_data;
&gt; &gt; 
&gt; &gt; It&apos;s a bit frustrating that we can&apos;t reference a real type from here.
&gt; 
&gt; I&apos;d like to see a comment that tells me what this data really is, and its ownership model.

I&apos;ll land the patch without this class as suggested by Dean. But I&apos;ll add the comment with the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721525</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-09-15 20:40:17 -0700</bug_when>
    <thetext>The improvement is about 5% on the same build (w/ and w/o patch). More improvement is possible. Looking into that on a next patch further. It still seems cleaner to move out the path creation from RenderLayer and SVGRenderContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721526</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-15 20:46:41 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; The improvement is about 5% on the same build (w/ and w/o patch). More improvement is possible. Looking into that on a next patch further. It still seems cleaner to move out the path creation from RenderLayer and SVGRenderContext.

Curious which benchmark you&apos;re using here? Is it one we have checked-in to PerformanceTests/  If not, could we?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721528</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-09-15 21:00:39 -0700</bug_when>
    <thetext>I was checking with WebInspector :P I have a test that creates a number of divs (default 1000) with clip-path and changes the clip-path after that. I&apos;ll definitely create a PerformanceTest, once I learned how to write it, because I have more possible improvements in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721530</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-09-15 21:24:13 -0700</bug_when>
    <thetext>Committed r128700: &lt;http://trac.webkit.org/changeset/128700&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163296</attachid>
            <date>2012-09-11 00:56:07 -0700</date>
            <delta_ts>2012-09-11 03:28:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95619-20120911095541.patch</filename>
            <type>text/plain</type>
            <size>22362</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU2NTNiMWQyYWM2ZDUx
YWU4MzUxZmNmMzY4ZWFkNWJiOTJjMWEyNS4uOWRkYWU4MjM4OWEwZjZiOWQ3OGU0MTQ5MDI5Y2Zk
OTlkNjdkYmZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTExICBEaXJr
IFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW52ZXN0aWdhdGUgaWYgc3Rv
cmluZyBhIFBhdGggbWVtYmVyIGluIFJlbmRlclN0eWxlIGNhbiBpbXByb3ZlIC13ZWJraXQtY2xp
cC1wYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTYxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBhIG5ldyBjbGFzcyBDbGlwUGF0aE9wZXJhdGlvbiB0byBtYW5hZ2UgdGhl
IHZhbHVlcyBvZiB0aGUKKyAgICAgICAgLXdlYmtpdC1jbGlwLXBhdGggcHJvcGVydHkuIENsaXBQ
YXRoT3BlcmF0aW9uIHN0b3JlcyBhIFBhdGggb2JqZWN0IGZvciBjbGlwcGluZyBhbmQgaXMKKyAg
ICAgICAgYSBwcmVwYXJhdGlvbiBmb3IgSVJJIHJlZmVyZW5jZXMgb2YgdGhlIFNWRyAnY2xpcFBh
dGgnIGVsZW1lbnQuCisKKyAgICAgICAgVGhlIHN0cnVjdHVyZSBvZiBDbGlwUGF0aE9wZXJhdGlv
biBpcyBzaW11bGFyIHRvIEZpbHRlck9wZXJhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IFRoZSBjaGFuZ2VzIGp1c3QgYWZmZWN0IHRoZSBiYWNrZW5kLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbTogQWRkZWQgbmV3IENsaXBQYXRoT3BlcmF0aW9uIGNsYXNzLgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajogRGl0dG8uCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHA6IFVzZSBDbGlwUGF0aE9wZXJhdGlvbiBpbnN0ZWFkIG9mIEJhc2ljU2hhcGUuCisgICAgICAg
IChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFs
dWUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyLmNwcDogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwUGF0aDo6
c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNsaXBQYXRoOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwUGF0aDo6Y3JlYXRl
SGFuZGxlcik6CisgICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmg6IEFkZGVk
LiBOZXcgaGFuZGxlciBmb3IgcHJvcGVydHkgdmFsdWVzIChCYXNpY1NoYXBlLCByZWZlcmVuY2Vz
KS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2xpcFBhdGhPcGVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcFBhdGhPcGVyYXRpb246On5DbGlwUGF0aE9wZXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6b3BlcmF0b3IhPSk6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6Z2V0T3BlcmF0aW9uVHlwZSk6IFJldHVybiB0
aGUgb3BlcmF0aW9uIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6
aXNTYW1lVHlwZSk6IEhlbHBlciBmdW5jdGlvbiBmb3IgPW9wZXJhdG9yLgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcFBhdGhPcGVyYXRpb246OkNsaXBQYXRoT3BlcmF0aW9uKToKKyAgICAgICAgKFNo
YXBlQ2xpcFBhdGhPcGVyYXRpb24pOiBJbmhlcml0aW5nIGNsYXNzIGZvciBtYW5hZ2luZyBCYXNp
Y1NoYXBlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpiYXNpY1NoYXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OndpbmRSdWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OnBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcGVDbGlwUGF0aE9wZXJhdGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpTaGFwZUNsaXBQYXRoT3BlcmF0aW9u
KToKKyAgICAgICAgKFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uKTogSW5oZXJpdGluZyBjbGFz
cyBmb3IgbWFuYWdpbmcgSVJJIHJlZmVyZW5jZXMuCisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVu
Y2VDbGlwUGF0aE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5j
ZUNsaXBQYXRoT3BlcmF0aW9uOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJlbmNlQ2xp
cFBhdGhPcGVyYXRpb246OmZyYWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUNs
aXBQYXRoT3BlcmF0aW9uOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUNsaXBQ
YXRoT3BlcmF0aW9uOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUNsaXBQ
YXRoT3BlcmF0aW9uOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUNs
aXBQYXRoT3BlcmF0aW9uOjpSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDogVXNlIENsaXBQYXRoT3BlcmF0aW9uIHRvIGFwcGx5
IGNsaXBwaW5nLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250
ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKyAgICAgICAg
KFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVy
aW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCk6CisKIDIwMTItMDktMTAgIEpv
c2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IElE
QkZhY3RvcnkuZGVsZXRlRGF0YWJhc2UoKSBpcyBzbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCAyYzczNGY0NDk5MDI4OGFjYzFmNjY2MDJjOTQzZWFlMzg5NTI5YjgxLi44NDBi
MTc2MDUxZGMxNmIxZTUwYWQ1MTZmMGFkYzVlNzU1NTRhMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTUxMDUsNiArNTEwNSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQ2xpcFBhdGhPcGVyYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Db250ZW50RGF0YS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9D
b250ZW50RGF0YS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhOTY1MjA2YTczZjE0N2IxYmNmM2Uy
YzQzYWYxZTUxNmU3MTFkZGIyLi42MGYyMjI0YzAwMGJkY2YyNWE2NmE0NjBiNTZhMWEzNjEzMjNm
N2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01OTIsNiArNTkyLDcgQEAKICAgICAgICAgICAgICdy
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0
eWxlL0JvcmRlckRhdGEuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0JvcmRlclZh
bHVlLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9DbGlwUGF0aE9wZXJhdGlvbi5o
JywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaCcs
CiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgnLAogICAgICAgICAg
ICAgJ3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMmQ5MTgyNjA2YjYwZjFmODk1ZjRl
ZjFjNzNhYjljNGRmMjE2MTNkNC4uZmUyOTg3Mzc5NzI5OGU5OTI5NDNlZDcwYTRkZGM1ZmRhNjg3
N2QyOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTQ2NjU5LDYgKzQ2NjU5LDEwIEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5n
XHN0eWxlXEJhc2ljU2hhcGVzLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVcQ2xpcFBhdGhPcGVyYXRpb24uaCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KIAkJCTwvRmlsdGVyPgogCQkJPEZpbHRlcgogCQkJCU5hbWU9
InN2ZyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAyZDI3NTc2ZTUzMGQzNGUxYTJmZDlmNzMxZjAxMGJmMTE5MDFhNDI4Li5iNDc4
ODAwNTRiZWMzYTE3MmJjM2JlYjk5ZmEyZGQxY2Q5ZDUzZjExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzEzLDYgKzYzMTMs
NyBAQAogCQlGQUJFNzJGRDEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudEZhY3Rvcnku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcy
RkIxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKIAkJ
RkFCRTcyRkUxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkZDMTA1OUMyMTEwMEQ5OTlE
RCAvKiBNYXRoTUxOYW1lcy5jcHAgKi87IH07CiAJCUZCNzhBRDJFMTUxQkY1RTYwMEZFNTREMyAv
KiBDU1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQjc4QUQyQzE1MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZCOTJERjRCMTVG
RUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI5MkRGNDkxNUZFRDA4NzAwOTk0NDMzIC8qIENs
aXBQYXRoT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRkJDMjIwREYxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNzQ29udGV4dDNE
T3BlbkdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZCQzIyMERFMTIzN0ZCRUIwMEJDRjc4OCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAg
Ki87IH07CiAJCUZCRDZBRjg4MTVFRjI1QzkwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkJENkFGODcxNUVG
MjFENDAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmggKi87IH07CiAJCUZCRDZBRjg5MTVFRjI1
REIwMDhCNzExMCAvKiBCYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCRDZBRjg0MTVFRjIxRDQwMDhCNzExMCAvKiBC
YXNpY1NoYXBlRnVuY3Rpb25zLmNwcCAqLzsgfTsKQEAgLTEzNzI0LDYgKzEzNzI1LDcgQEAKIAkJ
RkFCRTcyRkIxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRkMxMDU5QzIxMTAwRDk5OURE
IC8qIE1hdGhNTE5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1hdGhNTE5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI3OEFEMkMx
NTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGQjkyREY0OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcFBhdGhPcGVyYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkJDMjIwREUxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNz
Q29udGV4dDNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkJENkFGODIxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEJhc2ljU2hhcGVzLmNwcDsgcGF0aCA9IHN0eWxl
L0Jhc2ljU2hhcGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkJENkFGODMx
NUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEJhc2ljU2hhcGVzLmg7IHBhdGggPSBzdHlsZS9CYXNpY1NoYXBlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA0NTMsNiArMjA0NTUsNyBAQAogCQkJCUZCRDZB
RjgzMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5oICovLAogCQkJCUJDNUVCNUUwMEU4
MUJFODcwMEIyNTk2NSAvKiBCb3JkZXJEYXRhLmggKi8sCiAJCQkJQkM1RUI1REEwRTgxQjdFQTAw
QjI1OTY1IC8qIEJvcmRlclZhbHVlLmggKi8sCisJCQkJRkI5MkRGNDkxNUZFRDA4NzAwOTk0NDMz
IC8qIENsaXBQYXRoT3BlcmF0aW9uLmggKi8sCiAJCQkJQkM1RUI1REUwRTgxQjlBQjAwQjI1OTY1
IC8qIENvbGxhcHNlZEJvcmRlclZhbHVlLmggKi8sCiAJCQkJQkM1RUI5N0UwRTgyMDcyNTAwQjI1
OTY1IC8qIENvbnRlbnREYXRhLmNwcCAqLywKIAkJCQlCQzVFQjk3RjBFODIwNzI1MDBCMjU5NjUg
LyogQ29udGVudERhdGEuaCAqLywKQEAgLTI1NTQzLDYgKzI1NTQ2LDcgQEAKIAkJCQkwRjYwNUFF
RDE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTRGMzc3RkY1MTVGQTM1NkEwMEU1RDYwRCAvKiBXZWJDb3JlTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTEyRTkwRjE1RkE1RDNBMDA1RTQxMjYgLyog
Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkI5MkRGNEIx
NUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQYXRoT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
aW5kZXggZWJjMjdhYWM3ZWQ0YWRhMzA4M2NhZjFkNTdkOWVkYWNkOTA0MjI3Yi4uOWVlMDAwMGNj
MDczZjViZDcyMDU2MjgxN2MyZDFkMjY5NjFiMWE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTI0MDUsOSArMjQwNSwx
MSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q291
bnRlclJlc2V0OgogICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1ZhbHVlKHN0eWxlLmdl
dCgpLCBwcm9wZXJ0eUlEKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENsaXBQYXRo
OgotICAgICAgICAgICAgaWYgKCFzdHlsZS0+Y2xpcFBhdGgoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7
Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JCYXNpY1NoYXBlKHN0eWxlLT5jbGlwUGF0aCgp
KTsKKyAgICAgICAgICAgIGlmIChDbGlwUGF0aE9wZXJhdGlvbiogb3BlcmF0aW9uID0gc3R5bGUt
PmNsaXBQYXRoKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAob3BlcmF0aW9uLT5nZXRPcGVyYXRp
b25UeXBlKCkgPT0gQ2xpcFBhdGhPcGVyYXRpb246OlNIQVBFKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdmFsdWVGb3JCYXNpY1NoYXBlKHN0YXRpY19jYXN0PFNoYXBlQ2xpcFBhdGhPcGVy
YXRpb24qPihvcGVyYXRpb24pLT5iYXNpY1NoYXBlKCkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vbmUpOwogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEZsb3dJbnRvOgogICAgICAgICAgICAgaWYgKHN0eWxlLT5mbG93VGhyZWFkKCkuaXNO
dWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCmluZGV4IGVkMGExNWZiYzNmZDBm
MmE1MWJiNzk3NzJjMDdiOWY0NDY1ZGQ0NmUuLmJlMTljOTZhYjBhMDlmMjg2M2I1ZDRlZWQ2NDM1
YzgxYTczNmQyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUg
IkNTU1RvU3R5bGVNYXAuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJD
bGlwUGF0aE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKQEAgLTE2ODIsMTAgKzE2ODMsMTAgQEAg
cHVibGljOgogICAgIH0KIH07CiAKLXRlbXBsYXRlIDxCYXNpY1NoYXBlKiAoUmVuZGVyU3R5bGU6
OipnZXR0ZXJGdW5jdGlvbikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXJGdW5j
dGlvbikoUGFzc1JlZlB0cjxCYXNpY1NoYXBlPiksIEJhc2ljU2hhcGUqICgqaW5pdGlhbEZ1bmN0
aW9uKSgpPgordGVtcGxhdGUgPENsaXBQYXRoT3BlcmF0aW9uKiAoUmVuZGVyU3R5bGU6OipnZXR0
ZXJGdW5jdGlvbikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXJGdW5jdGlvbiko
UGFzc1JlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4pLCBDbGlwUGF0aE9wZXJhdGlvbiogKCppbml0
aWFsRnVuY3Rpb24pKCk+CiBjbGFzcyBBcHBseVByb3BlcnR5Q2xpcFBhdGggewogcHVibGljOgot
ICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgUGFzc1JlZlB0cjxC
YXNpY1NoYXBlPiB2YWx1ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUpOyB9Cisg
ICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBQYXNzUmVmUHRyPENs
aXBQYXRoT3BlcmF0aW9uPiB2YWx1ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUp
OyB9CiAgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkgewpAQCAtMTY5MywxNCArMTY5NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAg
ICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIDApOwogICAgICAgICAg
ICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzU2hhcGUoKSkgewotICAgICAgICAgICAgICAg
IFJlZlB0cjxCYXNpY1NoYXBlPiBjbGlwUGF0aFNoYXBlID0gYmFzaWNTaGFwZUZvclZhbHVlKHN0
eWxlUmVzb2x2ZXIsIHByaW1pdGl2ZVZhbHVlLT5nZXRTaGFwZVZhbHVlKCkpOwotICAgICAgICAg
ICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIGNsaXBQYXRoU2hhcGUucmVs
ZWFzZSgpKTsKKyAgICAgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgp
LCBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpjcmVhdGUoYmFzaWNTaGFwZUZvclZhbHVlKHN0eWxl
UmVzb2x2ZXIsIHByaW1pdGl2ZVZhbHVlLT5nZXRTaGFwZVZhbHVlKCkpKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVI
YW5kbGVyKCkKICAgICB7Ci0gICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQ
cm9wZXJ0eURlZmF1bHRCYXNlPEJhc2ljU2hhcGUqLCBnZXR0ZXJGdW5jdGlvbiwgUGFzc1JlZlB0
cjxCYXNpY1NoYXBlPiwgc2V0dGVyRnVuY3Rpb24sIEJhc2ljU2hhcGUqLCBpbml0aWFsRnVuY3Rp
b24+OjpjcmVhdGVIYW5kbGVyKCk7CisgICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0g
QXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPENsaXBQYXRoT3BlcmF0aW9uKiwgZ2V0dGVyRnVuY3Rp
b24sIFBhc3NSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+LCBzZXR0ZXJGdW5jdGlvbiwgQ2xpcFBh
dGhPcGVyYXRpb24qLCBpbml0aWFsRnVuY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCk7CiAgICAgICAg
IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoaGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxl
ci5pbml0aWFsRnVuY3Rpb24oKSwgJmFwcGx5VmFsdWUpOwogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1ZjlhMjA1
ZGE3MGUyYzYwMGUwNjliZGMxODIwM2NjMWVhMmM4ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApAQCAtMCwwICsxLDEzOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT
4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YK
KyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDbGlwUGF0aE9wZXJh
dGlvbl9oCisjZGVmaW5lIENsaXBQYXRoT3BlcmF0aW9uX2gKKworI2luY2x1ZGUgIkJhc2ljU2hh
cGVzLmgiCisjaW5jbHVkZSAiUGF0aC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQ2xpcFBhdGhPcGVyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxDbGlwUGF0aE9wZXJhdGlv
bj4geworcHVibGljOgorICAgIGVudW0gT3BlcmF0aW9uVHlwZSB7CisgICAgICAgIFJFRkVSRU5D
RSwgLy8gdXJsKCNjbGlwUGF0aCkKKyAgICAgICAgU0hBUEUKKyAgICB9OworCisgICAgdmlydHVh
bCB+Q2xpcFBhdGhPcGVyYXRpb24oKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJikgY29uc3QgPSAwOworICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBDbGlwUGF0aE9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBv
KTsgfQorCisgICAgdmlydHVhbCBPcGVyYXRpb25UeXBlIGdldE9wZXJhdGlvblR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShjb25zdCBD
bGlwUGF0aE9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby5nZXRPcGVyYXRpb25UeXBlKCkg
PT0gbV90eXBlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBDbGlwUGF0aE9wZXJhdGlvbihPcGVyYXRp
b25UeXBlIHR5cGUpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgeworICAgIH0KKworICAg
IE9wZXJhdGlvblR5cGUgbV90eXBlOworfTsKKworY2xhc3MgU2hhcGVDbGlwUGF0aE9wZXJhdGlv
biA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8QmFzaWNTaGFw
ZT4gc2hhcGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXBlQ2xpcFBh
dGhPcGVyYXRpb24oc2hhcGUpKTsKKyAgICB9CisKKyAgICBjb25zdCBCYXNpY1NoYXBlKiBiYXNp
Y1NoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZS5nZXQoKTsgfQorICAgIFdpbmRSdWxlIHdp
bmRSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZS0+d2luZFJ1bGUoKTsgfQorICAgIGNvbnN0
IFBhdGgmIHBhdGgoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV9zaGFwZSk7CisgICAgICAgIEFTU0VSVChtX3BhdGgpOworICAgICAg
ICBtX3BhdGgtPmNsZWFyKCk7CisgICAgICAgIG1fc2hhcGUtPnBhdGgoKm1fcGF0aCwgYm91bmRp
bmdSZWN0KTsKKyAgICAgICAgcmV0dXJuICptX3BhdGg7CisgICAgfQorCitwcml2YXRlOgorICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBjb25zdCBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKiBvdGhlciA9IHN0
YXRpY19jYXN0PGNvbnN0IFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24qPigmbyk7CisgICAgICAgIHJl
dHVybiBtX3NoYXBlID09IG90aGVyLT5tX3NoYXBlOworICAgIH0KKworICAgIFNoYXBlQ2xpcFBh
dGhPcGVyYXRpb24oUGFzc1JlZlB0cjxCYXNpY1NoYXBlPiBzaGFwZSkKKyAgICAgICAgOiBDbGlw
UGF0aE9wZXJhdGlvbihTSEFQRSkKKyAgICAgICAgLCBtX3NoYXBlKHNoYXBlKQorICAgIHsKKyAg
ICB9CisKKyAgICBSZWZQdHI8QmFzaWNTaGFwZT4gbV9zaGFwZTsKKyAgICBPd25QdHI8UGF0aD4g
bV9wYXRoOworfTsKKworY2xhc3MgUmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24gOiBwdWJsaWMg
Q2xpcFBhdGhPcGVyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZmVy
ZW5jZUNsaXBQYXRoT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgZnJhZ21lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlZmVy
ZW5jZUNsaXBQYXRoT3BlcmF0aW9uKHVybCwgZnJhZ21lbnQpKTsKKyAgICB9CisKKyAgICBjb25z
dCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgU3RyaW5n
JiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnQ7IH0KKworICAgIHZvaWQqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICB2b2lkIHNldERhdGEodm9pZCogZGF0
YSkgeyBtX2RhdGEgPSBkYXRhOyB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24mIG8pIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoIWlzU2FtZVR5cGUobykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNv
bnN0IFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0
IFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uKj4oJm8pOworICAgICAgICByZXR1cm4gbV91cmwg
PT0gb3RoZXItPm1fdXJsOworICAgIH0KKworICAgIFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9u
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KQorICAgICAgICA6IENs
aXBQYXRoT3BlcmF0aW9uKFJFRkVSRU5DRSkKKyAgICAgICAgLCBtX3VybCh1cmwpCisgICAgICAg
ICwgbV9mcmFnbWVudChmcmFnbWVudCkKKyAgICAgICAgLCBtX2RhdGEoMCkKKyAgICB7CisgICAg
fQorCisgICAgU3RyaW5nIG1fdXJsOworICAgIFN0cmluZyBtX2ZyYWdtZW50OworICAgIHZvaWQq
IG1fZGF0YTsKK307Cit9CisKKyNlbmRpZiAvLyBDbGlwUGF0aE9wZXJhdGlvbl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAzMGY3NTljNWQ1Yzk4MzBhZDY0
OTkyOThjODZlMjlmMzRlMTZjY2FkLi44NDQ3MzIyNTdkNTRmY2IzNGRlZDg2OTU1MDRmOTYwNTlh
NDQ5NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTMx
MTYsMTIgKzMxMTYsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKFJl
bmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY28KICAgICAvLyBBcHBseSBj
bGlwLXBhdGggdG8gY29udGV4dC4KICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlcigp
LT5zdHlsZSgpOwogICAgIGlmIChyZW5kZXJlcigpLT5oYXNDbGlwUGF0aCgpICYmICFjb250ZXh0
LT5wYWludGluZ0Rpc2FibGVkKCkgJiYgc3R5bGUpIHsKLSAgICAgICAgaWYgKEJhc2ljU2hhcGUq
IGNsaXBTaGFwZSA9IHN0eWxlLT5jbGlwUGF0aCgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
SW52ZXN0aWdhdGUgaWYgaXQgaXMgYmV0dGVyIHRvIHN0b3JlIGFuZCB1cGRhdGUgYSBQYXRoIG9i
amVjdCBpbiBSZW5kZXJTdHlsZS4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTYxOQotICAgICAgICAgICAgUGF0aCBjbGlwUGF0aDsKLSAg
ICAgICAgICAgIGNsaXBTaGFwZS0+cGF0aChjbGlwUGF0aCwgY2FsY3VsYXRlTGF5ZXJCb3VuZHMo
dGhpcywgcm9vdExheWVyLCAwKSk7Ci0gICAgICAgICAgICB0cmFuc3BhcmVuY3lMYXllckNvbnRl
eHQtPmNsaXBQYXRoKGNsaXBQYXRoLCBjbGlwU2hhcGUtPndpbmRSdWxlKCkpOworICAgICAgICBB
U1NFUlQoc3R5bGUtPmNsaXBQYXRoKCkpOworICAgICAgICBpZiAoc3R5bGUtPmNsaXBQYXRoKCkt
PmdldE9wZXJhdGlvblR5cGUoKSA9PSBDbGlwUGF0aE9wZXJhdGlvbjo6U0hBUEUpIHsKKyAgICAg
ICAgICAgIFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24qIGNsaXBQYXRoID0gc3RhdGljX2Nhc3Q8U2hh
cGVDbGlwUGF0aE9wZXJhdGlvbio+KHN0eWxlLT5jbGlwUGF0aCgpKTsKKyAgICAgICAgICAgIHRy
YW5zcGFyZW5jeUxheWVyQ29udGV4dC0+Y2xpcFBhdGgoY2xpcFBhdGgtPnBhdGgoY2FsY3VsYXRl
TGF5ZXJCb3VuZHModGhpcywgcm9vdExheWVyLCAwKSksIGNsaXBQYXRoLT53aW5kUnVsZSgpKTsK
ICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAppbmRleCBjNTA3ODUyOTVmZmY5ODM0M2QxNmZmMzFjZmNjMWI2NDk5ZjU0NTY4
Li4zMWM1MjU3ODg2NjQ5YTIyNzk1MjkyNjE0ZDA2ZGQxZjIwNmRjOGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTQ2NiwxNCArMTQ2Niwx
NCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEJhc2ljU2hhcGUqIGluaXRpYWxXcmFwU2hhcGVJbnNp
ZGUoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIEJhc2ljU2hhcGUqIGluaXRpYWxXcmFwU2hh
cGVPdXRzaWRlKCkgeyByZXR1cm4gMDsgfQogCi0gICAgdm9pZCBzZXRDbGlwUGF0aChQYXNzUmVm
UHRyPEJhc2ljU2hhcGU+IHNoYXBlKQorICAgIHZvaWQgc2V0Q2xpcFBhdGgoUGFzc1JlZlB0cjxD
bGlwUGF0aE9wZXJhdGlvbj4gb3BlcmF0aW9uKQogICAgIHsKLSAgICAgICAgaWYgKHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2NsaXBQYXRoICE9IHNoYXBlKQotICAgICAgICAgICAgcmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY2xpcFBhdGggPSBzaGFwZTsKKyAgICAgICAgaWYgKHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQYXRoICE9IG9wZXJhdGlvbikKKyAgICAgICAgICAg
IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NsaXBQYXRoID0gb3BlcmF0aW9uOwog
ICAgIH0KLSAgICBCYXNpY1NoYXBlKiBjbGlwUGF0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2NsaXBQYXRoLmdldCgpOyB9CisgICAgQ2xpcFBhdGhPcGVyYXRpb24q
IGNsaXBQYXRoKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY2xpcFBh
dGguZ2V0KCk7IH0KIAotICAgIHN0YXRpYyBCYXNpY1NoYXBlKiBpbml0aWFsQ2xpcFBhdGgoKSB7
IHJldHVybiAwOyB9CisgICAgc3RhdGljIENsaXBQYXRoT3BlcmF0aW9uKiBpbml0aWFsQ2xpcFBh
dGgoKSB7IHJldHVybiAwOyB9CiAKICAgICBMZW5ndGggd3JhcFBhZGRpbmcoKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV93cmFwUGFkZGluZzsgfQogICAgIHZvaWQgc2V0
V3JhcFBhZGRpbmcoTGVuZ3RoIHdyYXBQYWRkaW5nKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fd3JhcFBhZGRpbmcsIHdyYXBQYWRkaW5nKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgK
aW5kZXggMjUxZmZhMzE5OWEwNjVjMDY2YjJkZWM2ZjBlMDUyN2M1OTYzNDcxMC4uMTE4ODA0ZTVm
YmE2MDI5Mzc0NDlmMTNmOThlN2IxOTQzMGNkOWE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjZGVmaW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGFfaAogCiAj
aW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRlICJDbGlwUGF0aE9wZXJhdGlvbi5oIgog
I2luY2x1ZGUgIkNvdW50ZXJEaXJlY3RpdmVzLmgiCiAjaW5jbHVkZSAiQ3Vyc29yRGF0YS5oIgog
I2luY2x1ZGUgIkRhdGFSZWYuaCIKQEAgLTEzOSw3ICsxNDAsNyBAQCBwdWJsaWM6CiAgICAgTGVu
Z3RoIG1fd3JhcE1hcmdpbjsKICAgICBMZW5ndGggbV93cmFwUGFkZGluZzsKIAotICAgIFJlZlB0
cjxCYXNpY1NoYXBlPiBtX2NsaXBQYXRoOworICAgIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4g
bV9jbGlwUGF0aDsKIAogICAgIENvbG9yIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3I7CiAg
ICAgQ29sb3IgbV92aXNpdGVkTGlua091dGxpbmVDb2xvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDZlM2NkMmRj
YmQwYWM5MzY5MTEyMDNlZjJjMzdmY2RhOGNlYjdhZTYuLjA0MWFlZDQxODZhY2M5NTMyY2FkMDA3
NzE3N2E3YzE1MTc5MDliYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTIzLDEzICsxMjMsMTAgQEAgdm9pZCBT
VkdSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVj
dCogb2JqZWN0LCBQYWludEkKICAgICAgICAgfQogICAgIH0KIAotICAgIEJhc2ljU2hhcGUqIGNs
aXBTaGFwZSA9IHN0eWxlLT5jbGlwUGF0aCgpOwotICAgIGlmIChjbGlwU2hhcGUpIHsKLSAgICAg
ICAgLy8gRklYTUU6IEludmVzdGlnYXRlIGlmIGl0IGlzIGJldHRlciB0byBzdG9yZSBhbmQgdXBk
YXRlIGEgUGF0aCBvYmplY3QgaW4gUmVuZGVyU3R5bGUuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTYxOQotICAgICAgICBQYXRoIGNsaXBQYXRo
OwotICAgICAgICBjbGlwU2hhcGUtPnBhdGgoY2xpcFBhdGgsIG9iamVjdC0+b2JqZWN0Qm91bmRp
bmdCb3goKSk7Ci0gICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5jbGlwUGF0aChjbGlwUGF0
aCwgY2xpcFNoYXBlLT53aW5kUnVsZSgpKTsKKyAgICBDbGlwUGF0aE9wZXJhdGlvbiogY2xpcFBh
dGhPcGVyYXRpb24gPSBzdHlsZS0+Y2xpcFBhdGgoKTsKKyAgICBpZiAoY2xpcFBhdGhPcGVyYXRp
b24gJiYgY2xpcFBhdGhPcGVyYXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSA9PSBDbGlwUGF0aE9w
ZXJhdGlvbjo6U0hBUEUpIHsKKyAgICAgICAgU2hhcGVDbGlwUGF0aE9wZXJhdGlvbiogY2xpcFBh
dGggPSBzdGF0aWNfY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKj4oY2xpcFBhdGhPcGVyYXRp
b24pOworICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+Y2xpcFBhdGgoY2xpcFBhdGgtPnBh
dGgob2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgpKSwgY2xpcFBhdGgtPndpbmRSdWxlKCkpOwog
ICAgIH0KIAogICAgIFNWR1Jlc291cmNlcyogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6
OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlck9iamVjdChtX29iamVjdCk7CkBAIC0xNTAsNyArMTQ3
LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50
KFJlbmRlck9iamVjdCogb2JqZWN0LCBQYWludEkKICAgICB9CiAKICAgICBSZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXIqIGNsaXBwZXIgPSByZXNvdXJjZXMtPmNsaXBwZXIoKTsKLSAgICBpZiAoIWNs
aXBTaGFwZSAmJiBjbGlwcGVyKSB7CisgICAgaWYgKCFjbGlwUGF0aE9wZXJhdGlvbiAmJiBjbGlw
cGVyKSB7CiAgICAgICAgIGlmICghY2xpcHBlci0+YXBwbHlSZXNvdXJjZShtX29iamVjdCwgc3R5
bGUsIG1fcGFpbnRJbmZvLT5jb250ZXh0LCBBcHBseVRvRGVmYXVsdE1vZGUpKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163322</attachid>
            <date>2012-09-11 03:28:52 -0700</date>
            <delta_ts>2012-09-11 04:44:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95619-20120911122825.patch</filename>
            <type>text/plain</type>
            <size>22368</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU2NTNiMWQyYWM2ZDUx
YWU4MzUxZmNmMzY4ZWFkNWJiOTJjMWEyNS4uOWRkYWU4MjM4OWEwZjZiOWQ3OGU0MTQ5MDI5Y2Zk
OTlkNjdkYmZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTExICBEaXJr
IFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW52ZXN0aWdhdGUgaWYgc3Rv
cmluZyBhIFBhdGggbWVtYmVyIGluIFJlbmRlclN0eWxlIGNhbiBpbXByb3ZlIC13ZWJraXQtY2xp
cC1wYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTYxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBhIG5ldyBjbGFzcyBDbGlwUGF0aE9wZXJhdGlvbiB0byBtYW5hZ2UgdGhl
IHZhbHVlcyBvZiB0aGUKKyAgICAgICAgLXdlYmtpdC1jbGlwLXBhdGggcHJvcGVydHkuIENsaXBQ
YXRoT3BlcmF0aW9uIHN0b3JlcyBhIFBhdGggb2JqZWN0IGZvciBjbGlwcGluZyBhbmQgaXMKKyAg
ICAgICAgYSBwcmVwYXJhdGlvbiBmb3IgSVJJIHJlZmVyZW5jZXMgb2YgdGhlIFNWRyAnY2xpcFBh
dGgnIGVsZW1lbnQuCisKKyAgICAgICAgVGhlIHN0cnVjdHVyZSBvZiBDbGlwUGF0aE9wZXJhdGlv
biBpcyBzaW11bGFyIHRvIEZpbHRlck9wZXJhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IFRoZSBjaGFuZ2VzIGp1c3QgYWZmZWN0IHRoZSBiYWNrZW5kLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbTogQWRkZWQgbmV3IENsaXBQYXRoT3BlcmF0aW9uIGNsYXNzLgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajogRGl0dG8uCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHA6IFVzZSBDbGlwUGF0aE9wZXJhdGlvbiBpbnN0ZWFkIG9mIEJhc2ljU2hhcGUuCisgICAgICAg
IChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFs
dWUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyLmNwcDogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwUGF0aDo6
c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNsaXBQYXRoOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwUGF0aDo6Y3JlYXRl
SGFuZGxlcik6CisgICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmg6IEFkZGVk
LiBOZXcgaGFuZGxlciBmb3IgcHJvcGVydHkgdmFsdWVzIChCYXNpY1NoYXBlLCByZWZlcmVuY2Vz
KS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2xpcFBhdGhPcGVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcFBhdGhPcGVyYXRpb246On5DbGlwUGF0aE9wZXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6b3BlcmF0b3IhPSk6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6Z2V0T3BlcmF0aW9uVHlwZSk6IFJldHVybiB0
aGUgb3BlcmF0aW9uIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6
aXNTYW1lVHlwZSk6IEhlbHBlciBmdW5jdGlvbiBmb3IgPW9wZXJhdG9yLgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcFBhdGhPcGVyYXRpb246OkNsaXBQYXRoT3BlcmF0aW9uKToKKyAgICAgICAgKFNo
YXBlQ2xpcFBhdGhPcGVyYXRpb24pOiBJbmhlcml0aW5nIGNsYXNzIGZvciBtYW5hZ2luZyBCYXNp
Y1NoYXBlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpiYXNpY1NoYXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OndpbmRSdWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OnBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcGVDbGlwUGF0aE9wZXJhdGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpTaGFwZUNsaXBQYXRoT3BlcmF0aW9u
KToKKyAgICAgICAgKFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uKTogSW5oZXJpdGluZyBjbGFz
cyBmb3IgbWFuYWdpbmcgSVJJIHJlZmVyZW5jZXMuCisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVu
Y2VDbGlwUGF0aE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5j
ZUNsaXBQYXRoT3BlcmF0aW9uOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJlbmNlQ2xp
cFBhdGhPcGVyYXRpb246OmZyYWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUNs
aXBQYXRoT3BlcmF0aW9uOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUNsaXBQ
YXRoT3BlcmF0aW9uOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUNsaXBQ
YXRoT3BlcmF0aW9uOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUNs
aXBQYXRoT3BlcmF0aW9uOjpSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDogVXNlIENsaXBQYXRoT3BlcmF0aW9uIHRvIGFwcGx5
IGNsaXBwaW5nLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250
ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKyAgICAgICAg
KFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVy
aW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCk6CisKIDIwMTItMDktMTAgIEpv
c2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IElE
QkZhY3RvcnkuZGVsZXRlRGF0YWJhc2UoKSBpcyBzbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCAyYzczNGY0NDk5MDI4OGFjYzFmNjY2MDJjOTQzZWFlMzg5NTI5YjgxLi44NDBi
MTc2MDUxZGMxNmIxZTUwYWQ1MTZmMGFkYzVlNzU1NTRhMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTUxMDUsNiArNTEwNSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQ2xpcFBhdGhPcGVyYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Db250ZW50RGF0YS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9D
b250ZW50RGF0YS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhOTY1MjA2YTczZjE0N2IxYmNmM2Uy
YzQzYWYxZTUxNmU3MTFkZGIyLi42MGYyMjI0YzAwMGJkY2YyNWE2NmE0NjBiNTZhMWEzNjEzMjNm
N2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01OTIsNiArNTkyLDcgQEAKICAgICAgICAgICAgICdy
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0
eWxlL0JvcmRlckRhdGEuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0JvcmRlclZh
bHVlLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9DbGlwUGF0aE9wZXJhdGlvbi5o
JywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaCcs
CiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgnLAogICAgICAgICAg
ICAgJ3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMmQ5MTgyNjA2YjYwZjFmODk1ZjRl
ZjFjNzNhYjljNGRmMjE2MTNkNC4uZmUyOTg3Mzc5NzI5OGU5OTI5NDNlZDcwYTRkZGM1ZmRhNjg3
N2QyOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTQ2NjU5LDYgKzQ2NjU5LDEwIEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5n
XHN0eWxlXEJhc2ljU2hhcGVzLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVcQ2xpcFBhdGhPcGVyYXRpb24uaCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KIAkJCTwvRmlsdGVyPgogCQkJPEZpbHRlcgogCQkJCU5hbWU9
InN2ZyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAyZDI3NTc2ZTUzMGQzNGUxYTJmZDlmNzMxZjAxMGJmMTE5MDFhNDI4Li5iNDc4
ODAwNTRiZWMzYTE3MmJjM2JlYjk5ZmEyZGQxY2Q5ZDUzZjExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzEzLDYgKzYzMTMs
NyBAQAogCQlGQUJFNzJGRDEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudEZhY3Rvcnku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcy
RkIxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKIAkJ
RkFCRTcyRkUxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkZDMTA1OUMyMTEwMEQ5OTlE
RCAvKiBNYXRoTUxOYW1lcy5jcHAgKi87IH07CiAJCUZCNzhBRDJFMTUxQkY1RTYwMEZFNTREMyAv
KiBDU1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQjc4QUQyQzE1MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZCOTJERjRCMTVG
RUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI5MkRGNDkxNUZFRDA4NzAwOTk0NDMzIC8qIENs
aXBQYXRoT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRkJDMjIwREYxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNzQ29udGV4dDNE
T3BlbkdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZCQzIyMERFMTIzN0ZCRUIwMEJDRjc4OCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAg
Ki87IH07CiAJCUZCRDZBRjg4MTVFRjI1QzkwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkJENkFGODcxNUVG
MjFENDAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmggKi87IH07CiAJCUZCRDZBRjg5MTVFRjI1
REIwMDhCNzExMCAvKiBCYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCRDZBRjg0MTVFRjIxRDQwMDhCNzExMCAvKiBC
YXNpY1NoYXBlRnVuY3Rpb25zLmNwcCAqLzsgfTsKQEAgLTEzNzI0LDYgKzEzNzI1LDcgQEAKIAkJ
RkFCRTcyRkIxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRkMxMDU5QzIxMTAwRDk5OURE
IC8qIE1hdGhNTE5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1hdGhNTE5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI3OEFEMkMx
NTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGQjkyREY0OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcFBhdGhPcGVyYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkJDMjIwREUxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNz
Q29udGV4dDNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkJENkFGODIxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEJhc2ljU2hhcGVzLmNwcDsgcGF0aCA9IHN0eWxl
L0Jhc2ljU2hhcGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkJENkFGODMx
NUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEJhc2ljU2hhcGVzLmg7IHBhdGggPSBzdHlsZS9CYXNpY1NoYXBlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA0NTMsNiArMjA0NTUsNyBAQAogCQkJCUZCRDZB
RjgzMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5oICovLAogCQkJCUJDNUVCNUUwMEU4
MUJFODcwMEIyNTk2NSAvKiBCb3JkZXJEYXRhLmggKi8sCiAJCQkJQkM1RUI1REEwRTgxQjdFQTAw
QjI1OTY1IC8qIEJvcmRlclZhbHVlLmggKi8sCisJCQkJRkI5MkRGNDkxNUZFRDA4NzAwOTk0NDMz
IC8qIENsaXBQYXRoT3BlcmF0aW9uLmggKi8sCiAJCQkJQkM1RUI1REUwRTgxQjlBQjAwQjI1OTY1
IC8qIENvbGxhcHNlZEJvcmRlclZhbHVlLmggKi8sCiAJCQkJQkM1RUI5N0UwRTgyMDcyNTAwQjI1
OTY1IC8qIENvbnRlbnREYXRhLmNwcCAqLywKIAkJCQlCQzVFQjk3RjBFODIwNzI1MDBCMjU5NjUg
LyogQ29udGVudERhdGEuaCAqLywKQEAgLTI1NTQzLDYgKzI1NTQ2LDcgQEAKIAkJCQkwRjYwNUFF
RDE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTRGMzc3RkY1MTVGQTM1NkEwMEU1RDYwRCAvKiBXZWJDb3JlTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTEyRTkwRjE1RkE1RDNBMDA1RTQxMjYgLyog
Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkI5MkRGNEIx
NUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQYXRoT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
aW5kZXggZWJjMjdhYWM3ZWQ0YWRhMzA4M2NhZjFkNTdkOWVkYWNkOTA0MjI3Yi4uOWVlMDAwMGNj
MDczZjViZDcyMDU2MjgxN2MyZDFkMjY5NjFiMWE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTI0MDUsOSArMjQwNSwx
MSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q291
bnRlclJlc2V0OgogICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1ZhbHVlKHN0eWxlLmdl
dCgpLCBwcm9wZXJ0eUlEKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENsaXBQYXRo
OgotICAgICAgICAgICAgaWYgKCFzdHlsZS0+Y2xpcFBhdGgoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7
Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JCYXNpY1NoYXBlKHN0eWxlLT5jbGlwUGF0aCgp
KTsKKyAgICAgICAgICAgIGlmIChDbGlwUGF0aE9wZXJhdGlvbiogb3BlcmF0aW9uID0gc3R5bGUt
PmNsaXBQYXRoKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAob3BlcmF0aW9uLT5nZXRPcGVyYXRp
b25UeXBlKCkgPT0gQ2xpcFBhdGhPcGVyYXRpb246OlNIQVBFKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdmFsdWVGb3JCYXNpY1NoYXBlKHN0YXRpY19jYXN0PFNoYXBlQ2xpcFBhdGhPcGVy
YXRpb24qPihvcGVyYXRpb24pLT5iYXNpY1NoYXBlKCkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vbmUpOwogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEZsb3dJbnRvOgogICAgICAgICAgICAgaWYgKHN0eWxlLT5mbG93VGhyZWFkKCkuaXNO
dWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCmluZGV4IGVkMGExNWZiYzNmZDBm
MmE1MWJiNzk3NzJjMDdiOWY0NDY1ZGQ0NmUuLmJlMTljOTZhYjBhMDlmMjg2M2I1ZDRlZWQ2NDM1
YzgxYTczNmQyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUg
IkNTU1RvU3R5bGVNYXAuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJD
bGlwUGF0aE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKQEAgLTE2ODIsMTAgKzE2ODMsMTAgQEAg
cHVibGljOgogICAgIH0KIH07CiAKLXRlbXBsYXRlIDxCYXNpY1NoYXBlKiAoUmVuZGVyU3R5bGU6
OipnZXR0ZXJGdW5jdGlvbikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXJGdW5j
dGlvbikoUGFzc1JlZlB0cjxCYXNpY1NoYXBlPiksIEJhc2ljU2hhcGUqICgqaW5pdGlhbEZ1bmN0
aW9uKSgpPgordGVtcGxhdGUgPENsaXBQYXRoT3BlcmF0aW9uKiAoUmVuZGVyU3R5bGU6OipnZXR0
ZXJGdW5jdGlvbikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXJGdW5jdGlvbiko
UGFzc1JlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4pLCBDbGlwUGF0aE9wZXJhdGlvbiogKCppbml0
aWFsRnVuY3Rpb24pKCk+CiBjbGFzcyBBcHBseVByb3BlcnR5Q2xpcFBhdGggewogcHVibGljOgot
ICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgUGFzc1JlZlB0cjxC
YXNpY1NoYXBlPiB2YWx1ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUpOyB9Cisg
ICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBQYXNzUmVmUHRyPENs
aXBQYXRoT3BlcmF0aW9uPiB2YWx1ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUp
OyB9CiAgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkgewpAQCAtMTY5MywxNCArMTY5NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAg
ICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIDApOwogICAgICAgICAg
ICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzU2hhcGUoKSkgewotICAgICAgICAgICAgICAg
IFJlZlB0cjxCYXNpY1NoYXBlPiBjbGlwUGF0aFNoYXBlID0gYmFzaWNTaGFwZUZvclZhbHVlKHN0
eWxlUmVzb2x2ZXIsIHByaW1pdGl2ZVZhbHVlLT5nZXRTaGFwZVZhbHVlKCkpOwotICAgICAgICAg
ICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIGNsaXBQYXRoU2hhcGUucmVs
ZWFzZSgpKTsKKyAgICAgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgp
LCBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpjcmVhdGUoYmFzaWNTaGFwZUZvclZhbHVlKHN0eWxl
UmVzb2x2ZXIsIHByaW1pdGl2ZVZhbHVlLT5nZXRTaGFwZVZhbHVlKCkpKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVI
YW5kbGVyKCkKICAgICB7Ci0gICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQ
cm9wZXJ0eURlZmF1bHRCYXNlPEJhc2ljU2hhcGUqLCBnZXR0ZXJGdW5jdGlvbiwgUGFzc1JlZlB0
cjxCYXNpY1NoYXBlPiwgc2V0dGVyRnVuY3Rpb24sIEJhc2ljU2hhcGUqLCBpbml0aWFsRnVuY3Rp
b24+OjpjcmVhdGVIYW5kbGVyKCk7CisgICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0g
QXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPENsaXBQYXRoT3BlcmF0aW9uKiwgZ2V0dGVyRnVuY3Rp
b24sIFBhc3NSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+LCBzZXR0ZXJGdW5jdGlvbiwgQ2xpcFBh
dGhPcGVyYXRpb24qLCBpbml0aWFsRnVuY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCk7CiAgICAgICAg
IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoaGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxl
ci5pbml0aWFsRnVuY3Rpb24oKSwgJmFwcGx5VmFsdWUpOwogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNGMzNTgy
ZTAzOTFlNjM2NzBlNzdiOWQwMTUyM2E4ZTQ5YmNiMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApAQCAtMCwwICsxLDEzOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT
4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YK
KyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDbGlwUGF0aE9wZXJh
dGlvbl9oCisjZGVmaW5lIENsaXBQYXRoT3BlcmF0aW9uX2gKKworI2luY2x1ZGUgIkJhc2ljU2hh
cGVzLmgiCisjaW5jbHVkZSAiUGF0aC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQ2xpcFBhdGhPcGVyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxDbGlwUGF0aE9wZXJhdGlv
bj4geworcHVibGljOgorICAgIGVudW0gT3BlcmF0aW9uVHlwZSB7CisgICAgICAgIFJFRkVSRU5D
RSwgLy8gdXJsKCNjbGlwUGF0aCkKKyAgICAgICAgU0hBUEUKKyAgICB9OworCisgICAgdmlydHVh
bCB+Q2xpcFBhdGhPcGVyYXRpb24oKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJikgY29uc3QgPSAwOworICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBDbGlwUGF0aE9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBv
KTsgfQorCisgICAgdmlydHVhbCBPcGVyYXRpb25UeXBlIGdldE9wZXJhdGlvblR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShjb25zdCBD
bGlwUGF0aE9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby5nZXRPcGVyYXRpb25UeXBlKCkg
PT0gbV90eXBlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBDbGlwUGF0aE9wZXJhdGlvbihPcGVyYXRp
b25UeXBlIHR5cGUpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgeworICAgIH0KKworICAg
IE9wZXJhdGlvblR5cGUgbV90eXBlOworfTsKKworY2xhc3MgU2hhcGVDbGlwUGF0aE9wZXJhdGlv
biA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8QmFzaWNTaGFw
ZT4gc2hhcGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXBlQ2xpcFBh
dGhPcGVyYXRpb24oc2hhcGUpKTsKKyAgICB9CisKKyAgICBjb25zdCBCYXNpY1NoYXBlKiBiYXNp
Y1NoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZS5nZXQoKTsgfQorICAgIFdpbmRSdWxlIHdp
bmRSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZS0+d2luZFJ1bGUoKTsgfQorICAgIGNvbnN0
IFBhdGgmIHBhdGgoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QpCisgICAgeworICAgICAg
ICBBU1NFUlQobV9zaGFwZSk7CisgICAgICAgIG1fcGF0aC5jbGVhcigpOworICAgICAgICBtX3Bh
dGggPSBhZG9wdFB0cihuZXcgUGF0aCk7CisgICAgICAgIG1fc2hhcGUtPnBhdGgoKm1fcGF0aCwg
Ym91bmRpbmdSZWN0KTsKKyAgICAgICAgcmV0dXJuICptX3BhdGg7CisgICAgfQorCitwcml2YXRl
OgorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBv
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBjb25zdCBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKiBvdGhl
ciA9IHN0YXRpY19jYXN0PGNvbnN0IFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24qPigmbyk7CisgICAg
ICAgIHJldHVybiBtX3NoYXBlID09IG90aGVyLT5tX3NoYXBlOworICAgIH0KKworICAgIFNoYXBl
Q2xpcFBhdGhPcGVyYXRpb24oUGFzc1JlZlB0cjxCYXNpY1NoYXBlPiBzaGFwZSkKKyAgICAgICAg
OiBDbGlwUGF0aE9wZXJhdGlvbihTSEFQRSkKKyAgICAgICAgLCBtX3NoYXBlKHNoYXBlKQorICAg
IHsKKyAgICB9CisKKyAgICBSZWZQdHI8QmFzaWNTaGFwZT4gbV9zaGFwZTsKKyAgICBPd25QdHI8
UGF0aD4gbV9wYXRoOworfTsKKworY2xhc3MgUmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24gOiBw
dWJsaWMgQ2xpcFBhdGhPcGVyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgZnJhZ21lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uKHVybCwgZnJhZ21lbnQpKTsKKyAgICB9CisKKyAg
ICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3Qg
U3RyaW5nJiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnQ7IH0KKworICAgIHZv
aWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICB2b2lkIHNldERhdGEodm9p
ZCogZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24mIG8pIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoIWlzU2FtZVR5cGUobykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGNvbnN0IFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0
PGNvbnN0IFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uKj4oJm8pOworICAgICAgICByZXR1cm4g
bV91cmwgPT0gb3RoZXItPm1fdXJsOworICAgIH0KKworICAgIFJlZmVyZW5jZUNsaXBQYXRoT3Bl
cmF0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KQorICAgICAg
ICA6IENsaXBQYXRoT3BlcmF0aW9uKFJFRkVSRU5DRSkKKyAgICAgICAgLCBtX3VybCh1cmwpCisg
ICAgICAgICwgbV9mcmFnbWVudChmcmFnbWVudCkKKyAgICAgICAgLCBtX2RhdGEoMCkKKyAgICB7
CisgICAgfQorCisgICAgU3RyaW5nIG1fdXJsOworICAgIFN0cmluZyBtX2ZyYWdtZW50OworICAg
IHZvaWQqIG1fZGF0YTsKK307Cit9CisKKyNlbmRpZiAvLyBDbGlwUGF0aE9wZXJhdGlvbl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAzMGY3NTljNWQ1Yzk4
MzBhZDY0OTkyOThjODZlMjlmMzRlMTZjY2FkLi44NDQ3MzIyNTdkNTRmY2IzNGRlZDg2OTU1MDRm
OTYwNTlhNDQ5NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
QEAgLTMxMTYsMTIgKzMxMTYsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRl
bnRzKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY28KICAgICAvLyBB
cHBseSBjbGlwLXBhdGggdG8gY29udGV4dC4KICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5k
ZXJlcigpLT5zdHlsZSgpOwogICAgIGlmIChyZW5kZXJlcigpLT5oYXNDbGlwUGF0aCgpICYmICFj
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgJiYgc3R5bGUpIHsKLSAgICAgICAgaWYgKEJhc2lj
U2hhcGUqIGNsaXBTaGFwZSA9IHN0eWxlLT5jbGlwUGF0aCgpKSB7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogSW52ZXN0aWdhdGUgaWYgaXQgaXMgYmV0dGVyIHRvIHN0b3JlIGFuZCB1cGRhdGUgYSBQ
YXRoIG9iamVjdCBpbiBSZW5kZXJTdHlsZS4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTYxOQotICAgICAgICAgICAgUGF0aCBjbGlwUGF0
aDsKLSAgICAgICAgICAgIGNsaXBTaGFwZS0+cGF0aChjbGlwUGF0aCwgY2FsY3VsYXRlTGF5ZXJC
b3VuZHModGhpcywgcm9vdExheWVyLCAwKSk7Ci0gICAgICAgICAgICB0cmFuc3BhcmVuY3lMYXll
ckNvbnRleHQtPmNsaXBQYXRoKGNsaXBQYXRoLCBjbGlwU2hhcGUtPndpbmRSdWxlKCkpOworICAg
ICAgICBBU1NFUlQoc3R5bGUtPmNsaXBQYXRoKCkpOworICAgICAgICBpZiAoc3R5bGUtPmNsaXBQ
YXRoKCktPmdldE9wZXJhdGlvblR5cGUoKSA9PSBDbGlwUGF0aE9wZXJhdGlvbjo6U0hBUEUpIHsK
KyAgICAgICAgICAgIFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24qIGNsaXBQYXRoID0gc3RhdGljX2Nh
c3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbio+KHN0eWxlLT5jbGlwUGF0aCgpKTsKKyAgICAgICAg
ICAgIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dC0+Y2xpcFBhdGgoY2xpcFBhdGgtPnBhdGgoY2Fs
Y3VsYXRlTGF5ZXJCb3VuZHModGhpcywgcm9vdExheWVyLCAwKSksIGNsaXBQYXRoLT53aW5kUnVs
ZSgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAppbmRleCBjNTA3ODUyOTVmZmY5ODM0M2QxNmZmMzFjZmNjMWI2NDk5
ZjU0NTY4Li4zMWM1MjU3ODg2NjQ5YTIyNzk1MjkyNjE0ZDA2ZGQxZjIwNmRjOGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTQ2NiwxNCAr
MTQ2NiwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEJhc2ljU2hhcGUqIGluaXRpYWxXcmFwU2hh
cGVJbnNpZGUoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIEJhc2ljU2hhcGUqIGluaXRpYWxX
cmFwU2hhcGVPdXRzaWRlKCkgeyByZXR1cm4gMDsgfQogCi0gICAgdm9pZCBzZXRDbGlwUGF0aChQ
YXNzUmVmUHRyPEJhc2ljU2hhcGU+IHNoYXBlKQorICAgIHZvaWQgc2V0Q2xpcFBhdGgoUGFzc1Jl
ZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gb3BlcmF0aW9uKQogICAgIHsKLSAgICAgICAgaWYgKHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQYXRoICE9IHNoYXBlKQotICAgICAgICAgICAgcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY2xpcFBhdGggPSBzaGFwZTsKKyAgICAgICAg
aWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQYXRoICE9IG9wZXJhdGlvbikKKyAgICAg
ICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NsaXBQYXRoID0gb3BlcmF0
aW9uOwogICAgIH0KLSAgICBCYXNpY1NoYXBlKiBjbGlwUGF0aCgpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQYXRoLmdldCgpOyB9CisgICAgQ2xpcFBhdGhPcGVy
YXRpb24qIGNsaXBQYXRoKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Y2xpcFBhdGguZ2V0KCk7IH0KIAotICAgIHN0YXRpYyBCYXNpY1NoYXBlKiBpbml0aWFsQ2xpcFBh
dGgoKSB7IHJldHVybiAwOyB9CisgICAgc3RhdGljIENsaXBQYXRoT3BlcmF0aW9uKiBpbml0aWFs
Q2xpcFBhdGgoKSB7IHJldHVybiAwOyB9CiAKICAgICBMZW5ndGggd3JhcFBhZGRpbmcoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV93cmFwUGFkZGluZzsgfQogICAgIHZv
aWQgc2V0V3JhcFBhZGRpbmcoTGVuZ3RoIHdyYXBQYWRkaW5nKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fd3JhcFBhZGRpbmcsIHdyYXBQYWRkaW5nKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmgKaW5kZXggMjUxZmZhMzE5OWEwNjVjMDY2YjJkZWM2ZjBlMDUyN2M1OTYzNDcxMC4uMTE4
ODA0ZTVmYmE2MDI5Mzc0NDlmMTNmOThlN2IxOTQzMGNkOWE1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjZGVmaW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGFf
aAogCiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRlICJDbGlwUGF0aE9wZXJhdGlv
bi5oIgogI2luY2x1ZGUgIkNvdW50ZXJEaXJlY3RpdmVzLmgiCiAjaW5jbHVkZSAiQ3Vyc29yRGF0
YS5oIgogI2luY2x1ZGUgIkRhdGFSZWYuaCIKQEAgLTEzOSw3ICsxNDAsNyBAQCBwdWJsaWM6CiAg
ICAgTGVuZ3RoIG1fd3JhcE1hcmdpbjsKICAgICBMZW5ndGggbV93cmFwUGFkZGluZzsKIAotICAg
IFJlZlB0cjxCYXNpY1NoYXBlPiBtX2NsaXBQYXRoOworICAgIFJlZlB0cjxDbGlwUGF0aE9wZXJh
dGlvbj4gbV9jbGlwUGF0aDsKIAogICAgIENvbG9yIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29s
b3I7CiAgICAgQ29sb3IgbV92aXNpdGVkTGlua091dGxpbmVDb2xvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDZl
M2NkMmRjYmQwYWM5MzY5MTEyMDNlZjJjMzdmY2RhOGNlYjdhZTYuLjA0MWFlZDQxODZhY2M5NTMy
Y2FkMDA3NzE3N2E3YzE1MTc5MDliYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTIzLDEzICsxMjMsMTAgQEAg
dm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRl
ck9iamVjdCogb2JqZWN0LCBQYWludEkKICAgICAgICAgfQogICAgIH0KIAotICAgIEJhc2ljU2hh
cGUqIGNsaXBTaGFwZSA9IHN0eWxlLT5jbGlwUGF0aCgpOwotICAgIGlmIChjbGlwU2hhcGUpIHsK
LSAgICAgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIGlmIGl0IGlzIGJldHRlciB0byBzdG9yZSBh
bmQgdXBkYXRlIGEgUGF0aCBvYmplY3QgaW4gUmVuZGVyU3R5bGUuCi0gICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTYxOQotICAgICAgICBQYXRoIGNs
aXBQYXRoOwotICAgICAgICBjbGlwU2hhcGUtPnBhdGgoY2xpcFBhdGgsIG9iamVjdC0+b2JqZWN0
Qm91bmRpbmdCb3goKSk7Ci0gICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5jbGlwUGF0aChj
bGlwUGF0aCwgY2xpcFNoYXBlLT53aW5kUnVsZSgpKTsKKyAgICBDbGlwUGF0aE9wZXJhdGlvbiog
Y2xpcFBhdGhPcGVyYXRpb24gPSBzdHlsZS0+Y2xpcFBhdGgoKTsKKyAgICBpZiAoY2xpcFBhdGhP
cGVyYXRpb24gJiYgY2xpcFBhdGhPcGVyYXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSA9PSBDbGlw
UGF0aE9wZXJhdGlvbjo6U0hBUEUpIHsKKyAgICAgICAgU2hhcGVDbGlwUGF0aE9wZXJhdGlvbiog
Y2xpcFBhdGggPSBzdGF0aWNfY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKj4oY2xpcFBhdGhP
cGVyYXRpb24pOworICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+Y2xpcFBhdGgoY2xpcFBh
dGgtPnBhdGgob2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgpKSwgY2xpcFBhdGgtPndpbmRSdWxl
KCkpOwogICAgIH0KIAogICAgIFNWR1Jlc291cmNlcyogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2Vz
Q2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlck9iamVjdChtX29iamVjdCk7CkBAIC0xNTAs
NyArMTQ3LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdD
b250ZW50KFJlbmRlck9iamVjdCogb2JqZWN0LCBQYWludEkKICAgICB9CiAKICAgICBSZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIgPSByZXNvdXJjZXMtPmNsaXBwZXIoKTsKLSAgICBp
ZiAoIWNsaXBTaGFwZSAmJiBjbGlwcGVyKSB7CisgICAgaWYgKCFjbGlwUGF0aE9wZXJhdGlvbiAm
JiBjbGlwcGVyKSB7CiAgICAgICAgIGlmICghY2xpcHBlci0+YXBwbHlSZXNvdXJjZShtX29iamVj
dCwgc3R5bGUsIG1fcGFpbnRJbmZvLT5jb250ZXh0LCBBcHBseVRvRGVmYXVsdE1vZGUpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163337</attachid>
            <date>2012-09-11 04:44:48 -0700</date>
            <delta_ts>2012-09-11 14:06:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95619-20120911134422.patch</filename>
            <type>text/plain</type>
            <size>22345</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjJkYzNlNDIzYTY0NWQ1
ZDNmOGE5OTc2YmFhMWViNDIwY2Q5MTdiYi4uZTNkMDQ1MjU4ZDE0ODE0Mjk0Y2MwN2JlZjZiMDMx
NTAwYjg0NDM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTExICBEaXJr
IFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW52ZXN0aWdhdGUgaWYgc3Rv
cmluZyBhIFBhdGggbWVtYmVyIGluIFJlbmRlclN0eWxlIGNhbiBpbXByb3ZlIC13ZWJraXQtY2xp
cC1wYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTYxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBhIG5ldyBjbGFzcyBDbGlwUGF0aE9wZXJhdGlvbiB0byBtYW5hZ2UgdGhl
IHZhbHVlcyBvZiB0aGUKKyAgICAgICAgLXdlYmtpdC1jbGlwLXBhdGggcHJvcGVydHkuIENsaXBQ
YXRoT3BlcmF0aW9uIHN0b3JlcyBhIFBhdGggb2JqZWN0IGZvciBjbGlwcGluZyBhbmQgaXMKKyAg
ICAgICAgYSBwcmVwYXJhdGlvbiBmb3IgSVJJIHJlZmVyZW5jZXMgb2YgdGhlIFNWRyAnY2xpcFBh
dGgnIGVsZW1lbnQuCisKKyAgICAgICAgVGhlIHN0cnVjdHVyZSBvZiBDbGlwUGF0aE9wZXJhdGlv
biBpcyBzaW11bGFyIHRvIEZpbHRlck9wZXJhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IFRoZSBjaGFuZ2VzIGp1c3QgYWZmZWN0IHRoZSBiYWNrZW5kLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbTogQWRkZWQgbmV3IENsaXBQYXRoT3BlcmF0aW9uIGNsYXNzLgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajogRGl0dG8uCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHA6IFVzZSBDbGlwUGF0aE9wZXJhdGlvbiBpbnN0ZWFkIG9mIEJhc2ljU2hhcGUuCisgICAgICAg
IChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFs
dWUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyLmNwcDogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwUGF0aDo6
c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNsaXBQYXRoOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwUGF0aDo6Y3JlYXRl
SGFuZGxlcik6CisgICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmg6IEFkZGVk
LiBOZXcgaGFuZGxlciBmb3IgcHJvcGVydHkgdmFsdWVzIChCYXNpY1NoYXBlLCByZWZlcmVuY2Vz
KS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2xpcFBhdGhPcGVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcFBhdGhPcGVyYXRpb246On5DbGlwUGF0aE9wZXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6b3BlcmF0b3IhPSk6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6Z2V0T3BlcmF0aW9uVHlwZSk6IFJldHVybiB0
aGUgb3BlcmF0aW9uIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpDbGlwUGF0aE9wZXJhdGlvbjo6
aXNTYW1lVHlwZSk6IEhlbHBlciBmdW5jdGlvbiBmb3IgPW9wZXJhdG9yLgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcFBhdGhPcGVyYXRpb246OkNsaXBQYXRoT3BlcmF0aW9uKToKKyAgICAgICAgKFNo
YXBlQ2xpcFBhdGhPcGVyYXRpb24pOiBJbmhlcml0aW5nIGNsYXNzIGZvciBtYW5hZ2luZyBCYXNp
Y1NoYXBlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpiYXNpY1NoYXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OndpbmRSdWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OnBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcGVDbGlwUGF0aE9wZXJhdGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpTaGFwZUNsaXBQYXRoT3BlcmF0aW9u
KToKKyAgICAgICAgKFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uKTogSW5oZXJpdGluZyBjbGFz
cyBmb3IgbWFuYWdpbmcgSVJJIHJlZmVyZW5jZXMuCisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVu
Y2VDbGlwUGF0aE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5j
ZUNsaXBQYXRoT3BlcmF0aW9uOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJlbmNlQ2xp
cFBhdGhPcGVyYXRpb246OmZyYWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUNs
aXBQYXRoT3BlcmF0aW9uOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUNsaXBQ
YXRoT3BlcmF0aW9uOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUNsaXBQ
YXRoT3BlcmF0aW9uOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUNs
aXBQYXRoT3BlcmF0aW9uOjpSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDogVXNlIENsaXBQYXRoT3BlcmF0aW9uIHRvIGFwcGx5
IGNsaXBwaW5nLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250
ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKyAgICAgICAg
KFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVy
aW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCk6CisKIDIwMTItMDktMTEgIFRv
bW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJl
YW0gQVBJOiBhZGQgUlRDUGVlckNvbm5lY3Rpb246Om9ubmVnb3RpYXRpb25uZWVkZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGNiNTQ3ZDU3ZDM0ZmFjM2E4Nzg3NGU5NDI1OTdm
NWJkNDYzZjZhYjMuLjgyZjIxMTY4ZGVmODZjYTgyOTMzYzQwZDM2ZGFmMTAxZmVmYTIzNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTEwNiw2ICs1MTA2LDcgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9DbGlwUGF0aE9wZXJhdGlvbi5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaCBcCiAJU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGZlZGE2
MGJiYTA3ZmE4NWU5ZTJhMWY5YWQ3NzczYjMwMzA2ZTFkNjAuLmFmMzBiOGFmOTczN2M4Y2MzY2Jk
ZjhjOTczODI4Y2U3Y2NlYjFlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU5Miw2ICs1OTIsNyBA
QAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oJywKICAgICAgICAg
ICAgICdyZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oJywKICAgICAgICAgICAgICdyZW5kZXJp
bmcvc3R5bGUvQm9yZGVyVmFsdWUuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0Ns
aXBQYXRoT3BlcmF0aW9uLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9Db2xsYXBz
ZWRCb3JkZXJWYWx1ZS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvQ29udGVudERh
dGEuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJDb250ZW50LmgnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBhN2Ji
ZTBiYTVjZDhiNDRkNDhmMTI1ZDJhOTc4ODc0NWEyOGE3ZjEyLi43YTlkYThmMWQ4N2IwMWZmNzIy
ZmIxOGIxZTRjODBiNjQ2ZTdiZTVmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNDY2NTksNiArNDY2NTksMTAgQEAKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVcQmFzaWNTaGFwZXMuaCIKIAkJCQkJPgogCQkJCTwvRmls
ZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdHlsZVxDbGlw
UGF0aE9wZXJhdGlvbi5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgogCQkJPC9GaWx0ZXI+CiAJCQk8
RmlsdGVyCiAJCQkJTmFtZT0ic3ZnIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQxYTAzMWJhOWI0ZGY3MDBhODc2OTMwZTI2Njc1
NDg2NzYzZGQ4NDguLjAwYWQxZGQ5MGE0NjAyZGI5NzdjODA0N2I0ZTk4NmEwNWRlYjJhYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTYzMTQsNiArNjMxNCw3IEBACiAJCUZBQkU3MkZEMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRo
TUxFbGVtZW50RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGQUJFNzJGQjEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudEZhY3Rv
cnkuY3BwICovOyB9OwogCQlGQUJFNzJGRTEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcy
RkMxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCAqLzsgfTsKIAkJRkI3OEFEMkUx
NTFCRjVFNjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCNzhBRDJDMTUxQkY1RDIwMEZFNTREMyAvKiBDU1NQ
YXJzZXJNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRkI5MkRGNEIxNUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQYXRoT3BlcmF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjkyREY0OTE1RkVE
MDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGQkMyMjBERjEyMzdGQkVCMDBCQ0Y3ODggLyog
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkJDMjIwREUxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNzQ29u
dGV4dDNET3BlbkdMLmNwcCAqLzsgfTsKIAkJRkJENkFGODgxNUVGMjVDOTAwOEI3MTEwIC8qIENT
U0Jhc2ljU2hhcGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGQkQ2QUY4NzE1RUYyMUQ0MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuaCAqLzsgfTsK
IAkJRkJENkFGODkxNUVGMjVEQjAwOEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkJENkFGODQxNUVG
MjFENDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuY3BwICovOyB9OwpAQCAtMTM3MjYs
NiArMTM3MjcsNyBAQAogCQlGQUJFNzJGQjEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MRWxlbWVu
dEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1M
RWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJG
QzEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGQjc4QUQyQzE1MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQYXJzZXJNb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZCOTJERjQ5MTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9w
ZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwUGF0aE9wZXJh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQkMyMjBERTEyMzdGQkVCMDBC
Q0Y3ODggLyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGQkQ2QUY4MjE1RUYyMUEzMDA4QjcxMTAgLyogQmFzaWNTaGFw
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQmFzaWNTaGFwZXMu
Y3BwOyBwYXRoID0gc3R5bGUvQmFzaWNTaGFwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGQkQ2QUY4MzE1RUYyMUEzMDA4QjcxMTAgLyogQmFzaWNTaGFwZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQmFzaWNTaGFwZXMuaDsgcGF0aCA9IHN0eWxlL0Jh
c2ljU2hhcGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQ1Nyw2ICsyMDQ1
OSw3IEBACiAJCQkJRkJENkFGODMxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8s
CiAJCQkJQkM1RUI1RTAwRTgxQkU4NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEuaCAqLywKIAkJCQlC
QzVFQjVEQTBFODFCN0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCAqLywKKwkJCQlGQjkyREY0
OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCAqLywKIAkJCQlCQzVFQjVE
RTBFODFCOUFCMDBCMjU5NjUgLyogQ29sbGFwc2VkQm9yZGVyVmFsdWUuaCAqLywKIAkJCQlCQzVF
Qjk3RTBFODIwNzI1MDBCMjU5NjUgLyogQ29udGVudERhdGEuY3BwICovLAogCQkJCUJDNUVCOTdG
MEU4MjA3MjUwMEIyNTk2NSAvKiBDb250ZW50RGF0YS5oICovLApAQCAtMjU1NDYsNiArMjU1NDks
NyBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1Bv
bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZCOTJERjRCMTVGRUQwODcwMDk5NDQzMyAvKiBDbGlw
UGF0aE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGViYzI3YWFjN2VkNGFkYTMw
ODNjYWYxZDU3ZDllZGFjZDkwNDIyN2IuLjllZTAwMDBjYzA3M2Y1YmQ3MjA1NjI4MTdjMmQxZDI2
OTYxYjFhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCkBAIC0yNDA1LDkgKzI0MDUsMTEgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1By
b3BlcnQKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldDoKICAgICAgICAgICAg
IHJldHVybiBjb3VudGVyVG9DU1NWYWx1ZShzdHlsZS5nZXQoKSwgcHJvcGVydHlJRCk7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDbGlwUGF0aDoKLSAgICAgICAgICAgIGlmICghc3R5
bGUtPmNsaXBQYXRoKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgICAgICAgICAgcmV0dXJuIHZh
bHVlRm9yQmFzaWNTaGFwZShzdHlsZS0+Y2xpcFBhdGgoKSk7CisgICAgICAgICAgICBpZiAoQ2xp
cFBhdGhPcGVyYXRpb24qIG9wZXJhdGlvbiA9IHN0eWxlLT5jbGlwUGF0aCgpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpID09IENsaXBQYXRoT3Bl
cmF0aW9uOjpTSEFQRSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yQmFzaWNT
aGFwZShzdGF0aWNfY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+YmFz
aWNTaGFwZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKICNpZiBFTkFCTEUoQ1NT
X1JFR0lPTlMpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbG93SW50bzoKICAgICAg
ICAgICAgIGlmIChzdHlsZS0+Zmxvd1RocmVhZCgpLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyLmNwcAppbmRleCBlZDBhMTVmYmMzZmQwZjJhNTFiYjc5NzcyYzA3YjlmNDQ2NWRk
NDZlLi5iZTE5Yzk2YWIwYTA5ZjI4NjNiNWQ0ZWVkNjQzNWM4MWE3MzZkMmM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NUb1N0eWxlTWFwLmgiCiAjaW5j
bHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisjaW5jbHVkZSAiQ2xpcFBhdGhPcGVyYXRpb24uaCIKICNp
bmNsdWRlICJDdXJzb3JMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
bGVtZW50LmgiCkBAIC0xNjgyLDEwICsxNjgzLDEwIEBAIHB1YmxpYzoKICAgICB9CiB9OwogCi10
ZW1wbGF0ZSA8QmFzaWNTaGFwZSogKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29u
c3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKFBhc3NSZWZQdHI8QmFzaWNT
aGFwZT4pLCBCYXNpY1NoYXBlKiAoKmluaXRpYWxGdW5jdGlvbikoKT4KK3RlbXBsYXRlIDxDbGlw
UGF0aE9wZXJhdGlvbiogKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QsIHZv
aWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKFBhc3NSZWZQdHI8Q2xpcFBhdGhPcGVy
YXRpb24+KSwgQ2xpcFBhdGhPcGVyYXRpb24qICgqaW5pdGlhbEZ1bmN0aW9uKSgpPgogY2xhc3Mg
QXBwbHlQcm9wZXJ0eUNsaXBQYXRoIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzZXRWYWx1
ZShSZW5kZXJTdHlsZSogc3R5bGUsIFBhc3NSZWZQdHI8QmFzaWNTaGFwZT4gdmFsdWUpIHsgKHN0
eWxlLT4qc2V0dGVyRnVuY3Rpb24pKHZhbHVlKTsgfQorICAgIHN0YXRpYyB2b2lkIHNldFZhbHVl
KFJlbmRlclN0eWxlKiBzdHlsZSwgUGFzc1JlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gdmFsdWUp
IHsgKHN0eWxlLT4qc2V0dGVyRnVuY3Rpb24pKHZhbHVlKTsgfQogICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQog
ICAgIHsKICAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKQEAgLTE2OTMs
MTQgKzE2OTQsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgICAgICBzZXRWYWx1ZShzdHls
ZVJlc29sdmVyLT5zdHlsZSgpLCAwKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLT5pc1NoYXBlKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8QmFzaWNTaGFwZT4gY2xp
cFBhdGhTaGFwZSA9IGJhc2ljU2hhcGVGb3JWYWx1ZShzdHlsZVJlc29sdmVyLCBwcmltaXRpdmVW
YWx1ZS0+Z2V0U2hhcGVWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJl
c29sdmVyLT5zdHlsZSgpLCBjbGlwUGF0aFNoYXBlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAg
ICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgU2hhcGVDbGlwUGF0aE9wZXJhdGlv
bjo6Y3JlYXRlKGJhc2ljU2hhcGVGb3JWYWx1ZShzdHlsZVJlc29sdmVyLCBwcmltaXRpdmVWYWx1
ZS0+Z2V0U2hhcGVWYWx1ZSgpKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
ICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCiAgICAgewotICAgICAg
ICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxCYXNp
Y1NoYXBlKiwgZ2V0dGVyRnVuY3Rpb24sIFBhc3NSZWZQdHI8QmFzaWNTaGFwZT4sIHNldHRlckZ1
bmN0aW9uLCBCYXNpY1NoYXBlKiwgaW5pdGlhbEZ1bmN0aW9uPjo6Y3JlYXRlSGFuZGxlcigpOwor
ICAgICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVydHlEZWZhdWx0QmFz
ZTxDbGlwUGF0aE9wZXJhdGlvbiosIGdldHRlckZ1bmN0aW9uLCBQYXNzUmVmUHRyPENsaXBQYXRo
T3BlcmF0aW9uPiwgc2V0dGVyRnVuY3Rpb24sIENsaXBQYXRoT3BlcmF0aW9uKiwgaW5pdGlhbEZ1
bmN0aW9uPjo6Y3JlYXRlSGFuZGxlcigpOwogICAgICAgICByZXR1cm4gUHJvcGVydHlIYW5kbGVy
KGhhbmRsZXIuaW5oZXJpdEZ1bmN0aW9uKCksIGhhbmRsZXIuaW5pdGlhbEZ1bmN0aW9uKCksICZh
cHBseVZhbHVlKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NsaXBQYXRoT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBh
dGhPcGVyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDRjMzU4MmUwMzkxZTYzNjcwZTc3YjlkMDE1MjNh
OGU0OWJjYjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Ns
aXBQYXRoT3BlcmF0aW9uLmgKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQ2xpcFBhdGhPcGVyYXRpb25faAorI2RlZmluZSBDbGlwUGF0
aE9wZXJhdGlvbl9oCisKKyNpbmNsdWRlICJCYXNpY1NoYXBlcy5oIgorI2luY2x1ZGUgIlBhdGgu
aCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENsaXBQYXRoT3BlcmF0aW9uIDog
cHVibGljIFJlZkNvdW50ZWQ8Q2xpcFBhdGhPcGVyYXRpb24+IHsKK3B1YmxpYzoKKyAgICBlbnVt
IE9wZXJhdGlvblR5cGUgeworICAgICAgICBSRUZFUkVOQ0UsIC8vIHVybCgjY2xpcFBhdGgpCisg
ICAgICAgIFNIQVBFCisgICAgfTsKKworICAgIHZpcnR1YWwgfkNsaXBQYXRoT3BlcmF0aW9uKCkg
eyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDbGlwUGF0aE9wZXJhdGlv
biYpIGNvbnN0ID0gMDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2xpcFBhdGhPcGVyYXRp
b24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KKworICAgIHZpcnR1YWwgT3Bl
cmF0aW9uVHlwZSBnZXRPcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24mIG8pIGNv
bnN0IHsgcmV0dXJuIG8uZ2V0T3BlcmF0aW9uVHlwZSgpID09IG1fdHlwZTsgfQorCitwcm90ZWN0
ZWQ6CisgICAgQ2xpcFBhdGhPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgICAgICA6
IG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBPcGVyYXRpb25UeXBlIG1fdHlwZTsK
K307CisKK2NsYXNzIFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24gOiBwdWJsaWMgQ2xpcFBhdGhPcGVy
YXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXBlQ2xpcFBhdGhPcGVy
YXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IHNoYXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKHNoYXBlKSk7Cisg
ICAgfQorCisgICAgY29uc3QgQmFzaWNTaGFwZSogYmFzaWNTaGFwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcGUuZ2V0KCk7IH0KKyAgICBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcGUtPndpbmRSdWxlKCk7IH0KKyAgICBjb25zdCBQYXRoJiBwYXRoKGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdSZWN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2hhcGUpOworICAg
ICAgICBtX3BhdGguY2xlYXIoKTsKKyAgICAgICAgbV9wYXRoID0gYWRvcHRQdHIobmV3IFBhdGgp
OworICAgICAgICBtX3NoYXBlLT5wYXRoKCptX3BhdGgsIGJvdW5kaW5nUmVjdCk7CisgICAgICAg
IHJldHVybiAqbV9wYXRoOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDbGlwUGF0aE9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghaXNTYW1lVHlwZShvKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
Y29uc3QgU2hhcGVDbGlwUGF0aE9wZXJhdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBT
aGFwZUNsaXBQYXRoT3BlcmF0aW9uKj4oJm8pOworICAgICAgICByZXR1cm4gbV9zaGFwZSA9PSBv
dGhlci0+bV9zaGFwZTsKKyAgICB9CisKKyAgICBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKFBhc3NS
ZWZQdHI8QmFzaWNTaGFwZT4gc2hhcGUpCisgICAgICAgIDogQ2xpcFBhdGhPcGVyYXRpb24oU0hB
UEUpCisgICAgICAgICwgbV9zaGFwZShzaGFwZSkKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRy
PEJhc2ljU2hhcGU+IG1fc2hhcGU7CisgICAgT3duUHRyPFBhdGg+IG1fcGF0aDsKK307CisKK2Ns
YXNzIFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9u
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWZlcmVuY2VDbGlwUGF0aE9wZXJh
dGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWZlcmVuY2VDbGlwUGF0aE9wZXJh
dGlvbih1cmwsIGZyYWdtZW50KSk7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IFN0cmluZyYgZnJhZ21lbnQoKSBjb25z
dCB7IHJldHVybiBtX2ZyYWdtZW50OyB9CisKKyAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhOyB9CisgICAgdm9pZCBzZXREYXRhKHZvaWQqIGRhdGEpIHsgbV9kYXRhID0gZGF0
YTsgfQorCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENsaXBQ
YXRoT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8p
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjb25zdCBSZWZlcmVuY2VDbGlw
UGF0aE9wZXJhdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBSZWZlcmVuY2VDbGlwUGF0
aE9wZXJhdGlvbio+KCZvKTsKKyAgICAgICAgcmV0dXJuIG1fdXJsID09IG90aGVyLT5tX3VybDsK
KyAgICB9CisKKyAgICBSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbihjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCkKKyAgICAgICAgOiBDbGlwUGF0aE9wZXJhdGlvbihS
RUZFUkVOQ0UpCisgICAgICAgICwgbV91cmwodXJsKQorICAgICAgICAsIG1fZnJhZ21lbnQoZnJh
Z21lbnQpCisgICAgICAgICwgbV9kYXRhKDApCisgICAgeworICAgIH0KKworICAgIFN0cmluZyBt
X3VybDsKKyAgICBTdHJpbmcgbV9mcmFnbWVudDsKKyAgICB2b2lkKiBtX2RhdGE7Cit9OworfQor
CisjZW5kaWYgLy8gQ2xpcFBhdGhPcGVyYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggMzBmNzU5YzVkNWM5ODMwYWQ2NDk5Mjk4Yzg2ZTI5ZjM0ZTE2
Y2NhZC4uODQ0NzMyMjU3ZDU0ZmNiMzRkZWQ4Njk1NTA0Zjk2MDU5YTQ0OTZmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMTE2LDEyICszMTE2LDEwIEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhSZW5kZXJMYXllciogcm9vdExh
eWVyLCBHcmFwaGljc0NvbnRleHQqIGNvCiAgICAgLy8gQXBwbHkgY2xpcC1wYXRoIHRvIGNvbnRl
eHQuCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS0+c3R5bGUoKTsKICAgICBp
ZiAocmVuZGVyZXIoKS0+aGFzQ2xpcFBhdGgoKSAmJiAhY29udGV4dC0+cGFpbnRpbmdEaXNhYmxl
ZCgpICYmIHN0eWxlKSB7Ci0gICAgICAgIGlmIChCYXNpY1NoYXBlKiBjbGlwU2hhcGUgPSBzdHls
ZS0+Y2xpcFBhdGgoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIGlmIGl0
IGlzIGJldHRlciB0byBzdG9yZSBhbmQgdXBkYXRlIGEgUGF0aCBvYmplY3QgaW4gUmVuZGVyU3R5
bGUuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTU2MTkKLSAgICAgICAgICAgIFBhdGggY2xpcFBhdGg7Ci0gICAgICAgICAgICBjbGlwU2hh
cGUtPnBhdGgoY2xpcFBhdGgsIGNhbGN1bGF0ZUxheWVyQm91bmRzKHRoaXMsIHJvb3RMYXllciwg
MCkpOwotICAgICAgICAgICAgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LT5jbGlwUGF0aChjbGlw
UGF0aCwgY2xpcFNoYXBlLT53aW5kUnVsZSgpKTsKKyAgICAgICAgQVNTRVJUKHN0eWxlLT5jbGlw
UGF0aCgpKTsKKyAgICAgICAgaWYgKHN0eWxlLT5jbGlwUGF0aCgpLT5nZXRPcGVyYXRpb25UeXBl
KCkgPT0gQ2xpcFBhdGhPcGVyYXRpb246OlNIQVBFKSB7CisgICAgICAgICAgICBTaGFwZUNsaXBQ
YXRoT3BlcmF0aW9uKiBjbGlwUGF0aCA9IHN0YXRpY19jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRp
b24qPihzdHlsZS0+Y2xpcFBhdGgoKSk7CisgICAgICAgICAgICB0cmFuc3BhcmVuY3lMYXllckNv
bnRleHQtPmNsaXBQYXRoKGNsaXBQYXRoLT5wYXRoKGNhbGN1bGF0ZUxheWVyQm91bmRzKHRoaXMs
IHJvb3RMYXllciwgMCkpLCBjbGlwUGF0aC0+d2luZFJ1bGUoKSk7CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXgg
YzUwNzg1Mjk1ZmZmOTgzNDNkMTZmZjMxY2ZjYzFiNjQ5OWY1NDU2OC4uMzFjNTI1Nzg4NjY0OWEy
Mjc5NTI5MjYxNGQwNmRkMWYyMDZkYzhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTE0NjYsMTQgKzE0NjYsMTQgQEAgcHVibGljOgogICAg
IHN0YXRpYyBCYXNpY1NoYXBlKiBpbml0aWFsV3JhcFNoYXBlSW5zaWRlKCkgeyByZXR1cm4gMDsg
fQogICAgIHN0YXRpYyBCYXNpY1NoYXBlKiBpbml0aWFsV3JhcFNoYXBlT3V0c2lkZSgpIHsgcmV0
dXJuIDA7IH0KIAotICAgIHZvaWQgc2V0Q2xpcFBhdGgoUGFzc1JlZlB0cjxCYXNpY1NoYXBlPiBz
aGFwZSkKKyAgICB2b2lkIHNldENsaXBQYXRoKFBhc3NSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+
IG9wZXJhdGlvbikKICAgICB7Ci0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9j
bGlwUGF0aCAhPSBzaGFwZSkKLSAgICAgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLT5tX2NsaXBQYXRoID0gc2hhcGU7CisgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9jbGlwUGF0aCAhPSBvcGVyYXRpb24pCisgICAgICAgICAgICByYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9jbGlwUGF0aCA9IG9wZXJhdGlvbjsKICAgICB9Ci0gICAgQmFzaWNT
aGFwZSogY2xpcFBhdGgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9j
bGlwUGF0aC5nZXQoKTsgfQorICAgIENsaXBQYXRoT3BlcmF0aW9uKiBjbGlwUGF0aCgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQYXRoLmdldCgpOyB9CiAKLSAg
ICBzdGF0aWMgQmFzaWNTaGFwZSogaW5pdGlhbENsaXBQYXRoKCkgeyByZXR1cm4gMDsgfQorICAg
IHN0YXRpYyBDbGlwUGF0aE9wZXJhdGlvbiogaW5pdGlhbENsaXBQYXRoKCkgeyByZXR1cm4gMDsg
fQogCiAgICAgTGVuZ3RoIHdyYXBQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fd3JhcFBhZGRpbmc7IH0KICAgICB2b2lkIHNldFdyYXBQYWRkaW5nKExlbmd0
aCB3cmFwUGFkZGluZykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3dyYXBQYWRk
aW5nLCB3cmFwUGFkZGluZyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IDI1MWZmYTMxOTlh
MDY1YzA2NmIyZGVjNmYwZTA1MjdjNTk2MzQ3MTAuLjExODgwNGU1ZmJhNjAyOTM3NDQ5ZjEzZjk4
ZTdiMTk0MzBjZDlhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtMjYsNiArMjYsNyBAQAog
I2RlZmluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhX2gKIAogI2luY2x1ZGUgIkJhc2ljU2hh
cGVzLmgiCisjaW5jbHVkZSAiQ2xpcFBhdGhPcGVyYXRpb24uaCIKICNpbmNsdWRlICJDb3VudGVy
RGlyZWN0aXZlcy5oIgogI2luY2x1ZGUgIkN1cnNvckRhdGEuaCIKICNpbmNsdWRlICJEYXRhUmVm
LmgiCkBAIC0xMzksNyArMTQwLDcgQEAgcHVibGljOgogICAgIExlbmd0aCBtX3dyYXBNYXJnaW47
CiAgICAgTGVuZ3RoIG1fd3JhcFBhZGRpbmc7CiAKLSAgICBSZWZQdHI8QmFzaWNTaGFwZT4gbV9j
bGlwUGF0aDsKKyAgICBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IG1fY2xpcFBhdGg7CiAKICAg
ICBDb2xvciBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yOwogICAgIENvbG9yIG1fdmlzaXRl
ZExpbmtPdXRsaW5lQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA2ZTNjZDJkY2JkMGFjOTM2OTExMjAzZWYy
YzM3ZmNkYThjZWI3YWU2Li4wNDFhZWQ0MTg2YWNjOTUzMmNhZDAwNzcxNzdhN2MxNTE3OTA5YmEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTEyMywxMyArMTIzLDEwIEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4
dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJPYmplY3QqIG9iamVjdCwgUGFpbnRJ
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBCYXNpY1NoYXBlKiBjbGlwU2hhcGUgPSBzdHlsZS0+
Y2xpcFBhdGgoKTsKLSAgICBpZiAoY2xpcFNoYXBlKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbnZl
c3RpZ2F0ZSBpZiBpdCBpcyBiZXR0ZXIgdG8gc3RvcmUgYW5kIHVwZGF0ZSBhIFBhdGggb2JqZWN0
IGluIFJlbmRlclN0eWxlLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTU2MTkKLSAgICAgICAgUGF0aCBjbGlwUGF0aDsKLSAgICAgICAgY2xpcFNo
YXBlLT5wYXRoKGNsaXBQYXRoLCBvYmplY3QtPm9iamVjdEJvdW5kaW5nQm94KCkpOwotICAgICAg
ICBtX3BhaW50SW5mby0+Y29udGV4dC0+Y2xpcFBhdGgoY2xpcFBhdGgsIGNsaXBTaGFwZS0+d2lu
ZFJ1bGUoKSk7CisgICAgQ2xpcFBhdGhPcGVyYXRpb24qIGNsaXBQYXRoT3BlcmF0aW9uID0gc3R5
bGUtPmNsaXBQYXRoKCk7CisgICAgaWYgKGNsaXBQYXRoT3BlcmF0aW9uICYmIGNsaXBQYXRoT3Bl
cmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkgPT0gQ2xpcFBhdGhPcGVyYXRpb246OlNIQVBFKSB7
CisgICAgICAgIFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24qIGNsaXBQYXRoID0gc3RhdGljX2Nhc3Q8
U2hhcGVDbGlwUGF0aE9wZXJhdGlvbio+KGNsaXBQYXRoT3BlcmF0aW9uKTsKKyAgICAgICAgbV9w
YWludEluZm8tPmNvbnRleHQtPmNsaXBQYXRoKGNsaXBQYXRoLT5wYXRoKG9iamVjdC0+b2JqZWN0
Qm91bmRpbmdCb3goKSksIGNsaXBQYXRoLT53aW5kUnVsZSgpKTsKICAgICB9CiAKICAgICBTVkdS
ZXNvdXJjZXMqIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNG
b3JSZW5kZXJPYmplY3QobV9vYmplY3QpOwpAQCAtMTUwLDcgKzE0Nyw3IEBAIHZvaWQgU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJPYmplY3QqIG9i
amVjdCwgUGFpbnRJCiAgICAgfQogCiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlw
cGVyID0gcmVzb3VyY2VzLT5jbGlwcGVyKCk7Ci0gICAgaWYgKCFjbGlwU2hhcGUgJiYgY2xpcHBl
cikgeworICAgIGlmICghY2xpcFBhdGhPcGVyYXRpb24gJiYgY2xpcHBlcikgewogICAgICAgICBp
ZiAoIWNsaXBwZXItPmFwcGx5UmVzb3VyY2UobV9vYmplY3QsIHN0eWxlLCBtX3BhaW50SW5mby0+
Y29udGV4dCwgQXBwbHlUb0RlZmF1bHRNb2RlKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9
Cg==
</data>
<flag name="review"
          id="174744"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>