<?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>104616</bug_id>
          
          <creation_ts>2012-12-10 17:05:43 -0800</creation_ts>
          <short_desc>Switch the gradient drawing code to use bearing angles</short_desc>
          <delta_ts>2012-12-13 15:35:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>66897</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tab Atkins">tabatkins</reporter>
          <assigned_to name="Tab Atkins">tabatkins</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>787860</commentid>
    <comment_count>0</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2012-12-10 17:05:43 -0800</bug_when>
    <thetext>As the new linear-gradient() syntax uses bearing angles rather than polar-coordinate angles, we should switch the way the drawing code handles angles to be consistent with it, so as to avoid accidental errors later.

parseDeprecatedLinearGradient() has to be fixed up accordingly, so that it continues to accept polar-coord angles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788607</commentid>
    <comment_count>1</comment_count>
      <attachid>178836</attachid>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2012-12-11 11:00:03 -0800</bug_when>
    <thetext>Created attachment 178836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788656</commentid>
    <comment_count>2</comment_count>
      <attachid>178836</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 12:13:01 -0800</bug_when>
    <thetext>Comment on attachment 178836
Patch

Attachment 178836 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15257777

New failing tests:
fast/gradients/css3-linear-angle-gradients.html
fast/gradients/css3-gradient-parsing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788682</commentid>
    <comment_count>3</comment_count>
      <attachid>178836</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 12:42:59 -0800</bug_when>
    <thetext>Comment on attachment 178836
Patch

Attachment 178836 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15242946

New failing tests:
fast/gradients/css3-linear-angle-gradients.html
fast/gradients/css3-gradient-parsing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789245</commentid>
    <comment_count>4</comment_count>
      <attachid>178836</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-11 23:32:06 -0800</bug_when>
    <thetext>Comment on attachment 178836
Patch

Attachment 178836 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15272628

New failing tests:
fast/gradients/css3-gradient-parsing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789765</commentid>
    <comment_count>5</comment_count>
      <attachid>179096</attachid>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2012-12-12 11:54:06 -0800</bug_when>
    <thetext>Created attachment 179096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789879</commentid>
    <comment_count>6</comment_count>
      <attachid>179096</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-12-12 13:51:11 -0800</bug_when>
    <thetext>Comment on attachment 179096
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        * css/CSSGradientValue.cpp:
&gt; +        (WebCore::CSSLinearGradientValue::customCssText):

Might as well as per-function comments here since it is such an easy change to describe.

&gt; Source/WebCore/css/CSSGradientValue.cpp:586
&gt; +    // angleDeg is a &quot;bearing angle&quot; (0deg = N, 90deg = E),
&gt; +    // but tan expects 0deg = E, 90deg = N

Nit: comments end with &quot;.&quot;

&gt; Source/WebCore/css/CSSGradientValue.cpp:593
&gt; +    // Compute start corner relative to center, in cartesian space (+y = up)

Ditto. Extra bonus nit: Cartesian starts with uppercase.

&gt; Source/WebCore/css/CSSGradientValue.cpp:612
&gt; +    // We computed the end point, so set the second point, 
&gt; +    // taking into account the moved origin and the fact that we&apos;re in drawing space (+y = down)

Ditto.

&gt; Source/WebCore/css/CSSGradientValue.h:136
&gt;      void setAngle(PassRefPtr&lt;CSSPrimitiveValue&gt; val) { m_angle = val; }
&gt; +    void setPrefixedAngle(PassRefPtr&lt;CSSPrimitiveValue&gt; val) { m_prefixedAngle = val; }

I&apos;m concerned that this exposes a way for the two angles to get out of sync. I guess the long term plan is that we always accept prefixed angles, but why not have setAngle automatically call setPrefixedAngle? I realise this means your helper function would have to move.

&gt; Source/WebCore/css/CSSParser.cpp:7163
&gt; +        convertBetweenBearingAngleAndPolarCoordinateAngle(a);

I don&apos;t like how this modifies in place, even for a temporary variable. I think changing setAngle to do both values would be the best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789888</commentid>
    <comment_count>7</comment_count>
      <attachid>179096</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-12-12 13:53:59 -0800</bug_when>
    <thetext>Comment on attachment 179096
Patch

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

&gt; Source/WebCore/css/CSSGradientValue.h:163
&gt;      RefPtr&lt;CSSPrimitiveValue&gt; m_angle; // may be null.
&gt; +    RefPtr&lt;CSSPrimitiveValue&gt; m_prefixedAngle; // may be null. Used in -webkit-linear-gradient().

Gross. Why not use a flag saying that this CSSGradientValue was generated via the prefixed property?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789897</commentid>
    <comment_count>8</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2012-12-12 14:03:05 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 179096 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179096&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSGradientValue.h:163
&gt; &gt;      RefPtr&lt;CSSPrimitiveValue&gt; m_angle; // may be null.
&gt; &gt; +    RefPtr&lt;CSSPrimitiveValue&gt; m_prefixedAngle; // may be null. Used in -webkit-linear-gradient().
&gt; 
&gt; Gross. Why not use a flag saying that this CSSGradientValue was generated via the prefixed property?

I tried that, but it means I have to construct a fresh CSSPrimitiveValue for the prefixed angle on every invocation of customCSS(), so I can call cssText() on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789899</commentid>
    <comment_count>9</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2012-12-12 14:04:33 -0800</bug_when>
    <thetext>(In reply to comment #6)

Comments fixed.

&gt; &gt; Source/WebCore/css/CSSGradientValue.h:136
&gt; &gt;      void setAngle(PassRefPtr&lt;CSSPrimitiveValue&gt; val) { m_angle = val; }
&gt; &gt; +    void setPrefixedAngle(PassRefPtr&lt;CSSPrimitiveValue&gt; val) { m_prefixedAngle = val; }
&gt; 
&gt; I&apos;m concerned that this exposes a way for the two angles to get out of sync. I guess the long term plan is that we always accept prefixed angles, but why not have setAngle automatically call setPrefixedAngle? I realise this means your helper function would have to move.
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:7163
&gt; &gt; +        convertBetweenBearingAngleAndPolarCoordinateAngle(a);
&gt; 
&gt; I don&apos;t like how this modifies in place, even for a temporary variable. I think changing setAngle to do both values would be the best.

Sure, but I&apos;m not sure how best to do this.  If it happens in setAngle, that means I don&apos;t have access to the CSSParserValue anymore, and have to construct the CSSPrimitiveValue myself.  I think this means I&apos;ll have to pull in another file, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790074</commentid>
    <comment_count>10</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-12-12 16:57:43 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; &gt; Source/WebCore/css/CSSParser.cpp:7163
&gt; &gt; &gt; +        convertBetweenBearingAngleAndPolarCoordinateAngle(a);
&gt; &gt; 
&gt; &gt; I don&apos;t like how this modifies in place, even for a temporary variable. I think changing setAngle to do both values would be the best.
&gt; 
&gt; Sure, but I&apos;m not sure how best to do this.  If it happens in setAngle, that means I don&apos;t have access to the CSSParserValue anymore, and have to construct the CSSPrimitiveValue myself.  I think this means I&apos;ll have to pull in another file, no?

Yeah, this is pretty annoying. 

Apologies if I haven&apos;t thought this through, but since this patch is sort-of doing two things at once (updating the drawing code and keeping track of the adjusted input angle), why not do it all at once and just update CSSLinearGradient to be bearing-angle everywhere? parseDeprecatedLinearGradient can do the conversion. Our cssText() output will change, I realise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790079</commentid>
    <comment_count>11</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2012-12-12 17:03:28 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; &gt; &gt; Source/WebCore/css/CSSParser.cpp:7163
&gt; &gt; &gt; &gt; +        convertBetweenBearingAngleAndPolarCoordinateAngle(a);
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t like how this modifies in place, even for a temporary variable. I think changing setAngle to do both values would be the best.
&gt; &gt; 
&gt; &gt; Sure, but I&apos;m not sure how best to do this.  If it happens in setAngle, that means I don&apos;t have access to the CSSParserValue anymore, and have to construct the CSSPrimitiveValue myself.  I think this means I&apos;ll have to pull in another file, no?
&gt; 
&gt; Yeah, this is pretty annoying. 
&gt; 
&gt; Apologies if I haven&apos;t thought this through, but since this patch is sort-of doing two things at once (updating the drawing code and keeping track of the adjusted input angle), why not do it all at once and just update CSSLinearGradient to be bearing-angle everywhere? parseDeprecatedLinearGradient can do the conversion. Our cssText() output will change, I realise.

My intention is that it&apos;s doing one thing (updating the angle we use, with appropriate bodges to make the legacy stuff work right).  ^_^

I can&apos;t change -webkit-linear-gradient() to use bearing angle, unfortunately - it&apos;ll break *way* too much stuff as horizontal gradients become vertical, etc.

I think I&apos;ve got the necessary fixes together now, though - I&apos;ll upload momentarily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790164</commentid>
    <comment_count>12</comment_count>
      <attachid>179173</attachid>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2012-12-12 18:16:44 -0800</bug_when>
    <thetext>Created attachment 179173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790169</commentid>
    <comment_count>13</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2012-12-12 18:20:03 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=179173) [details]
&gt; Patch

Okay, took a completely different and much better approach.  I&apos;ve just upgraded the m_deprecatedType boolean to an m_gradientType enum, and then used that to correct the behavior in the endPointsFromAngle() function.

This should make both of you happy, because I&apos;m no longer keeping around a dummy angle value just for purposes of printing.  ^_^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790174</commentid>
    <comment_count>14</comment_count>
      <attachid>179173</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-12-12 18:28:25 -0800</bug_when>
    <thetext>Comment on attachment 179173
Patch

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

Yeah, I like this better.

&gt; Source/WebCore/ChangeLog:29
&gt; +        (CSSGradientValue):
&gt; +        (CSSLinearGradientValue):

Remove these useless entries.

&gt; Source/WebCore/css/CSSGradientValue.cpp:28
&gt;  #include &quot;CSSGradientValue.h&quot;
&gt; -
&gt;  #include &quot;CSSCalculationValue.h&quot;

We keep that blank line in because everything after it should be sorted alphabetically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790184</commentid>
    <comment_count>15</comment_count>
      <attachid>179177</attachid>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2012-12-12 18:40:45 -0800</bug_when>
    <thetext>Created attachment 179177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790208</commentid>
    <comment_count>16</comment_count>
      <attachid>179177</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 19:31:15 -0800</bug_when>
    <thetext>Comment on attachment 179177
Patch

Attachment 179177 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15310076

New failing tests:
fast/gradients/css3-linear-angle-gradients.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790958</commentid>
    <comment_count>17</comment_count>
      <attachid>179344</attachid>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2012-12-13 14:44:52 -0800</bug_when>
    <thetext>Created attachment 179344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791017</commentid>
    <comment_count>18</comment_count>
      <attachid>179344</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 15:35:35 -0800</bug_when>
    <thetext>Comment on attachment 179344
Patch

Clearing flags on attachment: 179344

Committed r137669: &lt;http://trac.webkit.org/changeset/137669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791018</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 15:35:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178836</attachid>
            <date>2012-12-11 11:00:03 -0800</date>
            <delta_ts>2012-12-12 11:54:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104616-20121211105724.patch</filename>
            <type>text/plain</type>
            <size>5929</size>
            <attacher name="Tab Atkins">tabatkins</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg1Y2ExODliMzBhZGNk
NjJlMjNkNWIwZTNhNTBiOGFkMDE2ZDRkYS4uNzJkOGNlMTcyMDQ3ZDIwMzQ1NmZmZGQzM2FlZGNm
OTJhY2QxYjg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTExICBUYWIg
QXRraW5zICA8dGFiYXRraW5zQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIHRoZSBncmFk
aWVudCBkcmF3aW5nIGNvZGUgdG8gdXNlIGJlYXJpbmcgYW5nbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ2MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgZ3JhZGllbnQgc3ludGF4IHVzZXMg
YmVhcmluZyBhbmdsZXMsCisgICAgICAgIHNvIHdlIHNob3VsZCBzd2l0Y2ggdGhlIGdyYWRpZW50
IGRyYXdpbmcgY29kZSB0byBhbHNvIHVzZSB0aGVtLAorICAgICAgICB0byBhdm9pZCBjb25mdXNp
b24gYW5kIGFjY2lkZW50YWwgZXJyb3JzIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIC0gdGhpcyBpcyBhIHJlZmFjdG9yaW5nLCBhbmQgZXhpc3RpbmcgdGV4dHMgc2hvdWxk
IGJlIGFkZXF1YXRlLgorCisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZW5kUG9pbnRzRnJvbUFuZ2xlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRQb2xhckNvb3JkaW5hdGVBbmdsZVRv
QmVhcmluZ0FuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZXByZWNh
dGVkTGluZWFyR3JhZGllbnQpOgorCiAyMDEyLTEyLTExICBIYWppbWUgTW9ycml0YSAgPG1vcnJp
dGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBJc0FjdGl2ZUZsYWcsIElzSG92ZXJGbGFnLCBJbkFj
dGl2ZUNoYWluRmxhZyBjYW4gYmUgdW5pZmllZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVu
dFZhbHVlLmNwcAppbmRleCAzYjFiZWNlZDM5ZjA5YjhlMThlYjljNmE5YjM1ZWJmMDFjYjJkMThl
Li4zZDhmMjZjOGEwMjYxMDY3YTc2MzEzMzMxYjdiOTI0MWEwMWFhZWExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC01NTksNTcgKzU1OSw2MCBAQCBzdGF0aWMg
dm9pZCBlbmRQb2ludHNGcm9tQW5nbGUoZmxvYXQgYW5nbGVEZWcsIGNvbnN0IEludFNpemUmIHNp
emUsIEZsb2F0UG9pbnQmCiAgICAgICAgIGFuZ2xlRGVnICs9IDM2MDsKIAogICAgIGlmICghYW5n
bGVEZWcpIHsKLSAgICAgICAgZmlyc3RQb2ludC5zZXQoMCwgMCk7Ci0gICAgICAgIHNlY29uZFBv
aW50LnNldChzaXplLndpZHRoKCksIDApOworICAgICAgICBmaXJzdFBvaW50LnNldCgwLCBzaXpl
LmhlaWdodCgpKTsKKyAgICAgICAgc2Vjb25kUG9pbnQuc2V0KDAsIDApOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKGFuZ2xlRGVnID09IDkwKSB7Ci0gICAgICAgIGZpcnN0UG9p
bnQuc2V0KDAsIHNpemUuaGVpZ2h0KCkpOwotICAgICAgICBzZWNvbmRQb2ludC5zZXQoMCwgMCk7
CisgICAgICAgIGZpcnN0UG9pbnQuc2V0KDAsIDApOworICAgICAgICBzZWNvbmRQb2ludC5zZXQo
c2l6ZS53aWR0aCgpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChhbmds
ZURlZyA9PSAxODApIHsKLSAgICAgICAgZmlyc3RQb2ludC5zZXQoc2l6ZS53aWR0aCgpLCAwKTsK
LSAgICAgICAgc2Vjb25kUG9pbnQuc2V0KDAsIDApOworICAgICAgICBmaXJzdFBvaW50LnNldCgw
LCAwKTsKKyAgICAgICAgc2Vjb25kUG9pbnQuc2V0KDAsIHNpemUuaGVpZ2h0KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGFuZ2xlRGVnID09IDI3MCkgewotICAgICAgICBm
aXJzdFBvaW50LnNldCgwLCAwKTsKLSAgICAgICAgc2Vjb25kUG9pbnQuc2V0KDAsIHNpemUuaGVp
Z2h0KCkpOworICAgICAgICBmaXJzdFBvaW50LnNldChzaXplLndpZHRoKCksIDApOworICAgICAg
ICBzZWNvbmRQb2ludC5zZXQoMCwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBm
bG9hdCBzbG9wZSA9IHRhbihkZWcycmFkKGFuZ2xlRGVnKSk7CisgICAgLy8gYW5nbGVEZWcgaXMg
YSAiYmVhcmluZyBhbmdsZSIgKDBkZWcgPSBOLCA5MGRlZyA9IEUpLAorICAgIC8vIGJ1dCB0YW4g
ZXhwZWN0cyAwZGVnID0gRSwgOTBkZWcgPSBOCisgICAgZmxvYXQgc2xvcGUgPSB0YW4oZGVnMnJh
ZCg5MC4wIC0gYW5nbGVEZWcpKTsKIAogICAgIC8vIFdlIGZpbmQgdGhlIGVuZHBvaW50IGJ5IGNv
bXB1dGluZyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBsaW5lIGZvcm1lZCBieSB0aGUgc2xvcGUs
CiAgICAgLy8gYW5kIGEgbGluZSBwZXJwZW5kaWN1bGFyIHRvIGl0IHRoYXQgaW50ZXJzZWN0cyB0
aGUgY29ybmVyLgogICAgIGZsb2F0IHBlcnBlbmRpY3VsYXJTbG9wZSA9IC0xIC8gc2xvcGU7CiAK
LSAgICAvLyBDb21wdXRlIHN0YXJ0IGNvcm5lciByZWxhdGl2ZSB0byBjZW50ZXIuCisgICAgLy8g
Q29tcHV0ZSBzdGFydCBjb3JuZXIgcmVsYXRpdmUgdG8gY2VudGVyLCBpbiBjYXJ0ZXNpYW4gc3Bh
Y2UgKCt5ID0gdXApCiAgICAgZmxvYXQgaGFsZkhlaWdodCA9IHNpemUuaGVpZ2h0KCkgLyAyOwog
ICAgIGZsb2F0IGhhbGZXaWR0aCA9IHNpemUud2lkdGgoKSAvIDI7CiAgICAgRmxvYXRQb2ludCBl
bmRDb3JuZXI7CiAgICAgaWYgKGFuZ2xlRGVnIDwgOTApCiAgICAgICAgIGVuZENvcm5lci5zZXQo
aGFsZldpZHRoLCBoYWxmSGVpZ2h0KTsKICAgICBlbHNlIGlmIChhbmdsZURlZyA8IDE4MCkKLSAg
ICAgICAgZW5kQ29ybmVyLnNldCgtaGFsZldpZHRoLCBoYWxmSGVpZ2h0KTsKKyAgICAgICAgZW5k
Q29ybmVyLnNldChoYWxmV2lkdGgsIC1oYWxmSGVpZ2h0KTsKICAgICBlbHNlIGlmIChhbmdsZURl
ZyA8IDI3MCkKICAgICAgICAgZW5kQ29ybmVyLnNldCgtaGFsZldpZHRoLCAtaGFsZkhlaWdodCk7
CiAgICAgZWxzZQotICAgICAgICBlbmRDb3JuZXIuc2V0KGhhbGZXaWR0aCwgLWhhbGZIZWlnaHQp
OworICAgICAgICBlbmRDb3JuZXIuc2V0KC1oYWxmV2lkdGgsIGhhbGZIZWlnaHQpOwogCiAgICAg
Ly8gQ29tcHV0ZSBjIChvZiB5ID0gbXggKyBjKSB1c2luZyB0aGUgY29ybmVyIHBvaW50LgogICAg
IGZsb2F0IGMgPSBlbmRDb3JuZXIueSgpIC0gcGVycGVuZGljdWxhclNsb3BlICogZW5kQ29ybmVy
LngoKTsKICAgICBmbG9hdCBlbmRYID0gYyAvIChzbG9wZSAtIHBlcnBlbmRpY3VsYXJTbG9wZSk7
CiAgICAgZmxvYXQgZW5kWSA9IHBlcnBlbmRpY3VsYXJTbG9wZSAqIGVuZFggKyBjOwogCi0gICAg
Ly8gV2UgY29tcHV0ZWQgdGhlIGVuZCBwb2ludCwgc28gc2V0IHRoZSBzZWNvbmQgcG9pbnQsIGZs
aXBwaW5nIHRoZSBZIHRvIGFjY291bnQgZm9yIGFuZ2xlcyBnb2luZyBhbnRpY2xvY2t3aXNlLgot
ICAgIHNlY29uZFBvaW50LnNldChoYWxmV2lkdGggKyBlbmRYLCBzaXplLmhlaWdodCgpIC0gKGhh
bGZIZWlnaHQgKyBlbmRZKSk7CisgICAgLy8gV2UgY29tcHV0ZWQgdGhlIGVuZCBwb2ludCwgc28g
c2V0IHRoZSBzZWNvbmQgcG9pbnQsIAorICAgIC8vIHRha2luZyBpbnRvIGFjY291bnQgdGhlIG1v
dmVkIG9yaWdpbiBhbmQgdGhlIGZhY3QgdGhhdCB3ZSdyZSBpbiBkcmF3aW5nIHNwYWNlICgreSA9
IGRvd24pCisgICAgc2Vjb25kUG9pbnQuc2V0KGhhbGZXaWR0aCArIGVuZFgsIGhhbGZIZWlnaHQg
LSBlbmRZKTsKICAgICAvLyBSZWZsZWN0IGFyb3VuZCB0aGUgY2VudGVyIGZvciB0aGUgc3RhcnQg
cG9pbnQuCi0gICAgZmlyc3RQb2ludC5zZXQoc2l6ZS53aWR0aCgpIC0gc2Vjb25kUG9pbnQueCgp
LCBzaXplLmhlaWdodCgpIC0gc2Vjb25kUG9pbnQueSgpKTsKKyAgICBmaXJzdFBvaW50LnNldCho
YWxmV2lkdGggLSBlbmRYLCBoYWxmSGVpZ2h0ICsgZW5kWSk7CiB9CiAKIFBhc3NSZWZQdHI8R3Jh
ZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CmluZGV4IDhkMmI1YzdiNDZjZjk4OTQ5MTcyYjNhMWE2OTJkNjRiNmVlNGE1YjcuLmRjMzdlMjli
YmY2NDRjMTU0ZTY3NDY1ZWVhN2VkNjI5ZTNmYzE3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCkBAIC03MTIwLDYgKzcxMjAsMjcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHBhcnNlR3JhZGllbnRDb2xvck9yS2V5d29yZChDU1NQYXJzZXIqIHAsIEMKICAgICBy
ZXR1cm4gcC0+cGFyc2VDb2xvcih2YWx1ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIGNvbnZlcnRQb2xh
ckNvb3JkaW5hdGVBbmdsZVRvQmVhcmluZ0FuZ2xlKENTU1BhcnNlclZhbHVlKiBhbmdsZSkKK3sK
KyAgICBzd2l0Y2ggKGFuZ2xlLT51bml0KSB7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0RFRzoKKyAgICAgICAgYW5nbGUtPmZWYWx1ZSA9IDkwLjAgLSBhbmdsZS0+ZlZhbHVlOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkFEOgorICAg
ICAgICBhbmdsZS0+ZlZhbHVlID0gcGlPdmVyVHdvRmxvYXQgLSBhbmdsZS0+ZlZhbHVlOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRDoKKyAgICAg
ICAgYW5nbGUtPmZWYWx1ZSA9IDEwMC4wIC0gYW5nbGUtPmZWYWx1ZTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1RVUk46CisgICAgICAgIGFuZ2xlLT5m
VmFsdWUgPSAwLjI1IC0gYW5nbGUtPmZWYWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCBh
biBhbmdsZSB0eXBlLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisK
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlcHJlY2F0ZWRMaW5lYXJHcmFkaWVudChDU1NQYXJzZXJW
YWx1ZUxpc3QqIHZhbHVlTGlzdCwgUmVmUHRyPENTU1ZhbHVlPiYgZ3JhZGllbnQsIENTU0dyYWRp
ZW50UmVwZWF0IHJlcGVhdGluZykKIHsKICAgICBSZWZQdHI8Q1NTTGluZWFyR3JhZGllbnRWYWx1
ZT4gcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZyk7CkBA
IC03MTM2LDYgKzcxNTcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkTGluZWFy
R3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZgogICAgIGJvb2wgZXhw
ZWN0Q29tbWEgPSBmYWxzZTsKICAgICAvLyBMb29rIGZvciBhbmdsZS4KICAgICBpZiAodmFsaWRV
bml0KGEsIEZBbmdsZSwgQ1NTU3RyaWN0TW9kZSkpIHsKKyAgICAgICAgY29udmVydFBvbGFyQ29v
cmRpbmF0ZUFuZ2xlVG9CZWFyaW5nQW5nbGUoYSk7CiAgICAgICAgIHJlc3VsdC0+c2V0QW5nbGUo
Y3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVlKGEpKTsKIAogICAgICAgICBhcmdzLT5uZXh0KCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179096</attachid>
            <date>2012-12-12 11:54:06 -0800</date>
            <delta_ts>2012-12-12 18:16:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104616-20121212115127.patch</filename>
            <type>text/plain</type>
            <size>7531</size>
            <attacher name="Tab Atkins">tabatkins</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg1Y2ExODliMzBhZGNk
