<?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>44528</bug_id>
          
          <creation_ts>2010-08-24 09:15:58 -0700</creation_ts>
          <short_desc>Improve FEGaussianBlur algorithm to access image buffer memory directly</short_desc>
          <delta_ts>2014-05-12 05:54:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>68469</blocked>
    
    <blocked>26389</blocked>
    
    <blocked>48174</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alejandro G. Castro">alex</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ariya.hidayat</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>krit</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>268589</commentid>
    <comment_count>0</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-24 09:15:58 -0700</bug_when>
    <thetext>Currently the FEGaussianBlur uses CanvasPixelArrays objects to handle pixel operations, this is very slow, we need to add support to get and handle image buffer memory directly, avoiding copies if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268591</commentid>
    <comment_count>1</comment_count>
      <attachid>65282</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-24 09:17:40 -0700</bug_when>
    <thetext>Created attachment 65282
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268599</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 09:31:57 -0700</bug_when>
    <thetext>Attachment 65282 did not build on mac:
Build output: http://queues.webkit.org/results/3768598</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268602</commentid>
    <comment_count>3</comment_count>
      <attachid>65284</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-24 09:44:32 -0700</bug_when>
    <thetext>Created attachment 65284
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268625</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-24 10:24:02 -0700</bug_when>
    <thetext>Attachment 65284 did not build on chromium:
Build output: http://queues.webkit.org/results/3790427</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268759</commentid>
    <comment_count>5</comment_count>
      <attachid>65314</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-24 13:41:06 -0700</bug_when>
    <thetext>Created attachment 65314
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270377</commentid>
    <comment_count>6</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-27 01:28:25 -0700</bug_when>
    <thetext>After talking to dhyatt I&apos;m going review the patch and create begin/end functions instead of data and dirty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270417</commentid>
    <comment_count>7</comment_count>
      <attachid>65698</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-27 04:37:23 -0700</bug_when>
    <thetext>Created attachment 65698
Proposed patch

Replaced data/makeDirty with beginAccessData/endAccessData and reviewed some of the port functions to avoid a copy, probably someone of each port should check those functions are correct for each technology.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298371</commentid>
    <comment_count>8</comment_count>
      <attachid>65698</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-23 05:22:27 -0700</bug_when>
    <thetext>Comment on attachment 65698
Proposed patch

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

Have you tried to use the original code, but take the WTF::ByteArray instead of the CanvasPixelArray? I&apos;m interested in how much perf win this could bring. Surely not as much as your code, but still. Also it is not needed here to mark the surface as dirty. This is only necessary, if you want to access the context after pixel manipulations. That isn&apos;t the case here or on any other filter effect result.
You also ignored, that some platforms may use unpremultiplied colors. Would be great if we can find a way to manage pixel access with premultiplied and unpremultiplied colors, that would be a win for the other filter effects as well.

I know that you were working on that to make CSS shadows faster on Cairo. But it would still be useful for SVG filter effects (that are supported by WebKitGtk as well).

&gt; WebCore/platform/graphics/wx/ImageBufferWx.cpp:72
&gt; +     notImplemented();

indention wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298799</commentid>
    <comment_count>9</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-10-25 05:13:28 -0700</bug_when>
    <thetext>
Thanks for the review krit.