NjJlMjNkNWIwZTNhNTBiOGFkMDE2ZDRkYS4uNDQyODIzZmFhZjFlNDlmYWZhNGVmOTk0OGU5OTAy
N2NhZDg5NmQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEyLTEyICBUYWIg
QXRraW5zICA8dGFiYXRraW5zQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIHRoZSBncmFk
aWVudCBkcmF3aW5nIGNvZGUgdG8gdXNlIGJlYXJpbmcgYW5nbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ2MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyB0aGUgbmV3IGxpbmVhci1ncmFkaWVu
dCgpIHN5bnRheCB1c2VzIGJlYXJpbmcgYW5nbGVzIHJhdGhlciB0aGFuIHBvbGFyLWNvb3JkaW5h
dGUgYW5nbGVzLCB3ZSBzaG91bGQgc3dpdGNoIHRoZSB3YXkgdGhlIGRyYXdpbmcgY29kZSBoYW5k
bGVzIGFuZ2xlcyB0byBiZSBjb25zaXN0ZW50IHdpdGggaXQsIHNvIGFzIHRvIGF2b2lkIGFjY2lk
ZW50YWwgZXJyb3JzIGxhdGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXMgdGhpcyBpcyBq
dXN0IGEgcmVmYWN0b3JpbmcsIGFuZCBzaG91bGQgYmUgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0
cy4KKworICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNzc1RleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZW5kUG9pbnRzRnJvbUFuZ2xlKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6c2V0UHJlZml4
ZWRBbmdsZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0QmV0d2VlbkJlYXJpbmdBbmdsZUFuZFBvbGFyQ29vcmRpbmF0ZUFuZ2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkTGluZWFyR3JhZGllbnQp
OgorCiAyMDEyLTEyLTExICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBJc0FjdGl2ZUZsYWcsIElzSG92ZXJGbGFnLCBJbkFjdGl2ZUNoYWluRmxhZyBjYW4g
YmUgdW5pZmllZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAppbmRleCAz
YjFiZWNlZDM5ZjA5YjhlMThlYjljNmE5YjM1ZWJmMDFjYjJkMThlLi4yNjc1YjkzM2RkMTFkNDE3
ZjFkNjllZThlMGRiNzNhN2JjZDI0YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuY3BwCkBAIC01MjAsOCArNTIwLDggQEAgU3RyaW5nIENTU0xpbmVhckdyYWRpZW50VmFs
dWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kTGl0ZXJhbCgiLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoIik7CiAKLSAgICAgICAg
aWYgKG1fYW5nbGUpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fYW5nbGUtPmNzc1RleHQo
KSk7CisgICAgICAgIGlmIChtX3ByZWZpeGVkQW5nbGUpCisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKG1fcHJlZml4ZWRBbmdsZS0+Y3NzVGV4dCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBpZiAobV9maXJzdFggJiYgbV9maXJzdFkpIHsKICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKG1fZmlyc3RYLT5jc3NUZXh0KCkpOwpAQCAtNTU5LDU3ICs1NTksNjAgQEAgc3RhdGlj
IHZvaWQgZW5kUG9pbnRzRnJvbUFuZ2xlKGZsb2F0IGFuZ2xlRGVnLCBjb25zdCBJbnRTaXplJiBz
aXplLCBGbG9hdFBvaW50JgogICAgICAgICBhbmdsZURlZyArPSAzNjA7CiAKICAgICBpZiAoIWFu
Z2xlRGVnKSB7Ci0gICAgICAgIGZpcnN0UG9pbnQuc2V0KDAsIDApOwotICAgICAgICBzZWNvbmRQ
b2ludC5zZXQoc2l6ZS53aWR0aCgpLCAwKTsKKyAgICAgICAgZmlyc3RQb2ludC5zZXQoMCwgc2l6
ZS5oZWlnaHQoKSk7CisgICAgICAgIHNlY29uZFBvaW50LnNldCgwLCAwKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmIChhbmdsZURlZyA9PSA5MCkgewotICAgICAgICBmaXJzdFBv
aW50LnNldCgwLCBzaXplLmhlaWdodCgpKTsKLSAgICAgICAgc2Vjb25kUG9pbnQuc2V0KDAsIDAp
OworICAgICAgICBmaXJzdFBvaW50LnNldCgwLCAwKTsKKyAgICAgICAgc2Vjb25kUG9pbnQuc2V0
KHNpemUud2lkdGgoKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYW5n
bGVEZWcgPT0gMTgwKSB7Ci0gICAgICAgIGZpcnN0UG9pbnQuc2V0KHNpemUud2lkdGgoKSwgMCk7
Ci0gICAgICAgIHNlY29uZFBvaW50LnNldCgwLCAwKTsKKyAgICAgICAgZmlyc3RQb2ludC5zZXQo
MCwgMCk7CisgICAgICAgIHNlY29uZFBvaW50LnNldCgwLCBzaXplLmhlaWdodCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChhbmdsZURlZyA9PSAyNzApIHsKLSAgICAgICAg
Zmlyc3RQb2ludC5zZXQoMCwgMCk7Ci0gICAgICAgIHNlY29uZFBvaW50LnNldCgwLCBzaXplLmhl
aWdodCgpKTsKKyAgICAgICAgZmlyc3RQb2ludC5zZXQoc2l6ZS53aWR0aCgpLCAwKTsKKyAgICAg
ICAgc2Vjb25kUG9pbnQuc2V0KDAsIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
ZmxvYXQgc2xvcGUgPSB0YW4oZGVnMnJhZChhbmdsZURlZykpOworICAgIC8vIGFuZ2xlRGVnIGlz
IGEgImJlYXJpbmcgYW5nbGUiICgwZGVnID0gTiwgOTBkZWcgPSBFKSwKKyAgICAvLyBidXQgdGFu
IGV4cGVjdHMgMGRlZyA9IEUsIDkwZGVnID0gTgorICAgIGZsb2F0IHNsb3BlID0gdGFuKGRlZzJy
YWQoOTAuMCAtIGFuZ2xlRGVnKSk7CiAKICAgICAvLyBXZSBmaW5kIHRoZSBlbmRwb2ludCBieSBj
b21wdXRpbmcgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgbGluZSBmb3JtZWQgYnkgdGhlIHNsb3Bl
LAogICAgIC8vIGFuZCBhIGxpbmUgcGVycGVuZGljdWxhciB0byBpdCB0aGF0IGludGVyc2VjdHMg
dGhlIGNvcm5lci4KICAgICBmbG9hdCBwZXJwZW5kaWN1bGFyU2xvcGUgPSAtMSAvIHNsb3BlOwog
Ci0gICAgLy8gQ29tcHV0ZSBzdGFydCBjb3JuZXIgcmVsYXRpdmUgdG8gY2VudGVyLgorICAgIC8v
IENvbXB1dGUgc3RhcnQgY29ybmVyIHJlbGF0aXZlIHRvIGNlbnRlciwgaW4gY2FydGVzaWFuIHNw
YWNlICgreSA9IHVwKQogICAgIGZsb2F0IGhhbGZIZWlnaHQgPSBzaXplLmhlaWdodCgpIC8gMjsK
ICAgICBmbG9hdCBoYWxmV2lkdGggPSBzaXplLndpZHRoKCkgLyAyOwogICAgIEZsb2F0UG9pbnQg
ZW5kQ29ybmVyOwogICAgIGlmIChhbmdsZURlZyA8IDkwKQogICAgICAgICBlbmRDb3JuZXIuc2V0
KGhhbGZXaWR0aCwgaGFsZkhlaWdodCk7CiAgICAgZWxzZSBpZiAoYW5nbGVEZWcgPCAxODApCi0g
ICAgICAgIGVuZENvcm5lci5zZXQoLWhhbGZXaWR0aCwgaGFsZkhlaWdodCk7CisgICAgICAgIGVu
ZENvcm5lci5zZXQoaGFsZldpZHRoLCAtaGFsZkhlaWdodCk7CiAgICAgZWxzZSBpZiAoYW5nbGVE
ZWcgPCAyNzApCiAgICAgICAgIGVuZENvcm5lci5zZXQoLWhhbGZXaWR0aCwgLWhhbGZIZWlnaHQp
OwogICAgIGVsc2UKLSAgICAgICAgZW5kQ29ybmVyLnNldChoYWxmV2lkdGgsIC1oYWxmSGVpZ2h0
KTsKKyAgICAgICAgZW5kQ29ybmVyLnNldCgtaGFsZldpZHRoLCBoYWxmSGVpZ2h0KTsKIAogICAg
IC8vIENvbXB1dGUgYyAob2YgeSA9IG14ICsgYykgdXNpbmcgdGhlIGNvcm5lciBwb2ludC4KICAg
ICBmbG9hdCBjID0gZW5kQ29ybmVyLnkoKSAtIHBlcnBlbmRpY3VsYXJTbG9wZSAqIGVuZENvcm5l
ci54KCk7CiAgICAgZmxvYXQgZW5kWCA9IGMgLyAoc2xvcGUgLSBwZXJwZW5kaWN1bGFyU2xvcGUp
OwogICAgIGZsb2F0IGVuZFkgPSBwZXJwZW5kaWN1bGFyU2xvcGUgKiBlbmRYICsgYzsKIAotICAg
IC8vIFdlIGNvbXB1dGVkIHRoZSBlbmQgcG9pbnQsIHNvIHNldCB0aGUgc2Vjb25kIHBvaW50LCBm
bGlwcGluZyB0aGUgWSB0byBhY2NvdW50IGZvciBhbmdsZXMgZ29pbmcgYW50aWNsb2Nrd2lzZS4K
LSAgICBzZWNvbmRQb2ludC5zZXQoaGFsZldpZHRoICsgZW5kWCwgc2l6ZS5oZWlnaHQoKSAtICho
YWxmSGVpZ2h0ICsgZW5kWSkpOworICAgIC8vIFdlIGNvbXB1dGVkIHRoZSBlbmQgcG9pbnQsIHNv
IHNldCB0aGUgc2Vjb25kIHBvaW50LCAKKyAgICAvLyB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBt
b3ZlZCBvcmlnaW4gYW5kIHRoZSBmYWN0IHRoYXQgd2UncmUgaW4gZHJhd2luZyBzcGFjZSAoK3kg
PSBkb3duKQorICAgIHNlY29uZFBvaW50LnNldChoYWxmV2lkdGggKyBlbmRYLCBoYWxmSGVpZ2h0
IC0gZW5kWSk7CiAgICAgLy8gUmVmbGVjdCBhcm91bmQgdGhlIGNlbnRlciBmb3IgdGhlIHN0YXJ0
IHBvaW50LgotICAgIGZpcnN0UG9pbnQuc2V0KHNpemUud2lkdGgoKSAtIHNlY29uZFBvaW50Lngo
KSwgc2l6ZS5oZWlnaHQoKSAtIHNlY29uZFBvaW50LnkoKSk7CisgICAgZmlyc3RQb2ludC5zZXQo
aGFsZldpZHRoIC0gZW5kWCwgaGFsZkhlaWdodCArIGVuZFkpOwogfQogCiBQYXNzUmVmUHRyPEdy
YWRpZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFk
aWVudFZhbHVlLmgKaW5kZXggMWUyNWFjZjY2NjFkN2JiNWJhM2YxYmFiOGQ1ZTI1MWI1YzI1ODM0
OS4uZWIxYmI1M2VkZTlhZTdhMmM3MTI4ZDdiNjJjMzJhZmY3MDIwM2E1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCkBAIC0xMzMsNiArMTMzLDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIHZvaWQgc2V0QW5nbGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFs
KSB7IG1fYW5nbGUgPSB2YWw7IH0KKyAgICB2b2lkIHNldFByZWZpeGVkQW5nbGUoUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fcHJlZml4ZWRBbmdsZSA9IHZhbDsgfQogCiAg
ICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIApAQCAtMTU5LDYgKzE2MCw3IEBAIHBy
aXZhdGU6CiAgICAgfQogCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2FuZ2xlOyAv
LyBtYXkgYmUgbnVsbC4KKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fcHJlZml4ZWRB
bmdsZTsgLy8gbWF5IGJlIG51bGwuIFVzZWQgaW4gLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoKS4K
IH07CiAKIGNsYXNzIENTU1JhZGlhbEdyYWRpZW50VmFsdWUgOiBwdWJsaWMgQ1NTR3JhZGllbnRW
YWx1ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDhkMmI1YzdiNDZjZjk4OTQ5MTcy
YjNhMWE2OTJkNjRiNmVlNGE1YjcuLjg3N2UzMTk3MjIzYTA1YjcxMjZlNWE3NTY2ZTQ4NzIzYzJh
NTY1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC03MTIwLDYgKzcxMjAsMjkgQEAg
c3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlR3JhZGllbnRDb2xvck9y
S2V5d29yZChDU1NQYXJzZXIqIHAsIEMKICAgICByZXR1cm4gcC0+cGFyc2VDb2xvcih2YWx1ZSk7
CiB9CiAKK3N0YXRpYyB2b2lkIGNvbnZlcnRCZXR3ZWVuQmVhcmluZ0FuZ2xlQW5kUG9sYXJDb29y
ZGluYXRlQW5nbGUoQ1NTUGFyc2VyVmFsdWUqIGFuZ2xlKQoreworICAgIC8vIFN3aXRjaGluZyBi
ZXR3ZWVuIGJlYXJpbmcgYW5kIHBvbGFyIGFuZ2xlcyBpcyBhIHN5bW1ldHJpYyBvcGVyYXRpb24g
LQorICAgIC8vIGdvaW5nIGJhY2sgaXMganVzdCBkb2luZyBpdCBhZ2Fpbi4KKyAgICBzd2l0Y2gg
KGFuZ2xlLT51bml0KSB7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRzoKKyAg
ICAgICAgYW5nbGUtPmZWYWx1ZSA9IDkwLjAgLSBhbmdsZS0+ZlZhbHVlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkFEOgorICAgICAgICBhbmdsZS0+
ZlZhbHVlID0gcGlPdmVyVHdvRmxvYXQgLSBhbmdsZS0+ZlZhbHVlOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRDoKKyAgICAgICAgYW5nbGUtPmZW
YWx1ZSA9IDEwMC4wIC0gYW5nbGUtPmZWYWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1RVUk46CisgICAgICAgIGFuZ2xlLT5mVmFsdWUgPSAwLjI1
IC0gYW5nbGUtPmZWYWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
Ly8gVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCBhbiBhbmdsZSB0eXBl
LgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZURlcHJlY2F0ZWRMaW5lYXJHcmFkaWVudChDU1NQYXJzZXJWYWx1ZUxpc3QqIHZh
bHVlTGlzdCwgUmVmUHRyPENTU1ZhbHVlPiYgZ3JhZGllbnQsIENTU0dyYWRpZW50UmVwZWF0IHJl
cGVhdGluZykKIHsKICAgICBSZWZQdHI8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0g
Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZyk7CkBAIC03MTM2LDYgKzcx
NTksOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkTGluZWFyR3JhZGllbnQoQ1NT
UGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZgogICAgIGJvb2wgZXhwZWN0Q29tbWEgPSBm
YWxzZTsKICAgICAvLyBMb29rIGZvciBhbmdsZS4KICAgICBpZiAodmFsaWRVbml0KGEsIEZBbmds
ZSwgQ1NTU3RyaWN0TW9kZSkpIHsKKyAgICAgICAgcmVzdWx0LT5zZXRQcmVmaXhlZEFuZ2xlKGNy
ZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZShhKSk7CisgICAgICAgIGNvbnZlcnRCZXR3ZWVuQmVh
cmluZ0FuZ2xlQW5kUG9sYXJDb29yZGluYXRlQW5nbGUoYSk7CiAgICAgICAgIHJlc3VsdC0+c2V0
QW5nbGUoY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVlKGEpKTsKIAogICAgICAgICBhcmdzLT5u
ZXh0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179173</attachid>
            <date>2012-12-12 18:16:44 -0800</date>
            <delta_ts>2012-12-12 18:40:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104616-20121212181405.patch</filename>
            <type>text/plain</type>
            <size>16715</size>
            <attacher name="Tab Atkins">tabatkins</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2YzN2YzZjQ2ZmU2MjE2
NjMxODVlZTA2NTllYzM2MzQ3NGQwZmY3Mi4uYzA5Y2IyMTYyMmEzMzdhMGZmNjVmYTY3NGVhOTNh
MDUzODY0MGNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEyLTEyICBUYWIg
QXRraW5zICA8dGFiYXRraW5zQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIHRoZSBncmFk
aWVudCBkcmF3aW5nIGNvZGUgdG8gdXNlIGJlYXJpbmcgYW5nbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ2MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2ggdGhlIGdyYWRpZW50IG1hdGgg
ZnJvbSBwb2xhci1jb29yZGluYXRlIGFuZ2xlcyB0byBiZWFyaW5nIGFuZ2xlcy4KKyAgICAgICAg
VG8gbWFrZSB0aGlzIHBvc3NpYmxlIHdpdGhvdXQgYmVoYXZpb3IgY2hhbmdlcywgCisgICAgICAg
IHN3aXRjaCB0aGUgbV9kZXByZWNhdGVkVHlwZSBib29sZWFuIHRvIGFuIG1fZ3JhZGllbnRUeXBl
IGVudW0sCisgICAgICAgIGFuZCBmaXggYWxsIHVzYWdlcyBhY2NvcmRpbmdseS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIGFzIHRoaXMgaXMgYSByZWZhY3RvcmluZyBhbmQgc2hvdWxkIGhhdmUg
bm8gYmVoYXZpb3IgY2hhbmdlcy4gRXhpc3RpbmcgdGVzdHMgc3VmZmljZS4KKworICAgICAgICAq
IGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuZFBvaW50c0Zy
b21BbmdsZSk6CisgICAgICAgIFRoaXMgaXMgdGhlIG9ubHkgbWVjaGFuaWNhbCBjaGFuZ2UuIFRo
ZSByZXN0IGFyZSBqdXN0IGZpeGluZyB0aGUgcGx1bWJpbmcgYXJvdW5kIHRoZSBib29sZWFuLT5l
bnVtIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OnNvcnRTdG9wc0lmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNzc1RleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCk6CisgICAgICAg
ICogY3NzL0NTU0dyYWRpZW50VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50
VmFsdWU6OmdyYWRpZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVl
OjpDU1NHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKENTU0dyYWRpZW50VmFsdWUpOgorICAgICAg
ICAoQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJH
cmFkaWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFyR3JhZGll
bnRWYWx1ZTo6Q1NTTGluZWFyR3JhZGllbnRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NS
YWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFs
R3JhZGllbnRWYWx1ZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRl
ZEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVk
TGluZWFyR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZURlcHJl
Y2F0ZWRSYWRpYWxHcmFkaWVudCk6CisKIDIwMTItMTItMTIgIEViZXJoYXJkIEdyYWV0aGVyICA8
ZWdyYWV0aGVyQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZm9sbG93IHVw
IHRvIHIxMzY5NzQ6IGhhbmRsZSB2aXNpYmlsaXR5IHNob3J0Y3V0IGluIGtleWRvd24gZXZlbnQg
b2YgRWxlbWVudHNUcmVlT3V0bGluZS5lbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5jcHAKaW5kZXggM2IxYmVjZWQzOWYwOWI4ZTE4ZWI5YzZhOWIzNWViZjAxY2IyZDE4
ZS4uOGM5MmYxMTZmNzg5NjhiOTNkMTVjNDE0Yjg2Y2VmMDNhN2M1YWEyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtMjUsNyArMjUsNiBAQAogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTR3JhZGllbnRWYWx1ZS5oIgotCiAjaW5jbHVkZSAi
Q1NTQ2FsY3VsYXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNp
bmNsdWRlICJHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5oIgpAQCAtOTYsNyArOTUsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgY29tcGFyZVN0b3BzKGNvbnN0IENTU0dyYWRpZW50Q29sb3JTdG9wJiBh
LCBjb25zdCBDU1NHcmFkaWVudAogCiB2b2lkIENTU0dyYWRpZW50VmFsdWU6OnNvcnRTdG9wc0lm
TmVlZGVkKCkKIHsKLSAgICBBU1NFUlQobV9kZXByZWNhdGVkVHlwZSk7CisgICAgQVNTRVJUKG1f
Z3JhZGllbnRUeXBlID09IENTU0RlcHJlY2F0ZWRMaW5lYXJHcmFkaWVudCB8fCBtX2dyYWRpZW50
VHlwZSA9PSBDU1NEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpOwogICAgIGlmICghbV9zdG9wc1Nv
cnRlZCkgewogICAgICAgICBpZiAobV9zdG9wcy5zaXplKCkpCiAgICAgICAgICAgICBzdGQ6OnN0
YWJsZV9zb3J0KG1fc3RvcHMuYmVnaW4oKSwgbV9zdG9wcy5lbmQoKSwgY29tcGFyZVN0b3BzKTsK
QEAgLTE0Nyw3ICsxNDYsNyBAQCB2b2lkIENTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKEdyYWRp
ZW50KiBncmFkaWVudCwgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZAogewogICAgIFJlbmRl
clN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwogCi0gICAgaWYgKG1fZGVwcmVjYXRl
ZFR5cGUpIHsKKyAgICBpZiAobV9ncmFkaWVudFR5cGUgPT0gQ1NTRGVwcmVjYXRlZExpbmVhckdy
YWRpZW50IHx8IG1fZ3JhZGllbnRUeXBlID09IENTU0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkg
ewogICAgICAgICBzb3J0U3RvcHNJZk5lZWRlZCgpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3N0b3BzLnNpemUoKTsgaSsrKSB7CkBAIC00ODUsNyArNDg0LDcgQEAgdm9p
ZCBDU1NHcmFkaWVudFZhbHVlOjpyZXBvcnRCYXNlQ2xhc3NNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3QKIFN0cmluZyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjdXN0
b21Dc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICBpZiAo
bV9kZXByZWNhdGVkVHlwZSkgeworICAgIGlmIChtX2dyYWRpZW50VHlwZSA9PSBDU1NEZXByZWNh
dGVkTGluZWFyR3JhZGllbnQpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIi13ZWJr
aXQtZ3JhZGllbnQobGluZWFyLCAiKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2ZpcnN0WC0+
Y3NzVGV4dCgpKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwpAQCAtNTUyLDY0ICs1NTEs
NzEgQEAgU3RyaW5nIENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25z
dAogfQogCiAvLyBDb21wdXRlIHRoZSBlbmRwb2ludHMgc28gdGhhdCBhIGdyYWRpZW50IG9mIHRo
ZSBnaXZlbiBhbmdsZSBjb3ZlcnMgYSBib3ggb2YgdGhlIGdpdmVuIHNpemUuCi1zdGF0aWMgdm9p
ZCBlbmRQb2ludHNGcm9tQW5nbGUoZmxvYXQgYW5nbGVEZWcsIGNvbnN0IEludFNpemUmIHNpemUs
IEZsb2F0UG9pbnQmIGZpcnN0UG9pbnQsIEZsb2F0UG9pbnQmIHNlY29uZFBvaW50KQorc3RhdGlj
IHZvaWQgZW5kUG9pbnRzRnJvbUFuZ2xlKGZsb2F0IGFuZ2xlRGVnLCBjb25zdCBJbnRTaXplJiBz
aXplLCBGbG9hdFBvaW50JiBmaXJzdFBvaW50LCBGbG9hdFBvaW50JiBzZWNvbmRQb2ludCwgQ1NT
R3JhZGllbnRUeXBlIHR5cGUpCiB7CisgICAgLy8gUHJlZml4ZWQgZ3JhZGllbnRzIHVzZSAicG9s
YXIgY29vcmRpbmF0ZSIgYW5nbGVzLCByYXRoZXIgdGhhbiAiYmVhcmluZyIgYW5nbGVzLgorICAg
IGlmICh0eXBlID09IENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQpCisgICAgICAgIGFuZ2xlRGVn
ID0gOTAgLSBhbmdsZURlZzsKKwogICAgIGFuZ2xlRGVnID0gZm1vZGYoYW5nbGVEZWcsIDM2MCk7
CiAgICAgaWYgKGFuZ2xlRGVnIDwgMCkKICAgICAgICAgYW5nbGVEZWcgKz0gMzYwOwogCiAgICAg
aWYgKCFhbmdsZURlZykgewotICAgICAgICBmaXJzdFBvaW50LnNldCgwLCAwKTsKLSAgICAgICAg
c2Vjb25kUG9pbnQuc2V0KHNpemUud2lkdGgoKSwgMCk7CisgICAgICAgIGZpcnN0UG9pbnQuc2V0
KDAsIHNpemUuaGVpZ2h0KCkpOworICAgICAgICBzZWNvbmRQb2ludC5zZXQoMCwgMCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYW5nbGVEZWcgPT0gOTApIHsKLSAgICAgICAg
Zmlyc3RQb2ludC5zZXQoMCwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIHNlY29uZFBvaW50LnNl
dCgwLCAwKTsKKyAgICAgICAgZmlyc3RQb2ludC5zZXQoMCwgMCk7CisgICAgICAgIHNlY29uZFBv
aW50LnNldChzaXplLndpZHRoKCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
aWYgKGFuZ2xlRGVnID09IDE4MCkgewotICAgICAgICBmaXJzdFBvaW50LnNldChzaXplLndpZHRo
KCksIDApOwotICAgICAgICBzZWNvbmRQb2ludC5zZXQoMCwgMCk7CisgICAgICAgIGZpcnN0UG9p
bnQuc2V0KDAsIDApOworICAgICAgICBzZWNvbmRQb2ludC5zZXQoMCwgc2l6ZS5oZWlnaHQoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYW5nbGVEZWcgPT0gMjcwKSB7Ci0g
ICAgICAgIGZpcnN0UG9pbnQuc2V0KDAsIDApOwotICAgICAgICBzZWNvbmRQb2ludC5zZXQoMCwg
c2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGZpcnN0UG9pbnQuc2V0KHNpemUud2lkdGgoKSwgMCk7
CisgICAgICAgIHNlY29uZFBvaW50LnNldCgwLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGZsb2F0IHNsb3BlID0gdGFuKGRlZzJyYWQoYW5nbGVEZWcpKTsKKyAgICAvLyBhbmds
ZURlZyBpcyBhICJiZWFyaW5nIGFuZ2xlIiAoMGRlZyA9IE4sIDkwZGVnID0gRSksCisgICAgLy8g
YnV0IHRhbiBleHBlY3RzIDBkZWcgPSBFLCA5MGRlZyA9IE4uCisgICAgZmxvYXQgc2xvcGUgPSB0
YW4oZGVnMnJhZCg5MC4wIC0gYW5nbGVEZWcpKTsKIAogICAgIC8vIFdlIGZpbmQgdGhlIGVuZHBv
aW50IGJ5IGNvbXB1dGluZyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBsaW5lIGZvcm1lZCBieSB0
aGUgc2xvcGUsCiAgICAgLy8gYW5kIGEgbGluZSBwZXJwZW5kaWN1bGFyIHRvIGl0IHRoYXQgaW50
ZXJzZWN0cyB0aGUgY29ybmVyLgogICAgIGZsb2F0IHBlcnBlbmRpY3VsYXJTbG9wZSA9IC0xIC8g
c2xvcGU7CiAKLSAgICAvLyBDb21wdXRlIHN0YXJ0IGNvcm5lciByZWxhdGl2ZSB0byBjZW50ZXIu
CisgICAgLy8gQ29tcHV0ZSBzdGFydCBjb3JuZXIgcmVsYXRpdmUgdG8gY2VudGVyLCBpbiBDYXJ0
ZXNpYW4gc3BhY2UgKCt5ID0gdXApLgogICAgIGZsb2F0IGhhbGZIZWlnaHQgPSBzaXplLmhlaWdo
dCgpIC8gMjsKICAgICBmbG9hdCBoYWxmV2lkdGggPSBzaXplLndpZHRoKCkgLyAyOwogICAgIEZs
b2F0UG9pbnQgZW5kQ29ybmVyOwogICAgIGlmIChhbmdsZURlZyA8IDkwKQogICAgICAgICBlbmRD
b3JuZXIuc2V0KGhhbGZXaWR0aCwgaGFsZkhlaWdodCk7CiAgICAgZWxzZSBpZiAoYW5nbGVEZWcg
PCAxODApCi0gICAgICAgIGVuZENvcm5lci5zZXQoLWhhbGZXaWR0aCwgaGFsZkhlaWdodCk7Cisg
ICAgICAgIGVuZENvcm5lci5zZXQoaGFsZldpZHRoLCAtaGFsZkhlaWdodCk7CiAgICAgZWxzZSBp
ZiAoYW5nbGVEZWcgPCAyNzApCiAgICAgICAgIGVuZENvcm5lci5zZXQoLWhhbGZXaWR0aCwgLWhh
bGZIZWlnaHQpOwogICAgIGVsc2UKLSAgICAgICAgZW5kQ29ybmVyLnNldChoYWxmV2lkdGgsIC1o
YWxmSGVpZ2h0KTsKKyAgICAgICAgZW5kQ29ybmVyLnNldCgtaGFsZldpZHRoLCBoYWxmSGVpZ2h0
KTsKIAogICAgIC8vIENvbXB1dGUgYyAob2YgeSA9IG14ICsgYykgdXNpbmcgdGhlIGNvcm5lciBw
b2ludC4KICAgICBmbG9hdCBjID0gZW5kQ29ybmVyLnkoKSAtIHBlcnBlbmRpY3VsYXJTbG9wZSAq
IGVuZENvcm5lci54KCk7CiAgICAgZmxvYXQgZW5kWCA9IGMgLyAoc2xvcGUgLSBwZXJwZW5kaWN1
bGFyU2xvcGUpOwogICAgIGZsb2F0IGVuZFkgPSBwZXJwZW5kaWN1bGFyU2xvcGUgKiBlbmRYICsg
YzsKIAotICAgIC8vIFdlIGNvbXB1dGVkIHRoZSBlbmQgcG9pbnQsIHNvIHNldCB0aGUgc2Vjb25k
IHBvaW50LCBmbGlwcGluZyB0aGUgWSB0byBhY2NvdW50IGZvciBhbmdsZXMgZ29pbmcgYW50aWNs
b2Nrd2lzZS4KLSAgICBzZWNvbmRQb2ludC5zZXQoaGFsZldpZHRoICsgZW5kWCwgc2l6ZS5oZWln
aHQoKSAtIChoYWxmSGVpZ2h0ICsgZW5kWSkpOworICAgIC8vIFdlIGNvbXB1dGVkIHRoZSBlbmQg
cG9pbnQsIHNvIHNldCB0aGUgc2Vjb25kIHBvaW50LCAKKyAgICAvLyB0YWtpbmcgaW50byBhY2Nv
dW50IHRoZSBtb3ZlZCBvcmlnaW4gYW5kIHRoZSBmYWN0IHRoYXQgd2UncmUgaW4gZHJhd2luZyBz
cGFjZSAoK3kgPSBkb3duKS4KKyAgICBzZWNvbmRQb2ludC5zZXQoaGFsZldpZHRoICsgZW5kWCwg
aGFsZkhlaWdodCAtIGVuZFkpOwogICAgIC8vIFJlZmxlY3QgYXJvdW5kIHRoZSBjZW50ZXIgZm9y
IHRoZSBzdGFydCBwb2ludC4KLSAgICBmaXJzdFBvaW50LnNldChzaXplLndpZHRoKCkgLSBzZWNv
bmRQb2ludC54KCksIHNpemUuaGVpZ2h0KCkgLSBzZWNvbmRQb2ludC55KCkpOworICAgIGZpcnN0
UG9pbnQuc2V0KGhhbGZXaWR0aCAtIGVuZFgsIGhhbGZIZWlnaHQgKyBlbmRZKTsKIH0KIAogUGFz
c1JlZlB0cjxHcmFkaWVudD4gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTYyMiw3ICs2
MjgsNyBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVh
dGVHcmFkaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcgogICAgIEZsb2F0UG9pbnQgc2Vjb25kUG9p
bnQ7CiAgICAgaWYgKG1fYW5nbGUpIHsKICAgICAgICAgZmxvYXQgYW5nbGUgPSBtX2FuZ2xlLT5n
ZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKTsKLSAgICAgICAgZW5kUG9p
bnRzRnJvbUFuZ2xlKGFuZ2xlLCBzaXplLCBmaXJzdFBvaW50LCBzZWNvbmRQb2ludCk7CisgICAg
ICAgIGVuZFBvaW50c0Zyb21BbmdsZShhbmdsZSwgc2l6ZSwgZmlyc3RQb2ludCwgc2Vjb25kUG9p
bnQsIG1fZ3JhZGllbnRUeXBlKTsKICAgICB9IGVsc2UgewogICAgICAgICBmaXJzdFBvaW50ID0g
Y29tcHV0ZUVuZFBvaW50KG1fZmlyc3RYLmdldCgpLCBtX2ZpcnN0WS5nZXQoKSwgcmVuZGVyZXIt
PnN0eWxlKCksIHJvb3RTdHlsZSwgc2l6ZSk7CiAKQEAgLTY1NSw3ICs2NjEsNyBAQCBTdHJpbmcg
Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgU3Ry
aW5nQnVpbGRlciByZXN1bHQ7CiAKLSAgICBpZiAobV9kZXByZWNhdGVkVHlwZSkgeworICAgIGlm
IChtX2dyYWRpZW50VHlwZSA9PSBDU1NEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpIHsKICAgICAg
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIi13ZWJraXQtZ3JhZGllbnQocmFkaWFsLCAiKTsKICAg
ICAgICAgcmVzdWx0LmFwcGVuZChtX2ZpcnN0WC0+Y3NzVGV4dCgpKTsKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKaW5kZXggMWUy
NWFjZjY2NjFkN2JiNWJhM2YxYmFiOGQ1ZTI1MWI1YzI1ODM0OS4uYzBhOGFhNGQ1NGNmZDIxNjFl
YzNhOTZhZmNhMDMzMDRlMzNjNzlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyYWRpZW50VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1
ZS5oCkBAIC0zNiw3ICszNiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9hdFBv
aW50OwogY2xhc3MgR3JhZGllbnQ7CiAKLWVudW0gQ1NTR3JhZGllbnRUeXBlIHsgQ1NTTGluZWFy
R3JhZGllbnQsIENTU1JhZGlhbEdyYWRpZW50IH07CitlbnVtIENTU0dyYWRpZW50VHlwZSB7Cisg
ICAgQ1NTRGVwcmVjYXRlZExpbmVhckdyYWRpZW50LAorICAgIENTU0RlcHJlY2F0ZWRSYWRpYWxH
cmFkaWVudCwKKyAgICBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50LAorICAgIENTU1ByZWZpeGVk
UmFkaWFsR3JhZGllbnQsCisgICAgQ1NTTGluZWFyR3JhZGllbnQsCisgICAgQ1NTUmFkaWFsR3Jh
ZGllbnQKK307CiBlbnVtIENTU0dyYWRpZW50UmVwZWF0IHsgTm9uUmVwZWF0aW5nLCBSZXBlYXRp
bmcgfTsKIAogc3RydWN0IENTU0dyYWRpZW50Q29sb3JTdG9wIHsKQEAgLTY4LDcgKzc1LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc1JlcGVhdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwZWF0
aW5nOyB9CiAKLSAgICBib29sIGRlcHJlY2F0ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kZXBy
ZWNhdGVkVHlwZTsgfSAvLyBjYW1lIGZyb20gLXdlYmtpdC1ncmFkaWVudAorICAgIENTU0dyYWRp
ZW50VHlwZSBncmFkaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50VHlwZTsgfQog
CiAgICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgSW50
U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gSW50U2l6
ZSgpOyB9CkBAIC04MCwxNSArODcsMTUgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTR3Jh
ZGllbnRWYWx1ZT4gZ3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGVSZXNvbHZlciopOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgQ1NTR3JhZGllbnRWYWx1ZShDbGFzc1R5cGUgY2xhc3NUeXBlLCBD
U1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIGJvb2wgZGVwcmVjYXRlZFR5cGUgPSBmYWxzZSkKKyAg
ICBDU1NHcmFkaWVudFZhbHVlKENsYXNzVHlwZSBjbGFzc1R5cGUsIENTU0dyYWRpZW50UmVwZWF0
IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSkKICAgICAgICAgOiBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlKGNsYXNzVHlwZSkKICAgICAgICAgLCBtX3N0b3BzU29ydGVkKGZhbHNl
KQotICAgICAgICAsIG1fZGVwcmVjYXRlZFR5cGUoZGVwcmVjYXRlZFR5cGUpCisgICAgICAgICwg
bV9ncmFkaWVudFR5cGUoZ3JhZGllbnRUeXBlKQogICAgICAgICAsIG1fcmVwZWF0aW5nKHJlcGVh
dCA9PSBSZXBlYXRpbmcpCiAgICAgewogICAgIH0KIAotICAgIENTU0dyYWRpZW50VmFsdWUoY29u
c3QgQ1NTR3JhZGllbnRWYWx1ZSYgb3RoZXIsIENsYXNzVHlwZSBjbGFzc1R5cGUsIGJvb2wgZGVw
cmVjYXRlZFR5cGUgPSBmYWxzZSkKKyAgICBDU1NHcmFkaWVudFZhbHVlKGNvbnN0IENTU0dyYWRp
ZW50VmFsdWUmIG90aGVyLCBDbGFzc1R5cGUgY2xhc3NUeXBlLCBDU1NHcmFkaWVudFR5cGUgZ3Jh
ZGllbnRUeXBlKQogICAgICAgICA6IENTU0ltYWdlR2VuZXJhdG9yVmFsdWUoY2xhc3NUeXBlKQog
ICAgICAgICAsIG1fZmlyc3RYKG90aGVyLm1fZmlyc3RYKQogICAgICAgICAsIG1fZmlyc3RZKG90
aGVyLm1fZmlyc3RZKQpAQCAtOTYsNyArMTAzLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1f
c2Vjb25kWShvdGhlci5tX3NlY29uZFkpCiAgICAgICAgICwgbV9zdG9wcyhvdGhlci5tX3N0b3Bz
KQogICAgICAgICAsIG1fc3RvcHNTb3J0ZWQob3RoZXIubV9zdG9wc1NvcnRlZCkKLSAgICAgICAg
LCBtX2RlcHJlY2F0ZWRUeXBlKGRlcHJlY2F0ZWRUeXBlKQorICAgICAgICAsIG1fZ3JhZGllbnRU
eXBlKGdyYWRpZW50VHlwZSkKICAgICAgICAgLCBtX3JlcGVhdGluZyhvdGhlci5pc1JlcGVhdGlu
ZygpID8gUmVwZWF0aW5nIDogTm9uUmVwZWF0aW5nKQogICAgIHsKICAgICB9CkBAIC0xMjAsMTYg
KzEyNywxNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gU3RvcHMKICAgICBWZWN0b3I8Q1NTR3JhZGll
bnRDb2xvclN0b3AsIDI+IG1fc3RvcHM7CiAgICAgYm9vbCBtX3N0b3BzU29ydGVkOwotICAgIGJv
b2wgbV9kZXByZWNhdGVkVHlwZTsgLy8gLXdlYmtpdC1ncmFkaWVudCgpCisgICAgQ1NTR3JhZGll
bnRUeXBlIG1fZ3JhZGllbnRUeXBlOwogICAgIGJvb2wgbV9yZXBlYXRpbmc7CiB9OwogCiAKIGNs
YXNzIENTU0xpbmVhckdyYWRpZW50VmFsdWUgOiBwdWJsaWMgQ1NTR3JhZGllbnRWYWx1ZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gY3Jl
YXRlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgYm9vbCBkZXByZWNhdGVkVHlwZSA9IGZhbHNl
KQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gY3JlYXRl
KENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSA9
IENTU0xpbmVhckdyYWRpZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
U1NMaW5lYXJHcmFkaWVudFZhbHVlKHJlcGVhdCwgZGVwcmVjYXRlZFR5cGUpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlKHJlcGVhdCwgZ3JhZGll
bnRUeXBlKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRBbmdsZShQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiB2YWwpIHsgbV9hbmdsZSA9IHZhbDsgfQpAQCAtMTQ3LDEzICsxNTUsMTMgQEAg
cHVibGljOgogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NMaW5lYXJHcmFkaWVudFZhbHVlKENT
U0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgYm9vbCBkZXByZWNhdGVkVHlwZSA9IGZhbHNlKQotICAg
ICAgICA6IENTU0dyYWRpZW50VmFsdWUoTGluZWFyR3JhZGllbnRDbGFzcywgcmVwZWF0LCBkZXBy
ZWNhdGVkVHlwZSkKKyAgICBDU1NMaW5lYXJHcmFkaWVudFZhbHVlKENTU0dyYWRpZW50UmVwZWF0
IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSA9IENTU0xpbmVhckdyYWRpZW50
KQorICAgICAgICA6IENTU0dyYWRpZW50VmFsdWUoTGluZWFyR3JhZGllbnRDbGFzcywgcmVwZWF0
LCBncmFkaWVudFR5cGUpCiAgICAgewogICAgIH0KIAogICAgIENTU0xpbmVhckdyYWRpZW50VmFs
dWUoY29uc3QgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSYgb3RoZXIpCi0gICAgICAgIDogQ1NTR3Jh
ZGllbnRWYWx1ZShvdGhlciwgTGluZWFyR3JhZGllbnRDbGFzcywgb3RoZXIuZGVwcmVjYXRlZFR5
cGUoKSkKKyAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKG90aGVyLCBMaW5lYXJHcmFkaWVudENs
YXNzLCBvdGhlci5ncmFkaWVudFR5cGUoKSkKICAgICAgICAgLCBtX2FuZ2xlKG90aGVyLm1fYW5n
bGUpCiAgICAgewogICAgIH0KQEAgLTE2Myw5ICsxNzEsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBD
U1NSYWRpYWxHcmFkaWVudFZhbHVlIDogcHVibGljIENTU0dyYWRpZW50VmFsdWUgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1JhZGlhbEdyYWRpZW50VmFsdWU+IGNyZWF0ZShD
U1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIGJvb2wgZGVwcmVjYXRlZFR5cGUgPSBmYWxzZSkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiBjcmVhdGUoQ1NTR3Jh
ZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlID0gQ1NTUmFk
aWFsR3JhZGllbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU1JhZGlh
bEdyYWRpZW50VmFsdWUocmVwZWF0LCBkZXByZWNhdGVkVHlwZSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENTU1JhZGlhbEdyYWRpZW50VmFsdWUocmVwZWF0LCBncmFkaWVudFR5cGUp
KTsKICAgICB9CiAKICAgICBQYXNzUmVmUHRyPENTU1JhZGlhbEdyYWRpZW50VmFsdWU+IGNsb25l
KCkgY29uc3QKQEAgLTE5MCwxMyArMTk4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIGJv
b2wgZGVwcmVjYXRlZFR5cGUgPSBmYWxzZSkKLSAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKFJh
ZGlhbEdyYWRpZW50Q2xhc3MsIHJlcGVhdCwgZGVwcmVjYXRlZFR5cGUpCisgICAgQ1NTUmFkaWFs
R3JhZGllbnRWYWx1ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIENTU0dyYWRpZW50VHlwZSBn
cmFkaWVudFR5cGUgPSBDU1NSYWRpYWxHcmFkaWVudCkKKyAgICAgICAgOiBDU1NHcmFkaWVudFZh
bHVlKFJhZGlhbEdyYWRpZW50Q2xhc3MsIHJlcGVhdCwgZ3JhZGllbnRUeXBlKQogICAgIHsKICAg
ICB9CiAKICAgICBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKGNvbnN0IENTU1JhZGlhbEdyYWRpZW50
VmFsdWUmIG90aGVyKQotICAgICAgICA6IENTU0dyYWRpZW50VmFsdWUob3RoZXIsIFJhZGlhbEdy
YWRpZW50Q2xhc3MsIG90aGVyLmRlcHJlY2F0ZWRUeXBlKCkpCisgICAgICAgIDogQ1NTR3JhZGll
bnRWYWx1ZShvdGhlciwgUmFkaWFsR3JhZGllbnRDbGFzcywgb3RoZXIuZ3JhZGllbnRUeXBlKCkp
CiAgICAgICAgICwgbV9maXJzdFJhZGl1cyhvdGhlci5tX2ZpcnN0UmFkaXVzKQogICAgICAgICAs
IG1fc2Vjb25kUmFkaXVzKG90aGVyLm1fc2Vjb25kUmFkaXVzKQogICAgICAgICAsIG1fc2hhcGUo
b3RoZXIubV9zaGFwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggMzdiOTlhNGFmMWQ4
MDgxNzAzYzk3Mzk5NWVhYzgxOTIwNDM1MzFlMi4uOTk2NzY1YjhjMzNmOTBiZThjMmJjNzBmZjhh
ZjdkMmVlY2MwZDg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTY5ODUsMjAgKzY5
ODUsMjMgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRlZEdyYWRpZW50KENTU1BhcnNl
clZhbHVlTGlzdCogdmFsdWVMaXN0LCBSZWZQdHI8Q1MKICAgICBpZiAoIWEgfHwgYS0+dW5pdCAh
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGEtPnN0cmluZywgImxpbmVhciIpKQotICAgICAgICBn
cmFkaWVudFR5cGUgPSBDU1NMaW5lYXJHcmFkaWVudDsKKyAgICAgICAgZ3JhZGllbnRUeXBlID0g
Q1NTRGVwcmVjYXRlZExpbmVhckdyYWRpZW50OwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGEtPnN0cmluZywgInJhZGlhbCIpKQotICAgICAgICBncmFkaWVudFR5cGUgPSBDU1NSYWRp
YWxHcmFkaWVudDsKKyAgICAgICAgZ3JhZGllbnRUeXBlID0gQ1NTRGVwcmVjYXRlZFJhZGlhbEdy
YWRpZW50OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmVmUHRyPENT
U0dyYWRpZW50VmFsdWU+IHJlc3VsdDsKICAgICBzd2l0Y2ggKGdyYWRpZW50VHlwZSkgewotICAg
ICAgICBjYXNlIENTU0xpbmVhckdyYWRpZW50OgotICAgICAgICAgICAgcmVzdWx0ID0gQ1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgdHJ1ZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NSYWRpYWxHcmFkaWVudDoKLSAgICAgICAgICAgIHJl
c3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIHRydWUp
OwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NEZXByZWNhdGVkTGluZWFyR3JhZGll
bnQ6CisgICAgICAgIHJlc3VsdCA9IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25S
ZXBlYXRpbmcsIGdyYWRpZW50VHlwZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTRGVw
cmVjYXRlZFJhZGlhbEdyYWRpZW50OgorICAgICAgICByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVu
dFZhbHVlOjpjcmVhdGUoTm9uUmVwZWF0aW5nLCBncmFkaWVudFR5cGUpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBUaGUgcmVzdCBvZiB0aGUgZ3JhZGllbnQgdHlw
ZXMgc2hvdWxkbid0IGFwcGVhciBoZXJlLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9CiAKICAgICAvLyBDb21tYS4KQEAgLTcwMzIsNyArNzAzNSw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZURlcHJlY2F0ZWRHcmFkaWVudChDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlz
dCwgUmVmUHRyPENTCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZvciByYWRpYWwg
Z3JhZGllbnRzIG9ubHksIHdlIG5vdyBleHBlY3QgYSBudW1lcmljIHJhZGl1cy4KLSAgICBpZiAo
Z3JhZGllbnRUeXBlID09IENTU1JhZGlhbEdyYWRpZW50KSB7CisgICAgaWYgKGdyYWRpZW50VHlw
ZSA9PSBDU1NEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpIHsKICAgICAgICAgYSA9IGFyZ3MtPm5l
eHQoKTsKICAgICAgICAgaWYgKCFhIHx8IGEtPnVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MDY0LDcgKzcwNjcsNyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVM
aXN0KiB2YWx1ZUxpc3QsIFJlZlB0cjxDUwogICAgIHJlc3VsdC0+c2V0U2Vjb25kWShwb2ludC5y
ZWxlYXNlKCkpOwogCiAgICAgLy8gRm9yIHJhZGlhbCBncmFkaWVudHMgb25seSwgd2Ugbm93IGV4
cGVjdCB0aGUgc2Vjb25kIHJhZGl1cy4KLSAgICBpZiAoZ3JhZGllbnRUeXBlID09IENTU1JhZGlh
bEdyYWRpZW50KSB7CisgICAgaWYgKGdyYWRpZW50VHlwZSA9PSBDU1NEZXByZWNhdGVkUmFkaWFs
R3JhZGllbnQpIHsKICAgICAgICAgLy8gQ29tbWEgYWZ0ZXIgdGhlIHNlY29uZCBwb2ludC4KICAg
ICAgICAgYSA9IGFyZ3MtPm5leHQoKTsKICAgICAgICAgaWYgKCFpc0NvbW1hKGEpKQpAQCAtNzEz
Myw3ICs3MTM2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNl
R3JhZGllbnRDb2xvck9yS2V5d29yZChDU1NQYXJzZXIqIHAsIEMKIAogYm9vbCBDU1NQYXJzZXI6
OnBhcnNlRGVwcmVjYXRlZExpbmVhckdyYWRpZW50KENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVM
aXN0LCBSZWZQdHI8Q1NTVmFsdWU+JiBncmFkaWVudCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0
aW5nKQogewotICAgIFJlZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NM
aW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nKTsKKyAgICBSZWZQdHI8Q1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRl
KHJlcGVhdGluZywgQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCk7CiAKICAgICAvLyBXYWxrIHRo
ZSBhcmd1bWVudHMuCiAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFsdWVMaXN0LT5j
dXJyZW50KCktPmZ1bmN0aW9uLT5hcmdzLmdldCgpOwpAQCAtNzIwMSw3ICs3MjA0LDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRlZExpbmVhckdyYWRpZW50KENTU1BhcnNlclZhbHVl
TGlzdCogdmFsdWVMaXN0LCBSZWYKIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRlZFJh
ZGlhbEdyYWRpZW50KENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBSZWZQdHI8Q1NTVmFs
dWU+JiBncmFkaWVudCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewotICAgIFJlZlB0
cjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVl
OjpjcmVhdGUocmVwZWF0aW5nKTsKKyAgICBSZWZQdHI8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4g
cmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUHJl
Zml4ZWRSYWRpYWxHcmFkaWVudCk7CiAKICAgICAvLyBXYWxrIHRoZSBhcmd1bWVudHMuCiAgICAg
Q1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFsdWVMaXN0LT5jdXJyZW50KCktPmZ1bmN0aW9u
LT5hcmdzLmdldCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179177</attachid>
            <date>2012-12-12 18:40:45 -0800</date>
            <delta_ts>2012-12-13 14:44:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104616-20121212183805.patch</filename>
            <type>text/plain</type>
            <size>16474</size>
            <attacher name="Tab Atkins">tabatkins</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2YzN2YzZjQ2ZmU2MjE2