(In reply to comment #8)
&gt; (From update of attachment 65698 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=65698&amp;action=review
&gt; 
&gt; Have you tried to use the original code, but take the WTF::ByteArray instead of the CanvasPixelArray? I&apos;m interested in how much perf win this could bring. Surely not as much as your code, but still. Also it is not needed here to mark the surface as dirty. This is only necessary, if you want to access the context after pixel manipulations. That isn&apos;t the case here or on any other filter effect result.
&gt; You also ignored, that some platforms may use unpremultiplied colors. Would be great if we can find a way to manage pixel access with premultiplied and unpremultiplied colors, that would be a win for the other filter effects as well.
&gt; 

Yeah, you are right, I&apos;ll try to check if there is any option and check the performance in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298812</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-25 05:46:04 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Thanks for the review krit.
&gt; 
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 65698 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=65698&amp;action=review
&gt; &gt; 
&gt; &gt; Have you tried to use the original code, but take the WTF::ByteArray instead of the CanvasPixelArray? I&apos;m interested in how much perf win this could bring. Surely not as much as your code, but still. Also it is not needed here to mark the surface as dirty. This is only necessary, if you want to access the context after pixel manipulations. That isn&apos;t the case here or on any other filter effect result.
&gt; &gt; You also ignored, that some platforms may use unpremultiplied colors. Would be great if we can find a way to manage pixel access with premultiplied and unpremultiplied colors, that would be a win for the other filter effects as well.
&gt; &gt; 
&gt; 
&gt; Yeah, you are right, I&apos;ll try to check if there is any option and check the performance in that case.

I already checked and tested ByteArray* an unsgined char* and couldn&apos;t see a difference in performance. I took the attached SVG on bug 48174 as reference. On Mac put/ and getImageData just take 0.8% of the time, GaussianBlur algo itself took 96% of the time. On my machine I could reduce the rendering time from 31s to 21s just by eliminating the -&gt; operators and accessing the pixel data via ByteArray instead of CanvasPixelArray. 21s is still to much, but I don&apos;t see huge improvement by implementing direct pixel data access on ImageBuffer right now. Even so I&apos;d support it!

Do you plan to investigate on this more?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298813</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-25 05:48:41 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Do you plan to investigate on this more?

Oh, I forgot to mention that the patch that makes use of ByteArray on FEGaussianBlur is already in trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298814</commentid>
    <comment_count>12</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-10-25 06:03:15 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt;
&gt; [...]
&gt;
&gt; I already checked and tested ByteArray* an unsgined char* and couldn&apos;t see a difference in performance. I took the attached SVG on bug 48174 as reference. On Mac put/ and getImageData just take 0.8% of the time, GaussianBlur algo itself took 96% of the time. On my machine I could reduce the rendering time from 31s to 21s just by eliminating the -&gt; operators and accessing the pixel data via ByteArray instead of CanvasPixelArray. 21s is still to much, but I don&apos;t see huge improvement by implementing direct pixel data access on ImageBuffer right now. Even so I&apos;d support it!
&gt; 
&gt; Do you plan to investigate on this more?
&gt;

Oh, nice, good to know. If you think it makes sense I can spend time doing some profiling and check how we could do it (integrate contextshadow I guess it is an option). Althougth I&apos;m afraid that this operation is not going to be good enough if we can not make it in specific hardware or reduce the amount of blurring area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320739</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-11 19:30:53 -0800</bug_when>
    <thetext>See also bug 50881.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320740</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-11 19:31:46 -0800</bug_when>
    <thetext>Maybe obsoleted by the patch in bug 49907?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320769</commentid>
    <comment_count>15</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-12-12 02:13:56 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Maybe obsoleted by the patch in bug 49907?

Yes, the patch must be reviewed, and not sure if after that patch the time spent in these operations are relevant at all. Anyway the option to use directly the memory buffer is open even after that patch, just need to check if it is interesting or not. Sorry for not doing the testing before, I&apos;ll try to check it soon and close the bug depending on the results, thanks for the heads up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648600</commentid>
    <comment_count>16</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-06-13 17:03:07 -0700</bug_when>
    <thetext>I guess we&apos;ve abandoned this? Perhaps we can just close the bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648955</commentid>
    <comment_count>17</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2012-06-14 01:54:07 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I guess we&apos;ve abandoned this? Perhaps we can just close the bug?

I agree, thanks for the heads-up.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65282</attachid>
            <date>2010-08-24 09:17:40 -0700</date>
            <delta_ts>2010-08-24 09:44:32 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>memory_blur.patch</filename>
            <type>text/plain</type>
            <size>14767</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IDhjYTQ1YjdlMzM2OWRiZDNkNDIxM2ExOGVjODE5ZjNjMTViNTVkODkKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgVHVlIEp1bCAyNyAx
OTowMzoyNCAyMDEwICswMjAwCgogICAgMjAxMC0wOC0xMiAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KICAgIAogICAgICAgICAgICBbR3RrXSB2ZXJ5IHNsb3cgcGFnZSBzY3JvbGxpbmcgb24g
YmlnIC13ZWJraXQtYm94LXNoYWRvdyBhcmVhcwogICAgICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1ODIKICAgIAogICAgICAgICAgICBVc2UgYXJyYXlz
IHRvIGRvIHRoZSBwaXhlbCBvcGVyYXRpb25zIGluIHRoZSBnYXVzc2lhbiBibHVyIGZpbHRlciwK
ICAgICAgICAgICAgdGhpcyB3YXkgd2UgYXZvaWQgdGhlIHNldCBhbmQgZ2V0IGluIHRoZSBvYmpl
Y3RzIG9mIGVhY2ggdmFsdWUuIFdlCiAgICAgICAgICAgIGFsc28gYXZvaWQgdGhlIGNvcGllcyBv
ZiB0aGUgSW1hZ2VzQnVmZmVycyBpbnRvIHRoZSBJbWFnZURhdGFzCiAgICAgICAgICAgIGFkZGlu
ZyBuZXcgQVBJIHRvIHRoZSBJbWFnZUJ1ZmZlciB0byBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIGRh
dGEKICAgICAgICAgICAgaW5zaWRlIHRoZSBidWZmZXIuCiAgICAKICAgICAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmRhdGEpOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1hcmtE
aXJ0eSk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGF0YSk6CiAgICAgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6bWFya0RpcnR5KToKICAgICAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKICAgICAgICAgICAgKFdlYkNv
cmU6OmJveEJsdXIpOgogICAgICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmFwcGx5
KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckhhaWt1
LmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkYXRhKToKICAgICAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjptYXJrRGlydHkpOgogICAgICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmRhdGEpOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1h
cmtEaXJ0eSk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZl
clNraWEuY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRhdGEpOgogICAg
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1hcmtEaXJ0eSk6CiAgICAgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5jZS5jcHA6CiAgICAgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGF0YSk6CiAgICAgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6bWFya0RpcnR5KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9J
bWFnZUJ1ZmZlcld4LmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkYXRh
KToKICAgICAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjptYXJrRGlydHkpOgoKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFjOTNj
My4uY2I2NmYyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wOC0xMiAgQWxlamFuZHJvIEcuIENhc3Ry
byAgPGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbR3RrXSB2ZXJ5IHNsb3cgcGFnZSBzY3JvbGxpbmcgb24gYmlnIC13ZWJr
aXQtYm94LXNoYWRvdyBhcmVhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk1ODIKKworICAgICAgICBVc2UgYXJyYXlzIHRvIGRvIHRoZSBwaXhlbCBv
cGVyYXRpb25zIGluIHRoZSBnYXVzc2lhbiBibHVyIGZpbHRlciwKKyAgICAgICAgdGhpcyB3YXkg
d2UgYXZvaWQgdGhlIHNldCBhbmQgZ2V0IGluIHRoZSBvYmplY3RzIG9mIGVhY2ggdmFsdWUuIFdl
CisgICAgICAgIGFsc28gYXZvaWQgdGhlIGNvcGllcyBvZiB0aGUgSW1hZ2VzQnVmZmVycyBpbnRv
IHRoZSBJbWFnZURhdGFzCisgICAgICAgIGFkZGluZyBuZXcgQVBJIHRvIHRoZSBJbWFnZUJ1ZmZl
ciB0byBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIGRhdGEKKyAgICAgICAgaW5zaWRlIHRoZSBidWZm
ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6Om1hcmtEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6bWFya0RpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmJveEJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmFwcGx5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckhhaWt1LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjptYXJrRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlQnVmZmVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1hcmtEaXJ0eSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1h
cmtEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJX
aW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6bWFya0RpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjptYXJrRGlydHkpOgor
CiAyMDEwLTA4LTI0ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAzYzA1MDhlLi5lMjFmNTRmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC04Myw2ICs4Myw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGdldFVubXVsdGlwbGllZElt
YWdlRGF0YShjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgICAgIFBhc3NSZWZQdHI8SW1hZ2VE
YXRhPiBnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmKSBjb25zdDsKIAor
ICAgICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgICAgIHZvaWQgbWFya0Rp
cnR5KCk7CisKICAgICAgICAgdm9pZCBwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW1hZ2VEYXRh
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCk7
CiAgICAgICAgIHZvaWQgcHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShJbWFnZURhdGEqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KTsKICAgICAg
ICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcAppbmRleCA5NzZkY2I0Li4zNGM3Yzc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE1MCw2ICsx
NTAsMTcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNv
bnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGly
dHlfcmVjdGFuZ2xlIChtX2RhdGEubV9zdXJmYWNlLCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9z
aXplLmhlaWdodCgpKTsKIH0KIAordW5zaWduZWQgY2hhciogSW1hZ2VCdWZmZXI6OmRhdGEoKSBj
b25zdAoreworICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9kYXRhLm1fc3VyZmFjZSk7CisgICAg
cmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9kYXRhLm1fc3VyZmFjZSk7Cit9
CisKK3ZvaWQgSW1hZ2VCdWZmZXI6Om1hcmtEaXJ0eSgpCit7CisgICAgY2Fpcm9fc3VyZmFjZV9t
YXJrX2RpcnR5KG1fZGF0YS5tX3N1cmZhY2UpOworfQorCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVs
dGlwbGllZD4KIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXpl
KQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAK
aW5kZXggZWNiY2Y2MC4uOGYzNWU2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xNzcsNiArMTc3LDE2IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IGNvbnN0CiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgLXJlY3Qu
eCgpLCAtcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKIH0KIAordW5zaWduZWQgY2hhciogSW1h
Z2VCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX2RhdGEubV9kYXRhOworfQor
Cit2b2lkIEltYWdlQnVmZmVyOjptYXJrRGlydHkoKQoreworICAgIC8vIE5vdCBJbXBsZW1lbnRl
ZAorfQorCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KIFBhc3NSZWZQdHI8SW1hZ2VE
YXRhPiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJE
YXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCA0NGJi
NjVhLi4wMGM4MDczIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVHYXVzc2lhbkJsdXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBGRUdhdXNzaWFu
Qmx1cjo6c2V0U3RkRGV2aWF0aW9uWShmbG9hdCB5KQogICAgIG1fc3RkWSA9IHk7CiB9CiAKLXN0
YXRpYyB2b2lkIGJveEJsdXIoQ2FudmFzUGl4ZWxBcnJheSomIHNyY1BpeGVsQXJyYXksIENhbnZh
c1BpeGVsQXJyYXkqJiBkc3RQaXhlbEFycmF5LAorc3RhdGljIHZvaWQgYm94Qmx1cih1bnNpZ25l
ZCBjaGFyKiBzcmNQaXhlbEFycmF5LCB1bnNpZ25lZCBjaGFyKiBkc3RQaXhlbEFycmF5LAogICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBkeCwgaW50IGR4TGVmdCwgaW50IGR4UmlnaHQsIGlu
dCBzdHJpZGUsIGludCBzdHJpZGVMaW5lLCBpbnQgZWZmZWN0V2lkdGgsIGludCBlZmZlY3RIZWln
aHQsIGJvb2wgYWxwaGFJbWFnZSkKIHsKICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGVmZmVjdEhl
aWdodDsgKyt5KSB7CkBAIC04MSwxNiArODEsMTYgQEAgc3RhdGljIHZvaWQgYm94Qmx1cihDYW52
YXNQaXhlbEFycmF5KiYgc3JjUGl4ZWxBcnJheSwgQ2FudmFzUGl4ZWxBcnJheSomIGRzdFBpeGUK
ICAgICAgICAgICAgIC8vIEZpbGwgdGhlIGtlcm5lbAogICAgICAgICAgICAgaW50IG1heEtlcm5l
bFNpemUgPSBzdGQ6Om1pbihkeFJpZ2h0LCBlZmZlY3RXaWR0aCk7CiAgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG1heEtlcm5lbFNpemU7ICsraSkKLSAgICAgICAgICAgICAgICBzdW0g
Kz0gc3JjUGl4ZWxBcnJheS0+Z2V0KGxpbmUgKyBpICogc3RyaWRlICsgY2hhbm5lbCk7CisgICAg
ICAgICAgICAgICAgc3VtICs9IHNyY1BpeGVsQXJyYXlbbGluZSArIGkgKiBzdHJpZGUgKyBjaGFu
bmVsXTsKIAogICAgICAgICAgICAgLy8gQmx1cnJpbmcKICAgICAgICAgICAgIGZvciAoaW50IHgg
PSAwOyB4IDwgZWZmZWN0V2lkdGg7ICsreCkgewogICAgICAgICAgICAgICAgIGludCBwaXhlbEJ5
dGVPZmZzZXQgPSBsaW5lICsgeCAqIHN0cmlkZSArIGNoYW5uZWw7Ci0gICAgICAgICAgICAgICAg
ZHN0UGl4ZWxBcnJheS0+c2V0KHBpeGVsQnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oc3VtIC8gZHgpKTsKKyAgICAgICAgICAgICAgICBkc3RQaXhlbEFycmF5W3BpeGVsQnl0
ZU9mZnNldF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdW0gLyBkeCk7CiAgICAgICAg
ICAgICAgICAgaWYgKHggPj0gZHhMZWZ0KQotICAgICAgICAgICAgICAgICAgICBzdW0gLT0gc3Jj
UGl4ZWxBcnJheS0+Z2V0KHBpeGVsQnl0ZU9mZnNldCAtIGR4TGVmdCAqIHN0cmlkZSk7CisgICAg
ICAgICAgICAgICAgICAgIHN1bSAtPSBzcmNQaXhlbEFycmF5W3BpeGVsQnl0ZU9mZnNldCAtIGR4
TGVmdCAqIHN0cmlkZV07CiAgICAgICAgICAgICAgICAgaWYgKHggKyBkeFJpZ2h0IDwgZWZmZWN0
V2lkdGgpCi0gICAgICAgICAgICAgICAgICAgIHN1bSArPSBzcmNQaXhlbEFycmF5LT5nZXQocGl4
ZWxCeXRlT2Zmc2V0ICsgZHhSaWdodCAqIHN0cmlkZSk7CisgICAgICAgICAgICAgICAgICAgIHN1
bSArPSBzcmNQaXhlbEFycmF5W3BpeGVsQnl0ZU9mZnNldCArIGR4UmlnaHQgKiBzdHJpZGVdOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGFscGhhSW1hZ2UpIC8vIFNvdXJjZSBpbWFn
ZSBpcyBibGFjaywgaXQganVzdCBoYXMgZGlmZmVyZW50IGFscGhhIHZhbHVlcwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTM4LDEwICsxMzgsMTAgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6
YXBwbHkoRmlsdGVyKiBmaWx0ZXIpCiAgICAgc2V0SXNBbHBoYUltYWdlKG1faW4tPmlzQWxwaGFJ
bWFnZSgpKTsKIAogICAgIEludFJlY3QgZWZmZWN0RHJhd2luZ1JlY3QgPSBjYWxjdWxhdGVEcmF3
aW5nSW50UmVjdChtX2luLT5zY2FsZWRTdWJSZWdpb24oKSk7Ci0gICAgUmVmUHRyPEltYWdlRGF0
YT4gc3JjSW1hZ2VEYXRhKG1faW4tPnJlc3VsdEltYWdlKCktPmdldFByZW11bHRpcGxpZWRJbWFn
ZURhdGEoZWZmZWN0RHJhd2luZ1JlY3QpKTsKICAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2lu
dCgpLCByZXN1bHRJbWFnZSgpLT5zaXplKCkpOwogCiAgICAgaWYgKCFtX3N0ZFggJiYgIW1fc3Rk
WSkgeworICAgICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBzcmNJbWFnZURhdGEobV9pbi0+cmVzdWx0
SW1hZ2UoKS0+Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShlZmZlY3REcmF3aW5nUmVjdCkpOwog
ICAgICAgICByZXN1bHRJbWFnZSgpLT5wdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKHNyY0ltYWdl
RGF0YS5nZXQoKSwgaW1hZ2VSZWN0LCBJbnRQb2ludCgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTE1NCwxMCArMTU0LDEyIEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5KEZpbHRl
ciogZmlsdGVyKQogICAgIGlmIChtX3N0ZFkpCiAgICAgICAgIGtlcm5lbFNpemVZID0gbWF4KDJV
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZmxvb3IobV9zdGRZICogZmlsdGVyLT5maWx0ZXJSZXNv
bHV0aW9uKCkuaGVpZ2h0KCkgKiBnR2F1c3NpYW5LZXJuZWxGYWN0b3IgKyAwLjVmKSkpOwogCi0g
ICAgQ2FudmFzUGl4ZWxBcnJheSogc3JjUGl4ZWxBcnJheShzcmNJbWFnZURhdGEtPmRhdGEoKSk7
CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gdG1wSW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUo
aW1hZ2VSZWN0LndpZHRoKCksIGltYWdlUmVjdC5oZWlnaHQoKSk7CiAgICAgQ2FudmFzUGl4ZWxB
cnJheSogdG1wUGl4ZWxBcnJheSh0bXBJbWFnZURhdGEtPmRhdGEoKSk7CiAKKyAgICB1bnNpZ25l
ZCBjaGFyKiByZXN1bHQgPSBtX2luLT5yZXN1bHRJbWFnZSgpLT5kYXRhKCk7CisgICAgdW5zaWdu
ZWQgY2hhciogdG1wID0gdG1wUGl4ZWxBcnJheS0+ZGF0YSgpLT5kYXRhKCk7CisKICAgICBpbnQg
c3RyaWRlID0gNCAqIGltYWdlUmVjdC53aWR0aCgpOwogICAgIGludCBkeExlZnQgPSAwOwogICAg
IGludCBkeFJpZ2h0ID0gMDsKQEAgLTE2NiwyNCArMTY4LDI0IEBAIHZvaWQgRkVHYXVzc2lhbkJs
dXI6OmFwcGx5KEZpbHRlciogZmlsdGVyKQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytp
KSB7CiAgICAgICAgIGlmIChrZXJuZWxTaXplWCkgewogICAgICAgICAgICAga2VybmVsUG9zaXRp
b24oaSwga2VybmVsU2l6ZVgsIGR4TGVmdCwgZHhSaWdodCk7Ci0gICAgICAgICAgICBib3hCbHVy
KHNyY1BpeGVsQXJyYXksIHRtcFBpeGVsQXJyYXksIGtlcm5lbFNpemVYLCBkeExlZnQsIGR4Umln
aHQsIDQsIHN0cmlkZSwgaW1hZ2VSZWN0LndpZHRoKCksIGltYWdlUmVjdC5oZWlnaHQoKSwgaXNB
bHBoYUltYWdlKCkpOworICAgICAgICAgICAgYm94Qmx1cihyZXN1bHQsIHRtcCwga2VybmVsU2l6
ZVgsIGR4TGVmdCwgZHhSaWdodCwgNCwgc3RyaWRlLCBpbWFnZVJlY3Qud2lkdGgoKSwgaW1hZ2VS
ZWN0LmhlaWdodCgpLCBpc0FscGhhSW1hZ2UoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBDYW52YXNQaXhlbEFycmF5KiBhdXhQaXhlbEFycmF5ID0gdG1wUGl4ZWxBcnJheTsKLSAg
ICAgICAgICAgIHRtcFBpeGVsQXJyYXkgPSBzcmNQaXhlbEFycmF5OwotICAgICAgICAgICAgc3Jj
UGl4ZWxBcnJheSA9IGF1eFBpeGVsQXJyYXk7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBh
dXggPSB0bXA7CisgICAgICAgICAgICB0bXAgPSByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQg
PSBhdXg7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoa2VybmVsU2l6ZVkpIHsKICAgICAgICAg
ICAgIGtlcm5lbFBvc2l0aW9uKGksIGtlcm5lbFNpemVZLCBkeUxlZnQsIGR5UmlnaHQpOwotICAg
ICAgICAgICAgYm94Qmx1cih0bXBQaXhlbEFycmF5LCBzcmNQaXhlbEFycmF5LCBrZXJuZWxTaXpl
WSwgZHlMZWZ0LCBkeVJpZ2h0LCBzdHJpZGUsIDQsIGltYWdlUmVjdC5oZWlnaHQoKSwgaW1hZ2VS
ZWN0LndpZHRoKCksIGlzQWxwaGFJbWFnZSgpKTsKKyAgICAgICAgICAgIGJveEJsdXIodG1wLCAo
aSAhPSAyKSA/IHJlc3VsdCA6IHJlc3VsdEltYWdlKCktPmRhdGEoKSwga2VybmVsU2l6ZVksIGR5
TGVmdCwgZHlSaWdodCwgc3RyaWRlLCA0LCBpbWFnZVJlY3QuaGVpZ2h0KCksIGltYWdlUmVjdC53
aWR0aCgpLCBpc0FscGhhSW1hZ2UoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBD
YW52YXNQaXhlbEFycmF5KiBhdXhQaXhlbEFycmF5ID0gdG1wUGl4ZWxBcnJheTsKLSAgICAgICAg
ICAgIHRtcFBpeGVsQXJyYXkgPSBzcmNQaXhlbEFycmF5OwotICAgICAgICAgICAgc3JjUGl4ZWxB
cnJheSA9IGF1eFBpeGVsQXJyYXk7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBhdXggPSB0
bXA7CisgICAgICAgICAgICB0bXAgPSByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQgPSBhdXg7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXN1bHRJbWFnZSgpLT5wdXRQcmVtdWx0aXBsaWVk
SW1hZ2VEYXRhKHNyY0ltYWdlRGF0YS5nZXQoKSwgaW1hZ2VSZWN0LCBJbnRQb2ludCgpKTsKKyAg
ICByZXN1bHRJbWFnZSgpLT5tYXJrRGlydHkoKTsKIH0KIAogdm9pZCBGRUdhdXNzaWFuQmx1cjo6
ZHVtcCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ltYWdl
QnVmZmVySGFpa3UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1
ZmZlckhhaWt1LmNwcAppbmRleCBjNWRlNDg1Li5lZGVmMmViIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ltYWdlQnVmZmVySGFpa3UuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VCdWZmZXJIYWlrdS5jcHAKQEAgLTIwNiw2
ICsyMDYsMTcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnZlcnRUb0ludGVybmFsRGF0YShjb25z
dCB1aW50OCogc291cmNlUm93cywgdW5zaWduZWQgc291cmMKICAgICB9CiB9CiAKK3Vuc2lnbmVk
IGNoYXIqIEltYWdlQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBtX2RhdGEubV92aWV3LlN5
bmMoKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyICo+KGltYWdl
RGF0YS5tX2JpdG1hcC5CaXRzKCkpOworfQorCit2b2lkIEltYWdlQnVmZmVyOjptYXJrRGlydHko
KQoreworICAgIC8vIE5vdCBJbXBsZW1lbnRlZAorfQorCiBzdGF0aWMgUGFzc1JlZlB0cjxJbWFn
ZURhdGE+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZl
ckRhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBwcmVtdWx0aXBsaWVk
KQogewogICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0
ZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKaW5kZXggMTFjYTM3Ny4uYWMwYjcwMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCkBAIC0xNzMs
NiArMTczLDIzIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFj
ZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1VwVGFibGUpCiAgICAgICAgIG1fZGF0YS5tX3BhaW50
ZXItPmJlZ2luKCZtX2RhdGEubV9waXhtYXApOwogfQogCit1bnNpZ25lZCBjaGFyKiBJbWFnZUJ1
ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgUUltYWdlIGltYWdlID0gbV9kYXRhLm1fcGl4bWFw
LnRvSW1hZ2UoKS5jb252ZXJ0VG9Gb3JtYXQoUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRp
cGxpZWQpOworI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQorICAg
IHVuc2lnbmVkIGNoYXIqIGJpdHMgPSBpbWFnZS5jb25zdEJpdHMoKTsKKyNlbHNlCisgICAgdW5z
aWduZWQgY2hhciogYml0cyA9IGltYWdlLmJpdHMoKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGJp
dHM7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXI6Om1hcmtEaXJ0eSgpCit7CisgICAgLy8gTm90IElt
cGxlbWVudGVkCit9CisKIHRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVkPgogUGFzc1JlZlB0
cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFn
ZUJ1ZmZlckRhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKaW5kZXgg
MTljZjBmMC4uYmQ5MzQ4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKQEAgLTEzOCw2ICsxMzgsMTggQEAgdm9pZCBJbWFnZUJ1
ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+JiBsb29r
VXBUYWJsZSkKICAgICB9CiB9CiAKKwordW5zaWduZWQgY2hhciogSW1hZ2VCdWZmZXI6OmRhdGEo
KSBjb25zdAoreworICAgIGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPnN5bmNTb2Z0d2Fy
ZUNhbnZhcygpOworICAgIHJldHVybiBtX2RhdGEubV9kYXRhOworfQorCit2b2lkIEltYWdlQnVm
ZmVyOjptYXJrRGlydHkoKQoreworICAgIC8vIE5vdCBJbXBsZW1lbnRlZAorfQorCiB0ZW1wbGF0
ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgU2tCaXRtYXAmIGJpdG1hcCwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luY2UuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbmNlLmNwcApp
bmRleCAxYTI1ZjRmLi4wZjYzZWM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5jZS5jcHAKQEAgLTEwMyw2ICsxMDMsMTYgQEAgSW1h
Z2UqIEltYWdlQnVmZmVyOjppbWFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7
CiB9CiAKK3Vuc2lnbmVkIGNoYXIqIEltYWdlQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZGF0YS5tX2JpdG1hcC0+Ynl0ZXMo
KSk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXI6Om1hcmtEaXJ0eSgpCit7CisgICAgLy8gTm90IElt
cGxlbWVudGVkCit9CisKIHRlbXBsYXRlIDxib29sIHByZW11bHRpcGxpZWQ+IFBhc3NSZWZQdHI8
SW1hZ2VEYXRhPgogc3RhdGljIGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBTaGFyZWRCaXRtYXAqIGJpdG1hcCkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3d4L0ltYWdlQnVmZmVyV3guY3BwCmluZGV4IDI1MjJjYmQuLjgyYWE4NGYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcApAQCAtNjYsNiArNjYs
MTggQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVk
SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QKICAgICByZXR1cm4gMDsKIH0KIAorCit1bnNp
Z25lZCBjaGFyKiBJbWFnZUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXI6Om1hcmtEaXJ0eSgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5t
dWx0aXBsaWVkSW1hZ2VEYXRhKEltYWdlRGF0YSogc291cmNlLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65284</attachid>
            <date>2010-08-24 09:44:32 -0700</date>
            <delta_ts>2010-08-24 13:41:06 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>memory_blur.patch</filename>
            <type>text/plain</type>
            <size>14801</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IGY1NmQ3MjI2NGJmZjdjMzc2Zjg3N2ZlNjBmNTBiOTI1NTMzYjE2NDMKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgVHVlIEp1bCAyNyAx
OTowMzoyNCAyMDEwICswMjAwCgogICAgMjAxMC0wOC0xMiAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KICAgIAogICAgICAgICAgICBbR3RrXSB2ZXJ5IHNsb3cgcGFnZSBzY3JvbGxpbmcgb24g
YmlnIC13ZWJraXQtYm94LXNoYWRvdyBhcmVhcwogICAgICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1ODIKICAgIAogICAgICAgICAgICBVc2UgYXJyYXlz
IHRvIGRvIHRoZSBwaXhlbCBvcGVyYXRpb25zIGluIHRoZSBnYXVzc2lhbiBibHVyIGZpbHRlciwK
ICAgICAgICAgICAgdGhpcyB3YXkgd2UgYXZvaWQgdGhlIHNldCBhbmQgZ2V0IGluIHRoZSBvYmpl
Y3RzIG9mIGVhY2ggdmFsdWUuIFdlCiAgICAgICAgICAgIGFsc28gYXZvaWQgdGhlIGNvcGllcyBv
ZiB0aGUgSW1hZ2VzQnVmZmVycyBpbnRvIHRoZSBJbWFnZURhdGFzCiAgICAgICAgICAgIGFkZGlu
ZyBuZXcgQVBJIHRvIHRoZSBJbWFnZUJ1ZmZlciB0byBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIGRh
dGEKICAgICAgICAgICAgaW5zaWRlIHRoZSBidWZmZXIuCiAgICAKICAgICAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmRhdGEpOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1hcmtE
aXJ0eSk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGF0YSk6CiAgICAgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6bWFya0RpcnR5KToKICAgICAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKICAgICAgICAgICAgKFdlYkNv
cmU6OmJveEJsdXIpOgogICAgICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmFwcGx5
KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckhhaWt1
LmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkYXRhKToKICAgICAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjptYXJrRGlydHkpOgogICAgICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmRhdGEpOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1h
cmtEaXJ0eSk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZl
clNraWEuY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRhdGEpOgogICAg
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1hcmtEaXJ0eSk6CiAgICAgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5jZS5jcHA6CiAgICAgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGF0YSk6CiAgICAgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6bWFya0RpcnR5KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9J
bWFnZUJ1ZmZlcld4LmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkYXRh
KToKICAgICAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjptYXJrRGlydHkpOgoKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFjOTNj
My4uY2I2NmYyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wOC0xMiAgQWxlamFuZHJvIEcuIENhc3Ry
byAgPGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbR3RrXSB2ZXJ5IHNsb3cgcGFnZSBzY3JvbGxpbmcgb24gYmlnIC13ZWJr
aXQtYm94LXNoYWRvdyBhcmVhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk1ODIKKworICAgICAgICBVc2UgYXJyYXlzIHRvIGRvIHRoZSBwaXhlbCBv
cGVyYXRpb25zIGluIHRoZSBnYXVzc2lhbiBibHVyIGZpbHRlciwKKyAgICAgICAgdGhpcyB3YXkg
d2UgYXZvaWQgdGhlIHNldCBhbmQgZ2V0IGluIHRoZSBvYmplY3RzIG9mIGVhY2ggdmFsdWUuIFdl
CisgICAgICAgIGFsc28gYXZvaWQgdGhlIGNvcGllcyBvZiB0aGUgSW1hZ2VzQnVmZmVycyBpbnRv
IHRoZSBJbWFnZURhdGFzCisgICAgICAgIGFkZGluZyBuZXcgQVBJIHRvIHRoZSBJbWFnZUJ1ZmZl
ciB0byBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIGRhdGEKKyAgICAgICAgaW5zaWRlIHRoZSBidWZm
ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6Om1hcmtEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6bWFya0RpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmJveEJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmFwcGx5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckhhaWt1LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjptYXJrRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlQnVmZmVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1hcmtEaXJ0eSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1h
cmtEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJX
aW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6bWFya0RpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjptYXJrRGlydHkpOgor
CiAyMDEwLTA4LTI0ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAzYzA1MDhlLi5lMjFmNTRmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC04Myw2ICs4Myw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGdldFVubXVsdGlwbGllZElt
YWdlRGF0YShjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgICAgIFBhc3NSZWZQdHI8SW1hZ2VE
YXRhPiBnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmKSBjb25zdDsKIAor
ICAgICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgICAgIHZvaWQgbWFya0Rp
cnR5KCk7CisKICAgICAgICAgdm9pZCBwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW1hZ2VEYXRh
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCk7
CiAgICAgICAgIHZvaWQgcHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShJbWFnZURhdGEqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KTsKICAgICAg
ICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcAppbmRleCA5NzZkY2I0Li4zNGM3Yzc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE1MCw2ICsx
NTAsMTcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNv
bnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGly
dHlfcmVjdGFuZ2xlIChtX2RhdGEubV9zdXJmYWNlLCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9z
aXplLmhlaWdodCgpKTsKIH0KIAordW5zaWduZWQgY2hhciogSW1hZ2VCdWZmZXI6OmRhdGEoKSBj
b25zdAoreworICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9kYXRhLm1fc3VyZmFjZSk7CisgICAg
cmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9kYXRhLm1fc3VyZmFjZSk7Cit9
CisKK3ZvaWQgSW1hZ2VCdWZmZXI6Om1hcmtEaXJ0eSgpCit7CisgICAgY2Fpcm9fc3VyZmFjZV9t
YXJrX2RpcnR5KG1fZGF0YS5tX3N1cmZhY2UpOworfQorCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVs
dGlwbGllZD4KIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXpl
KQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAK
aW5kZXggZWNiY2Y2MC4uZDAyMDIzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xNzcsNiArMTc3LDE2IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IGNvbnN0CiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgLXJlY3Qu
eCgpLCAtcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKIH0KIAordW5zaWduZWQgY2hhciogSW1h
Z2VCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVu
c2lnbmVkIGNoYXIqPihtX2RhdGEubV9kYXRhKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlcjo6bWFy
a0RpcnR5KCkKK3sKKyAgICAvLyBOb3QgSW1wbGVtZW50ZWQKK30KKwogdGVtcGxhdGUgPE11bHRp
cGx5IG11bHRpcGxpZWQ+CiBQYXNzUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBJ
bnRTaXplJiBzaXplKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggNDRiYjY1YS4uMDBjODA3MyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3Bw
CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblko
ZmxvYXQgeSkKICAgICBtX3N0ZFkgPSB5OwogfQogCi1zdGF0aWMgdm9pZCBib3hCbHVyKENhbnZh
c1BpeGVsQXJyYXkqJiBzcmNQaXhlbEFycmF5LCBDYW52YXNQaXhlbEFycmF5KiYgZHN0UGl4ZWxB
cnJheSwKK3N0YXRpYyB2b2lkIGJveEJsdXIodW5zaWduZWQgY2hhciogc3JjUGl4ZWxBcnJheSwg
dW5zaWduZWQgY2hhciogZHN0UGl4ZWxBcnJheSwKICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgZHgsIGludCBkeExlZnQsIGludCBkeFJpZ2h0LCBpbnQgc3RyaWRlLCBpbnQgc3RyaWRlTGlu
ZSwgaW50IGVmZmVjdFdpZHRoLCBpbnQgZWZmZWN0SGVpZ2h0LCBib29sIGFscGhhSW1hZ2UpCiB7
CiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBlZmZlY3RIZWlnaHQ7ICsreSkgewpAQCAtODEsMTYg
KzgxLDE2IEBAIHN0YXRpYyB2b2lkIGJveEJsdXIoQ2FudmFzUGl4ZWxBcnJheSomIHNyY1BpeGVs
QXJyYXksIENhbnZhc1BpeGVsQXJyYXkqJiBkc3RQaXhlCiAgICAgICAgICAgICAvLyBGaWxsIHRo
ZSBrZXJuZWwKICAgICAgICAgICAgIGludCBtYXhLZXJuZWxTaXplID0gc3RkOjptaW4oZHhSaWdo
dCwgZWZmZWN0V2lkdGgpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhLZXJu
ZWxTaXplOyArK2kpCi0gICAgICAgICAgICAgICAgc3VtICs9IHNyY1BpeGVsQXJyYXktPmdldChs
aW5lICsgaSAqIHN0cmlkZSArIGNoYW5uZWwpOworICAgICAgICAgICAgICAgIHN1bSArPSBzcmNQ
aXhlbEFycmF5W2xpbmUgKyBpICogc3RyaWRlICsgY2hhbm5lbF07CiAKICAgICAgICAgICAgIC8v
IEJsdXJyaW5nCiAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGVmZmVjdFdpZHRoOyAr
K3gpIHsKICAgICAgICAgICAgICAgICBpbnQgcGl4ZWxCeXRlT2Zmc2V0ID0gbGluZSArIHggKiBz
dHJpZGUgKyBjaGFubmVsOwotICAgICAgICAgICAgICAgIGRzdFBpeGVsQXJyYXktPnNldChwaXhl
bEJ5dGVPZmZzZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHN1bSAvIGR4KSk7CisgICAg
ICAgICAgICAgICAgZHN0UGl4ZWxBcnJheVtwaXhlbEJ5dGVPZmZzZXRdID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oc3VtIC8gZHgpOwogICAgICAgICAgICAgICAgIGlmICh4ID49IGR4TGVm
dCkKLSAgICAgICAgICAgICAgICAgICAgc3VtIC09IHNyY1BpeGVsQXJyYXktPmdldChwaXhlbEJ5
dGVPZmZzZXQgLSBkeExlZnQgKiBzdHJpZGUpOworICAgICAgICAgICAgICAgICAgICBzdW0gLT0g
c3JjUGl4ZWxBcnJheVtwaXhlbEJ5dGVPZmZzZXQgLSBkeExlZnQgKiBzdHJpZGVdOwogICAgICAg
ICAgICAgICAgIGlmICh4ICsgZHhSaWdodCA8IGVmZmVjdFdpZHRoKQotICAgICAgICAgICAgICAg
ICAgICBzdW0gKz0gc3JjUGl4ZWxBcnJheS0+Z2V0KHBpeGVsQnl0ZU9mZnNldCArIGR4UmlnaHQg
KiBzdHJpZGUpOworICAgICAgICAgICAgICAgICAgICBzdW0gKz0gc3JjUGl4ZWxBcnJheVtwaXhl
bEJ5dGVPZmZzZXQgKyBkeFJpZ2h0ICogc3RyaWRlXTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChhbHBoYUltYWdlKSAvLyBTb3VyY2UgaW1hZ2UgaXMgYmxhY2ssIGl0IGp1c3QgaGFz
IGRpZmZlcmVudCBhbHBoYSB2YWx1ZXMKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEzOCwx
MCArMTM4LDEwIEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5KEZpbHRlciogZmlsdGVyKQog
ICAgIHNldElzQWxwaGFJbWFnZShtX2luLT5pc0FscGhhSW1hZ2UoKSk7CiAKICAgICBJbnRSZWN0
IGVmZmVjdERyYXdpbmdSZWN0ID0gY2FsY3VsYXRlRHJhd2luZ0ludFJlY3QobV9pbi0+c2NhbGVk
U3ViUmVnaW9uKCkpOwotICAgIFJlZlB0cjxJbWFnZURhdGE+IHNyY0ltYWdlRGF0YShtX2luLT5y
ZXN1bHRJbWFnZSgpLT5nZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGVmZmVjdERyYXdpbmdSZWN0
KSk7CiAgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgcmVzdWx0SW1hZ2UoKS0+c2l6
ZSgpKTsKIAogICAgIGlmICghbV9zdGRYICYmICFtX3N0ZFkpIHsKKyAgICAgICAgUmVmUHRyPElt
YWdlRGF0YT4gc3JjSW1hZ2VEYXRhKG1faW4tPnJlc3VsdEltYWdlKCktPmdldFByZW11bHRpcGxp
ZWRJbWFnZURhdGEoZWZmZWN0RHJhd2luZ1JlY3QpKTsKICAgICAgICAgcmVzdWx0SW1hZ2UoKS0+
cHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShzcmNJbWFnZURhdGEuZ2V0KCksIGltYWdlUmVjdCwg
SW50UG9pbnQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNTQsMTAgKzE1NCwxMiBA
QCB2b2lkIEZFR2F1c3NpYW5CbHVyOjphcHBseShGaWx0ZXIqIGZpbHRlcikKICAgICBpZiAobV9z
dGRZKQogICAgICAgICBrZXJuZWxTaXplWSA9IG1heCgyVSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGZsb29yKG1fc3RkWSAqIGZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpICogZ0dh
dXNzaWFuS2VybmVsRmFjdG9yICsgMC41ZikpKTsKIAotICAgIENhbnZhc1BpeGVsQXJyYXkqIHNy
Y1BpeGVsQXJyYXkoc3JjSW1hZ2VEYXRhLT5kYXRhKCkpOwogICAgIFJlZlB0cjxJbWFnZURhdGE+
IHRtcEltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKGltYWdlUmVjdC53aWR0aCgpLCBpbWFn
ZVJlY3QuaGVpZ2h0KCkpOwogICAgIENhbnZhc1BpeGVsQXJyYXkqIHRtcFBpeGVsQXJyYXkodG1w
SW1hZ2VEYXRhLT5kYXRhKCkpOwogCisgICAgdW5zaWduZWQgY2hhciogcmVzdWx0ID0gbV9pbi0+
cmVzdWx0SW1hZ2UoKS0+ZGF0YSgpOworICAgIHVuc2lnbmVkIGNoYXIqIHRtcCA9IHRtcFBpeGVs
QXJyYXktPmRhdGEoKS0+ZGF0YSgpOworCiAgICAgaW50IHN0cmlkZSA9IDQgKiBpbWFnZVJlY3Qu
d2lkdGgoKTsKICAgICBpbnQgZHhMZWZ0ID0gMDsKICAgICBpbnQgZHhSaWdodCA9IDA7CkBAIC0x
NjYsMjQgKzE2OCwyNCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjphcHBseShGaWx0ZXIqIGZpbHRl
cikKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgewogICAgICAgICBpZiAoa2VybmVs
U2l6ZVgpIHsKICAgICAgICAgICAgIGtlcm5lbFBvc2l0aW9uKGksIGtlcm5lbFNpemVYLCBkeExl
ZnQsIGR4UmlnaHQpOwotICAgICAgICAgICAgYm94Qmx1cihzcmNQaXhlbEFycmF5LCB0bXBQaXhl
bEFycmF5LCBrZXJuZWxTaXplWCwgZHhMZWZ0LCBkeFJpZ2h0LCA0LCBzdHJpZGUsIGltYWdlUmVj
dC53aWR0aCgpLCBpbWFnZVJlY3QuaGVpZ2h0KCksIGlzQWxwaGFJbWFnZSgpKTsKKyAgICAgICAg
ICAgIGJveEJsdXIocmVzdWx0LCB0bXAsIGtlcm5lbFNpemVYLCBkeExlZnQsIGR4UmlnaHQsIDQs
IHN0cmlkZSwgaW1hZ2VSZWN0LndpZHRoKCksIGltYWdlUmVjdC5oZWlnaHQoKSwgaXNBbHBoYUlt
YWdlKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQ2FudmFzUGl4ZWxBcnJheSog
YXV4UGl4ZWxBcnJheSA9IHRtcFBpeGVsQXJyYXk7Ci0gICAgICAgICAgICB0bXBQaXhlbEFycmF5
ID0gc3JjUGl4ZWxBcnJheTsKLSAgICAgICAgICAgIHNyY1BpeGVsQXJyYXkgPSBhdXhQaXhlbEFy
cmF5OworICAgICAgICAgICAgdW5zaWduZWQgY2hhciogYXV4ID0gdG1wOworICAgICAgICAgICAg
dG1wID0gcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0ID0gYXV4OwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGtlcm5lbFNpemVZKSB7CiAgICAgICAgICAgICBrZXJuZWxQb3NpdGlvbihpLCBr
ZXJuZWxTaXplWSwgZHlMZWZ0LCBkeVJpZ2h0KTsKLSAgICAgICAgICAgIGJveEJsdXIodG1wUGl4
ZWxBcnJheSwgc3JjUGl4ZWxBcnJheSwga2VybmVsU2l6ZVksIGR5TGVmdCwgZHlSaWdodCwgc3Ry
aWRlLCA0LCBpbWFnZVJlY3QuaGVpZ2h0KCksIGltYWdlUmVjdC53aWR0aCgpLCBpc0FscGhhSW1h
Z2UoKSk7CisgICAgICAgICAgICBib3hCbHVyKHRtcCwgKGkgIT0gMikgPyByZXN1bHQgOiByZXN1
bHRJbWFnZSgpLT5kYXRhKCksIGtlcm5lbFNpemVZLCBkeUxlZnQsIGR5UmlnaHQsIHN0cmlkZSwg
NCwgaW1hZ2VSZWN0LmhlaWdodCgpLCBpbWFnZVJlY3Qud2lkdGgoKSwgaXNBbHBoYUltYWdlKCkp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQ2FudmFzUGl4ZWxBcnJheSogYXV4UGl4
ZWxBcnJheSA9IHRtcFBpeGVsQXJyYXk7Ci0gICAgICAgICAgICB0bXBQaXhlbEFycmF5ID0gc3Jj
UGl4ZWxBcnJheTsKLSAgICAgICAgICAgIHNyY1BpeGVsQXJyYXkgPSBhdXhQaXhlbEFycmF5Owor
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciogYXV4ID0gdG1wOworICAgICAgICAgICAgdG1wID0g
cmVzdWx0OworICAgICAgICAgICAgcmVzdWx0ID0gYXV4OwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgcmVzdWx0SW1hZ2UoKS0+cHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShzcmNJbWFnZURhdGEu
Z2V0KCksIGltYWdlUmVjdCwgSW50UG9pbnQoKSk7CisgICAgcmVzdWx0SW1hZ2UoKS0+bWFya0Rp
cnR5KCk7CiB9CiAKIHZvaWQgRkVHYXVzc2lhbkJsdXI6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckhhaWt1LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VCdWZmZXJIYWlrdS5jcHAKaW5kZXggYzVk
ZTQ4NS4uZWRlZjJlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlr
dS9JbWFnZUJ1ZmZlckhhaWt1LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hh
aWt1L0ltYWdlQnVmZmVySGFpa3UuY3BwCkBAIC0yMDYsNiArMjA2LDE3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBjb252ZXJ0VG9JbnRlcm5hbERhdGEoY29uc3QgdWludDgqIHNvdXJjZVJvd3MsIHVu
c2lnbmVkIHNvdXJjCiAgICAgfQogfQogCit1bnNpZ25lZCBjaGFyKiBJbWFnZUJ1ZmZlcjo6ZGF0
YSgpIGNvbnN0Cit7CisgICAgbV9kYXRhLm1fdmlldy5TeW5jKCk7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhciAqPihpbWFnZURhdGEubV9iaXRtYXAuQml0cygpKTsK
K30KKwordm9pZCBJbWFnZUJ1ZmZlcjo6bWFya0RpcnR5KCkKK3sKKyAgICAvLyBOb3QgSW1wbGVt
ZW50ZWQKK30KKwogc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbGllZCkKIHsKICAgICBQYXNzUmVmUHRyPElt
YWdlRGF0YT4gcmVzdWx0ID0gSW1hZ2VEYXRhOjpjcmVhdGUocmVjdC53aWR0aCgpLCByZWN0Lmhl
aWdodCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VC
dWZmZXJRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQu
Y3BwCmluZGV4IDExY2EzNzcuLmFjMGI3MDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcApAQCAtMTczLDYgKzE3MywyMyBAQCB2b2lkIEltYWdl
QnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxv
b2tVcFRhYmxlKQogICAgICAgICBtX2RhdGEubV9wYWludGVyLT5iZWdpbigmbV9kYXRhLm1fcGl4
bWFwKTsKIH0KIAordW5zaWduZWQgY2hhciogSW1hZ2VCdWZmZXI6OmRhdGEoKSBjb25zdAorewor
ICAgIFFJbWFnZSBpbWFnZSA9IG1fZGF0YS5tX3BpeG1hcC50b0ltYWdlKCkuY29udmVydFRvRm9y
bWF0KFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkKTsKKyNpZiBRVF9WRVJTSU9O
ID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKKyAgICB1bnNpZ25lZCBjaGFyKiBiaXRzID0g
aW1hZ2UuY29uc3RCaXRzKCk7CisjZWxzZQorICAgIHVuc2lnbmVkIGNoYXIqIGJpdHMgPSBpbWFn
ZS5iaXRzKCk7CisjZW5kaWYKKworICAgIHJldHVybiBiaXRzOworfQorCit2b2lkIEltYWdlQnVm
ZmVyOjptYXJrRGlydHkoKQoreworICAgIC8vIE5vdCBJbXBsZW1lbnRlZAorfQorCiB0ZW1wbGF0
ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBpbWFnZURhdGEs
IGNvbnN0IEludFNpemUmIHNpemUpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCmluZGV4IDE5Y2YwZjAuLmJkOTM0OGEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3Bw
CkBAIC0xMzgsNiArMTM4LDE4IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3Jt
Q29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1VwVGFibGUpCiAgICAgfQogfQogCisK
K3Vuc2lnbmVkIGNoYXIqIEltYWdlQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBjb250ZXh0
KCktPnBsYXRmb3JtQ29udGV4dCgpLT5zeW5jU29mdHdhcmVDYW52YXMoKTsKKyAgICByZXR1cm4g
bV9kYXRhLm1fZGF0YTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlcjo6bWFya0RpcnR5KCkKK3sKKyAg
ICAvLyBOb3QgSW1wbGVtZW50ZWQKK30KKwogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+
CiBQYXNzUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBJbnRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbmNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5jZS5jcHAKaW5kZXggMWEyNWY0Zi4uMGY2M2VjOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldp
bmNlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVy
V2luY2UuY3BwCkBAIC0xMDMsNiArMTAzLDE2IEBAIEltYWdlKiBJbWFnZUJ1ZmZlcjo6aW1hZ2Uo
KSBjb25zdAogICAgIHJldHVybiBtX2ltYWdlLmdldCgpOwogfQogCit1bnNpZ25lZCBjaGFyKiBJ
bWFnZUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXIqPihtX2RhdGEubV9iaXRtYXAtPmJ5dGVzKCkpOworfQorCit2b2lkIEltYWdlQnVm
ZmVyOjptYXJrRGlydHkoKQoreworICAgIC8vIE5vdCBJbXBsZW1lbnRlZAorfQorCiB0ZW1wbGF0
ZSA8Ym9vbCBwcmVtdWx0aXBsaWVkPiBQYXNzUmVmUHRyPEltYWdlRGF0YT4KIHN0YXRpYyBnZXRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgU2hhcmVkQml0bWFwKiBiaXRtYXAp
CiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVy
V3guY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcApp
bmRleCAyNTIyY2JkLi44MmFhODRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3d4L0ltYWdlQnVmZmVyV3guY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d3gvSW1hZ2VCdWZmZXJXeC5jcHAKQEAgLTY2LDYgKzY2LDE4IEBAIFBhc3NSZWZQdHI8SW1hZ2VE
YXRhPiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0
JiByZWN0CiAgICAgcmV0dXJuIDA7CiB9CiAKKwordW5zaWduZWQgY2hhciogSW1hZ2VCdWZmZXI6
OmRhdGEoKSBjb25zdAoreworICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOwor
fQorCit2b2lkIEltYWdlQnVmZmVyOjptYXJrRGlydHkoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShJbWFn
ZURhdGEqIHNvdXJjZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQm
IGRlc3RQb2ludCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65314</attachid>
            <date>2010-08-24 13:41:06 -0700</date>
            <delta_ts>2010-08-27 04:37:23 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>memory_blur.patch</filename>
            <type>text/plain</type>
            <size>14873</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IGRkZTk2ODgwMmM3MTg2YTZhZTlhNDViYWY2Y2Q2OTgzMTQ2NDllNTkKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgVHVlIEp1bCAyNyAx
OTowMzoyNCAyMDEwICswMjAwCgogICAgMjAxMC0wOC0xMiAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KICAgIAogICAgICAgICAgICBbR3RrXSB2ZXJ5IHNsb3cgcGFnZSBzY3JvbGxpbmcgb24g
YmlnIC13ZWJraXQtYm94LXNoYWRvdyBhcmVhcwogICAgICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1ODIKICAgIAogICAgICAgICAgICBVc2UgYXJyYXlz
IHRvIGRvIHRoZSBwaXhlbCBvcGVyYXRpb25zIGluIHRoZSBnYXVzc2lhbiBibHVyIGZpbHRlciwK
ICAgICAgICAgICAgdGhpcyB3YXkgd2UgYXZvaWQgdGhlIHNldCBhbmQgZ2V0IGluIHRoZSBvYmpl
Y3RzIG9mIGVhY2ggdmFsdWUuIFdlCiAgICAgICAgICAgIGFsc28gYXZvaWQgdGhlIGNvcGllcyBv
ZiB0aGUgSW1hZ2VzQnVmZmVycyBpbnRvIHRoZSBJbWFnZURhdGFzCiAgICAgICAgICAgIGFkZGlu
ZyBuZXcgQVBJIHRvIHRoZSBJbWFnZUJ1ZmZlciB0byBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIGRh
dGEKICAgICAgICAgICAgaW5zaWRlIHRoZSBidWZmZXIuCiAgICAKICAgICAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmRhdGEpOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1hcmtE
aXJ0eSk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGF0YSk6CiAgICAgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6bWFya0RpcnR5KToKICAgICAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKICAgICAgICAgICAgKFdlYkNv
cmU6OmJveEJsdXIpOgogICAgICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmFwcGx5
KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckhhaWt1
LmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkYXRhKToKICAgICAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjptYXJrRGlydHkpOgogICAgICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmRhdGEpOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1h
cmtEaXJ0eSk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZl
clNraWEuY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRhdGEpOgogICAg
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1hcmtEaXJ0eSk6CiAgICAgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5jZS5jcHA6CiAgICAgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGF0YSk6CiAgICAgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6bWFya0RpcnR5KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9J
bWFnZUJ1ZmZlcld4LmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkYXRh
KToKICAgICAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjptYXJrRGlydHkpOgoKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFjOTNj
My4uY2I2NmYyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wOC0xMiAgQWxlamFuZHJvIEcuIENhc3Ry
byAgPGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbR3RrXSB2ZXJ5IHNsb3cgcGFnZSBzY3JvbGxpbmcgb24gYmlnIC13ZWJr
aXQtYm94LXNoYWRvdyBhcmVhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk1ODIKKworICAgICAgICBVc2UgYXJyYXlzIHRvIGRvIHRoZSBwaXhlbCBv
cGVyYXRpb25zIGluIHRoZSBnYXVzc2lhbiBibHVyIGZpbHRlciwKKyAgICAgICAgdGhpcyB3YXkg
d2UgYXZvaWQgdGhlIHNldCBhbmQgZ2V0IGluIHRoZSBvYmplY3RzIG9mIGVhY2ggdmFsdWUuIFdl
CisgICAgICAgIGFsc28gYXZvaWQgdGhlIGNvcGllcyBvZiB0aGUgSW1hZ2VzQnVmZmVycyBpbnRv
IHRoZSBJbWFnZURhdGFzCisgICAgICAgIGFkZGluZyBuZXcgQVBJIHRvIHRoZSBJbWFnZUJ1ZmZl
ciB0byBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIGRhdGEKKyAgICAgICAgaW5zaWRlIHRoZSBidWZm
ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6Om1hcmtEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6bWFya0RpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmJveEJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmFwcGx5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckhhaWt1LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjptYXJrRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlQnVmZmVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1hcmtEaXJ0eSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Om1h
cmtEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJX
aW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6bWFya0RpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjptYXJrRGlydHkpOgor
CiAyMDEwLTA4LTI0ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAzYzA1MDhlLi5lMjFmNTRmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC04Myw2ICs4Myw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGdldFVubXVsdGlwbGllZElt
YWdlRGF0YShjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgICAgIFBhc3NSZWZQdHI8SW1hZ2VE
YXRhPiBnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmKSBjb25zdDsKIAor
ICAgICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgICAgIHZvaWQgbWFya0Rp
cnR5KCk7CisKICAgICAgICAgdm9pZCBwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW1hZ2VEYXRh
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCk7
CiAgICAgICAgIHZvaWQgcHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShJbWFnZURhdGEqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KTsKICAgICAg
ICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcAppbmRleCA5NzZkY2I0Li4zNGM3Yzc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE1MCw2ICsx
NTAsMTcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNv
bnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGly
dHlfcmVjdGFuZ2xlIChtX2RhdGEubV9zdXJmYWNlLCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9z
aXplLmhlaWdodCgpKTsKIH0KIAordW5zaWduZWQgY2hhciogSW1hZ2VCdWZmZXI6OmRhdGEoKSBj
b25zdAoreworICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9kYXRhLm1fc3VyZmFjZSk7CisgICAg
cmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9kYXRhLm1fc3VyZmFjZSk7Cit9
CisKK3ZvaWQgSW1hZ2VCdWZmZXI6Om1hcmtEaXJ0eSgpCit7CisgICAgY2Fpcm9fc3VyZmFjZV9t
YXJrX2RpcnR5KG1fZGF0YS5tX3N1cmZhY2UpOworfQorCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVs
dGlwbGllZD4KIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXpl
KQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAK
aW5kZXggZWNiY2Y2MC4uZDAyMDIzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xNzcsNiArMTc3LDE2IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IGNvbnN0CiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgLXJlY3Qu
eCgpLCAtcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKIH0KIAordW5zaWduZWQgY2hhciogSW1h
Z2VCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVu
c2lnbmVkIGNoYXIqPihtX2RhdGEubV9kYXRhKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlcjo6bWFy
a0RpcnR5KCkKK3sKKyAgICAvLyBOb3QgSW1wbGVtZW50ZWQKK30KKwogdGVtcGxhdGUgPE11bHRp
cGx5IG11bHRpcGxpZWQ+CiBQYXNzUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBJ
bnRTaXplJiBzaXplKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggNDRiYjY1YS4uMDBjODA3MyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3Bw
CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblko
ZmxvYXQgeSkKICAgICBtX3N0ZFkgPSB5OwogfQogCi1zdGF0aWMgdm9pZCBib3hCbHVyKENhbnZh
c1BpeGVsQXJyYXkqJiBzcmNQaXhlbEFycmF5LCBDYW52YXNQaXhlbEFycmF5KiYgZHN0UGl4ZWxB
cnJheSwKK3N0YXRpYyB2b2lkIGJveEJsdXIodW5zaWduZWQgY2hhciogc3JjUGl4ZWxBcnJheSwg
dW5zaWduZWQgY2hhciogZHN0UGl4ZWxBcnJheSwKICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgZHgsIGludCBkeExlZnQsIGludCBkeFJpZ2h0LCBpbnQgc3RyaWRlLCBpbnQgc3RyaWRlTGlu
ZSwgaW50IGVmZmVjdFdpZHRoLCBpbnQgZWZmZWN0SGVpZ2h0LCBib29sIGFscGhhSW1hZ2UpCiB7
CiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBlZmZlY3RIZWlnaHQ7ICsreSkgewpAQCAtODEsMTYg
KzgxLDE2IEBAIHN0YXRpYyB2b2lkIGJveEJsdXIoQ2FudmFzUGl4ZWxBcnJheSomIHNyY1BpeGVs
QXJyYXksIENhbnZhc1BpeGVsQXJyYXkqJiBkc3RQaXhlCiAgICAgICAgICAgICAvLyBGaWxsIHRo
ZSBrZXJuZWwKICAgICAgICAgICAgIGludCBtYXhLZXJuZWxTaXplID0gc3RkOjptaW4oZHhSaWdo
dCwgZWZmZWN0V2lkdGgpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhLZXJu
ZWxTaXplOyArK2kpCi0gICAgICAgICAgICAgICAgc3VtICs9IHNyY1BpeGVsQXJyYXktPmdldChs
aW5lICsgaSAqIHN0cmlkZSArIGNoYW5uZWwpOworICAgICAgICAgICAgICAgIHN1bSArPSBzcmNQ
aXhlbEFycmF5W2xpbmUgKyBpICogc3RyaWRlICsgY2hhbm5lbF07CiAKICAgICAgICAgICAgIC8v
IEJsdXJyaW5nCiAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGVmZmVjdFdpZHRoOyAr
K3gpIHsKICAgICAgICAgICAgICAgICBpbnQgcGl4ZWxCeXRlT2Zmc2V0ID0gbGluZSArIHggKiBz
dHJpZGUgKyBjaGFubmVsOwotICAgICAgICAgICAgICAgIGRzdFBpeGVsQXJyYXktPnNldChwaXhl
bEJ5dGVPZmZzZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHN1bSAvIGR4KSk7CisgICAg
ICAgICAgICAgICAgZHN0UGl4ZWxBcnJheVtwaXhlbEJ5dGVPZmZzZXRdID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oc3VtIC8gZHgpOwogICAgICAgICAgICAgICAgIGlmICh4ID49IGR4TGVm
dCkKLSAgICAgICAgICAgICAgICAgICAgc3VtIC09IHNyY1BpeGVsQXJyYXktPmdldChwaXhlbEJ5
dGVPZmZzZXQgLSBkeExlZnQgKiBzdHJpZGUpOworICAgICAgICAgICAgICAgICAgICBzdW0gLT0g
c3JjUGl4ZWxBcnJheVtwaXhlbEJ5dGVPZmZzZXQgLSBkeExlZnQgKiBzdHJpZGVdOwogICAgICAg
ICAgICAgICAgIGlmICh4ICsgZHhSaWdodCA8IGVmZmVjdFdpZHRoKQotICAgICAgICAgICAgICAg
ICAgICBzdW0gKz0gc3JjUGl4ZWxBcnJheS0+Z2V0KHBpeGVsQnl0ZU9mZnNldCArIGR4UmlnaHQg
KiBzdHJpZGUpOworICAgICAgICAgICAgICAgICAgICBzdW0gKz0gc3JjUGl4ZWxBcnJheVtwaXhl
bEJ5dGVPZmZzZXQgKyBkeFJpZ2h0ICogc3RyaWRlXTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChhbHBoYUltYWdlKSAvLyBTb3VyY2UgaW1hZ2UgaXMgYmxhY2ssIGl0IGp1c3QgaGFz
IGRpZmZlcmVudCBhbHBoYSB2YWx1ZXMKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEzOCwx
MCArMTM4LDEwIEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5KEZpbHRlciogZmlsdGVyKQog
ICAgIHNldElzQWxwaGFJbWFnZShtX2luLT5pc0FscGhhSW1hZ2UoKSk7CiAKICAgICBJbnRSZWN0
IGVmZmVjdERyYXdpbmdSZWN0ID0gY2FsY3VsYXRlRHJhd2luZ0ludFJlY3QobV9pbi0+c2NhbGVk
U3ViUmVnaW9uKCkpOwotICAgIFJlZlB0cjxJbWFnZURhdGE+IHNyY0ltYWdlRGF0YShtX2luLT5y
ZXN1bHRJbWFnZSgpLT5nZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGVmZmVjdERyYXdpbmdSZWN0
KSk7CiAgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgcmVzdWx0SW1hZ2UoKS0+c2l6
ZSgpKTsKIAogICAgIGlmICghbV9zdGRYICYmICFtX3N0ZFkpIHsKKyAgICAgICAgUmVmUHRyPElt
YWdlRGF0YT4gc3JjSW1hZ2VEYXRhKG1faW4tPnJlc3VsdEltYWdlKCktPmdldFByZW11bHRpcGxp
ZWRJbWFnZURhdGEoZWZmZWN0RHJhd2luZ1JlY3QpKTsKICAgICAgICAgcmVzdWx0SW1hZ2UoKS0+
cHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShzcmNJbWFnZURhdGEuZ2V0KCksIGltYWdlUmVjdCwg
SW50UG9pbnQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNTQsMTAgKzE1NCwxMiBA
QCB2b2lkIEZFR2F1c3NpYW5CbHVyOjphcHBseShGaWx0ZXIqIGZpbHRlcikKICAgICBpZiAobV9z
dGRZKQogICAgICAgICBrZXJuZWxTaXplWSA9IG1heCgyVSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGZsb29yKG1fc3RkWSAqIGZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpICogZ0dh
dXNzaWFuS2VybmVsRmFjdG9yICsgMC41ZikpKTsKIAotICAgIENhbnZhc1BpeGVsQXJyYXkqIHNy
Y1BpeGVsQXJyYXkoc3JjSW1hZ2VEYXRhLT5kYXRhKCkpOwogICAgIFJlZlB0cjxJbWFnZURhdGE+
IHRtcEltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKGltYWdlUmVjdC53aWR0aCgpLCBpbWFn
ZVJlY3QuaGVpZ2h0KCkpOwogICAgIENhbnZhc1BpeGVsQXJyYXkqIHRtcFBpeGVsQXJyYXkodG1w
SW1hZ2VEYXRhLT5kYXRhKCkpOwogCisgICAgdW5zaWduZWQgY2hhciogcmVzdWx0ID0gbV9pbi0+
cmVzdWx0SW1hZ2UoKS0+ZGF0YSgpOworICAgIHVuc2lnbmVkIGNoYXIqIHRtcCA9IHRtcFBpeGVs
QXJyYXktPmRhdGEoKS0+ZGF0YSgpOworCiAgICAgaW50IHN0cmlkZSA9IDQgKiBpbWFnZVJlY3Qu
d2lkdGgoKTsKICAgICBpbnQgZHhMZWZ0ID0gMDsKICAgICBpbnQgZHhSaWdodCA9IDA7CkBAIC0x
NjYsMjQgKzE2OCwyNCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjphcHBseShGaWx0ZXIqIGZpbHRl
cikKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgewogICAgICAgICBpZiAoa2VybmVs
U2l6ZVgpIHsKICAgICAgICAgICAgIGtlcm5lbFBvc2l0aW9uKGksIGtlcm5lbFNpemVYLCBkeExl
ZnQsIGR4UmlnaHQpOwotICAgICAgICAgICAgYm94Qmx1cihzcmNQaXhlbEFycmF5LCB0bXBQaXhl
bEFycmF5LCBrZXJuZWxTaXplWCwgZHhMZWZ0LCBkeFJpZ2h0LCA0LCBzdHJpZGUsIGltYWdlUmVj
dC53aWR0aCgpLCBpbWFnZVJlY3QuaGVpZ2h0KCksIGlzQWxwaGFJbWFnZSgpKTsKKyAgICAgICAg
ICAgIGJveEJsdXIocmVzdWx0LCB0bXAsIGtlcm5lbFNpemVYLCBkeExlZnQsIGR4UmlnaHQsIDQs
IHN0cmlkZSwgaW1hZ2VSZWN0LndpZHRoKCksIGltYWdlUmVjdC5oZWlnaHQoKSwgaXNBbHBoYUlt
YWdlKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQ2FudmFzUGl4ZWxBcnJheSog
YXV4UGl4ZWxBcnJheSA9IHRtcFBpeGVsQXJyYXk7Ci0gICAgICAgICAgICB0bXBQaXhlbEFycmF5
ID0gc3JjUGl4ZWxBcnJheTsKLSAgICAgICAgICAgIHNyY1BpeGVsQXJyYXkgPSBhdXhQaXhlbEFy
cmF5OworICAgICAgICAgICAgdW5zaWduZWQgY2hhciogYXV4ID0gdG1wOworICAgICAgICAgICAg
dG1wID0gcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0ID0gYXV4OwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGtlcm5lbFNpemVZKSB7CiAgICAgICAgICAgICBrZXJuZWxQb3NpdGlvbihpLCBr
ZXJuZWxTaXplWSwgZHlMZWZ0LCBkeVJpZ2h0KTsKLSAgICAgICAgICAgIGJveEJsdXIodG1wUGl4
ZWxBcnJheSwgc3JjUGl4ZWxBcnJheSwga2VybmVsU2l6ZVksIGR5TGVmdCwgZHlSaWdodCwgc3Ry
aWRlLCA0LCBpbWFnZVJlY3QuaGVpZ2h0KCksIGltYWdlUmVjdC53aWR0aCgpLCBpc0FscGhhSW1h
Z2UoKSk7CisgICAgICAgICAgICBib3hCbHVyKHRtcCwgKGkgIT0gMikgPyByZXN1bHQgOiByZXN1
bHRJbWFnZSgpLT5kYXRhKCksIGtlcm5lbFNpemVZLCBkeUxlZnQsIGR5UmlnaHQsIHN0cmlkZSwg
NCwgaW1hZ2VSZWN0LmhlaWdodCgpLCBpbWFnZVJlY3Qud2lkdGgoKSwgaXNBbHBoYUltYWdlKCkp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQ2FudmFzUGl4ZWxBcnJheSogYXV4UGl4
ZWxBcnJheSA9IHRtcFBpeGVsQXJyYXk7Ci0gICAgICAgICAgICB0bXBQaXhlbEFycmF5ID0gc3Jj
UGl4ZWxBcnJheTsKLSAgICAgICAgICAgIHNyY1BpeGVsQXJyYXkgPSBhdXhQaXhlbEFycmF5Owor
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciogYXV4ID0gdG1wOworICAgICAgICAgICAgdG1wID0g
cmVzdWx0OworICAgICAgICAgICAgcmVzdWx0ID0gYXV4OwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgcmVzdWx0SW1hZ2UoKS0+cHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShzcmNJbWFnZURhdGEu
Z2V0KCksIGltYWdlUmVjdCwgSW50UG9pbnQoKSk7CisgICAgcmVzdWx0SW1hZ2UoKS0+bWFya0Rp
cnR5KCk7CiB9CiAKIHZvaWQgRkVHYXVzc2lhbkJsdXI6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckhhaWt1LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VCdWZmZXJIYWlrdS5jcHAKaW5kZXggYzVk
ZTQ4NS4uZWRlZjJlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlr
dS9JbWFnZUJ1ZmZlckhhaWt1LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hh
aWt1L0ltYWdlQnVmZmVySGFpa3UuY3BwCkBAIC0yMDYsNiArMjA2LDE3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBjb252ZXJ0VG9JbnRlcm5hbERhdGEoY29uc3QgdWludDgqIHNvdXJjZVJvd3MsIHVu
c2lnbmVkIHNvdXJjCiAgICAgfQogfQogCit1bnNpZ25lZCBjaGFyKiBJbWFnZUJ1ZmZlcjo6ZGF0
YSgpIGNvbnN0Cit7CisgICAgbV9kYXRhLm1fdmlldy5TeW5jKCk7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhciAqPihpbWFnZURhdGEubV9iaXRtYXAuQml0cygpKTsK
K30KKwordm9pZCBJbWFnZUJ1ZmZlcjo6bWFya0RpcnR5KCkKK3sKKyAgICAvLyBOb3QgSW1wbGVt
ZW50ZWQKK30KKwogc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbGllZCkKIHsKICAgICBQYXNzUmVmUHRyPElt
YWdlRGF0YT4gcmVzdWx0ID0gSW1hZ2VEYXRhOjpjcmVhdGUocmVjdC53aWR0aCgpLCByZWN0Lmhl
aWdodCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VC
dWZmZXJRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQu
Y3BwCmluZGV4IDExY2EzNzcuLmFjMGI3MDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcApAQCAtMTczLDYgKzE3MywyMyBAQCB2b2lkIEltYWdl
QnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxv
b2tVcFRhYmxlKQogICAgICAgICBtX2RhdGEubV9wYWludGVyLT5iZWdpbigmbV9kYXRhLm1fcGl4
bWFwKTsKIH0KIAordW5zaWduZWQgY2hhciogSW1hZ2VCdWZmZXI6OmRhdGEoKSBjb25zdAorewor
ICAgIFFJbWFnZSBpbWFnZSA9IG1fZGF0YS5tX3BpeG1hcC50b0ltYWdlKCkuY29udmVydFRvRm9y
bWF0KFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkKTsKKyNpZiBRVF9WRVJTSU9O
ID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKKyAgICB1bnNpZ25lZCBjaGFyKiBiaXRzID0g
aW1hZ2UuY29uc3RCaXRzKCk7CisjZWxzZQorICAgIHVuc2lnbmVkIGNoYXIqIGJpdHMgPSBpbWFn
ZS5iaXRzKCk7CisjZW5kaWYKKworICAgIHJldHVybiBiaXRzOworfQorCit2b2lkIEltYWdlQnVm
ZmVyOjptYXJrRGlydHkoKQoreworICAgIC8vIE5vdCBJbXBsZW1lbnRlZAorfQorCiB0ZW1wbGF0
ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBpbWFnZURhdGEs
IGNvbnN0IEludFNpemUmIHNpemUpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCmluZGV4IDE5Y2YwZjAuLmE2YzRjMzggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3Bw
CkBAIC0xMzgsNiArMTM4LDE4IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3Jt
Q29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1VwVGFibGUpCiAgICAgfQogfQogCisK
K3Vuc2lnbmVkIGNoYXIqIEltYWdlQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBjb250ZXh0
KCktPnBsYXRmb3JtQ29udGV4dCgpLT5zeW5jU29mdHdhcmVDYW52YXMoKTsKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRl
eHQoKS0+Yml0bWFwKCktPmdldFBpeGVscygpKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlcjo6bWFy
a0RpcnR5KCkKK3sKKyAgICAvLyBOb3QgSW1wbGVtZW50ZWQKK30KKwogdGVtcGxhdGUgPE11bHRp
cGx5IG11bHRpcGxpZWQ+CiBQYXNzUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbmNlLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5jZS5jcHAKaW5kZXggMWEy
NWY0Zi4uMGY2M2VjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5j
ZS9JbWFnZUJ1ZmZlcldpbmNlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bmNlL0ltYWdlQnVmZmVyV2luY2UuY3BwCkBAIC0xMDMsNiArMTAzLDE2IEBAIEltYWdlKiBJbWFn
ZUJ1ZmZlcjo6aW1hZ2UoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdlLmdldCgpOwogfQogCit1
bnNpZ25lZCBjaGFyKiBJbWFnZUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihtX2RhdGEubV9iaXRtYXAtPmJ5dGVzKCkpOworfQor
Cit2b2lkIEltYWdlQnVmZmVyOjptYXJrRGlydHkoKQoreworICAgIC8vIE5vdCBJbXBsZW1lbnRl
ZAorfQorCiB0ZW1wbGF0ZSA8Ym9vbCBwcmVtdWx0aXBsaWVkPiBQYXNzUmVmUHRyPEltYWdlRGF0
YT4KIHN0YXRpYyBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgU2hhcmVk
Qml0bWFwKiBiaXRtYXApCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3d4L0ltYWdlQnVmZmVyV3guY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFn
ZUJ1ZmZlcld4LmNwcAppbmRleCAyNTIyY2JkLi44MmFhODRmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyV3guY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAKQEAgLTY2LDYgKzY2LDE4IEBAIFBh
c3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgcmV0dXJuIDA7CiB9CiAKKwordW5zaWduZWQgY2hh
ciogSW1hZ2VCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCit2b2lkIEltYWdlQnVmZmVyOjptYXJrRGlydHkoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGll
ZEltYWdlRGF0YShJbWFnZURhdGEqIHNvdXJjZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65698</attachid>
            <date>2010-08-27 04:37:23 -0700</date>
            <delta_ts>2010-10-23 05:22:27 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>blur_data.patch</filename>
            <type>text/plain</type>
            <size>15112</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IGVhODJkYTc0NjM0NjY5ZjRiMDMxYjZiZjZkNTIzNTkwNDc0MGZiYTQKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgRnJpIEF1ZyAyNyAx
MzozMzowNCAyMDEwICswMjAwCgogICAgMjAxMC0wOC0yNyAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KICAgIAogICAgICAgICAgICBbR3RrXSB2ZXJ5IHNsb3cgcGFnZSBzY3JvbGxpbmcgb24g
YmlnIC13ZWJraXQtYm94LXNoYWRvdyBhcmVhcwogICAgICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1ODIKICAgIAogICAgICAgICAgICBVc2UgYXJyYXlz
IHRvIGRvIHRoZSBwaXhlbCBvcGVyYXRpb25zIGluIHRoZSBnYXVzc2lhbiBibHVyIGZpbHRlciwK
ICAgICAgICAgICAgdGhpcyB3YXkgd2UgYXZvaWQgdGhlIHNldCBhbmQgZ2V0IGluIHRoZSBvYmpl
Y3RzIG9mIGVhY2ggdmFsdWUuIFdlCiAgICAgICAgICAgIGFsc28gYXZvaWQgdGhlIGNvcGllcyBv
ZiB0aGUgSW1hZ2VzQnVmZmVycyBpbnRvIHRoZSBJbWFnZURhdGFzCiAgICAgICAgICAgIGFkZGlu
ZyBuZXcgQVBJIHRvIHRoZSBJbWFnZUJ1ZmZlciB0byBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIGRh
dGEKICAgICAgICAgICAgaW5zaWRlIHRoZSBidWZmZXIuCiAgICAKICAgICAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmJlZ2luQWNjZXNzRGF0YSk6CiAgICAgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZW5kQWNjZXNzRGF0YSk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6YmVn
aW5BY2Nlc3NEYXRhKToKICAgICAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjplbmRBY2Nl
c3NEYXRhKToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3Np
YW5CbHVyLmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6OmJveEJsdXIpOgogICAgICAgICAgICAo
V2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmFwcGx5KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckhhaWt1LmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpiZWdpbkFjY2Vzc0RhdGEpOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmVuZEFjY2Vzc0RhdGEpOgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0ltYWdlQnVmZmVyUXQuY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmJlZ2luQWNjZXNzRGF0YSk6CiAgICAgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZW5k
QWNjZXNzRGF0YSk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1
ZmZlclNraWEuY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmJlZ2luQWNj
ZXNzRGF0YSk6CiAgICAgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZW5kQWNjZXNzRGF0
YSk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5j
ZS5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6YmVnaW5BY2Nlc3NEYXRh
KToKICAgICAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjplbmRBY2Nlc3NEYXRhKToKICAg
ICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcDoKICAgICAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpiZWdpbkFjY2Vzc0RhdGEpOgogICAgICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmVuZEFjY2Vzc0RhdGEpOgoKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQyYWU2My4uOTA1ODU5
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0MiBAQAorMjAxMC0wOC0yNyAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhA
aWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbR3RrXSB2ZXJ5IHNsb3cgcGFnZSBzY3JvbGxpbmcgb24gYmlnIC13ZWJraXQtYm94LXNo
YWRvdyBhcmVhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzk1ODIKKworICAgICAgICBVc2UgYXJyYXlzIHRvIGRvIHRoZSBwaXhlbCBvcGVyYXRpb25z
IGluIHRoZSBnYXVzc2lhbiBibHVyIGZpbHRlciwKKyAgICAgICAgdGhpcyB3YXkgd2UgYXZvaWQg
dGhlIHNldCBhbmQgZ2V0IGluIHRoZSBvYmplY3RzIG9mIGVhY2ggdmFsdWUuIFdlCisgICAgICAg
IGFsc28gYXZvaWQgdGhlIGNvcGllcyBvZiB0aGUgSW1hZ2VzQnVmZmVycyBpbnRvIHRoZSBJbWFn
ZURhdGFzCisgICAgICAgIGFkZGluZyBuZXcgQVBJIHRvIHRoZSBJbWFnZUJ1ZmZlciB0byBnZXQg
YSByZWZlcmVuY2UgdG8gdGhlIGRhdGEKKyAgICAgICAgaW5zaWRlIHRoZSBidWZmZXIuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmJlZ2luQWNjZXNzRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6ZW5kQWNjZXNzRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6YmVnaW5B
Y2Nlc3NEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjplbmRBY2Nlc3NEYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmJveEJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVz
c2lhbkJsdXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFn
ZUJ1ZmZlckhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpiZWdpbkFj
Y2Vzc0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmVuZEFjY2Vzc0RhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmJlZ2luQWNjZXNzRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZW5kQWNjZXNzRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmJlZ2luQWNjZXNzRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6ZW5kQWNjZXNzRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1h
Z2VCdWZmZXJXaW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6YmVnaW5B
Y2Nlc3NEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjplbmRBY2Nlc3NEYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpiZWdpbkFjY2Vzc0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmVuZEFjY2Vzc0RhdGEpOgorCiAyMDEwLTA4LTI3ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5k
ZXggM2MwNTA4ZS4uY2RmMGVkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaApAQCAtODMsNiArODMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NS
ZWZQdHI8SW1hZ2VEYXRhPiBnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYp
IGNvbnN0OwogICAgICAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gZ2V0UHJlbXVsdGlwbGllZElt
YWdlRGF0YShjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAKKyAgICAgICAgdW5zaWduZWQgY2hhciog
YmVnaW5BY2Nlc3NEYXRhKCk7CisgICAgICAgIHZvaWQgZW5kQWNjZXNzRGF0YSgpOworCiAgICAg
ICAgIHZvaWQgcHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEltYWdlRGF0YSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpOwogICAgICAgICB2b2lk
IHB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEoSW1hZ2VEYXRhKiwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCk7CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5k
ZXggOTc2ZGNiNC4uYTE3OTdlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xNTAsNiArMTUwLDE3IEBAIHZvaWQg
SW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50
PiYgbG9va1VwVGFibGUpCiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZSAo
bV9kYXRhLm1fc3VyZmFjZSwgMCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7
CiB9CiAKK3Vuc2lnbmVkIGNoYXIqIEltYWdlQnVmZmVyOjpiZWdpbkFjY2Vzc0RhdGEoKQorewor
ICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9kYXRhLm1fc3VyZmFjZSk7CisgICAgcmV0dXJuIGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9kYXRhLm1fc3VyZmFjZSk7Cit9CisKK3ZvaWQg
SW1hZ2VCdWZmZXI6OmVuZEFjY2Vzc0RhdGEoKQoreworICAgIGNhaXJvX3N1cmZhY2VfbWFya19k
aXJ0eShtX2RhdGEubV9zdXJmYWNlKTsKK30KKwogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxp
ZWQ+CiBQYXNzUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJl
Y3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4
IGVjYmNmNjAuLjVjY2FmZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcApAQCAtMTc3LDYgKzE3NywxNiBAQCB2b2lkIEltYWdlQnVmZmVyOjpj
bGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25z
dAogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHQsIC1yZWN0LngoKSwg
LXJlY3QueSgpIC0gcmVjdC5oZWlnaHQoKSk7CiB9CiAKK3Vuc2lnbmVkIGNoYXIqIEltYWdlQnVm
ZmVyOjpiZWdpbkFjY2Vzc0RhdGEoKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVu
c2lnbmVkIGNoYXIqPihtX2RhdGEubV9kYXRhKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlcjo6ZW5k
QWNjZXNzRGF0YSgpCit7CisgICAgLy8gTm90IEltcGxlbWVudGVkCit9CisKIHRlbXBsYXRlIDxN
dWx0aXBseSBtdWx0aXBsaWVkPgogUGFzc1JlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckRhdGEmIGltYWdlRGF0YSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCmluZGV4IDQ0YmI2NWEuLmNkYWVjMTEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVy
LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRp
b25ZKGZsb2F0IHkpCiAgICAgbV9zdGRZID0geTsKIH0KIAotc3RhdGljIHZvaWQgYm94Qmx1cihD
YW52YXNQaXhlbEFycmF5KiYgc3JjUGl4ZWxBcnJheSwgQ2FudmFzUGl4ZWxBcnJheSomIGRzdFBp
eGVsQXJyYXksCitzdGF0aWMgdm9pZCBib3hCbHVyKHVuc2lnbmVkIGNoYXIqIHNyY1BpeGVsQXJy
YXksIHVuc2lnbmVkIGNoYXIqIGRzdFBpeGVsQXJyYXksCiAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGR4LCBpbnQgZHhMZWZ0LCBpbnQgZHhSaWdodCwgaW50IHN0cmlkZSwgaW50IHN0cmlk
ZUxpbmUsIGludCBlZmZlY3RXaWR0aCwgaW50IGVmZmVjdEhlaWdodCwgYm9vbCBhbHBoYUltYWdl
KQogewogICAgIGZvciAoaW50IHkgPSAwOyB5IDwgZWZmZWN0SGVpZ2h0OyArK3kpIHsKQEAgLTgx
LDE2ICs4MSwxNiBAQCBzdGF0aWMgdm9pZCBib3hCbHVyKENhbnZhc1BpeGVsQXJyYXkqJiBzcmNQ
aXhlbEFycmF5LCBDYW52YXNQaXhlbEFycmF5KiYgZHN0UGl4ZQogICAgICAgICAgICAgLy8gRmls
bCB0aGUga2VybmVsCiAgICAgICAgICAgICBpbnQgbWF4S2VybmVsU2l6ZSA9IHN0ZDo6bWluKGR4
UmlnaHQsIGVmZmVjdFdpZHRoKTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4
S2VybmVsU2l6ZTsgKytpKQotICAgICAgICAgICAgICAgIHN1bSArPSBzcmNQaXhlbEFycmF5LT5n
ZXQobGluZSArIGkgKiBzdHJpZGUgKyBjaGFubmVsKTsKKyAgICAgICAgICAgICAgICBzdW0gKz0g
c3JjUGl4ZWxBcnJheVtsaW5lICsgaSAqIHN0cmlkZSArIGNoYW5uZWxdOwogCiAgICAgICAgICAg
ICAvLyBCbHVycmluZwogICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBlZmZlY3RXaWR0
aDsgKyt4KSB7CiAgICAgICAgICAgICAgICAgaW50IHBpeGVsQnl0ZU9mZnNldCA9IGxpbmUgKyB4
ICogc3RyaWRlICsgY2hhbm5lbDsKLSAgICAgICAgICAgICAgICBkc3RQaXhlbEFycmF5LT5zZXQo
cGl4ZWxCeXRlT2Zmc2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdW0gLyBkeCkpOwor
ICAgICAgICAgICAgICAgIGRzdFBpeGVsQXJyYXlbcGl4ZWxCeXRlT2Zmc2V0XSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KHN1bSAvIGR4KTsKICAgICAgICAgICAgICAgICBpZiAoeCA+PSBk
eExlZnQpCi0gICAgICAgICAgICAgICAgICAgIHN1bSAtPSBzcmNQaXhlbEFycmF5LT5nZXQocGl4
ZWxCeXRlT2Zmc2V0IC0gZHhMZWZ0ICogc3RyaWRlKTsKKyAgICAgICAgICAgICAgICAgICAgc3Vt
IC09IHNyY1BpeGVsQXJyYXlbcGl4ZWxCeXRlT2Zmc2V0IC0gZHhMZWZ0ICogc3RyaWRlXTsKICAg
ICAgICAgICAgICAgICBpZiAoeCArIGR4UmlnaHQgPCBlZmZlY3RXaWR0aCkKLSAgICAgICAgICAg
ICAgICAgICAgc3VtICs9IHNyY1BpeGVsQXJyYXktPmdldChwaXhlbEJ5dGVPZmZzZXQgKyBkeFJp
Z2h0ICogc3RyaWRlKTsKKyAgICAgICAgICAgICAgICAgICAgc3VtICs9IHNyY1BpeGVsQXJyYXlb
cGl4ZWxCeXRlT2Zmc2V0ICsgZHhSaWdodCAqIHN0cmlkZV07CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoYWxwaGFJbWFnZSkgLy8gU291cmNlIGltYWdlIGlzIGJsYWNrLCBpdCBqdXN0
IGhhcyBkaWZmZXJlbnQgYWxwaGEgdmFsdWVzCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MzgsMTAgKzEzOCwxMCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjphcHBseShGaWx0ZXIqIGZpbHRl
cikKICAgICBzZXRJc0FscGhhSW1hZ2UobV9pbi0+aXNBbHBoYUltYWdlKCkpOwogCiAgICAgSW50
UmVjdCBlZmZlY3REcmF3aW5nUmVjdCA9IGNhbGN1bGF0ZURyYXdpbmdJbnRSZWN0KG1faW4tPnNj
YWxlZFN1YlJlZ2lvbigpKTsKLSAgICBSZWZQdHI8SW1hZ2VEYXRhPiBzcmNJbWFnZURhdGEobV9p
bi0+cmVzdWx0SW1hZ2UoKS0+Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShlZmZlY3REcmF3aW5n
UmVjdCkpOwogICAgIEludFJlY3QgaW1hZ2VSZWN0KEludFBvaW50KCksIHJlc3VsdEltYWdlKCkt
PnNpemUoKSk7CiAKICAgICBpZiAoIW1fc3RkWCAmJiAhbV9zdGRZKSB7CisgICAgICAgIFJlZlB0
cjxJbWFnZURhdGE+IHNyY0ltYWdlRGF0YShtX2luLT5yZXN1bHRJbWFnZSgpLT5nZXRQcmVtdWx0
aXBsaWVkSW1hZ2VEYXRhKGVmZmVjdERyYXdpbmdSZWN0KSk7CiAgICAgICAgIHJlc3VsdEltYWdl
KCktPnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEoc3JjSW1hZ2VEYXRhLmdldCgpLCBpbWFnZVJl
Y3QsIEludFBvaW50KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTU0LDEwICsxNTQs
MTIgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6YXBwbHkoRmlsdGVyKiBmaWx0ZXIpCiAgICAgaWYg
KG1fc3RkWSkKICAgICAgICAga2VybmVsU2l6ZVkgPSBtYXgoMlUsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihmbG9vcihtX3N0ZFkgKiBmaWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSAq
IGdHYXVzc2lhbktlcm5lbEZhY3RvciArIDAuNWYpKSk7CiAKLSAgICBDYW52YXNQaXhlbEFycmF5
KiBzcmNQaXhlbEFycmF5KHNyY0ltYWdlRGF0YS0+ZGF0YSgpKTsKICAgICBSZWZQdHI8SW1hZ2VE
YXRhPiB0bXBJbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZVJlY3Qud2lkdGgoKSwg
aW1hZ2VSZWN0LmhlaWdodCgpKTsKICAgICBDYW52YXNQaXhlbEFycmF5KiB0bXBQaXhlbEFycmF5
KHRtcEltYWdlRGF0YS0+ZGF0YSgpKTsKIAorICAgIHVuc2lnbmVkIGNoYXIqIHJlc3VsdCA9IG1f
aW4tPnJlc3VsdEltYWdlKCktPmJlZ2luQWNjZXNzRGF0YSgpOworICAgIHVuc2lnbmVkIGNoYXIq
IHRtcCA9IHRtcFBpeGVsQXJyYXktPmRhdGEoKS0+ZGF0YSgpOworCiAgICAgaW50IHN0cmlkZSA9
IDQgKiBpbWFnZVJlY3Qud2lkdGgoKTsKICAgICBpbnQgZHhMZWZ0ID0gMDsKICAgICBpbnQgZHhS
aWdodCA9IDA7CkBAIC0xNjYsMjQgKzE2OCwyNSBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjphcHBs
eShGaWx0ZXIqIGZpbHRlcikKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgewogICAg
ICAgICBpZiAoa2VybmVsU2l6ZVgpIHsKICAgICAgICAgICAgIGtlcm5lbFBvc2l0aW9uKGksIGtl
cm5lbFNpemVYLCBkeExlZnQsIGR4UmlnaHQpOwotICAgICAgICAgICAgYm94Qmx1cihzcmNQaXhl
bEFycmF5LCB0bXBQaXhlbEFycmF5LCBrZXJuZWxTaXplWCwgZHhMZWZ0LCBkeFJpZ2h0LCA0LCBz
dHJpZGUsIGltYWdlUmVjdC53aWR0aCgpLCBpbWFnZVJlY3QuaGVpZ2h0KCksIGlzQWxwaGFJbWFn
ZSgpKTsKKyAgICAgICAgICAgIGJveEJsdXIocmVzdWx0LCB0bXAsIGtlcm5lbFNpemVYLCBkeExl
ZnQsIGR4UmlnaHQsIDQsIHN0cmlkZSwgaW1hZ2VSZWN0LndpZHRoKCksIGltYWdlUmVjdC5oZWln
aHQoKSwgaXNBbHBoYUltYWdlKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQ2Fu
dmFzUGl4ZWxBcnJheSogYXV4UGl4ZWxBcnJheSA9IHRtcFBpeGVsQXJyYXk7Ci0gICAgICAgICAg
ICB0bXBQaXhlbEFycmF5ID0gc3JjUGl4ZWxBcnJheTsKLSAgICAgICAgICAgIHNyY1BpeGVsQXJy
YXkgPSBhdXhQaXhlbEFycmF5OworICAgICAgICAgICAgdW5zaWduZWQgY2hhciogYXV4ID0gdG1w
OworICAgICAgICAgICAgdG1wID0gcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0ID0gYXV4Owog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGtlcm5lbFNpemVZKSB7CiAgICAgICAgICAgICBrZXJu
ZWxQb3NpdGlvbihpLCBrZXJuZWxTaXplWSwgZHlMZWZ0LCBkeVJpZ2h0KTsKLSAgICAgICAgICAg
IGJveEJsdXIodG1wUGl4ZWxBcnJheSwgc3JjUGl4ZWxBcnJheSwga2VybmVsU2l6ZVksIGR5TGVm
dCwgZHlSaWdodCwgc3RyaWRlLCA0LCBpbWFnZVJlY3QuaGVpZ2h0KCksIGltYWdlUmVjdC53aWR0
aCgpLCBpc0FscGhhSW1hZ2UoKSk7CisgICAgICAgICAgICBib3hCbHVyKHRtcCwgKGkgIT0gMikg
PyByZXN1bHQgOiByZXN1bHRJbWFnZSgpLT5iZWdpbkFjY2Vzc0RhdGEoKSwga2VybmVsU2l6ZVks
IGR5TGVmdCwgZHlSaWdodCwgc3RyaWRlLCA0LCBpbWFnZVJlY3QuaGVpZ2h0KCksIGltYWdlUmVj
dC53aWR0aCgpLCBpc0FscGhhSW1hZ2UoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBDYW52YXNQaXhlbEFycmF5KiBhdXhQaXhlbEFycmF5ID0gdG1wUGl4ZWxBcnJheTsKLSAgICAg
ICAgICAgIHRtcFBpeGVsQXJyYXkgPSBzcmNQaXhlbEFycmF5OwotICAgICAgICAgICAgc3JjUGl4
ZWxBcnJheSA9IGF1eFBpeGVsQXJyYXk7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBhdXgg
PSB0bXA7CisgICAgICAgICAgICB0bXAgPSByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQgPSBh
dXg7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXN1bHRJbWFnZSgpLT5wdXRQcmVtdWx0aXBs
aWVkSW1hZ2VEYXRhKHNyY0ltYWdlRGF0YS5nZXQoKSwgaW1hZ2VSZWN0LCBJbnRQb2ludCgpKTsK
KyAgICBtX2luLT5yZXN1bHRJbWFnZSgpLT5lbmRBY2Nlc3NEYXRhKCk7CisgICAgcmVzdWx0SW1h
Z2UoKS0+ZW5kQWNjZXNzRGF0YSgpOwogfQogCiB2b2lkIEZFR2F1c3NpYW5CbHVyOjpkdW1wKCkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VCdWZmZXJI
YWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ltYWdlQnVmZmVySGFp
a3UuY3BwCmluZGV4IGM1ZGU0ODUuLjZlY2JiOWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VCdWZmZXJIYWlrdS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckhhaWt1LmNwcApAQCAtMjA2LDYgKzIwNiwx
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29udmVydFRvSW50ZXJuYWxEYXRhKGNvbnN0IHVpbnQ4
KiBzb3VyY2VSb3dzLCB1bnNpZ25lZCBzb3VyYwogICAgIH0KIH0KIAordW5zaWduZWQgY2hhciog
SW1hZ2VCdWZmZXI6OmJlZ2luQWNjZXNzRGF0YSgpCit7CisgICAgbV9kYXRhLm1fdmlldy5TeW5j
KCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGltYWdlRGF0
YS5tX2JpdG1hcC5CaXRzKCkpOworfQorCit2b2lkIEltYWdlQnVmZmVyOjplbmRBY2Nlc3NEYXRh
KCkKK3sKKyAgICAvLyBOb3QgSW1wbGVtZW50ZWQKK30KKwogc3RhdGljIFBhc3NSZWZQdHI8SW1h
Z2VEYXRhPiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZm
ZXJEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgcHJlbXVsdGlwbGll
ZCkKIHsKICAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gcmVzdWx0ID0gSW1hZ2VEYXRhOjpjcmVh
dGUocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCmluZGV4IGVlMDEyMjIuLjhlOTBiZGIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcApAQCAtMTcz
LDYgKzE3MywxOSBAQCB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3Bh
Y2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQogICAgICAgICBtX2RhdGEubV9wYWlu
dGVyLT5iZWdpbigmbV9kYXRhLm1fcGl4bWFwKTsKIH0KIAordW5zaWduZWQgY2hhciogSW1hZ2VC
dWZmZXI6OmJlZ2luQWNjZXNzRGF0YSgpCit7CisgICAgUUltYWdlIGltYWdlID0gbV9kYXRhLm1f
cGl4bWFwLnRvSW1hZ2UoKS5jb252ZXJ0VG9Gb3JtYXQoUUltYWdlOjpGb3JtYXRfQVJHQjMyX1By
ZW11bHRpcGxpZWQpOworICAgIHVuc2lnbmVkIGNoYXIqIGJpdHMgPSBpbWFnZS5iaXRzKCk7CisK
KyAgICByZXR1cm4gYml0czsKK30KKwordm9pZCBJbWFnZUJ1ZmZlcjo6ZW5kQWNjZXNzRGF0YSgp
Cit7CisgICAgLy8gTm90IEltcGxlbWVudGVkCit9CisKIHRlbXBsYXRlIDxNdWx0aXBseSBtdWx0
aXBsaWVkPgogUGFzc1JlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0
JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckRhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFn
ZUJ1ZmZlclNraWEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVm
ZmVyU2tpYS5jcHAKaW5kZXggOTQwMzQwNi4uODg5YTUxZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKQEAgLTEzOSw2ICsxMzks
MTggQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0
IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKICAgICB9CiB9CiAKKwordW5zaWduZWQgY2hhciog
SW1hZ2VCdWZmZXI6OmJlZ2luQWNjZXNzRGF0YSgpCit7CisgICAgY29udGV4dCgpLT5wbGF0Zm9y
bUNvbnRleHQoKS0+c3luY1NvZnR3YXJlQ2FudmFzKCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmJpdG1h
cCgpLT5nZXRQaXhlbHMoKSk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXI6OmVuZEFjY2Vzc0RhdGEo
KQoreworICAgIC8vIE5vdCBJbXBsZW1lbnRlZAorfQorCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVs
dGlwbGllZD4KIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgU2tCaXRtYXAmIGJpdG1hcCwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luY2UuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbmNlLmNwcAppbmRleCAxYTI1ZjRmLi4z
Y2IzNDQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdl
QnVmZmVyV2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1h
Z2VCdWZmZXJXaW5jZS5jcHAKQEAgLTEwMyw2ICsxMDMsMTYgQEAgSW1hZ2UqIEltYWdlQnVmZmVy
OjppbWFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7CiB9CiAKK3Vuc2lnbmVk
IGNoYXIqIEltYWdlQnVmZmVyOjpiZWdpbkFjY2Vzc0RhdGEoKQoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4obV9kYXRhLm1fYml0bWFwLT5ieXRlcygpKTsKK30KKwor
dm9pZCBJbWFnZUJ1ZmZlcjo6ZW5kQWNjZXNzRGF0YSgpCit7CisgICAgLy8gTm90IEltcGxlbWVu
dGVkCit9CisKIHRlbXBsYXRlIDxib29sIHByZW11bHRpcGxpZWQ+IFBhc3NSZWZQdHI8SW1hZ2VE
YXRhPgogc3RhdGljIGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBTaGFy
ZWRCaXRtYXAqIGJpdG1hcCkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0lt
YWdlQnVmZmVyV3guY3BwCmluZGV4IDI1MjJjYmQuLmRjNjNmYTIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcApAQCAtNjYsNiArNjYsMTggQEAg
UGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QKICAgICByZXR1cm4gMDsKIH0KIAorCit1bnNpZ25lZCBj
aGFyKiBJbWFnZUJ1ZmZlcjo6YmVnaW5BY2Nlc3NEYXRhKCkKK3sKKyAgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBJbWFnZUJ1ZmZlcjo6ZW5kQWNjZXNzRGF0
YSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0
VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEltYWdlRGF0YSogc291cmNlLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7Cg==
</data>
<flag name="review"
          id="54533"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>