NjMxODVlZTA2NTllYzM2MzQ3NGQwZmY3Mi4uMjAzNGY4YjE0MmI0MGVhNGZjODI4OGVhOGY3YTM4
MzQ4MTkyNjMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEyLTEyICBUYWIg
QXRraW5zICA8dGFiYXRraW5zQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIHRoZSBncmFk
aWVudCBkcmF3aW5nIGNvZGUgdG8gdXNlIGJlYXJpbmcgYW5nbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ2MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2ggdGhlIGdyYWRpZW50IG1hdGgg
ZnJvbSBwb2xhci1jb29yZGluYXRlIGFuZ2xlcyB0byBiZWFyaW5nIGFuZ2xlcy4KKyAgICAgICAg
VG8gbWFrZSB0aGlzIHBvc3NpYmxlIHdpdGhvdXQgYmVoYXZpb3IgY2hhbmdlcywgCisgICAgICAg
IHN3aXRjaCB0aGUgbV9kZXByZWNhdGVkVHlwZSBib29sZWFuIHRvIGFuIG1fZ3JhZGllbnRUeXBl
IGVudW0sCisgICAgICAgIGFuZCBmaXggYWxsIHVzYWdlcyBhY2NvcmRpbmdseS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIGFzIHRoaXMgaXMgYSByZWZhY3RvcmluZyBhbmQgc2hvdWxkIGhhdmUg
bm8gYmVoYXZpb3IgY2hhbmdlcy4gRXhpc3RpbmcgdGVzdHMgc3VmZmljZS4KKworICAgICAgICAq
IGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuZFBvaW50c0Zy
b21BbmdsZSk6CisgICAgICAgIFRoaXMgaXMgdGhlIG9ubHkgbWVjaGFuaWNhbCBjaGFuZ2UuIFRo
ZSByZXN0IGFyZSBqdXN0IGZpeGluZyB0aGUgcGx1bWJpbmcgYXJvdW5kIHRoZSBib29sZWFuLT5l
bnVtIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OnNvcnRTdG9wc0lmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNzc1RleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCk6CisgICAgICAg
ICogY3NzL0NTU0dyYWRpZW50VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50
VmFsdWU6OmdyYWRpZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVl
OjpDU1NHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50
VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVudFZhbHVl
OjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdy
YWRpZW50VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVu
dFZhbHVlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkR3JhZGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZURlcHJlY2F0ZWRMaW5lYXJH
cmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRlZFJh
ZGlhbEdyYWRpZW50KToKKwogMjAxMi0xMi0xMiAgRWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRo
ZXJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBmb2xsb3cgdXAgdG8gcjEz
Njk3NDogaGFuZGxlIHZpc2liaWxpdHkgc2hvcnRjdXQgaW4ga2V5ZG93biBldmVudCBvZiBFbGVt
ZW50c1RyZWVPdXRsaW5lLmVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVl
LmNwcAppbmRleCAzYjFiZWNlZDM5ZjA5YjhlMThlYjljNmE5YjM1ZWJmMDFjYjJkMThlLi43ZGMy
MmJiYmQ4ZDAzYTdlNDI5OGRmOGRjMTdlNzRiMzJmNDBmNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBjb21wYXJlU3RvcHMoY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIGEsIGNvbnN0IENTU0dy
YWRpZW50CiAKIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6c29ydFN0b3BzSWZOZWVkZWQoKQogewot
ICAgIEFTU0VSVChtX2RlcHJlY2F0ZWRUeXBlKTsKKyAgICBBU1NFUlQobV9ncmFkaWVudFR5cGUg
PT0gQ1NTRGVwcmVjYXRlZExpbmVhckdyYWRpZW50IHx8IG1fZ3JhZGllbnRUeXBlID09IENTU0Rl
cHJlY2F0ZWRSYWRpYWxHcmFkaWVudCk7CiAgICAgaWYgKCFtX3N0b3BzU29ydGVkKSB7CiAgICAg
ICAgIGlmIChtX3N0b3BzLnNpemUoKSkKICAgICAgICAgICAgIHN0ZDo6c3RhYmxlX3NvcnQobV9z
dG9wcy5iZWdpbigpLCBtX3N0b3BzLmVuZCgpLCBjb21wYXJlU3RvcHMpOwpAQCAtMTQ3LDcgKzE0
Nyw3IEBAIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoR3JhZGllbnQqIGdyYWRpZW50
LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kCiB7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxl
ID0gcmVuZGVyZXItPnN0eWxlKCk7CiAKLSAgICBpZiAobV9kZXByZWNhdGVkVHlwZSkgeworICAg
IGlmIChtX2dyYWRpZW50VHlwZSA9PSBDU1NEZXByZWNhdGVkTGluZWFyR3JhZGllbnQgfHwgbV9n
cmFkaWVudFR5cGUgPT0gQ1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KSB7CiAgICAgICAgIHNv
cnRTdG9wc0lmTmVlZGVkKCk7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
c3RvcHMuc2l6ZSgpOyBpKyspIHsKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIENTU0dyYWRpZW50
VmFsdWU6OnJlcG9ydEJhc2VDbGFzc01lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdAogU3RyaW5nIENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBj
b25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIGlmIChtX2RlcHJlY2F0ZWRU
eXBlKSB7CisgICAgaWYgKG1fZ3JhZGllbnRUeXBlID09IENTU0RlcHJlY2F0ZWRMaW5lYXJHcmFk
aWVudCkgewogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLXdlYmtpdC1ncmFkaWVudChs
aW5lYXIsICIpOwogICAgICAgICByZXN1bHQuYXBwZW5kKG1fZmlyc3RYLT5jc3NUZXh0KCkpOwog
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CkBAIC01NTIsNjQgKzU1Miw3MSBAQCBTdHJpbmcg
Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiB9CiAKIC8vIENv
bXB1dGUgdGhlIGVuZHBvaW50cyBzbyB0aGF0IGEgZ3JhZGllbnQgb2YgdGhlIGdpdmVuIGFuZ2xl
IGNvdmVycyBhIGJveCBvZiB0aGUgZ2l2ZW4gc2l6ZS4KLXN0YXRpYyB2b2lkIGVuZFBvaW50c0Zy
b21BbmdsZShmbG9hdCBhbmdsZURlZywgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxvYXRQb2ludCYg
Zmlyc3RQb2ludCwgRmxvYXRQb2ludCYgc2Vjb25kUG9pbnQpCitzdGF0aWMgdm9pZCBlbmRQb2lu
dHNGcm9tQW5nbGUoZmxvYXQgYW5nbGVEZWcsIGNvbnN0IEludFNpemUmIHNpemUsIEZsb2F0UG9p
bnQmIGZpcnN0UG9pbnQsIEZsb2F0UG9pbnQmIHNlY29uZFBvaW50LCBDU1NHcmFkaWVudFR5cGUg
dHlwZSkKIHsKKyAgICAvLyBQcmVmaXhlZCBncmFkaWVudHMgdXNlICJwb2xhciBjb29yZGluYXRl
IiBhbmdsZXMsIHJhdGhlciB0aGFuICJiZWFyaW5nIiBhbmdsZXMuCisgICAgaWYgKHR5cGUgPT0g
Q1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCkKKyAgICAgICAgYW5nbGVEZWcgPSA5MCAtIGFuZ2xl
RGVnOworCiAgICAgYW5nbGVEZWcgPSBmbW9kZihhbmdsZURlZywgMzYwKTsKICAgICBpZiAoYW5n
bGVEZWcgPCAwKQogICAgICAgICBhbmdsZURlZyArPSAzNjA7CiAKICAgICBpZiAoIWFuZ2xlRGVn
KSB7Ci0gICAgICAgIGZpcnN0UG9pbnQuc2V0KDAsIDApOwotICAgICAgICBzZWNvbmRQb2ludC5z
ZXQoc2l6ZS53aWR0aCgpLCAwKTsKKyAgICAgICAgZmlyc3RQb2ludC5zZXQoMCwgc2l6ZS5oZWln
aHQoKSk7CisgICAgICAgIHNlY29uZFBvaW50LnNldCgwLCAwKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmIChhbmdsZURlZyA9PSA5MCkgewotICAgICAgICBmaXJzdFBvaW50LnNl
dCgwLCBzaXplLmhlaWdodCgpKTsKLSAgICAgICAgc2Vjb25kUG9pbnQuc2V0KDAsIDApOworICAg
ICAgICBmaXJzdFBvaW50LnNldCgwLCAwKTsKKyAgICAgICAgc2Vjb25kUG9pbnQuc2V0KHNpemUu
d2lkdGgoKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYW5nbGVEZWcg
PT0gMTgwKSB7Ci0gICAgICAgIGZpcnN0UG9pbnQuc2V0KHNpemUud2lkdGgoKSwgMCk7Ci0gICAg
ICAgIHNlY29uZFBvaW50LnNldCgwLCAwKTsKKyAgICAgICAgZmlyc3RQb2ludC5zZXQoMCwgMCk7
CisgICAgICAgIHNlY29uZFBvaW50LnNldCgwLCBzaXplLmhlaWdodCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmIChhbmdsZURlZyA9PSAyNzApIHsKLSAgICAgICAgZmlyc3RQ
b2ludC5zZXQoMCwgMCk7Ci0gICAgICAgIHNlY29uZFBvaW50LnNldCgwLCBzaXplLmhlaWdodCgp
KTsKKyAgICAgICAgZmlyc3RQb2ludC5zZXQoc2l6ZS53aWR0aCgpLCAwKTsKKyAgICAgICAgc2Vj
b25kUG9pbnQuc2V0KDAsIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZmxvYXQg
c2xvcGUgPSB0YW4oZGVnMnJhZChhbmdsZURlZykpOworICAgIC8vIGFuZ2xlRGVnIGlzIGEgImJl
YXJpbmcgYW5nbGUiICgwZGVnID0gTiwgOTBkZWcgPSBFKSwKKyAgICAvLyBidXQgdGFuIGV4cGVj
dHMgMGRlZyA9IEUsIDkwZGVnID0gTi4KKyAgICBmbG9hdCBzbG9wZSA9IHRhbihkZWcycmFkKDkw
LjAgLSBhbmdsZURlZykpOwogCiAgICAgLy8gV2UgZmluZCB0aGUgZW5kcG9pbnQgYnkgY29tcHV0
aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIGxpbmUgZm9ybWVkIGJ5IHRoZSBzbG9wZSwKICAg
ICAvLyBhbmQgYSBsaW5lIHBlcnBlbmRpY3VsYXIgdG8gaXQgdGhhdCBpbnRlcnNlY3RzIHRoZSBj
b3JuZXIuCiAgICAgZmxvYXQgcGVycGVuZGljdWxhclNsb3BlID0gLTEgLyBzbG9wZTsKIAotICAg
IC8vIENvbXB1dGUgc3RhcnQgY29ybmVyIHJlbGF0aXZlIHRvIGNlbnRlci4KKyAgICAvLyBDb21w
dXRlIHN0YXJ0IGNvcm5lciByZWxhdGl2ZSB0byBjZW50ZXIsIGluIENhcnRlc2lhbiBzcGFjZSAo
K3kgPSB1cCkuCiAgICAgZmxvYXQgaGFsZkhlaWdodCA9IHNpemUuaGVpZ2h0KCkgLyAyOwogICAg
IGZsb2F0IGhhbGZXaWR0aCA9IHNpemUud2lkdGgoKSAvIDI7CiAgICAgRmxvYXRQb2ludCBlbmRD
b3JuZXI7CiAgICAgaWYgKGFuZ2xlRGVnIDwgOTApCiAgICAgICAgIGVuZENvcm5lci5zZXQoaGFs
ZldpZHRoLCBoYWxmSGVpZ2h0KTsKICAgICBlbHNlIGlmIChhbmdsZURlZyA8IDE4MCkKLSAgICAg
ICAgZW5kQ29ybmVyLnNldCgtaGFsZldpZHRoLCBoYWxmSGVpZ2h0KTsKKyAgICAgICAgZW5kQ29y
bmVyLnNldChoYWxmV2lkdGgsIC1oYWxmSGVpZ2h0KTsKICAgICBlbHNlIGlmIChhbmdsZURlZyA8
IDI3MCkKICAgICAgICAgZW5kQ29ybmVyLnNldCgtaGFsZldpZHRoLCAtaGFsZkhlaWdodCk7CiAg
ICAgZWxzZQotICAgICAgICBlbmRDb3JuZXIuc2V0KGhhbGZXaWR0aCwgLWhhbGZIZWlnaHQpOwor
ICAgICAgICBlbmRDb3JuZXIuc2V0KC1oYWxmV2lkdGgsIGhhbGZIZWlnaHQpOwogCiAgICAgLy8g
Q29tcHV0ZSBjIChvZiB5ID0gbXggKyBjKSB1c2luZyB0aGUgY29ybmVyIHBvaW50LgogICAgIGZs
b2F0IGMgPSBlbmRDb3JuZXIueSgpIC0gcGVycGVuZGljdWxhclNsb3BlICogZW5kQ29ybmVyLngo
KTsKICAgICBmbG9hdCBlbmRYID0gYyAvIChzbG9wZSAtIHBlcnBlbmRpY3VsYXJTbG9wZSk7CiAg
ICAgZmxvYXQgZW5kWSA9IHBlcnBlbmRpY3VsYXJTbG9wZSAqIGVuZFggKyBjOwogCi0gICAgLy8g
V2UgY29tcHV0ZWQgdGhlIGVuZCBwb2ludCwgc28gc2V0IHRoZSBzZWNvbmQgcG9pbnQsIGZsaXBw
aW5nIHRoZSBZIHRvIGFjY291bnQgZm9yIGFuZ2xlcyBnb2luZyBhbnRpY2xvY2t3aXNlLgotICAg
IHNlY29uZFBvaW50LnNldChoYWxmV2lkdGggKyBlbmRYLCBzaXplLmhlaWdodCgpIC0gKGhhbGZI
ZWlnaHQgKyBlbmRZKSk7CisgICAgLy8gV2UgY29tcHV0ZWQgdGhlIGVuZCBwb2ludCwgc28gc2V0
IHRoZSBzZWNvbmQgcG9pbnQsIAorICAgIC8vIHRha2luZyBpbnRvIGFjY291bnQgdGhlIG1vdmVk
IG9yaWdpbiBhbmQgdGhlIGZhY3QgdGhhdCB3ZSdyZSBpbiBkcmF3aW5nIHNwYWNlICgreSA9IGRv
d24pLgorICAgIHNlY29uZFBvaW50LnNldChoYWxmV2lkdGggKyBlbmRYLCBoYWxmSGVpZ2h0IC0g
ZW5kWSk7CiAgICAgLy8gUmVmbGVjdCBhcm91bmQgdGhlIGNlbnRlciBmb3IgdGhlIHN0YXJ0IHBv
aW50LgotICAgIGZpcnN0UG9pbnQuc2V0KHNpemUud2lkdGgoKSAtIHNlY29uZFBvaW50LngoKSwg
c2l6ZS5oZWlnaHQoKSAtIHNlY29uZFBvaW50LnkoKSk7CisgICAgZmlyc3RQb2ludC5zZXQoaGFs
ZldpZHRoIC0gZW5kWCwgaGFsZkhlaWdodCArIGVuZFkpOwogfQogCiBQYXNzUmVmUHRyPEdyYWRp
ZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtNjIyLDcgKzYyOSw3IEBAIFBhc3NS
ZWZQdHI8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJl
bmRlck9iamVjdCogcmVuZGVyCiAgICAgRmxvYXRQb2ludCBzZWNvbmRQb2ludDsKICAgICBpZiAo
bV9hbmdsZSkgewogICAgICAgICBmbG9hdCBhbmdsZSA9IG1fYW5nbGUtPmdldEZsb2F0VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUcpOwotICAgICAgICBlbmRQb2ludHNGcm9tQW5nbGUo
YW5nbGUsIHNpemUsIGZpcnN0UG9pbnQsIHNlY29uZFBvaW50KTsKKyAgICAgICAgZW5kUG9pbnRz
RnJvbUFuZ2xlKGFuZ2xlLCBzaXplLCBmaXJzdFBvaW50LCBzZWNvbmRQb2ludCwgbV9ncmFkaWVu
dFR5cGUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZpcnN0UG9pbnQgPSBjb21wdXRlRW5kUG9p
bnQobV9maXJzdFguZ2V0KCksIG1fZmlyc3RZLmdldCgpLCByZW5kZXJlci0+c3R5bGUoKSwgcm9v
dFN0eWxlLCBzaXplKTsKIApAQCAtNjU1LDcgKzY2Miw3IEBAIFN0cmluZyBDU1NSYWRpYWxHcmFk
aWVudFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJl
c3VsdDsKIAotICAgIGlmIChtX2RlcHJlY2F0ZWRUeXBlKSB7CisgICAgaWYgKG1fZ3JhZGllbnRU
eXBlID09IENTU0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkgewogICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiLXdlYmtpdC1ncmFkaWVudChyYWRpYWwsICIpOwogICAgICAgICByZXN1bHQu
YXBwZW5kKG1fZmlyc3RYLT5jc3NUZXh0KCkpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAppbmRleCAxZTI1YWNmNjY2MWQ3YmI1
YmEzZjFiYWI4ZDVlMjUxYjVjMjU4MzQ5Li5jMGE4YWE0ZDU0Y2ZkMjE2MWVjM2E5NmFmY2EwMzMw
NGUzM2M3OWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKQEAgLTM2LDcg
KzM2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBH
cmFkaWVudDsKIAotZW51bSBDU1NHcmFkaWVudFR5cGUgeyBDU1NMaW5lYXJHcmFkaWVudCwgQ1NT
UmFkaWFsR3JhZGllbnQgfTsKK2VudW0gQ1NTR3JhZGllbnRUeXBlIHsKKyAgICBDU1NEZXByZWNh
dGVkTGluZWFyR3JhZGllbnQsCisgICAgQ1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50LAorICAg
IENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQsCisgICAgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVu
dCwKKyAgICBDU1NMaW5lYXJHcmFkaWVudCwKKyAgICBDU1NSYWRpYWxHcmFkaWVudAorfTsKIGVu
dW0gQ1NTR3JhZGllbnRSZXBlYXQgeyBOb25SZXBlYXRpbmcsIFJlcGVhdGluZyB9OwogCiBzdHJ1
Y3QgQ1NTR3JhZGllbnRDb2xvclN0b3AgewpAQCAtNjgsNyArNzUsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzUmVwZWF0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXBlYXRpbmc7IH0KIAotICAg
IGJvb2wgZGVwcmVjYXRlZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RlcHJlY2F0ZWRUeXBlOyB9
IC8vIGNhbWUgZnJvbSAtd2Via2l0LWdyYWRpZW50CisgICAgQ1NTR3JhZGllbnRUeXBlIGdyYWRp
ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhZGllbnRUeXBlOyB9CiAKICAgICBib29sIGlz
Rml4ZWRTaXplKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBJbnRTaXplIGZpeGVkU2l6
ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KQEAgLTgw
LDE1ICs4NywxNSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDU1NHcmFkaWVudFZhbHVlPiBn
cmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZVJlc29sdmVyKik7CiAKIHByb3RlY3RlZDoK
LSAgICBDU1NHcmFkaWVudFZhbHVlKENsYXNzVHlwZSBjbGFzc1R5cGUsIENTU0dyYWRpZW50UmVw
ZWF0IHJlcGVhdCwgYm9vbCBkZXByZWNhdGVkVHlwZSA9IGZhbHNlKQorICAgIENTU0dyYWRpZW50
VmFsdWUoQ2xhc3NUeXBlIGNsYXNzVHlwZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NH
cmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQogICAgICAgICA6IENTU0ltYWdlR2VuZXJhdG9yVmFs
dWUoY2xhc3NUeXBlKQogICAgICAgICAsIG1fc3RvcHNTb3J0ZWQoZmFsc2UpCi0gICAgICAgICwg
bV9kZXByZWNhdGVkVHlwZShkZXByZWNhdGVkVHlwZSkKKyAgICAgICAgLCBtX2dyYWRpZW50VHlw
ZShncmFkaWVudFR5cGUpCiAgICAgICAgICwgbV9yZXBlYXRpbmcocmVwZWF0ID09IFJlcGVhdGlu
ZykKICAgICB7CiAgICAgfQogCi0gICAgQ1NTR3JhZGllbnRWYWx1ZShjb25zdCBDU1NHcmFkaWVu
dFZhbHVlJiBvdGhlciwgQ2xhc3NUeXBlIGNsYXNzVHlwZSwgYm9vbCBkZXByZWNhdGVkVHlwZSA9
IGZhbHNlKQorICAgIENTU0dyYWRpZW50VmFsdWUoY29uc3QgQ1NTR3JhZGllbnRWYWx1ZSYgb3Ro
ZXIsIENsYXNzVHlwZSBjbGFzc1R5cGUsIENTU0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUpCiAg
ICAgICAgIDogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZShjbGFzc1R5cGUpCiAgICAgICAgICwgbV9m
aXJzdFgob3RoZXIubV9maXJzdFgpCiAgICAgICAgICwgbV9maXJzdFkob3RoZXIubV9maXJzdFkp
CkBAIC05Niw3ICsxMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9zZWNvbmRZKG90aGVy
Lm1fc2Vjb25kWSkKICAgICAgICAgLCBtX3N0b3BzKG90aGVyLm1fc3RvcHMpCiAgICAgICAgICwg
bV9zdG9wc1NvcnRlZChvdGhlci5tX3N0b3BzU29ydGVkKQotICAgICAgICAsIG1fZGVwcmVjYXRl
ZFR5cGUoZGVwcmVjYXRlZFR5cGUpCisgICAgICAgICwgbV9ncmFkaWVudFR5cGUoZ3JhZGllbnRU
eXBlKQogICAgICAgICAsIG1fcmVwZWF0aW5nKG90aGVyLmlzUmVwZWF0aW5nKCkgPyBSZXBlYXRp
bmcgOiBOb25SZXBlYXRpbmcpCiAgICAgewogICAgIH0KQEAgLTEyMCwxNiArMTI3LDE3IEBAIHBy
b3RlY3RlZDoKICAgICAvLyBTdG9wcwogICAgIFZlY3RvcjxDU1NHcmFkaWVudENvbG9yU3RvcCwg
Mj4gbV9zdG9wczsKICAgICBib29sIG1fc3RvcHNTb3J0ZWQ7Ci0gICAgYm9vbCBtX2RlcHJlY2F0
ZWRUeXBlOyAvLyAtd2Via2l0LWdyYWRpZW50KCkKKyAgICBDU1NHcmFkaWVudFR5cGUgbV9ncmFk
aWVudFR5cGU7CiAgICAgYm9vbCBtX3JlcGVhdGluZzsKIH07CiAKIAogY2xhc3MgQ1NTTGluZWFy
R3JhZGllbnRWYWx1ZSA6IHB1YmxpYyBDU1NHcmFkaWVudFZhbHVlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiBjcmVhdGUoQ1NTR3JhZGll
bnRSZXBlYXQgcmVwZWF0LCBib29sIGRlcHJlY2F0ZWRUeXBlID0gZmFsc2UpCisKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiBjcmVhdGUoQ1NTR3JhZGllbnRS
ZXBlYXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlID0gQ1NTTGluZWFyR3Jh
ZGllbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0xpbmVhckdyYWRp
ZW50VmFsdWUocmVwZWF0LCBkZXByZWNhdGVkVHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENTU0xpbmVhckdyYWRpZW50VmFsdWUocmVwZWF0LCBncmFkaWVudFR5cGUpKTsKICAg
ICB9CiAKICAgICB2b2lkIHNldEFuZ2xlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZh
bCkgeyBtX2FuZ2xlID0gdmFsOyB9CkBAIC0xNDcsMTMgKzE1NSwxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIENTU0xpbmVhckdyYWRpZW50VmFsdWUoQ1NTR3JhZGllbnRSZXBl
YXQgcmVwZWF0LCBib29sIGRlcHJlY2F0ZWRUeXBlID0gZmFsc2UpCi0gICAgICAgIDogQ1NTR3Jh
ZGllbnRWYWx1ZShMaW5lYXJHcmFkaWVudENsYXNzLCByZXBlYXQsIGRlcHJlY2F0ZWRUeXBlKQor
ICAgIENTU0xpbmVhckdyYWRpZW50VmFsdWUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NH
cmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlID0gQ1NTTGluZWFyR3JhZGllbnQpCisgICAgICAgIDog
Q1NTR3JhZGllbnRWYWx1ZShMaW5lYXJHcmFkaWVudENsYXNzLCByZXBlYXQsIGdyYWRpZW50VHlw
ZSkKICAgICB7CiAgICAgfQogCiAgICAgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZShjb25zdCBDU1NM
aW5lYXJHcmFkaWVudFZhbHVlJiBvdGhlcikKLSAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKG90
aGVyLCBMaW5lYXJHcmFkaWVudENsYXNzLCBvdGhlci5kZXByZWNhdGVkVHlwZSgpKQorICAgICAg
ICA6IENTU0dyYWRpZW50VmFsdWUob3RoZXIsIExpbmVhckdyYWRpZW50Q2xhc3MsIG90aGVyLmdy
YWRpZW50VHlwZSgpKQogICAgICAgICAsIG1fYW5nbGUob3RoZXIubV9hbmdsZSkKICAgICB7CiAg
ICAgfQpAQCAtMTYzLDkgKzE3MSw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIENTU1JhZGlhbEdyYWRp
ZW50VmFsdWUgOiBwdWJsaWMgQ1NTR3JhZGllbnRWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gY3JlYXRlKENTU0dyYWRpZW50UmVw
ZWF0IHJlcGVhdCwgYm9vbCBkZXByZWNhdGVkVHlwZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENTU1JhZGlhbEdyYWRpZW50VmFsdWU+IGNyZWF0ZShDU1NHcmFkaWVudFJlcGVhdCBy
ZXBlYXQsIENTU0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUgPSBDU1NSYWRpYWxHcmFkaWVudCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZShyZXBlYXQsIGRlcHJlY2F0ZWRUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZShyZXBlYXQsIGdyYWRpZW50VHlwZSkpOwogICAgIH0KIAog
ICAgIFBhc3NSZWZQdHI8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gY2xvbmUoKSBjb25zdApAQCAt
MTkwLDEzICsxOTgsMTMgQEAgcHVibGljOgogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NSYWRp
YWxHcmFkaWVudFZhbHVlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgYm9vbCBkZXByZWNhdGVk
VHlwZSA9IGZhbHNlKQotICAgICAgICA6IENTU0dyYWRpZW50VmFsdWUoUmFkaWFsR3JhZGllbnRD
bGFzcywgcmVwZWF0LCBkZXByZWNhdGVkVHlwZSkKKyAgICBDU1NSYWRpYWxHcmFkaWVudFZhbHVl
KENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSA9
IENTU1JhZGlhbEdyYWRpZW50KQorICAgICAgICA6IENTU0dyYWRpZW50VmFsdWUoUmFkaWFsR3Jh
ZGllbnRDbGFzcywgcmVwZWF0LCBncmFkaWVudFR5cGUpCiAgICAgewogICAgIH0KIAogICAgIENT
U1JhZGlhbEdyYWRpZW50VmFsdWUoY29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSYgb3RoZXIp
Ci0gICAgICAgIDogQ1NTR3JhZGllbnRWYWx1ZShvdGhlciwgUmFkaWFsR3JhZGllbnRDbGFzcywg
b3RoZXIuZGVwcmVjYXRlZFR5cGUoKSkKKyAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKG90aGVy
LCBSYWRpYWxHcmFkaWVudENsYXNzLCBvdGhlci5ncmFkaWVudFR5cGUoKSkKICAgICAgICAgLCBt
X2ZpcnN0UmFkaXVzKG90aGVyLm1fZmlyc3RSYWRpdXMpCiAgICAgICAgICwgbV9zZWNvbmRSYWRp
dXMob3RoZXIubV9zZWNvbmRSYWRpdXMpCiAgICAgICAgICwgbV9zaGFwZShvdGhlci5tX3NoYXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzN2I5OWE0YWYxZDgwODE3MDNjOTczOTk1
ZWFjODE5MjA0MzUzMWUyLi45OTY3NjViOGMzM2Y5MGJlOGMyYmM3MGZmOGFmN2QyZWVjYzBkODZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNjk4NSwyMCArNjk4NSwyMyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2
YWx1ZUxpc3QsIFJlZlB0cjxDUwogICAgIGlmICghYSB8fCBhLT51bml0ICE9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfSURFTlQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoYS0+c3RyaW5nLCAibGluZWFyIikpCi0gICAgICAgIGdyYWRpZW50VHlwZSA9
IENTU0xpbmVhckdyYWRpZW50OworICAgICAgICBncmFkaWVudFR5cGUgPSBDU1NEZXByZWNhdGVk
TGluZWFyR3JhZGllbnQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+c3RyaW5n
LCAicmFkaWFsIikpCi0gICAgICAgIGdyYWRpZW50VHlwZSA9IENTU1JhZGlhbEdyYWRpZW50Owor
ICAgICAgICBncmFkaWVudFR5cGUgPSBDU1NEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQ7CiAgICAg
ZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQdHI8Q1NTR3JhZGllbnRWYWx1
ZT4gcmVzdWx0OwogICAgIHN3aXRjaCAoZ3JhZGllbnRUeXBlKSB7Ci0gICAgICAgIGNhc2UgQ1NT
TGluZWFyR3JhZGllbnQ6Ci0gICAgICAgICAgICByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZh
bHVlOjpjcmVhdGUoTm9uUmVwZWF0aW5nLCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENTU1JhZGlhbEdyYWRpZW50OgotICAgICAgICAgICAgcmVzdWx0ID0gQ1NTUmFk
aWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgdHJ1ZSk7Ci0gICAgICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU0RlcHJlY2F0ZWRMaW5lYXJHcmFkaWVudDoKKyAgICAgICAg
cmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgZ3Jh
ZGllbnRUeXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NEZXByZWNhdGVkUmFkaWFs
R3JhZGllbnQ6CisgICAgICAgIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0
ZShOb25SZXBlYXRpbmcsIGdyYWRpZW50VHlwZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIC8vIFRoZSByZXN0IG9mIHRoZSBncmFkaWVudCB0eXBlcyBzaG91bGRuJ3Qg
YXBwZWFyIGhlcmUuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAg
IC8vIENvbW1hLgpAQCAtNzAzMiw3ICs3MDM1LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVw
cmVjYXRlZEdyYWRpZW50KENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBSZWZQdHI8Q1MK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRm9yIHJhZGlhbCBncmFkaWVudHMgb25s
eSwgd2Ugbm93IGV4cGVjdCBhIG51bWVyaWMgcmFkaXVzLgotICAgIGlmIChncmFkaWVudFR5cGUg
PT0gQ1NTUmFkaWFsR3JhZGllbnQpIHsKKyAgICBpZiAoZ3JhZGllbnRUeXBlID09IENTU0RlcHJl
Y2F0ZWRSYWRpYWxHcmFkaWVudCkgewogICAgICAgICBhID0gYXJncy0+bmV4dCgpOwogICAgICAg
ICBpZiAoIWEgfHwgYS0+dW5pdCAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcwNjQsNyArNzA2Nyw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZURlcHJlY2F0ZWRHcmFkaWVudChDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlz
dCwgUmVmUHRyPENTCiAgICAgcmVzdWx0LT5zZXRTZWNvbmRZKHBvaW50LnJlbGVhc2UoKSk7CiAK
ICAgICAvLyBGb3IgcmFkaWFsIGdyYWRpZW50cyBvbmx5LCB3ZSBub3cgZXhwZWN0IHRoZSBzZWNv
bmQgcmFkaXVzLgotICAgIGlmIChncmFkaWVudFR5cGUgPT0gQ1NTUmFkaWFsR3JhZGllbnQpIHsK
KyAgICBpZiAoZ3JhZGllbnRUeXBlID09IENTU0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkgewog
ICAgICAgICAvLyBDb21tYSBhZnRlciB0aGUgc2Vjb25kIHBvaW50LgogICAgICAgICBhID0gYXJn
cy0+bmV4dCgpOwogICAgICAgICBpZiAoIWlzQ29tbWEoYSkpCkBAIC03MTMzLDcgKzcxMzYsNyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VHcmFkaWVudENvbG9y
T3JLZXl3b3JkKENTU1BhcnNlciogcCwgQwogCiBib29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNh
dGVkTGluZWFyR3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZlB0cjxD
U1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcpCiB7Ci0gICAg
UmVmUHRyPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU0xpbmVhckdyYWRpZW50
VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcpOworICAgIFJlZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZh
bHVlPiByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBD
U1NQcmVmaXhlZExpbmVhckdyYWRpZW50KTsKIAogICAgIC8vIFdhbGsgdGhlIGFyZ3VtZW50cy4K
ICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MgPSB2YWx1ZUxpc3QtPmN1cnJlbnQoKS0+ZnVu
Y3Rpb24tPmFyZ3MuZ2V0KCk7CkBAIC03MjAxLDcgKzcyMDQsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VEZXByZWNhdGVkTGluZWFyR3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxp
c3QsIFJlZgogCiBib29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQo
Q1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50
LCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcpCiB7Ci0gICAgUmVmUHRyPENTU1JhZGlhbEdy
YWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBl
YXRpbmcpOworICAgIFJlZlB0cjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NS
YWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBDU1NQcmVmaXhlZFJhZGlhbEdy
YWRpZW50KTsKIAogICAgIC8vIFdhbGsgdGhlIGFyZ3VtZW50cy4KICAgICBDU1NQYXJzZXJWYWx1
ZUxpc3QqIGFyZ3MgPSB2YWx1ZUxpc3QtPmN1cnJlbnQoKS0+ZnVuY3Rpb24tPmFyZ3MuZ2V0KCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179344</attachid>
            <date>2012-12-13 14:44:52 -0800</date>
            <delta_ts>2012-12-13 15:35:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104616-20121213144212.patch</filename>
            <type>text/plain</type>
            <size>39496</size>
            <attacher name="Tab Atkins">tabatkins</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRhYTNiMTk1OTlhNDE0
MDU3OTE0MmM4ZGM2ZDE1Y2RmNjY0NTgzMi4uOTI0NTNkMDk3MDAwYzQwYTA3YWNiMmVhZmY1M2Yw
NWZlN2MzNGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEyLTEyICBUYWIg
QXRraW5zICA8dGFiYXRraW5zQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIHRoZSBncmFk
aWVudCBkcmF3aW5nIGNvZGUgdG8gdXNlIGJlYXJpbmcgYW5nbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ2MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2ggdGhlIGdyYWRpZW50IG1hdGgg
ZnJvbSBwb2xhci1jb29yZGluYXRlIGFuZ2xlcyB0byBiZWFyaW5nIGFuZ2xlcy4KKyAgICAgICAg
VG8gbWFrZSB0aGlzIHBvc3NpYmxlIHdpdGhvdXQgYmVoYXZpb3IgY2hhbmdlcywgCisgICAgICAg
IHN3aXRjaCB0aGUgbV9kZXByZWNhdGVkVHlwZSBib29sZWFuIHRvIGFuIG1fZ3JhZGllbnRUeXBl
IGVudW0sCisgICAgICAgIGFuZCBmaXggYWxsIHVzYWdlcyBhY2NvcmRpbmdseS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIGFzIHRoaXMgaXMgYSByZWZhY3RvcmluZyBhbmQgc2hvdWxkIGhhdmUg
bm8gYmVoYXZpb3IgY2hhbmdlcy4gRXhpc3RpbmcgdGVzdHMgc3VmZmljZS4KKworICAgICAgICAq
IGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuZFBvaW50c0Zy
b21BbmdsZSk6CisgICAgICAgIFRoaXMgaXMgdGhlIG9ubHkgbWVjaGFuaWNhbCBjaGFuZ2UuIFRo
ZSByZXN0IGFyZSBqdXN0IGZpeGluZyB0aGUgcGx1bWJpbmcgYXJvdW5kIHRoZSBib29sZWFuLT5l
bnVtIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OnNvcnRTdG9wc0lmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNzc1RleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCk6CisgICAgICAg
ICogY3NzL0NTU0dyYWRpZW50VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50
VmFsdWU6OmdyYWRpZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVl
OjpDU1NHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50
VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVudFZhbHVl
OjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdy
YWRpZW50VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVu
dFZhbHVlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkR3JhZGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZURlcHJlY2F0ZWRMaW5lYXJH
cmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRlZFJh
ZGlhbEdyYWRpZW50KToKKwogMjAxMi0xMi0xMyAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhh
bmdAYXBwbGUuY29tPgogCiAgICAgICAgIERvY3VtZW50IHdpbGwgbmV2ZXIgYmUgcmVsZWFzZWQg
d2hlbiBhbiBJbWFnZSBpcyBjcmVhdGVkIGluc2lkZSB1bmxvYWQgZXZlbnQgbGlzdGVuZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAppbmRleCAzYjFiZWNlZDM5ZjA5Yjhl
MThlYjljNmE5YjM1ZWJmMDFjYjJkMThlLi43ZGMyMmJiYmQ4ZDAzYTdlNDI5OGRmOGRjMTdlNzRi
MzJmNDBmNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC05
Niw3ICs5Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlU3RvcHMoY29uc3QgQ1NTR3Jh
ZGllbnRDb2xvclN0b3AmIGEsIGNvbnN0IENTU0dyYWRpZW50CiAKIHZvaWQgQ1NTR3JhZGllbnRW
YWx1ZTo6c29ydFN0b3BzSWZOZWVkZWQoKQogewotICAgIEFTU0VSVChtX2RlcHJlY2F0ZWRUeXBl
KTsKKyAgICBBU1NFUlQobV9ncmFkaWVudFR5cGUgPT0gQ1NTRGVwcmVjYXRlZExpbmVhckdyYWRp
ZW50IHx8IG1fZ3JhZGllbnRUeXBlID09IENTU0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCk7CiAg
ICAgaWYgKCFtX3N0b3BzU29ydGVkKSB7CiAgICAgICAgIGlmIChtX3N0b3BzLnNpemUoKSkKICAg
ICAgICAgICAgIHN0ZDo6c3RhYmxlX3NvcnQobV9zdG9wcy5iZWdpbigpLCBtX3N0b3BzLmVuZCgp
LCBjb21wYXJlU3RvcHMpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgQ1NTR3JhZGllbnRWYWx1
ZTo6YWRkU3RvcHMoR3JhZGllbnQqIGdyYWRpZW50LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBS
ZW5kCiB7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAKLSAg
ICBpZiAobV9kZXByZWNhdGVkVHlwZSkgeworICAgIGlmIChtX2dyYWRpZW50VHlwZSA9PSBDU1NE
ZXByZWNhdGVkTGluZWFyR3JhZGllbnQgfHwgbV9ncmFkaWVudFR5cGUgPT0gQ1NTRGVwcmVjYXRl
ZFJhZGlhbEdyYWRpZW50KSB7CiAgICAgICAgIHNvcnRTdG9wc0lmTmVlZGVkKCk7CiAKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3RvcHMuc2l6ZSgpOyBpKyspIHsKQEAgLTQ4
NSw3ICs0ODUsNyBAQCB2b2lkIENTU0dyYWRpZW50VmFsdWU6OnJlcG9ydEJhc2VDbGFzc01lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdAogU3RyaW5nIENTU0xpbmVhckdy
YWRpZW50VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIg
cmVzdWx0OwotICAgIGlmIChtX2RlcHJlY2F0ZWRUeXBlKSB7CisgICAgaWYgKG1fZ3JhZGllbnRU
eXBlID09IENTU0RlcHJlY2F0ZWRMaW5lYXJHcmFkaWVudCkgewogICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsICIpOwogICAgICAgICByZXN1bHQu
YXBwZW5kKG1fZmlyc3RYLT5jc3NUZXh0KCkpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7
CkBAIC01NTIsNjQgKzU1Miw3MSBAQCBTdHJpbmcgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3Vz
dG9tQ3NzVGV4dCgpIGNvbnN0CiB9CiAKIC8vIENvbXB1dGUgdGhlIGVuZHBvaW50cyBzbyB0aGF0
IGEgZ3JhZGllbnQgb2YgdGhlIGdpdmVuIGFuZ2xlIGNvdmVycyBhIGJveCBvZiB0aGUgZ2l2ZW4g
c2l6ZS4KLXN0YXRpYyB2b2lkIGVuZFBvaW50c0Zyb21BbmdsZShmbG9hdCBhbmdsZURlZywgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgRmxvYXRQb2ludCYgZmlyc3RQb2ludCwgRmxvYXRQb2ludCYgc2Vj
b25kUG9pbnQpCitzdGF0aWMgdm9pZCBlbmRQb2ludHNGcm9tQW5nbGUoZmxvYXQgYW5nbGVEZWcs
IGNvbnN0IEludFNpemUmIHNpemUsIEZsb2F0UG9pbnQmIGZpcnN0UG9pbnQsIEZsb2F0UG9pbnQm
IHNlY29uZFBvaW50LCBDU1NHcmFkaWVudFR5cGUgdHlwZSkKIHsKKyAgICAvLyBQcmVmaXhlZCBn
cmFkaWVudHMgdXNlICJwb2xhciBjb29yZGluYXRlIiBhbmdsZXMsIHJhdGhlciB0aGFuICJiZWFy
aW5nIiBhbmdsZXMuCisgICAgaWYgKHR5cGUgPT0gQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCkK
KyAgICAgICAgYW5nbGVEZWcgPSA5MCAtIGFuZ2xlRGVnOworCiAgICAgYW5nbGVEZWcgPSBmbW9k
ZihhbmdsZURlZywgMzYwKTsKICAgICBpZiAoYW5nbGVEZWcgPCAwKQogICAgICAgICBhbmdsZURl
ZyArPSAzNjA7CiAKICAgICBpZiAoIWFuZ2xlRGVnKSB7Ci0gICAgICAgIGZpcnN0UG9pbnQuc2V0
KDAsIDApOwotICAgICAgICBzZWNvbmRQb2ludC5zZXQoc2l6ZS53aWR0aCgpLCAwKTsKKyAgICAg
ICAgZmlyc3RQb2ludC5zZXQoMCwgc2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIHNlY29uZFBvaW50
LnNldCgwLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChhbmdsZURlZyA9
PSA5MCkgewotICAgICAgICBmaXJzdFBvaW50LnNldCgwLCBzaXplLmhlaWdodCgpKTsKLSAgICAg
ICAgc2Vjb25kUG9pbnQuc2V0KDAsIDApOworICAgICAgICBmaXJzdFBvaW50LnNldCgwLCAwKTsK
KyAgICAgICAgc2Vjb25kUG9pbnQuc2V0KHNpemUud2lkdGgoKSwgMCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAoYW5nbGVEZWcgPT0gMTgwKSB7Ci0gICAgICAgIGZpcnN0UG9p
bnQuc2V0KHNpemUud2lkdGgoKSwgMCk7Ci0gICAgICAgIHNlY29uZFBvaW50LnNldCgwLCAwKTsK
KyAgICAgICAgZmlyc3RQb2ludC5zZXQoMCwgMCk7CisgICAgICAgIHNlY29uZFBvaW50LnNldCgw
LCBzaXplLmhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChhbmds
ZURlZyA9PSAyNzApIHsKLSAgICAgICAgZmlyc3RQb2ludC5zZXQoMCwgMCk7Ci0gICAgICAgIHNl
Y29uZFBvaW50LnNldCgwLCBzaXplLmhlaWdodCgpKTsKKyAgICAgICAgZmlyc3RQb2ludC5zZXQo
c2l6ZS53aWR0aCgpLCAwKTsKKyAgICAgICAgc2Vjb25kUG9pbnQuc2V0KDAsIDApOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgZmxvYXQgc2xvcGUgPSB0YW4oZGVnMnJhZChhbmdsZURl
ZykpOworICAgIC8vIGFuZ2xlRGVnIGlzIGEgImJlYXJpbmcgYW5nbGUiICgwZGVnID0gTiwgOTBk
ZWcgPSBFKSwKKyAgICAvLyBidXQgdGFuIGV4cGVjdHMgMGRlZyA9IEUsIDkwZGVnID0gTi4KKyAg
ICBmbG9hdCBzbG9wZSA9IHRhbihkZWcycmFkKDkwLjAgLSBhbmdsZURlZykpOwogCiAgICAgLy8g
V2UgZmluZCB0aGUgZW5kcG9pbnQgYnkgY29tcHV0aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhl
IGxpbmUgZm9ybWVkIGJ5IHRoZSBzbG9wZSwKICAgICAvLyBhbmQgYSBsaW5lIHBlcnBlbmRpY3Vs
YXIgdG8gaXQgdGhhdCBpbnRlcnNlY3RzIHRoZSBjb3JuZXIuCiAgICAgZmxvYXQgcGVycGVuZGlj
dWxhclNsb3BlID0gLTEgLyBzbG9wZTsKIAotICAgIC8vIENvbXB1dGUgc3RhcnQgY29ybmVyIHJl
bGF0aXZlIHRvIGNlbnRlci4KKyAgICAvLyBDb21wdXRlIHN0YXJ0IGNvcm5lciByZWxhdGl2ZSB0
byBjZW50ZXIsIGluIENhcnRlc2lhbiBzcGFjZSAoK3kgPSB1cCkuCiAgICAgZmxvYXQgaGFsZkhl
aWdodCA9IHNpemUuaGVpZ2h0KCkgLyAyOwogICAgIGZsb2F0IGhhbGZXaWR0aCA9IHNpemUud2lk
dGgoKSAvIDI7CiAgICAgRmxvYXRQb2ludCBlbmRDb3JuZXI7CiAgICAgaWYgKGFuZ2xlRGVnIDwg
OTApCiAgICAgICAgIGVuZENvcm5lci5zZXQoaGFsZldpZHRoLCBoYWxmSGVpZ2h0KTsKICAgICBl
bHNlIGlmIChhbmdsZURlZyA8IDE4MCkKLSAgICAgICAgZW5kQ29ybmVyLnNldCgtaGFsZldpZHRo
LCBoYWxmSGVpZ2h0KTsKKyAgICAgICAgZW5kQ29ybmVyLnNldChoYWxmV2lkdGgsIC1oYWxmSGVp
Z2h0KTsKICAgICBlbHNlIGlmIChhbmdsZURlZyA8IDI3MCkKICAgICAgICAgZW5kQ29ybmVyLnNl
dCgtaGFsZldpZHRoLCAtaGFsZkhlaWdodCk7CiAgICAgZWxzZQotICAgICAgICBlbmRDb3JuZXIu
c2V0KGhhbGZXaWR0aCwgLWhhbGZIZWlnaHQpOworICAgICAgICBlbmRDb3JuZXIuc2V0KC1oYWxm
V2lkdGgsIGhhbGZIZWlnaHQpOwogCiAgICAgLy8gQ29tcHV0ZSBjIChvZiB5ID0gbXggKyBjKSB1
c2luZyB0aGUgY29ybmVyIHBvaW50LgogICAgIGZsb2F0IGMgPSBlbmRDb3JuZXIueSgpIC0gcGVy
cGVuZGljdWxhclNsb3BlICogZW5kQ29ybmVyLngoKTsKICAgICBmbG9hdCBlbmRYID0gYyAvIChz
bG9wZSAtIHBlcnBlbmRpY3VsYXJTbG9wZSk7CiAgICAgZmxvYXQgZW5kWSA9IHBlcnBlbmRpY3Vs
YXJTbG9wZSAqIGVuZFggKyBjOwogCi0gICAgLy8gV2UgY29tcHV0ZWQgdGhlIGVuZCBwb2ludCwg
c28gc2V0IHRoZSBzZWNvbmQgcG9pbnQsIGZsaXBwaW5nIHRoZSBZIHRvIGFjY291bnQgZm9yIGFu
Z2xlcyBnb2luZyBhbnRpY2xvY2t3aXNlLgotICAgIHNlY29uZFBvaW50LnNldChoYWxmV2lkdGgg
KyBlbmRYLCBzaXplLmhlaWdodCgpIC0gKGhhbGZIZWlnaHQgKyBlbmRZKSk7CisgICAgLy8gV2Ug
Y29tcHV0ZWQgdGhlIGVuZCBwb2ludCwgc28gc2V0IHRoZSBzZWNvbmQgcG9pbnQsIAorICAgIC8v
IHRha2luZyBpbnRvIGFjY291bnQgdGhlIG1vdmVkIG9yaWdpbiBhbmQgdGhlIGZhY3QgdGhhdCB3
ZSdyZSBpbiBkcmF3aW5nIHNwYWNlICgreSA9IGRvd24pLgorICAgIHNlY29uZFBvaW50LnNldCho
YWxmV2lkdGggKyBlbmRYLCBoYWxmSGVpZ2h0IC0gZW5kWSk7CiAgICAgLy8gUmVmbGVjdCBhcm91
bmQgdGhlIGNlbnRlciBmb3IgdGhlIHN0YXJ0IHBvaW50LgotICAgIGZpcnN0UG9pbnQuc2V0KHNp
emUud2lkdGgoKSAtIHNlY29uZFBvaW50LngoKSwgc2l6ZS5oZWlnaHQoKSAtIHNlY29uZFBvaW50
LnkoKSk7CisgICAgZmlyc3RQb2ludC5zZXQoaGFsZldpZHRoIC0gZW5kWCwgaGFsZkhlaWdodCAr
IGVuZFkpOwogfQogCiBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVl
OjpjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBz
aXplKQpAQCAtNjIyLDcgKzYyOSw3IEBAIFBhc3NSZWZQdHI8R3JhZGllbnQ+IENTU0xpbmVhckdy
YWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlck9iamVjdCogcmVuZGVyCiAgICAgRmxv
YXRQb2ludCBzZWNvbmRQb2ludDsKICAgICBpZiAobV9hbmdsZSkgewogICAgICAgICBmbG9hdCBh
bmdsZSA9IG1fYW5nbGUtPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUcp
OwotICAgICAgICBlbmRQb2ludHNGcm9tQW5nbGUoYW5nbGUsIHNpemUsIGZpcnN0UG9pbnQsIHNl
Y29uZFBvaW50KTsKKyAgICAgICAgZW5kUG9pbnRzRnJvbUFuZ2xlKGFuZ2xlLCBzaXplLCBmaXJz
dFBvaW50LCBzZWNvbmRQb2ludCwgbV9ncmFkaWVudFR5cGUpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGZpcnN0UG9pbnQgPSBjb21wdXRlRW5kUG9pbnQobV9maXJzdFguZ2V0KCksIG1fZmlyc3RZ
LmdldCgpLCByZW5kZXJlci0+c3R5bGUoKSwgcm9vdFN0eWxlLCBzaXplKTsKIApAQCAtNjU1LDcg
KzY2Miw3IEBAIFN0cmluZyBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkg
Y29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKIAotICAgIGlmIChtX2RlcHJlY2F0
ZWRUeXBlKSB7CisgICAgaWYgKG1fZ3JhZGllbnRUeXBlID09IENTU0RlcHJlY2F0ZWRSYWRpYWxH
cmFkaWVudCkgewogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLXdlYmtpdC1ncmFkaWVu
dChyYWRpYWwsICIpOwogICAgICAgICByZXN1bHQuYXBwZW5kKG1fZmlyc3RYLT5jc3NUZXh0KCkp
OwogICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuaAppbmRleCAxZTI1YWNmNjY2MWQ3YmI1YmEzZjFiYWI4ZDVlMjUxYjVjMjU4MzQ5Li5j
MGE4YWE0ZDU0Y2ZkMjE2MWVjM2E5NmFmY2EwMzMwNGUzM2M3OWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFkaWVudFZhbHVlLmgKQEAgLTM2LDcgKzM2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBHcmFkaWVudDsKIAotZW51bSBDU1NHcmFkaWVu
dFR5cGUgeyBDU1NMaW5lYXJHcmFkaWVudCwgQ1NTUmFkaWFsR3JhZGllbnQgfTsKK2VudW0gQ1NT
R3JhZGllbnRUeXBlIHsKKyAgICBDU1NEZXByZWNhdGVkTGluZWFyR3JhZGllbnQsCisgICAgQ1NT
RGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50LAorICAgIENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQs
CisgICAgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCwKKyAgICBDU1NMaW5lYXJHcmFkaWVudCwK
KyAgICBDU1NSYWRpYWxHcmFkaWVudAorfTsKIGVudW0gQ1NTR3JhZGllbnRSZXBlYXQgeyBOb25S
ZXBlYXRpbmcsIFJlcGVhdGluZyB9OwogCiBzdHJ1Y3QgQ1NTR3JhZGllbnRDb2xvclN0b3AgewpA
QCAtNjgsNyArNzUsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUmVwZWF0aW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXBlYXRpbmc7IH0KIAotICAgIGJvb2wgZGVwcmVjYXRlZFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX2RlcHJlY2F0ZWRUeXBlOyB9IC8vIGNhbWUgZnJvbSAtd2Via2l0LWdyYWRp
ZW50CisgICAgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Z3JhZGllbnRUeXBlOyB9CiAKICAgICBib29sIGlzRml4ZWRTaXplKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICBJbnRTaXplIGZpeGVkU2l6ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25z
dCB7IHJldHVybiBJbnRTaXplKCk7IH0KQEAgLTgwLDE1ICs4NywxNSBAQCBwdWJsaWM6CiAgICAg
UGFzc1JlZlB0cjxDU1NHcmFkaWVudFZhbHVlPiBncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChT
dHlsZVJlc29sdmVyKik7CiAKIHByb3RlY3RlZDoKLSAgICBDU1NHcmFkaWVudFZhbHVlKENsYXNz
VHlwZSBjbGFzc1R5cGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgYm9vbCBkZXByZWNhdGVk
VHlwZSA9IGZhbHNlKQorICAgIENTU0dyYWRpZW50VmFsdWUoQ2xhc3NUeXBlIGNsYXNzVHlwZSwg
Q1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQog
ICAgICAgICA6IENTU0ltYWdlR2VuZXJhdG9yVmFsdWUoY2xhc3NUeXBlKQogICAgICAgICAsIG1f
c3RvcHNTb3J0ZWQoZmFsc2UpCi0gICAgICAgICwgbV9kZXByZWNhdGVkVHlwZShkZXByZWNhdGVk
VHlwZSkKKyAgICAgICAgLCBtX2dyYWRpZW50VHlwZShncmFkaWVudFR5cGUpCiAgICAgICAgICwg
bV9yZXBlYXRpbmcocmVwZWF0ID09IFJlcGVhdGluZykKICAgICB7CiAgICAgfQogCi0gICAgQ1NT
R3JhZGllbnRWYWx1ZShjb25zdCBDU1NHcmFkaWVudFZhbHVlJiBvdGhlciwgQ2xhc3NUeXBlIGNs
YXNzVHlwZSwgYm9vbCBkZXByZWNhdGVkVHlwZSA9IGZhbHNlKQorICAgIENTU0dyYWRpZW50VmFs
dWUoY29uc3QgQ1NTR3JhZGllbnRWYWx1ZSYgb3RoZXIsIENsYXNzVHlwZSBjbGFzc1R5cGUsIENT
U0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUpCiAgICAgICAgIDogQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZShjbGFzc1R5cGUpCiAgICAgICAgICwgbV9maXJzdFgob3RoZXIubV9maXJzdFgpCiAgICAg
ICAgICwgbV9maXJzdFkob3RoZXIubV9maXJzdFkpCkBAIC05Niw3ICsxMDMsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgICwgbV9zZWNvbmRZKG90aGVyLm1fc2Vjb25kWSkKICAgICAgICAgLCBtX3N0
b3BzKG90aGVyLm1fc3RvcHMpCiAgICAgICAgICwgbV9zdG9wc1NvcnRlZChvdGhlci5tX3N0b3Bz
U29ydGVkKQotICAgICAgICAsIG1fZGVwcmVjYXRlZFR5cGUoZGVwcmVjYXRlZFR5cGUpCisgICAg
ICAgICwgbV9ncmFkaWVudFR5cGUoZ3JhZGllbnRUeXBlKQogICAgICAgICAsIG1fcmVwZWF0aW5n
KG90aGVyLmlzUmVwZWF0aW5nKCkgPyBSZXBlYXRpbmcgOiBOb25SZXBlYXRpbmcpCiAgICAgewog
ICAgIH0KQEAgLTEyMCwxNiArMTI3LDE3IEBAIHByb3RlY3RlZDoKICAgICAvLyBTdG9wcwogICAg
IFZlY3RvcjxDU1NHcmFkaWVudENvbG9yU3RvcCwgMj4gbV9zdG9wczsKICAgICBib29sIG1fc3Rv
cHNTb3J0ZWQ7Ci0gICAgYm9vbCBtX2RlcHJlY2F0ZWRUeXBlOyAvLyAtd2Via2l0LWdyYWRpZW50
KCkKKyAgICBDU1NHcmFkaWVudFR5cGUgbV9ncmFkaWVudFR5cGU7CiAgICAgYm9vbCBtX3JlcGVh
dGluZzsKIH07CiAKIAogY2xhc3MgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSA6IHB1YmxpYyBDU1NH
cmFkaWVudFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NMaW5lYXJH
cmFkaWVudFZhbHVlPiBjcmVhdGUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBib29sIGRlcHJl
Y2F0ZWRUeXBlID0gZmFsc2UpCisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NMaW5lYXJHcmFk
aWVudFZhbHVlPiBjcmVhdGUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5
cGUgZ3JhZGllbnRUeXBlID0gQ1NTTGluZWFyR3JhZGllbnQpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENTU0xpbmVhckdyYWRpZW50VmFsdWUocmVwZWF0LCBkZXByZWNhdGVk
VHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0xpbmVhckdyYWRpZW50VmFs
dWUocmVwZWF0LCBncmFkaWVudFR5cGUpKTsKICAgICB9CiAKICAgICB2b2lkIHNldEFuZ2xlKFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2FuZ2xlID0gdmFsOyB9CkBAIC0x
NDcsMTMgKzE1NSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU0xpbmVh
ckdyYWRpZW50VmFsdWUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBib29sIGRlcHJlY2F0ZWRU
eXBlID0gZmFsc2UpCi0gICAgICAgIDogQ1NTR3JhZGllbnRWYWx1ZShMaW5lYXJHcmFkaWVudENs
YXNzLCByZXBlYXQsIGRlcHJlY2F0ZWRUeXBlKQorICAgIENTU0xpbmVhckdyYWRpZW50VmFsdWUo
Q1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlID0g
Q1NTTGluZWFyR3JhZGllbnQpCisgICAgICAgIDogQ1NTR3JhZGllbnRWYWx1ZShMaW5lYXJHcmFk
aWVudENsYXNzLCByZXBlYXQsIGdyYWRpZW50VHlwZSkKICAgICB7CiAgICAgfQogCiAgICAgQ1NT
TGluZWFyR3JhZGllbnRWYWx1ZShjb25zdCBDU1NMaW5lYXJHcmFkaWVudFZhbHVlJiBvdGhlcikK
LSAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKG90aGVyLCBMaW5lYXJHcmFkaWVudENsYXNzLCBv
dGhlci5kZXByZWNhdGVkVHlwZSgpKQorICAgICAgICA6IENTU0dyYWRpZW50VmFsdWUob3RoZXIs
IExpbmVhckdyYWRpZW50Q2xhc3MsIG90aGVyLmdyYWRpZW50VHlwZSgpKQogICAgICAgICAsIG1f
YW5nbGUob3RoZXIubV9hbmdsZSkKICAgICB7CiAgICAgfQpAQCAtMTYzLDkgKzE3MSw5IEBAIHBy
aXZhdGU6CiAKIGNsYXNzIENTU1JhZGlhbEdyYWRpZW50VmFsdWUgOiBwdWJsaWMgQ1NTR3JhZGll
bnRWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUmFkaWFsR3JhZGll
bnRWYWx1ZT4gY3JlYXRlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgYm9vbCBkZXByZWNhdGVk
VHlwZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1JhZGlhbEdyYWRpZW50VmFs
dWU+IGNyZWF0ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIENTU0dyYWRpZW50VHlwZSBncmFk
aWVudFR5cGUgPSBDU1NSYWRpYWxHcmFkaWVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShyZXBlYXQsIGRlcHJlY2F0ZWRUeXBlKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShyZXBl
YXQsIGdyYWRpZW50VHlwZSkpOwogICAgIH0KIAogICAgIFBhc3NSZWZQdHI8Q1NTUmFkaWFsR3Jh
ZGllbnRWYWx1ZT4gY2xvbmUoKSBjb25zdApAQCAtMTkwLDEzICsxOTgsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKENTU0dyYWRpZW50
UmVwZWF0IHJlcGVhdCwgYm9vbCBkZXByZWNhdGVkVHlwZSA9IGZhbHNlKQotICAgICAgICA6IENT
U0dyYWRpZW50VmFsdWUoUmFkaWFsR3JhZGllbnRDbGFzcywgcmVwZWF0LCBkZXByZWNhdGVkVHlw
ZSkKKyAgICBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwg
Q1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSA9IENTU1JhZGlhbEdyYWRpZW50KQorICAgICAg
ICA6IENTU0dyYWRpZW50VmFsdWUoUmFkaWFsR3JhZGllbnRDbGFzcywgcmVwZWF0LCBncmFkaWVu
dFR5cGUpCiAgICAgewogICAgIH0KIAogICAgIENTU1JhZGlhbEdyYWRpZW50VmFsdWUoY29uc3Qg
Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZSYgb3RoZXIpCi0gICAgICAgIDogQ1NTR3JhZGllbnRWYWx1
ZShvdGhlciwgUmFkaWFsR3JhZGllbnRDbGFzcywgb3RoZXIuZGVwcmVjYXRlZFR5cGUoKSkKKyAg
ICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKG90aGVyLCBSYWRpYWxHcmFkaWVudENsYXNzLCBvdGhl
ci5ncmFkaWVudFR5cGUoKSkKICAgICAgICAgLCBtX2ZpcnN0UmFkaXVzKG90aGVyLm1fZmlyc3RS
YWRpdXMpCiAgICAgICAgICwgbV9zZWNvbmRSYWRpdXMob3RoZXIubV9zZWNvbmRSYWRpdXMpCiAg
ICAgICAgICwgbV9zaGFwZShvdGhlci5tX3NoYXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApp
bmRleCAzN2I5OWE0YWYxZDgwODE3MDNjOTczOTk1ZWFjODE5MjA0MzUzMWUyLi45OTY3NjViOGMz
M2Y5MGJlOGMyYmM3MGZmOGFmN2QyZWVjYzBkODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cApAQCAtNjk4NSwyMCArNjk4NSwyMyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVk
R3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZlB0cjxDUwogICAgIGlm
ICghYSB8fCBhLT51bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+c3RyaW5nLCAibGlu
ZWFyIikpCi0gICAgICAgIGdyYWRpZW50VHlwZSA9IENTU0xpbmVhckdyYWRpZW50OworICAgICAg
ICBncmFkaWVudFR5cGUgPSBDU1NEZXByZWNhdGVkTGluZWFyR3JhZGllbnQ7CiAgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+c3RyaW5nLCAicmFkaWFsIikpCi0gICAgICAgIGdyYWRp
ZW50VHlwZSA9IENTU1JhZGlhbEdyYWRpZW50OworICAgICAgICBncmFkaWVudFR5cGUgPSBDU1NE
ZXByZWNhdGVkUmFkaWFsR3JhZGllbnQ7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gcmVzdWx0OwogICAgIHN3aXRjaCAoZ3Jh
ZGllbnRUeXBlKSB7Ci0gICAgICAgIGNhc2UgQ1NTTGluZWFyR3JhZGllbnQ6Ci0gICAgICAgICAg
ICByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUoTm9uUmVwZWF0aW5nLCB0
cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1JhZGlhbEdyYWRpZW50
OgotICAgICAgICAgICAgcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5v
blJlcGVhdGluZywgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU0RlcHJl
Y2F0ZWRMaW5lYXJHcmFkaWVudDoKKyAgICAgICAgcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRW
YWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgZ3JhZGllbnRUeXBlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQ6CisgICAgICAgIHJlc3VsdCA9
IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIGdyYWRpZW50VHlw
ZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRoZSByZXN0IG9m
IHRoZSBncmFkaWVudCB0eXBlcyBzaG91bGRuJ3QgYXBwZWFyIGhlcmUuCisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIC8vIENvbW1hLgpAQCAtNzAzMiw3ICs3MDM1
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRlZEdyYWRpZW50KENTU1BhcnNlclZh
bHVlTGlzdCogdmFsdWVMaXN0LCBSZWZQdHI8Q1MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gRm9yIHJhZGlhbCBncmFkaWVudHMgb25seSwgd2Ugbm93IGV4cGVjdCBhIG51bWVyaWMg
cmFkaXVzLgotICAgIGlmIChncmFkaWVudFR5cGUgPT0gQ1NTUmFkaWFsR3JhZGllbnQpIHsKKyAg
ICBpZiAoZ3JhZGllbnRUeXBlID09IENTU0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkgewogICAg
ICAgICBhID0gYXJncy0+bmV4dCgpOwogICAgICAgICBpZiAoIWEgfHwgYS0+dW5pdCAhPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTcwNjQsNyArNzA2Nyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlcHJlY2F0ZWRHcmFkaWVu
dChDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCwgUmVmUHRyPENTCiAgICAgcmVzdWx0LT5z
ZXRTZWNvbmRZKHBvaW50LnJlbGVhc2UoKSk7CiAKICAgICAvLyBGb3IgcmFkaWFsIGdyYWRpZW50
cyBvbmx5LCB3ZSBub3cgZXhwZWN0IHRoZSBzZWNvbmQgcmFkaXVzLgotICAgIGlmIChncmFkaWVu
dFR5cGUgPT0gQ1NTUmFkaWFsR3JhZGllbnQpIHsKKyAgICBpZiAoZ3JhZGllbnRUeXBlID09IENT
U0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkgewogICAgICAgICAvLyBDb21tYSBhZnRlciB0aGUg
c2Vjb25kIHBvaW50LgogICAgICAgICBhID0gYXJncy0+bmV4dCgpOwogICAgICAgICBpZiAoIWlz
Q29tbWEoYSkpCkBAIC03MTMzLDcgKzcxMzYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcGFyc2VHcmFkaWVudENvbG9yT3JLZXl3b3JkKENTU1BhcnNlciogcCwgQwog
CiBib29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkTGluZWFyR3JhZGllbnQoQ1NTUGFyc2Vy
VmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFk
aWVudFJlcGVhdCByZXBlYXRpbmcpCiB7Ci0gICAgUmVmUHRyPENTU0xpbmVhckdyYWRpZW50VmFs
dWU+IHJlc3VsdCA9IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcpOwor
ICAgIFJlZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NMaW5lYXJHcmFk
aWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50KTsK
IAogICAgIC8vIFdhbGsgdGhlIGFyZ3VtZW50cy4KICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIGFy
Z3MgPSB2YWx1ZUxpc3QtPmN1cnJlbnQoKS0+ZnVuY3Rpb24tPmFyZ3MuZ2V0KCk7CkBAIC03MjAx
LDcgKzcyMDQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkTGluZWFyR3JhZGll
bnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZgogCiBib29sIENTU1BhcnNlcjo6
cGFyc2VEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxp
c3QsIFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRp
bmcpCiB7Ci0gICAgUmVmUHRyPENTU1JhZGlhbEdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU1Jh
ZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcpOworICAgIFJlZlB0cjxDU1NSYWRp
YWxHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUo
cmVwZWF0aW5nLCBDU1NQcmVmaXhlZFJhZGlhbEdyYWRpZW50KTsKIAogICAgIC8vIFdhbGsgdGhl
IGFyZ3VtZW50cy4KICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MgPSB2YWx1ZUxpc3QtPmN1
cnJlbnQoKS0+ZnVuY3Rpb24tPmFyZ3MuZ2V0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjVjZGU5NjBmYmI3ZjVjMGI1
MDcyNTA2NjI4NzUwNzE1MGQyYmVhZi4uY2EyNTZjMDhkZDU3MGZiYmQ1NTIwMGQ0OTZjZTI0NGMz
NWVjMDE4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEyLTEzICBUYWIgQXRraW5zICA8
dGFiYXRraW5zQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIHRoZSBncmFkaWVudCBkcmF3
aW5nIGNvZGUgdG8gdXNlIGJlYXJpbmcgYW5nbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHRlcnMgYSBmZXcgcGl4ZWxzIG9u
IHRoZSBsaW51eCBiYXNlbGluZS4KKyAgICAgICAgSXQgbWF5IG9yIG1heSBub3QgdHJpZ2dlciBz
aW1pbGFyIGZhaWx1cmVzIG9uIFdpbmRvd3MgYW5kIE1hYyAtIHdlJ2xsIHNlZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvZ3JhZGllbnRzL2NzczMtbGluZWFyLWFu
Z2xlLWdyYWRpZW50cy1leHBlY3RlZC5wbmc6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMi0xMi0xMyAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgY2hyb21pdW0gZXhwZWN0YXRp
bnMgZm9yIGZvbnRzL21vbm9zcGFjZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L2dyYWRpZW50cy9jc3MzLWxpbmVhci1hbmdsZS1ncmFk
aWVudHMtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgv
ZmFzdC9ncmFkaWVudHMvY3NzMy1saW5lYXItYW5nbGUtZ3JhZGllbnRzLWV4cGVjdGVkLnBuZwpp
bmRleCBiMDY5OGI5OWJkYTgyY2FiMjE2MzY2MDU3M2RjM2EyODllOTMwOGQ5Li5lYThlYjg2ZDBk
OGRmMjc5ZmU0MjdkMGJkMThiNjZhNjViMDU0NjczIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxp
dGVyYWwgMTE4ODMKemNtZUh0ZUxVMHF8TmhEO3BEMyR5M2YtYHIodFJuUkdefD44YS1eY2otUk1x
azc3PXFaVGN0UjRQTFdRVzI8ZTZwCnpiQ2JFPis/K0ReZVI2TURWaWFhPDRZUnhOPnBqI3NvIXtn
MGArazRGfEd4ajY5KjtCST52fj8jPnY+KHoqTCVCdAp6e01nfHwzTSYqfkZ4VnBGQkxffnhVfjtR
cnUoPytNbmhYQlZ2WmMkYGdNVCgmSiFwMEgrQCVaV1QpbilwRmtLeTsKem9mcX1iSkwrJTB1emx5
dy1NVl8pYiQwMFAoOV88bmU/an1LLWJMKzJIailrKVkmRmRJeiY7RCMkRSolSnBQb0hGCno+eTk3
Rk9LOW8jRGlYQWNkaFIjYVVKZ2J5eXQjTndSYWlGWDNUJnZUJnxtSDc7eDhSYipOa31vZFdfbzE5
e1R+ZAp6X2Mxa0YyP3BEflZ4QSZ3XmBBSDkhNTA1Z0c4Z3UqMWN5MVdBSSNIWHVwMWsjVjZjKjxU
VlU1NTZxSTNteEJxODwKem1RS1k4R01mak1NYXh9ZWswSCteYTJ0OEtDS1ghIStuNzxtJjJ4PVBw
byU5cFo8aU8yaGYybW5pI3N+WVM3RHJzCnpjPGVDJlFRU3dJJVlIOHIpPTZ2JDwpUTQoanRqdkhJ
ZHdaMSo9Ym8zI2xpKkViOTQpZGBubEVxMUVEMFhGQyopawp6MVJ7SUZeV1JNUEtsUEhYN0k7M3NA
aDBtJEdDR3hnTWJ3fFRFdWhHcnl7aGpFdnVmZTs5dGs9OF53S1NkQjhKX18KemdhJSRANFNTYWtE
JCEpeSZodWVKZSR3cUdAS1JHJXQ2THl1O01ea28rY0VEKThmWFZYbHpGPFVFamc9b1Zvbm4mCnpa
T2V9UzxxUWJUYi11R24kPVVNQD5Nam4xb0l4PFY1OCY3RFBPUCk5ak1HQ2MrR3U2NEE5X1B0R2J0
QF5rZnx9Jgp6NnVEZnhwfmBIdFNaKFU7YlJMc1hUWis1a21FV1V7cDNqZXJpQEg+VXZAJHBYejNX
JnJpNz1YWnk+NlRXYVEmOz0KeiV1N0xlamZ0PEc0WFM1aXxGaFZVNCFldUEjZWM/O211XnZDUFh9
MFcxQ31VNFl4KFcqVjs7eGlpdkI9aDJgZiZmCnp0RFkmSDFpWHpSZDthdCV5YDkqTGFfVH5zPS1Z
V2QoZytlKG5WRyYkYU0oZHtiSVJmc2t1WXtYdDtKNHc0OFooRAp6Wj0kfkI3ckR2Zi0lbzZpSWxl
SUhqayVPI29UJmRzbUM+PWtLcnNgOEZORHRBYG1oXnNYZ3xpKkc9PTYrLWNfTjgKelFuaHhUZTtG
QUVjI3FZRDBFWXM9LW1QX0tBaSRCZjdpcF57OVBeKTJIKExGXnJLe0NWXm0wSUo8QG9SSDBjfl99
Cnp1fX4rYFZNbkhZP1pwOXNIUjV1XlBEJW1qO2FxTmcjRW14fUdHbDYqO09QVyE8Xnt6MWtEIXZr
KFVhb1dlQ0ghRgp6SigpP294KDBOM15NR1p1P1dtVkI8KV9FPm54SH0mUm9IT0F3UjdyU0Atfj51
QTloa21sZzl1VjF4WlcxRChaSksKemBRODY1NGtyfnYrY2R1IyY1YDR+bW9PSThlJEk7SUItV1Vy
MGx6a2VPMW87MDRXeXpuI2JmZCZnJDZ5SDZRQzQtCnp6VnBHN3ZtU3wpdVJ5NTMhKysqWXo8PTRS
UTA/TDZqT0l5Kyl1UVQpKkdNdD1pfjZIfW9YTmtHV0hfMTlLQ0FoQAp6Vk5mR3UobERhSTN0STVK
OTc9VXF5Z2tBQyNGUSFeKWNUNEw+VHFaekZhKCNVeTdQVzN1a2d7Y1ZSVEcxaEdPKS0Kem9xdWVh
NyVPVWk/cTRzUkBWSDQ7WUBQU3BlTkJWdFJLJlQhQyFzJSQjQyYqYzZ0SSFsQ2UoUjhMcTs7KTdi
MiRgCnpkfUlKRWUwKz1qTCpMYTNYc0VTTnk4bipDclRnQjJGcEpWS2J7P3xnbj9BLXBGei1hJl98
VzcpKmVFRjFnfHBucQp6bHlZODVUPmp2IShmY1orMDYkdDA0OztiYylaWVAkXnckVDU7MlFXVUVe
OFJULUlpQSF3b2xBVlR4VHNpLUd5IzQKei02dGtvcFJEbT47MWlqe0o0LSQ7Znk5Ul5CNiF6KVV3
bEFETG8odTFQPS10NCkmc2FqZ01De2RyPG1iNlFhaHNZCnpIMEsrMjMtWVZPR2A2RV5mUTF9YCV3
VlhBTEA0fG9AZVpRP2tOK0BzOEFoXlcyTkFDWU51TkRuOEVOO0EobSFtQwp6STRlezk0Vm1lZGxe
dCtNcFcqVEwtTDkhUTFZQlZKdGxwMzhjQiV1fm1zbjlKTXlsLTlKPjNKcnohVjh6S0x1azkKemlD
Z1ghI3QjM0ZxcHZ6M0MqISlASS1UdWI5cUlJMG5kISQoM0hnM2ckbjVibXlBU0R0IUFudXhIbW0q
OWhWKnllCnpGKSlGTVJ0Syl6fDJeMDNwT3t0dWJWMzlee3VRWUJPUkVYTHpCZl4wLWZ0eHJLOyQ0
bVVuKnJ3fEh6UFdxfWphKAp6Q2ktbzx0N2YhK1FwT0dnPW8hOHZKS0VwKEp6TERqOFBXQFYwNU1Y
KU9GPlpvUUZfO1NEWmswT1plTl9VZ0VaTzcKenRxYHM9aU5gPShidkJjPjY/fWowejt3Xj55cEoy
OVNzNSFKYyRmVTY8I25mTz5CdzVuJDF+RlI8UHYhMW51aVIjCnoza3N3b2Z0NSlKIUVEelpWMWdu
XnliS3g1TEJ4QnNnNnhuNy1vP3FCSkAjQkI8dSFEcHJNcWdhMlR+YiFoem0yZAp6fEpWP2puakB4
OUd8dX1UMF5iM30rMEEjNytHcURmcW5YXyhDb0V0OUlCUCNNYW9NemdkNWdZVntaekVNJHtZP3sK
ej1iTW1abD9TdmtZNH0tMm05cXsxQ1M7eT1BaTJGLVdoezRrKGZRN0BWT3NLV3BWWStpM0IwVUdu
VytQQUN8dztpCnpucEladGVyRkYhV0JCejhobXFZN2w/Njc/VjFHQzRwKTRNZWpoaGtuKVg8LU0x
XkBEJHp7TnUhNz1XU1g0fU5kegp6Vy1jM0diQCY7d0Z6U0claXRYcj9wUH1AMihxZnVMI3wyTHBT
OylJMylCTDluQlVffU9aJWRzPnMrenJPbk5FJTUKelZMUEkxKmclYGtsI3NlKWJtdTI4SktFbmI5
YHN9ZUAmQmh+VnxvY3xuZWRkMDh3czNUPVgkfDl3LXpjZjVvfHtgCnp2VGlyRU91X1JnZjZaI1VZ
SFI8TSskJW9UP3hPb1ZEI31XQj8hbHJ0QUo7JGx4XnJVOWZUZ0FWS2V8M3hVMXV1KQp6bjtwcSZa
PD1KRnF9bGE8K21OKXI8RzJ2Jj8+TyQpWGNObHpwNSNoQUdyc1lwUztMJihaNzxZdTh+THsrI1FE
M0sKelhUZTN9TC1oWlQ+JmJzYGl5PX0rRk9acnk+JmFKbHZULXp7cF9CYnJCRXZCYWM5cHMraWNM
REU+fDMyK3lBNnwrCnpxckBZalJieEhMJT4lcH5zKSl0Ji14fWkxOWYyb0lCd0lLaDUrI1N1eVBv
cTJDRT9lNyMlTnQ5cXEjN1N7MTZgXwp6O2JDNm50aDxtVihIIyo0ZkJHVzUyfUJPLWFBUHAldFNG
Vl9rVCZCVURoanBlcTRGIWd1ZG57WDYlanFHRDBwJisKelZsLW5yNEhOSnJAOTdPKSZFNF9Salk4
N1I7VmZEWjZYaC1sWkdKTzRKYVdyO0tIcj5+bkVHYDYweiV3OUhLNFdDCno1X1ZQaSR7K1YrN3hJ
NW5MWGg2dylqKFZHKkx4MCExdz1xTUVRM2xzb25mI0E8NDtHSWc+ZlNCRHM4fmM/dG5FLQp6dElO
MztpMl42Km8oPyg2dW9QU0hvb1ZQSCk9bkM9QFRPQX5UZiViV0MlM0JLV0JjezNtU0UqLXtBaC1q
WXghRD8KenV5O3dKayE3Ulh2eUk0PkBfZXR9I0k1a1dGQExaWCshYm8+VEttUDchc2prVFhqTXk1
cHlvJCRXbnR7eGcxSkkzCno2U2VrKSl8bEMtZHojJGAzIUExdjRaYmZEVWUoO3R6Z1dRUEZeaTIw
MX1uQV54V2t6RUNoKX09d0ZzPlVtTG8xQAp6VTY2MUx1RzZQNldfIVBmaWJ3QkhHX3FHcERRbFFg
WkxqOFl1OE5fRCFoLUZ2OE13NGRrNS07V0pjZTd0ej5vVkgKelVTN0VUZVdlOFpMPzUyI1JJeXJP
UTErfWtDJFEweHpuYHZ0YE0wJTFtaGQkUSpRSD0td2xBJSgjKShAVWAzaTA3CnpNPTImbmBeMFQ+
aUAtKylnM0Rhd0ZsWjhXUlJybU5WOzVhei1TUXN5LVJ+WlV3MGoqNG1xNSojQFlVWkVsRWwqfQp6
K0ppVVFPZV9gWl5rfElQTHdCVjYpU2xwKmdxbUglbCY8YXp4alc3dSooQDJfPiF0Mmw3cnN5STdr
djFVeUlANWIKemhuSD5HYU9gSl5pMD0jeFhDdGAzNnk4akgjMTttWGFjKlQ5K09gT1RfbGZFQVNB
ZURvcSltSSZFMEE9KiRrPkJfCnpSaXtVYig/SEU/akloTTU+QGFPbzFKOzBpNV9EMGVWTFp8TXNs
Q3lYLW1kUChvRTxzfkglZX5SSU08P3cmUz13Ngp6YjtCRkRTajZydm5BM0ZoM21DX1ZIblRQRXBm
eSNhOXs0KD5KZkRyWV5pPzg+WERFeHdBJTBocV9sWTAjcTBoP3UKenhxYEB0JUVieyU5ci04aSlV
PEVAQSkpVUB0OSFDfUFhcXZuTyllayMpUXNtY2NIIz5ePT4tZTJEaUdtdXkjX3Q4CnpubjZQRCFj
YzktRDZAPnlffWNJPDAlbDU5aU9AfiokSm1QJHU0TT9iPlU9OztNez5uI1YlaGE/MCpQV09JKHEt
dgp6e0N2ZnYxWjIxJUBvVmRWK35RTnYhQ0BTPiglKU9zKnd2aiktcUVnWEVJdWxRfENJYCZwQjNk
LWEhOG9GaVYrUnQKemB+PUFSODsoZVRGdkFjfWs3dW5XMkc3RXdVbWJUO2NUeGI1cmx3Pns/THxg
Zz4zR0w5clJEbzhpVEVjUHYhfSVzCnpPaVJZeWMlTDhuP3AwPHB3MkBXRCQ8OHdUMTBVJWhCK1Fu
ZEZ9OU5LZzgmQko1JEk/d2U/OFJhTnBVendYeChIVQp6S0Roez91YDc2P0djKWM7djIwKCZIRCNP
JnhyVShxIzBwJmUtO2xfS2dqelFCeUtkI0tDUldUO0RiUytrSCFhRV8KekZ8dD5yZ0JmaEdTTD47
WkFVQFJ2Y2hrRCpwOGNkJHJTZj8rT2UwbEBrT1EraD9ILV5wUjN8SVMxVVVwITBMWGhWCno/RX5P
YXJefF9LNHxfLUFfaTc9Rz8ybzV0V21FP1ZIS2V2PEdOMGVLVD5TIXRsQHIzO2Q/OD5ycjdzNVow
LTM/Wgp6N2I+M3kxTCQwfFhZZyRWXl8yS18oXm1fTG4kJHJ3OVVjNmRMdEo/WSUkU1QmZmV9Mk5I
aUV4Tk1BRipUJkNKPnsKeio/QDtMdCY5WVVxeEdqM3B5flU+IVA0PiROX3wySExBdTJSLXVUPXkj
TkMtJF9oMSQkKGVTRnM5d3tkVXZwNkJgCnoqbilBVHFnaVY/akpVc1pnNCZIUWJrUGYqNGhVSEA2
TTAldXd3KEBmJE5ZSWQ0MjM0bFl6fGpHWWYxfTxTWkxPIQp6ZD0tJTV1RGI8dVRTXks3Rl5pTkI+
RzwxTl9gfHU3eUZkOyYhJklxO18oQ2hhO08+QTxlSHhLSVF6anI2YGlDPSYKej0mT216dmJNVSNV
M3t+UTxERzheYFFISTBhRVhrWV9JKVVydUVfPmQrN1MraDA9YWgjIyVLJVgzPmBmPF83TFNuCnpT
aDJ9fXpVdkI2SXtPb0ZrfXpTVWA7a3Y9Y3JGUlYtVGt7P3ZxNlBSSigmQUFwYiZadjBOaj1EeVg9
KmNgOVF0RAp6Y2d4K2FNN2ooaklwRH4jaihtPm9sdHFFNWxZczxXMTFBJHdiPDIjIVJubFBOWVFk
e2k4YiVqJFNmJXAoJjVJenQKejk5WjUlNnFzQzNqQip6PGhlekpHczhVJChlOFErKkdRMHA3ZSsh
NG55biRlRkxDOHZCNU9Hak1lVmQqWHJLKDghCnpzRTVzM3pIMSo4djMrO2VOfC1CdW9YfTxQb2tF
eGNtalg4TXhBRXJsVUUjQX1GaTV9Tj9kbiMxdW47b3haKn5HdQp6UjNvYk9ASGc5NHdWeXdmcyZk
bFIpR3R4Xj8mPVl3NT5+dzk1eCRuJnVeRDdFdDQ1R0E4ez5Vb3tGVHo2bXE4JjkKekVaSGRfSD1W
eUlOU0hIJmowd15IN1MpOE5eM2lAczJ2QjVpUz42LXA8b2dGUkNKdzl7YCpUOG9IQXomVkQ0QzJx
CnpjfGMhNEZ3P3w2QVF1JWEpUjVabzxRQFZBVlgtNnNxcVcrbUtuJTNeJXcmUkkjeU9RYHhRZkI4
LTZzfnZMbUJ5Vwp6QSVga0BRT3cxK09JRFRAP3J2Tzd0ZCY3OVdkP3N2bzUyaE8kel9+bklmbVo/
O1RyO3VCUnxTbz9KUEEkU09GZVkKemUkOVBSNms3LWs8WlA/RFBtWVQ9am98XkFgfSllJjU7e2h+
cHNyaipvdyMja0gpS2R5IW5aWERFSVlkcDV1fGIhCnp3NTgjc20/eEw5PiVHeWB4OVJ3SkVJailH
amM2bCUlYXAxMkF8LT9BXzwyfmtDZ1ZsdFk5aX04OEttYXNhT29Iewp6PE5MSGluNkJyJiQ0ODtu
YU9YbDlKQG9OJkM2UVY7WjxnaH09QiUlVlZ0c1ApZkxKeyhqUkkmUU4xejt3e2FMemoKeko+bURs
IUowIzIjaDtZNmUxO185ITFIUUhKc2kwIT1rd2lYSWpPa1o8ZWN9b1JVOUA5V2h9TWQqYlBCS2Nq
Q3JqCnoxMWVpYF5Ybz9QPEpZWWVAQmpeZTtQbWlBJkhGfEstaXE+eTlNWnp4SlNDdmZ1TTY1fUk9
O3ZhVU9yYW42KCRrUwp6QWZrTnBTP0BvczxDOz4rRjF6dDxtfm9lQyZfbFBpWF9DPiV4cGd9a3FZ
Rllwbnx1M0hiaCpSQlFZKUMkQnYxc0QKek14U0tUPW89TU8wTUx8PHJzWElpZFAzRE1mZ1JfWUNQ
M3IwemNwUyltYntUV1I9e0A5e0AmdmVyXk49Nz17ems8Cnp1elNYS2IhK0JMezlJIXxMKjJnPyh3
K3Nyc0VDQyZhY1h9JEp7MWVrSVQlaiRBPFNSe1lXfFl4PUQpWjshXlNhNgp6UmhIJFchYEtqVmta
P0lpUi02O1EyZnN+eHBzIVI8UVclWkpUbVhhSCklYEdjcU9JRDFDZlZfPlhgcyNRQmhVWlYKejtw
PlBLTH1hYz5Rbn1xeExleXkrNi04d2pqSW1VLWF9ZitDezJ6WEVeZERUIVdffU1mJFpuPCNeOERa
UVVUWVBJCnpsdik4SyE9YU8kLXx8aUpkZTQ/YkM0NyNQMj5hcXRNRFMlN187MFR4VSFwRT9wc2gw
O3ZQSWZ8eGNmZHlCNCZeMgp6bT1lWG1wb3BxQ0NINUZLdXR5QmJLIyN9UGZBSiFVXklVKUo7N1dl
RTVgcGBpQldibHUmK3FNOVhPTFomP1M5cDwKemhIMHZkZGRFUDBZeT5aTyhBVEI3aWp6bjBpcnFp
aFJuQldCOXZ0dD8lSX5HQTcmLU1WWDgwKU9CNz12eSV+eE1eCnoqPDJzTFdWdmhZP0hXbkklT3hL
JDwkRWlKYC1WWU83fHAqJUk7K3JoSDZVT0U8TlNEeCt8YSFmP1k3OFhsKSRNZQp6O2E4Vk52Uj1+
WnoxUXhyOVpxNTRpOVNsTCZxKjxJbSt4d1BJZmU4bW5hWHE1cjxvP1lBY2BZc0hAdDtHd147RmAK
endIbmJuP1JpNDdZREc8VV9hTlB9dFJjYWl8SV9PaWVsNkk1bHgoPWU7Yj5nPyhLZDh4NEVsJCt6
dmI/anw4R2tjCnpaRCZKT1QhQ0s5M0srVEZCRTI+Wk1ZJGJBQnRDd0Q2cUYweTAkIzlma1BeZGVj
NyU4LSRJZUlvOHRJTmcoO3RHbgp6UG91anZUbDBqbXMmJDYkYllGNUhaYk8+c3VDZXV2M2J7aX5t
P2RlMSNfVXVWeDBDTERiYUMwNSVlVWpOb3x3Y3QKemMwQnI2cXRVZ2tiTFAxbzc1Vz90azNzOVRj
SHt7IXQyUW4mRXpNI2I9QiZTRCFjQ2AtbDNmd1NfdlhYJU5DYSN9CnphNW9FJmVRPUhMeFpBR2Jv
Jms4YzkwT3tTRH5geVlIfUR9LUZ9ajY2Uih7NENFZzV6YipyXlEhdz4+e01YR2ZfKgp6NkZjKz1h
PiFhRj4ybW5fekYoc3F0eGhxPkJXe0FCPEY/VihKU29oMzBPbUhNWSYzKStEWntKeT8pSTB9KzBW
dz4KenU1S3E8V2BETHwkK2RWRUloYTBjTmJwQzd2fj1XK3RFKnkpKV4pWHh1OT43VylsP3FCNyRG
SDQrI21KdWQoYnp5Cno+ZE1ONm80dXJUR0hrR1diWVg1dUMofT0oM1BoVWFSUj47fT8mKX1CJDgk
TiVhaVR3SHBtZSVDeEhzPnc0T158dQp6THlGZChmM094US0jIT1ha3hJbDFOKWh9eHRveHJWakRu
emtOTkpKJEhNTTJMZ1NuOFJGNEZaNi0xU3x1dE40VFYKelNaSzk3QD9qc0ZqQUZnREAwQjBsbDtC
e2gpfDgtKjZJJkpVPi14cnxOM3gjVWErdUYrdSVyIUY/YjdxQnR6Q2k9CnpqY0M0N144Pz5jNntN
UShRQ18/Kig/TCEwO2c8RlppZzhobHlCSG9pb2AqVyglTmxrSVZCUTFqYClzeE1fWHg9Xgp6VyZM
MXFSJUtRcyNqR0tHZnFOenNAdmtKUjI2UEg/PX4hWmlUQU5iYUdMSXdwNV5HVnorWD9nM3Yla2tF
P3BpUk8KemZqVSR3elIkLWRhKWNlRGk1KUV8ezVoME9uP1N8UGd6Xn1hdmQzd1EyY1QjN2ckdnI9
OGAhM3A5LWU8cUVrfUgzCnp4WHJTSSU8VyYtPlo4T0BMTEg4NnlZS1dla304NFA+TnI9U3NSNkIo
aGtjTlleeDlgSmlTZ2xjRGFMODdyMX5nYgp6YXA/O35AWn15aEU3ZyhOTl5lQll4RGF2fmAhJnBf
VS0/eH4paXlVeUYoeyV2XmckeD1KYnw4TUsrRisyPzs3PFgKelRxOCtVVj5fXztxMkF9ZnpIMTB4
JkAjT1JiITA/RSs+QDt9WGgtWkdaUDtMTHg4PT4wLV5eR1o7MCk3RCl+YjsjCnohcWVYREhGZHxl
Qnp2PXMlamNIYllGVX1YaT1Ndy0kTVhAN0I5N2ZJWjNCfDJSTkhLV2VWPWhuYjxEN2JHTkd3NQp6
eTQ8KCM/aSpXa0UyT217SkAmY1lHSy1XbipaUHRjbWAoRTFTRkFkOV9obWk9U0lhbHlPWWZWREhs
a14zX3lILVYKeit7TEVeRnZfTl9SYG8kZEZJKlhEPGtAWHszb2lYeXgqejxvVTxDUnR6JTxtZCVV
RmQkQWBIMW5lODxEUD1EdD1uCnoqXjlRVysyYEspNT4ocVdmKF8wfnl1PWwjQDg8MXxSXzItWj98
bmNlS05FNilzYylRdWlqX2liTTBqSEN7RGY2Owp6PkQ7JHg3M0A7ZlZ6Q1VoYEtoTGY5NjdoIVRk
WXpMM3p1WWk2Ozxua0hodEY0LXU4M2lnbjRrLVZiMGo7PXc2TSYKeihLLTBXNC0ofXJwTHQwKztQ
QTEqUlU7M1c1QGgzQTEzRjxYQGRqQjNVWFkhMU5GdnY9MU9wfXtKSHNlRkB+QCMpCnpBS1BqKlB9
VGBfKlRiPiNfVHFSYyRjPk8tdk51WDx8SnJqM1grWEVuSkk5MjRQaWA9bVhMKy1rKG9iOHIyNlcq
Wgp6UT0kKk9PaE51YEFBTzd8LX0yK31ebmBZNVVWKi1TN2h1WDlUeD1Pd2c9KSN+WkM3MWo8SDty
SHAlamN3cnNFKiEKelFsfChHPWlsYm8rfDQyRk5qMUkyfEVWRnRAMTxxNSNwY3l9dHg2X0RfdiF3
fFQxVyhjKF4pX0kjIWJZaXd5UzFECnooOC1mRTt6ei1hWUx6KUdvWU4tI19qKiFmLVdKaEh6NDkk
cjR3dmw3OShVNzlkUi13eGg2czFfSilaQV45TWJtfQp6PzRFfVJoYnJDO1VGSWlFQ05qa0JXVWR6
PDlgND9kUCU0Q3ttP25aRzchb1kmPld7US1OI3B8fi0tMSNkQGo3cXYKemZvPlZvMXBaYCFPVDl0
K2FWYXdBbEJoI1RyYVRgYiZNNkJ7T0hSeUZQR1M7ZHppTnNiOGFXYldNQEtGRk9rOzZPCno2ODBJ
Xm10NXBvLWsraFRSdC07b2NEQlVZJlp8ZH0hfiZ4JUxMTD9fPURSJGIjQVl3V1g3V28oKUUra2o0
RiVqaQp6e187Iz9ZPGAzIURmPV5SeGNQX2wjMGs+QkVHXlh+b2E/eEk8MERzUyVwQjVOZlNINE8x
dG97aTBwKFlYQENie3IKejRDdkwyWFgoVmpwPzV3bkJUPVRye0greHVDM01TVGpqYWV6UVZ1fHNT
SHFyRW5ybntVZyZ7TH5oR2ImdzRHaS19Cno8eUU1QF83JHFwcTtna000bVV8TTlFTU9ZKmUzRFpq
ejRsVFN8UGN5SVF6M1Q7bzg9TkFVWSg2e3ZDc2lvQUE4Kwp6T2ZSTlZHVCEhamhtYmUwMjhMO3ow
UUJBSEFuaj42bWZ4eFdHNFpYdzZOOXBYMXBRSForZl4qQVdlTHkpcTAlJU0KeklEcEc0Wj5pc3wx
JlFLM1FJOXBnMmR+TkBIRWVPZjFja0psUCkzN2VFTypeKmRuQm1JRjNWeSlMXmZUPFI8XzVICnom
cTtWfSNHRHFEKTlEMV8rVnNmd0pSb2xkbjYzTClOP1MyWCFFaj8yXkxeUFhhYGwhMEEtb0BxYkdH
VjskSX1Iawp6Qk9iR3otSWV7PmZzcC1LRmYzXkdRQiFRZU5wO2UmUEt+dlNRfnotVkdgO3woI2N0
cC1fVVE/KSs/UWhBLWgxP00KejVYKTJeX2FoSmtTJk1qXyNMczNxbikqZ1UweSolSkBgbkB3O2Ix
T2dDclBoP2NMeHpwK1YoKFJHZmdXSU1OaE15Cnphfk0ySi1xXmJHLX50P0J6PXxjK3AqezlhQnxN
IXU2dys9PDlwK3JOOChoV2xgamBwIWpVYXd3MD13Kk83SGZ9awp6SV9ZZjVwM0w0aERMVkFpY2w5
cHlOc3ZmUyRROXJGXk08WnJfbGFhaFdWIUg8LTJSTzBxentvbkMoeG5VJmckWWwKeiR9MnlsXml6
TWZneypAK2g8RSVjezhERUcwbm1ifTVuRSpQN25MMCVQKj9waFMxSzMjUG56Y2pnLXNiaChvUlFu
CnozYjgpZmRZV3VBOTNhbEs5dGBMfS1SMVlxeiEyMGM0TUI9a2xrQEArX1gtMUZvU1AlfnNNeiMy
UVFfOExWWlFOcgp6P0dEdGM4d1NyT0pHfDVnSG47JjgySX1zNXA5ZFc9WG9CNyEwb0s/fTw0bEsh
Y2l6fU45NTtiQnNATzZjdSRKI0kKem1VMXVHdWdfSHdjOWgkdTEyXnY2biRqOX5SRkNTfExTc2g7
P1J8ZGpoT1cwJmJuPyhJPlkkXnNJVz1pYjJ8YzFECnpXMXY1ciNBSnghWiVrWGErfiohWVZ7ell0
c2poblR2bz9kU058bilMcTFCcVU8KVBqSmhKTWZDe2thKmdsalFMQAp6YSlYekttNzNXMG5XQj1n
ODEmJUtzeE40YllQNUBhaUkpN2NWMn1aPVBJUGFlS28xYjU8Mmk0YiV5b0BgMGwxNTUKenVITEMz
RTR5YVVBKDd8ZW1tbUYwcU8+MUlGR01+I1A4VkFzaSR9VSNCKyZJUG45UUY7WlhlclJzKStJSXQ0
KWJzCnojbkFzJHpPUyY4O2peaVpWTUE8N0hORE8hNi1oWmYzY2t5enZebE9CZU4odmhyNHl+fj5M
eTg8T1pfN0w5R2BZawp6bjRuKzl6QjlGfTdOSk9VOSZFRTF0fTF5TUtoU29TRk97dXxkM3dTTG0t
PF9QLWh+I3JfU29lMWpRbGlVJHBZcjsKejxDYTsoMWRacUl0SjxJVSpQZF5CanlnMyNRMyp+RmJ3
a2dAIStZZGdQOEs8JnJXdUh0UEJeOTNvKDdeP2g0JSM2CnorPmhuamZodSkxY016QjZrZ2tJMiZ4
N2hlb1l9PjsmREUmNVlZRl9FWG9ieitpN0xKcTRSdWFEREJUVV85Sms/eQp6ZStrSHFBNUFpNGdu
K0ZJO3RnTllIZzRnTj1TPWFjTXhiKDM2SiVNLUg5az1pXjxMT30qJkQxNl58ejEkXlRDfFcKeiVo
Tl9mcChrVXMyIXctNER6cCl7aD8xLUJ1SyNOIUNQK00taHNKPDR0Q154QlQ5ZDNkdVEkfFJhSX0y
eD0pOSRgCnpsSW43djlNeVpTQkhnWUxyPXoxbFo3MFN3I3VfaWtRfXROMjhwTlVZMVY1WG9rZD5X
VlVHMCRDJT9aVm1fQHMlbAp6Sz83ezFve29KX1AoR0klMTchTDAkaGlwQyQkbGohe2RDOUxQaiF6
NDMoY2N6RW1QSnZCIzxAY2tiZUxNOEFgTlMKel8xPD9BT05pQyUkWkx3RDFVaU95O1JiY0cqQ2VD
bjVla04tezRxZWwwUFArSHUya1E5SWdwb0ZucDVOZCh6SFVyCnpORHsocXBvRj1sckpxfTIyKiVn
WHREd2A+SmY8KTAqZGliPFVfaz5gI2d6QnAlY2IjfWoja3JjZ1I4aDlyZldkPgp6Ukh+KGJ7JUB5
Wmw7K2s8PnRpZWFmamhFM3NuZk5kQDR+eTspP2whPG07IylFJEtCOGZ2PnxAdCUoTmcqZkQ4WSkK
ejhXT3xXRmxjdDJrQGw4dU5mZThLUGlPTztSLUMzNWRlanw3JThUXnQ1Mj1XZmhPdEBkRjZKQ0Ra
WSEhZHFKUTROCnpjeDZefWRsdTs5UFMjY0g9emFzN3g2N3d8eTtGZj9KSjVvSVB9JjZSIzRjOXh4
aT97K2tWPGhlMmlxemJAanQxWgp6Uyord2A5dTIwRDJOOFc5MnloOEZQeW5+RmU/Zk1WQTEhb19n
OSh0cSM0RlFzNmImfCE0Mz5EeiRGX2VMPmRtN0IKelctblJrYTV6aDFiQ2I/b2NtNj9tJXJpMEdJ
bU9Tb087eTFhMUJkbzdlPXVEUW8yKmg0ZVc/OG9KUF99fFprSnEwCnpGPWVfKFhRIXo+NjRWPGA1
KHZFRzF6c2B2e0RVVmJvNkp2N3psellebXUjMGtfZz1ES2IxNVZnYSMhdWJYUVp+UAp6Nmw9cUhK
elkyLSNNNiZadG5ec3Q+NXJIQWdaQVd3QTVzREMhV3hNOGQ3VyVKVzxWR0JGO3dMNmple0N2OTVv
OHwKeldUc2FHVnphVDF5OXFVPDZqJFp7JCF6KWwmTStZNERmQDZyRzJeYyowMVBMRTl8Pj0+NVI9
YWd3QjY0YGJxTClHCno/IyZ4NDAzcXstYEBWLUBIfHNNI152SEZaS31vRj57blh8VUZFO0BPTVQ0
Vn10MVBeby1xcygpPyFselM5Kj5SKwp6WHxJOCZ6aipDbmBxe085MWdgek9TXyZ9UHJgPE9DR0Ne
OGp6Q2RIRjNTO0hubXlTOVg/cmIwMzgkYUJVc1NkNCYKemtoZ1I0UGl4dGVFUGE9YkZGRURjQHVI
ITduPG1OfkAhQzVCe08pd3ZeeHFPPzRIJTYyLX0+cTR8TWRmZXt9O2JeCnF7b2gwWGQlcUxAVSo3
JSl5dFBRP2NKJUVZPVB0UFA3eD91ISU9cUIzMThNc21adX1QfVp8VlI1CgpsaXRlcmFsIDExODk3
CnpjbWVIdGN8NFQrfE1zKk9wflheS3E7ZSNwQjlienZCc3N6PGc9fUxoUyUmT08ldzNVQT05SHlT
I0kjYWJoR05pUQp6c0dQQ3U1TWVCWjg3RklJdlcoZkQmcHBVWXJ8PExwe2BrRn56ck8jQipOYnVB
QDZVQnpAOVZubTtsfVNLMjRXKHoKekFfeFJSJTwlWnBRd1lTT0VlT095JWpGQmZjY2RoeDZ1fW9J
S1lkRi1yd2l3dCs8cERnMiotMXB5QipaZXQyPj1ACnpjNXZBMXNOdGFIdmAxYWJkNV5RQiN5UiE8
VEgzPTt6dHRsVVRNJmp2NTEkVVlLaXB9WUZqVmFRaSt4KD11OEhaKQp6Qkp4UEEjaU5vP3R3WWJH
bGRCISs1KH5CPmJRe0xMdGJLT21rek1FRllacytvdnFNUFRZWV8tPFpwIzQjcVU/ZigKekI/M3xZ
enhjdyU0ND1iKVJNdVFwK2NnP2tjXzJWKHkhQzBIT3VrVk8lYHRxUmFUNXlTTlpubjhWVXI9WSE2
JnktCnpyJnxwZy1Sd3lnMmd6ZH51TW9lJVVsTmdIejNHOGt3SzBkZU1RSU5RI2FlSmtYcmI/flZ4
dVQ9NlpMTChGR0RtZQp6XnA5fjJER35MPmFSPkI8OVp5Z3V5WEZLWGMofVlgOTshIWlURVA3V1Er
bl4wOSl2STlyUzdVOVVReEx3d1Q+MmoKemZjS0tnaEB8IVZScWZWVyUxckR8eD9sYGA2ciFENkh8
bWJieXdXZ0w4bzdTJlZwX1ZrbX4/bmVmTXpuWGpOTj1zCno7bjw7RzspZTU7dE0xfG04a1Q+bWR+
V21MP3EpbT16NW1EUDt7ST1LNTgxQWFya0pIemdHJXJWLVEoPEw/Wmdycgp6QUZvNVRGJVJ1OVIl
M3hWPigwSjspeTZLVEM5PD9keUkwaElpRjFmdE5tbkU3YCNaQHJDbnlGVUl0Ml9wYSY4ZkIKekVL
RSRAZDNtaj11ZEs/a2dzJmMmUCRsITQoOUk4OzVXdUJJWG18fGdXJVN5eWx1ITN7Yj96WTE3fS1Z
cUp1ZjRgCnpsQGBeYVFiT0JtNmVlNVZ1M1NHck9fdmdyLWV3ZDg0KVBjS1NFUzJsb3BOcDR5KVk9
JGY/dXFmP0R2JHljUTB1YAp6cjNBRTx4ckN5Pz88ezBBLUE2VysmQV9GQnRiWFBhOGFWVXExVGJ3
QntDLVk3RCY9QXVgTm92Vk1IQWVuWU1kcmcKeiV5c3NWVj5GcU5xUTAoPnlZaE1ePzdUPGlKIWZD
MClYXnNRTCp2JG9vY3FAUlVjJClGa3NeZnJ3bjNfZ0NKRTJ7CnpFT2hqaHN1WH1iZj8/cmVIe3Jk
dGJuWDJubStTUU9JI2F6bHRuTTtUK05sOzVZKDhLNHlCYWNVTzJfaXg1ZzRyTwp6ZXRkbj1QYF5z
Mzt7SjNhei19ZHAtRSExang3XldyTVo8Wjx2U2dJIUMtcVcxcHlVZUUpZy0oaysqdD5SIUgrdS0K
elghS3t1VSQ2K31jTyVocj1hY1ZHb1o3entDaD9VWHZ4JH4yNTgkO3ZCKDdDJiFsKjs7PHhSPk03
MCotdXhCWj8lCnpHbmFIR1AzfDcpME9LWEApbU9sbT5pWUFRVFg9TnF3T01vNWJmNmltcFphc3U5
YmpnVU5uKklqMjFVUnErWDdiMQp6OTZ6WCs1QCUrc1FKal5ZSik8VjwyazktVmZ+RUlgLTheYkg7
WnMjSXpGUkxjZyF4X2Q2NTZEOTRRRkF0NT84N18KeiQzVj1pOCFafV5mPklLT3BSWDRue0htVmBl
O3M0ZGs5UXdDMlNYT2Q5bXVOQENTWWImangrU3dLVHV6JVhuOVp7CnpDSXsxeEghMVdHQjQ5PiZU
QkhzRTx0QGQhQEs0eXdadVlZTUlyfEAmZj9FZm1lYCF+THAyMTN6OH5sLWFTKFQtVQp6IShne0FH
YyhsSEhWN2Q8diNBY1dXd1BVY2ooWU01WHtXRHtqKmJFRUNrLSspZHt0Ukx2ZDsmcm1GPVVKKmtM
VzkKej8pKXFmWEFaREU0ajt+PkFDSDsqa0YqMFJ0KCg3amxsfEVLSFpVK1RuS1Y3Vj01Z3YrPVpx
NnImIzQ8c2R0MkAyCnpjTCVGMmFDaTE1bUF+TmdrdFVmTE97emIhb1M4JCQoeWp+TlVKfH1ORH17
OTY7WDVKWlY+Y2J0KXZDOCopT0R3egp6e14+bW11VGdfSSlpZkN3M0M+eUhfTnBuQWYjbXk5cVJ+
aiFfNFJ1eylSLXlANUI7Ty1FeWN6djk4OWowYkhZM2oKejVGVjZ2V25NXnYyK1hhakw2VGgwa04y
TSEoR1dINihqZUhCYWU3bksrenFAaTVDNlMlZi0mKEUkTmora0xHX3U1CnpmWFklRGRITShEPWtx
fk9jO0Q/RlkmRy04Zzk4S296U19RbWhDNFR+MmotOEg0TzFnQzhNSTRHU3xTYzZ2V2MwfAp6VHs4
NTsoUHdybWg5UFY/MHdTdXgpVn5TNT5pZ1JIdTYjSlYjPitTX1pPLSFVa2A2Rm0zTGAmOU5UJEg7
YVlGSSUKelFAYU51M0tGdD1DQkVKM0s+bHlle1VtTXAzRHNNdHJ0eClzX2ViRFNXbyhVZiFIRDwp
ZDRBQTdXQmduN3YteXhLCno+XjZieztWVFVYZ2FRYnpKYH4zTihMUWpObSYxREF5X3gmRSpgM1Vq
T0xjbyR2aXZ9JjBURWE1TU5GemdyVGl9Nwp6dz89Y0ZMNXVZTWhyPGc+Tk1RNWt4JmJgJGtKSk4o
JDk7ZkRlYEgkPGg+bSs9KFklWlZQYWtAOXJtI3E7QmRkU0IKenhxeVV6bEptZmR7KkM8RDdJP1hK
UWJeT0NIOX17ZlE8M09SIUtAM3E0K2xfWjlmfnUzUEVONTBsIW1aPzlaKS00Cno8QjU9ajFRd252
ey0wfEdWfSoxdCtALW8lPn1KPFF2Q3pMSl93aHJ1Wll9XzBLPipKQ1pLTTZ6Y1BzaypeTzZIMwp6
XmkzJHtVaHpaUW4+JGVPWl5ONzBFcXxfSCEyLXp0dFkhZSpLZnd9fipiVnY5ZXQhMXJfdkVOVFVM
KC1eeyFfKH4KeiY/SSNUXnNBLVZgTV4kQ0N3VE9rNX5vK01IdWh1MUEldHg3eXFgaSNoTWMqaFk2
JHtjKkU5Tm11TmxuNnZ2endQCnpiNE90NSNSTzlBeDFUZn14VVQtLWMhRip1Z3Vza0BfK1cxUSNC
QnduQnBgZ2VKTVl8UStiNX5kN1MqYWctQXVnMAp6ZSMxKiNVe2NnLXpYMCpJdUc/eEUwPHJHcVFj
PVd+eVo+S2JURCRRakwqcFM4dzk5UVFqYCYmZiV4STRTbHM/KmMKejxmT1RWc0QwQ2d5UiNmYGlp
fWhwdHZVbXFHUTEhYldwTGF8eF9oNyhiej1PKlhAX0hCJkUkeChVREZLXipMVjhrCnp3KWNiIW59
NmsmP2MpdVN4RVglI3IpYmxWRn1ySjNpYTE9dnY/SjIqMSE4VkdHVmg+ZUBeNG97NUpxKzxJKjBi
Qwp6aVR7OWJ7cCQkXjdpcDs/aGEydkIpMXhJeHxFUEspYCZvST9uKX5uaCM+UUpgKkE/XnJjYHlZ
IUNffHxyaXs2JWAKenImcFU9PnVhc1I7QklYS14meTVnbmQ3Vz9CdDBQKz1gYzFIO1ZIU2t1Xkpn
MFpadlhzWnpifk0qQnVOM3NtTXx7CnpncmZnOGhNdmZsWjE8QDtxekBqN15uI0x0YDxGQEFUekFp
Wl9SV2BTOGpwKHZvZlplNDhDSXBiY0pVfGBeeWg3PQp6eEE0SShAO3ZtQ3h9dl5SPHY0YnQpXkAq
dlVoaGBidj07SiZuPjx2eyZJMWE7MU9JakZRKWBRUGp9SzxfRTlxe28Kenl9NEQtaWlzM1NAfnR7
I3czT0t8eVpLeiMjSDNgNnE5P0hzbmFzeyp4JmxYJjFmREphKl9EPXB2UXhvNVp7OWpWCnp1RUhI
ZWloLVFiMXdrZiV1JkoxNWZ1KzhFWCo7Q2F7M00zUXktS3QzWF49QUgpQClkRlYwPihVcm5LMiRR
JUhYNgp6JjBQQFgtJjFJKj44NnRUUTs/KUlgcnxHb3RmVipXSjZLJmpvRlFHYTN7NVFENzAxcUpH
JGp+fkQxaXJzamM9TjIKemIkQX1ScDtybW1JTlR8RzNAUEJTOShjclAqdXdLIS1rPnFjSkNfQEol
cEJ7YmNIJmZKY2dfUnQjMTNFbUkzN0pSCnohWClnVmMjV2Y1Km0xbWNjVmpoZkgtR3Y7a2EpNjhC
aEJzSytgSElXUVBKZCFrMUohJHh0O3ZePEdgYkNxYHwjewp6RnJiRmVJVy02fEJCem9kUTZKIyNG
dCRPMj43eygzUWVrcH01N2EjeGhjfFgxUShCSmtOe2E0TVkzaSQ1KUV+OC0Kek0tXkw8Rzk5IyRy
Z21PZ19zOShPZTx2QUBsbU92OWl6TllCa1o1Jn5AN1VOa3c0fDZgSFJSd2UjTDFOa2RUelZ3Cnom
THVIT0omZSM0VU5TWlA9Wk8xRFgoYHYobFFKNThhaEYpJlNAIXhAamhiWisjSmhePUpOcHskO3BQ
ZE0tWiNwUQp6c0d5JjstTCpJMzQkbTQhWn1JP21GaDBoTzZJO1BhKCY4UGVBbk8mSj83JGd3Vzd0
QWApTF5NaWRBOUdrSGNWZXkKemBtViRkdiQ9aVl5NSl3UkFZZVA2Q1B+dEBST1dHVE9efHJ3d3hf
fUglK095NkJzMnktaj5VR1NuJUQ3dkp7Ql89CnpLeDJPU204KHR4eFBoOFN7WHdfQyR5VjV+V19x
NiZfZUJOeTcyI3h1dj8yRjVyZmE+enF7e2p9b097cm5VPHloIwp6TEVgVSMpJTR5c3FEKkJlU2tY
fjRoaEB+R3EtKVpoaCpOfGtscTF9Z09Ya0h7TT9ZKlMlX3VrfUhOIWpsYCs1TTwKem5SUXJkYyMp
TyFhd1hvX3pvKEZgQWE1Z197OXYrYGhaZGQhdz0xRWNLSHd6WFkoTlVPMEtwQzZqczVOK0JMflk1
Cnp4MUQjP2VOTExEdVI+UVBwYlhFMU1zKTFoYHk/TFB5NVBHcUY/QmpUbmo+P2Fyd217bk1LXj0t
dng4ZkVDRi1VOAp6TGxsRTFwYHgzYiszZDIqUn58QXY0N0I3QHdTe04lX0hpd1JZbzhuSE91Jmpf
eU1NMlF0UGZrTzdOdnMrUyliKm0Kemo0PjR0OE04c0JPWmhRS1l3bkdmP2BDbm5pQDU/eilxOEYw
ZHxhN2wwUlA2VUZnWnpxKyhRLWdGQkh8MGhGPjVMCnpqNFROQWtIR1d4KEd4dmp4fGxXQz13KXU+
dDd+ajM8eGFpN0ZKTV5Sc3RLbW0wcDZpP0ktPC1gSDMyTWlRP0U2SAp6Z3xvcy02TFlDdkB6QTR2
aTUoUHxJZzNxb1dPe2hZMFE9KSpKcGZ2by1CTiVCMzVlKyowK3pEMTNaP1YhQzNWM0AKemxVKkx+
VUBERF4wUkR5SzJeP3RBT1JKJm1fazxYZGdEQEI+KnlyUSZDMDN6RSUxfG5NWlBzXytzdy13QiVo
Vlk3Cno1TkVjWUBaR2lHQzZUUzVwUVdnfURhUGArWTxSMUx0V3lxZmw2M1FYMm5iNDQ0TkxYU3dG
PHJENUM/UTlYckJOTwp6Q2JsZ3FJJWIxQFdTJkY9WXpzNUtXdlZ7UEhteyU/Y0JsZXJAUGRTQyEy
cHVxNXdPMjQ9eGQwOVpDYGolaElASikKeitJOSQ5emR8X01TMWZ3MzdifXxWa1V3PTdtbGNDTkJX
TV5AbnlJQTx1NHgjeWVNTyYoUlY4Nl8wbj1AeEIzQ3kyCnokbCpCQzJxUGxBQ2UjWGdSbEJNcWwr
RCUjQUZUYzBTdFA1X2dXRVAjakdRdFNmZlg+MU1SZEEteyNgM3ZPR2JzSwp6MmFfVjs4T3hIaUFS
dklDWjBZcSFVO3pNfHs7bXZJaERDRVNncEY/QUdTcDtobWJucF5HcmQxd1c1PGo5T1FNTXQKejxq
MSl1TCMtZDg8KU9DJTdTMFMzTnZRWlI5Yj5udl5sM2NPMG9MfHhzeSt5MlhzSVFiUXIlK1pwUmtF
PWE/Uz1DCno1QyV2ZXZTOWlZWkxOWldWVUpGTTIkczRBNiNYakc9TjZTSDtzZzFfaiFUPXNDdFRh
MHM+bGRUVHszVFNFdHNOcwp6eDFsQH5EUUtXJXYpI31oPiNAfjd7RVVIQChsaSFNQFhaJngqamgz
KkUqRlV4KX03KnRWdz1FcjRYZSphOXFDd1oKelh0Zz1FZUw8ZldfXjRBenBXemtzdXtLcHo2XnRJ
N2BlST1BYDhYUyM0OV9gdkF9ZX5oYDNVIzRwbSRPMFZmTnFpCnoqKzs/PCZMaCFuclhwN3wrezUq
dFUrK3M3V0NUYFZwKmkrOXF5PkJ9VjBKZEtlV1lVOG4oRT1AdWJXP2ZBP0dyWAp6Vj9tRHZeTUBh
KGFKPlQ1K3QyTWpLeU1+VFVgO2VUR1QpKFAzaVJWaHJ7SmBobXU0Y3MkMVZSNGp5R01nIUJwNl8K
emZMJk0kV3pXMkshVmA/JklCcSF+S20zTjEzUzFFUUtCSktEZn1VXiEmaUpOO2g4R3VYe28kRmRD
LUJMZSV+RDFeCnoocG0tZ1ZFOXBBYFVtQWN5elA2P045R2tsUWJ9bTJiUT5HS1crPWlgbWxRVU8k
SSU+OD0mQ2lkdHBpPnd7KVchKAp6e0dQZDs3YUYzQi0jRnFJUig5YDMzVy10elIzYUIqVmF9QTtI
RmcwJXs8NHFMUUp7MDtnWnJVX3ZLYlgqdyNQTkwKekE+QX5PQ1RMaVh5SUcpYiZNOXYoa2tLMyQr
JmFHTCVTUFRJXmAqWkRuPnx5cTdTJHpfaVk7fWBEZiZZVkB4VldYCnokUGd8WmEwYnJ9NXZ9TXJ6
d3Aqbis9Vio5Q15LTFhPZjVxWENURXpzKHxTSmhse0F5PHB4bmFaZCg5VWc4R004Kgp6cGF+dztr
KlJAfWt3PlopI349eTlQOWE9NzFjV0pQYHRJZGpFNGp2dWloP3xQZS0lPT1XPH1HYHhiJiVAP0d8
IzQKendiJDVkUn0+MFJAYDcqcnA0amNzRnlIaU4rUXFMNzhsWWU5KEgjQSE7Uk83P3F0SUN1K155
anJpVT9ZaXNvbj1TCnpxcSNILUpHaCE1XkdacmlVTXAmKXQ2VkRGIXNoS2VNOGtfa3QwM1Bsb2Mx
YGMrUS17KlZiRmcjQzgpJmleVHwmSgp6QTBWQzlyeXJhVzw4VVMhU3koWT8xZnBBIzZTV0YpeCUr
P2R1UntPUk9aYDlvZFc3VUw4O31zVXhPKWA1KT5oRFkKemhxeDZuYFhNJCYwbVdyRTg9diNJcW12
ck81Y2RSPHc9UGg2YmRuVEM8c3gkUnI7P2gheStaT2omYi1USkxUVVNKCnpZXlI1ejBMOUZEVz9N
dmhPVkxFUVlIZCsqV3NldyNCYVA9YWo2X2hSJiEjWGVeNXdva2l2cEVvWTxOPGlGRXRGQAp6LT0t
RT9Vb0JzbndKfUYwQCskKz82ZCZhIV9SYipDVW9XbmVPflQ0OTtRRnQ7Qk1GSEVeXjgxNU96bGk3
UHgyaHkKelRySU82TCVyTyZDbn1rOGlgbVYraGMtTHYtYl9GQFN9ajx4NkxhLVV7LXlvLUs5eVU7
eih3fih6UEYoS2VUbXw/Cno4fG9vXklaYXVYcXd1bykwSnF9SiRpczxoZDh+I19RSzxFd2VLYlB2
NVpVNXdvXmQpfEB0KnttViokayklfFptXgp6RiZBZSV4cGNoSD1afl9XKWY9MnZoMj9Kd2p0WEo9
NzhzfENUOzhSJSYoZnR8NCl2fkBNNT1GMDtnQ1pNTipXdW8KelFoMkZeKEZDcWlVOzI8VjB3dU4y
KHJpUWAlSld2REduSWE1UHdGTElmX0ZoISE0QSk0Jms8YW5kNnxDIUh8cFp9CnpuVTR1Q2Eqdm45
ZCRBLW89UEU9dD5kI0lyZm9eKEVrZ3p4VUhHSDF9Y2ZWcDQ3PGVlI3JnWHpHZT83JnxvfiY1Kgp6
aXF9dHpUOEFlSDZ5M3w0IzhpdiRyM0J+bEc0b1F3QHY/dypDTmdNKSlKSncpbGxDO1RDMW5ZKCNh
aFo7V3UkWkkKenF4ZT8/az0oYlA2VTMwcjRlaEBpbDN1a2Z2d1dIcFVwNjlOUmhAeXxlcGNJMmVQ
ell+UyN5TGlEcVZwIyVpdFFpCnpGUj0rRTxDanx+OztnYFg8Z3AodHdlN2Q5LTAzP3pycDMmZEhS
RFUmV3VLeTc2IWBxbjhJUFNUbjtQKDZHZVZINwp6IWFjQX4hZ2RuQSphUHElUSZCJDEjelF1Q2Vj
SCtmOV5ucT5KYXk9ajxNaGNFJjZKJTghZkRxV2F9dHBnKklSZT0KenNyfmBtZCQhfjR4QjNEcHhB
VmVFQHtMMU93ajZUfS17Oz8mN0AtcDlPdWZBOEU4XnBIdzNpdz9tZ2psdHRxMVFeCnpEez9zZGVH
YTFhPGR7VzdoVlFONy1JUXYxd3xDZjlNMGlhSF88WDFKYDlZfEYpOHNqSDRzI2pyRDRZNUdFI1d5
aQp6OXtKMH4tLUc3Qyt+MklaTmVLe04pTXF6RXpwMD00JUk2JnNTc0YyZXEkZFNOPmxlTyRNQyo8
K3d+bXthR0xiPj0KelNsbGgyKGJ0Sz9Ac34wUT0tWm5gfE07OFVwcG1LQypiQVYjWj44T24xO3Y8
ZyRZZ2YobzZkPk9NfTwoaz9MK2lLCno7eklFb1Vme1UtZHc4Y1VfV1ZfUzRaRkJfSTY1fG1TSU4j
YjMrOCZWKG1QdS1tPHZqR3k1KiNhQ25zO1Y7TkM0ZQp6ZG9tQDBJQmRZelhwYUBlPytLI1NkbDBg
SVVvdD81d34obktfKjQ/UDgtdj8jOW4+I2phfCZSQFA1fGtRemZiSFMKejlCKzs8K1ZXIWZWbks7
ZGJvPilecXRrKnR2TmtAYkZtJTxgRU9UKmhIKT4xKWAkeyFNSmRoSEk/Y3VyeFVMI2JECno8e18q
SEclYzU8K2drUXJROHA7PGpKfTtOSTJ7RXtDKnEhaWZ2OHB6Q3RZS15FWDBFezxUNyheVW83QXA9
UHZHUwp6dzI+cWo4O0QlcTZ2JlJjPXVkd3hXczxlPTwjOXMld3lyQCV4Mn1MYnIyKHFrR2s2ZShZ
JU5QT2k3PjtQYFU2PykKelZkUT1WNXFKI2NOeXwzQUkodGl2TWwjZmphX1k7SnktdmBRLVZoISlj
VFF8YW47bXY8XzZLWE5TKGRPPHRZc29GCnpJIzl8U0duZ0h2O0NqPyMrO3NocyV+anBqNmIrZV5Y
dF4/cnIoIU1OSzZRNj09Sj5wYHVCfFd1RztDdzheKXZGIwp6ckQhZ2hmRGslNiE0bXF7JEk2X3kp
Xj82ezJTK3ZWWV85P1RTaXBuLTdvWnx+OyNxZX49WThsTSE3ekdCIzB9UysKekgwTGx3TzF6JSpq
VWVCOVgmSk4zPWtifDgkJSRoUCliXkBEWj5sJWtSYFNhTmZRSj5WJVI/V0NtJE5yPTQkcSZpCnpT
UzdGZ3ZCdClVOFdXaUsrPCUrVDMjZlYoe1chTylKKntaRDdZa0E5XzclY2pCcmJWZzBRX3EqYktf
ViZvdEhBTwp6eSN0TW1MbW4+QmtSaFZZWmdNNTs0TU1AQ3ZUaWMzZ2MlTjElViVlOHFfXnp0b1c9
QXRBSlp0bHo/RkVfPyshRXYKejZqSlBwJGtwQU5uYCRMO2RSdEpkP0poT1A+S19Cakx7b1glQFEr
S2F8TG9GQ3NnfXI1Y3U9MD8hPXNKUmcwMkE9CnooJUgkXnA/MWw7eSFCd2k3azxpRW4lSDUxdlZM
aGwxZUQqIWs9UlZYTVlwfmdqWCFgKzdHV3F9TlR4bHFxZGR1OQp6eEctWCRDNWh4P2pjVGxeSG43
dUlrPC16cW5sQD42SFgqO3tVT3JYRkpASXh4Z2p6RX0rI0EyfmkpSUhKLXtJdXsKelZQPj5qTzl3
eW55JFVtWXN5fjkjP2k9b1Y4KFVmcVI7RmhVeElHKFQ0ZVI3cT42MWB1akp9QTREenVHeGpCQCVl
CnomdFlhWjdEbTV0SSE8JkAwfGh2dyU1M1gwQVN9aiZIb0puaUFQKWx9WHlxQU9EUjIxfElMT1VM
JjFQJDZXeVo2PAp6K199KkBfQG5MT2Q5OVk3UCV4MExCSklzYmApd0VAU2Q4UmBjcUVJe21iSVNE
RXdAVlg/WXM4VFQ+Tll3N2xgPDEKelk1UEFMST8meV9RYXtjaDJhQFQpUHx5Kns/MlV9Z0ZBWFZ2
eUxlYGx2fjNscndQbVJUcV4mazchRUVYeHtLbH5mCno/QERTa3t4QTFyNkRuaiRAcTItMlVFT0El
Z35AJWdXYz8tVDl8aDV5dTVyakNCNH0mfnYrMHtAZnI3VCgpUmY1bgp6Q3NjKlc1TnNkbjkpPDB4
IS1zNWBWMEAzMktITGclU2s5TzZKc1VFY3owa0dEPUVPVHtyQFd8VXltR3krZzh7WiYKenMobiFH
NlpGbXRTeFleV3YjSEJrUGtwZEF7KHtgYCtMdm1rKX5eWUlmaHBJbWlJIypvKDt7VVNgMmZLSzR3
R2s9Cno1cFFRKCt6UkAqemFMfmBaJDhMR1dHNEV4SWJ2d31nYDZ9QFF1MGNtNEVLJXhTLWghPEhg
e15KeEs1ezI7eD8pIQp6JGV+PGNUQEN7PWx2cTN3M0g8MVcpamR8LT5+P2UjbHplJTRuXjxePUNz
SjBMdnZoRk1WaihMfCN7eiYhc2IxfjEKelVoekloYTg/bjxBYGpPSTdnPStROWpGT3p5bEtnTyl9
ZG5iZng5VG14MDAhXzBeOF4lTCZWNEIybGc+UFl+MkxKCnpAOUJMTHduWkBKUDhDRmVqYU49dXJr
b15OclNUJF9VSnhafUdBOyp5aVpAUEF8QU87MEArayV2MilpZiFEUHZBQwp6cj4mbEpSVWFPZWxx
ckpPcSNkMlNjaFohUzN3NUpFU31pYiQqUihXeURHe3xNbzg5NystfE5acDk0alUkP0w/TCgKejVZ
PDUzZXg8d0ZXXlNiR2RiZz1sKCEhYmYjQCQjak5yO0wpcyQlSjI8JFpVb1UhRzU4XjNqTHN2bldS
R0w8R0ZrCnp1eHdKI0s0b2pFT3wkS0pLXyhiNEEjTUN+Q3kqSmYyayhALXAhNVktYEF6ZFpHQWgt
RER2RkljJUpCUlc4MmU7Ngp6cVlXN2s5dXNxOHlWYUltTEJ4dSs0OUtXYFEqZz16Vj0yVUJwe3A2
V1pPc0l3VjRqfX4xfmR+fUE1O255NUw7PzQKejkoLXhYPFRIQEg3PEFLUVBiSnZgbygtN0NTa0A3
Rld4VlF8UWxIdm55X29COEBkNDxHczM4SSpMMVJIfkc5QjdWCnpSSzh4VWI/MV41PEBERUBAQEow
KjMxMkVaQypiVUs7e2RtT0dtPiR1RnFyQi04MW95MDtIbnhJWUd3V2srSWZ+OAp6Pjl+IUE1Pz5n
KmEzKXt9c3s0UWR6ZmJwSkpCJURKaiNXXiktOHB1cEdQIXV5eVdrX2gjWXUhT20lSW1obEBDZWgK
enNQV3J+U3kpdi0lXy1OfHVrbV9hWXU/PUsxVXRzZEF3MExrZlRFKllLSFp0PDBxdD83dHxCVGdE
XlpGRkswWkk+CnpQLWcmcWstfkItJlU4VCl3YSlranhQcFkreDxkMnxVXkpiO1hoc3ZtZjBnPlVB
eWRpQl9xTX5pSEV0QVN2LXJqMAp6IWdkSiR5eXA9Yjs1VyZNYHVmSWIjM3RCM3dpbiFCKTRNXkFR
I3plcEdId2R8KlBpUHhoWFBJKDIydz8lK1RlRXUKelkoKCtlNTktYm96biMzZD9QKGs2aS1ybldB
TyVGI0BHVGRxKEpUNWkwX0xacSZyQW9yOytTaSlEdip4bUA2QURJCnpHd1M5SGZVaUE8dn5scig4
X0BsY3F+dmh5WTFAMFhOIzlLNEYoY1B7Kzw1U2xZMURTKzA+V3Z+OGVCRiolcj1sZgp6K1QqeGVl
RnIkTCZ4P29NSkU0ZEk8MTAqMldHVHAwKT5oeU1ZTmBIPT5UOUJMOVlMXnZPMUxNRiEyWHx4VEFm
e3cKekIhVlE/PnE1QT5jV3ZqV2RSfTFWMHFOM2JxfDI4Xzg3Ky1qeUAkdXthSiktKz9pMDxBVDl7
WlpDRDJEU05KWkFSCnpQWD87fUtHJD1WQ2RsIVU3QSNRMlBNbVZDaztyLTQwdkUtaChnN2R4K01j
UUUhQFF9RWh4cTd9WUQlZEYkS1coWQp6QC1BfGdXe0A8fj9CeT88NH5PaElGXms8ViVtbzEtTzhR
Qzw0MWFRTyVIQnZIdHckI1g4dUB5Xk8rU31LeG1BbGMKemAhb1h8VW0taFMwc0E7bUEzeTx+JjZn
O3JpXnYxN2ZrblhrTEVPZ3pvazk3SW56ZXVJMUlUd285byhRYUtqYUFJCnpnWFo/S2dpbE18I3xP
S0F4JGJ1YC1raHM+ZCZGaUNTNlpeJGE3LXM0aUxtVmpCKk9Pb0pWUCtoMndXMUtzZWVHfAp6a3Jv
VHk+OGFlYTVAPDZ6Y2w3amtrJSs3TUd5dDVzSTxoQVQmK0FKdiU9QUJraEBKcndXUjFkOVUxeXM8
QWVzP3YKenllKS1iM0BUemE+PVljSVJUcFJAYUlxO2F3d2xgN1pKdVVVUWVmT35vdVFhI1QmSzVp
Mm4kKlVoSG55bWEhS1ooCnooNytCeGFfVj4yNW4tajUkeXhPRlcqflc3c211NndfUHhtRk00OVpm
dF5mI15fSjFCaEpLMyQ3KklfRk4reSQweAp6SyYpbCNve0xQODMtdkJeeldxeGNgaTFaNCEwRXNK
RFd9SWhpSkxgUlcjSTdIXlEzbyR3KiZQVmJncTNNPE5LYlYKek1tPm93QktycXMxeWpqVVpYJWpj
KGltQ0lZdW5Sa0A8e0xxcSVZUjshRys/LSM7JHlUaFlObVU7cVprbiVfVyU3Cnp7TTglbTRQTm9B
QlBleW9tMEp+KjRMR2J1YkgqPk9rOVQ7bUxqSisram1TJntnKHojT0o4VUg0MWxAUylkbVUpRwp6
bExXJFp3JHJOP3Y7bUYjQzNPWndQKypfSkc2Nihkeng/T1hfdnhVd29kSD09N2YqS3JJaCpLQXdN
UXplfDVAN3AKemVMOWo5IXVwTURXO2QjK3JERyU4dV9XRyFZaXN4ejNsSTVHa01qMm1eeV98NDc3
b0kje0NlaDwoRmojSiljVDF0CnowS2ghJUxmMDtpc3Q5dHw7NnUyWE1TfExLNnw1Mi1OKTlFQUUx
e2VOMG5CSUM3JmRDZ0xtbi0haGJ1ZGZvdU07JQp6KU1hbjFndUpAKnRhZVpMP0xZU3hlNVpQfW4z
QTJwQFlWfUR1PVA8LVFzMDlZJUljfUFeT0ZYR3RXIWVncTx1cC0KempqOFFAUWoyYVhDKlUmKHkp
P29YOGdiWjRgT2BCSEg3SlpqYk5wTWJ3cWFUQD1yWSVFM0ZHZ1A9YXZWPFd7LUN0Cnp0ezVCX2lD
JjAmV014T1o2RWJ2KSZLTnN2RXdlIWRmaGJqKT1JSmotbHpHWGpBVEhiZ192T0RCezh0RDY8MkIl
awphTik/KjdjMkpmS2c4d0IpODB3b0clfDJwKF81VDMlUkA3a3QKCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhYjYyY2IxOGY5N2ZhOWFl
MzFjOGVjZjczOWU3N2I2Nzk3OWY2ZjQ0Li5kODVmOGQ3ZmUwN2M2NzYxMzZlOGQ2Yjk5M2FlMTdm
Y2IyZGJhNDRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTQxNzgsNiArNDE3OCw4IEBAIHdlYmtpdC5vcmcvYi8xMDM0ODcgWyBMaW51
eCBdIGZhc3QvZm9ybXMvcGxhY2Vob2xkZXItcG9zaXRpb24uaHRtbCBbIEltYWdlT25seUZhCiB3
ZWJraXQub3JnL2IvMTA0NzI3IHRyYW5zZm9ybXMvM2QvaGl0LXRlc3RpbmcvYmFja2ZhY2UtaGl0
LXRlc3QuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA0NzI3
IHRyYW5zZm9ybXMvM2QvaGl0LXRlc3RpbmcvYmFja2ZhY2Utbm8tdHJhbnNmb3JtLWhpdC10ZXN0
Lmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCit3ZWJraXQub3JnL2IvMTA0NjE2IFsg
V2luIE1hYyBdIGZhc3QvZ3JhZGllbnRzL2NzczMtbGluZWFyLWFuZ2xlLWdyYWRpZW50cy5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KKwogIyBGYWlsIG9ubHkgb24gV2ViS2l0LW9ubHkg
Y2hlY2tvdXQKIHdlYmtpdC5vcmcvYi8xMDQ1NDggWyBMaW51eCBdIGZhc3QvdGV4dC9oeXBoZW5h
dGUtY2hhcmFjdGVyLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDQ1NDggWyBMaW51
eCBdIGZhc3QvdGV4dC9oeXBoZW5hdGUtZmlyc3Qtd29yZC5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>