<?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>75243</bug_id>
          
          <creation_ts>2011-12-27 02:13:35 -0800</creation_ts>
          <short_desc>[EFL] Refactor single backing store scroll code.</short_desc>
          <delta_ts>2012-01-11 02:06:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="JungJik Lee">jungjik.lee</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>hyuki.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>527318</commentid>
    <comment_count>0</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-12-27 02:13:35 -0800</bug_when>
    <thetext>Remove the duplicated code and refactor the scroll procedures.
When we scroll the page, there are one area to repaint and two areas to update.
By following this simple rule, I could refactor and shorten the current code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527321</commentid>
    <comment_count>1</comment_count>
      <attachid>120575</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-12-27 02:48:04 -0800</bug_when>
    <thetext>Created attachment 120575
proposal_patch

proposal patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527337</commentid>
    <comment_count>2</comment_count>
    <who name="KwangHyuk">hyuki.kim</who>
    <bug_when>2011-12-27 06:13:28 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=120575&amp;action=review

&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:94
&gt; +    uint32_t* endOfSource = source + (count - 1);

What about putting (count - 1) into another variable ?

&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:104
&gt; +    const bool moveLineLeft = sourceX &gt;= destinationX ? true : false;

moveLineLeft = sourceX &gt;= destinationX would be OK.

&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:111
&gt; +        destination = destinationBegin + (frameWidth * startHeight);

What about putting (frameWidth * startHeight) into another variable ?

&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:167
&gt; +    int copyHeight = scrollHeight - abs(scrollRequest-&gt;dy);

Check whether you can reduce any repetition of same code ?

&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:172
&gt; +    verticalUpdate.w = scrollWidth - copyWidth;

You can reuse scrollRequest-&gt;dx for this.

&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:179
&gt; +    horizontalUpdate.h = scrollHeight - copyHeight;

You can reuse scrollRequest-&gt;dy for this.
What about moving both two Eina_Rectangle block into line 183 ?
And why do you have to use Eina_Rectangle for the temporal usage ?

&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:181
&gt; +    if (destinationX != sourceX || destinationY != sourceY)

if you have to check the condition, scrollRequest-&gt;dx and dy may be used instead of this line.

&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:190
&gt; +    evas_object_image_data_update_add(smartData-&gt;backing_store, scrollX, scrollY, scrollWidth, scrollHeight);

May be, all visible area seems dirty according to implementation.
Would you double check update area ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529396</commentid>
    <comment_count>3</comment_count>
      <attachid>121077</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-01-04 00:58:11 -0800</bug_when>
    <thetext>Created attachment 121077
minor fix

fixed the patch by following comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529517</commentid>
    <comment_count>4</comment_count>
    <who name="KwangHyuk">hyuki.kim</who>
    <bug_when>2012-01-04 07:28:46 -0800</bug_when>
    <thetext>&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:91
&gt; +static inline void _ewk_view_reverse_line_move(uint32_t* destination, uint32_t* source, size_t count)

conut can be const variable.

&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:105
&gt; +    const bool moveLineLeft = sourceX &gt;= destinationX ? true : false;

sourceX &gt;= destinationX can be true or false. onst bool moveLineLeft = sourceX &gt;= destinationX; would be fine.

&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:112
&gt; +        destination = destinationBegin + (frameWidth * startHeight);

Why don&apos;t you reduce same calculation ? =&gt; (frameWidth * startHeight)

&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:115
&gt; +        if (moveLineLeft)

If you can put the comparison condition outside of for loop, it can reduce cost of repetition of fixed condition check.

&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:116
&gt; +            memcpy(destination, source, copyWidth * 4);

I suggest you to put copyWidth * 4 outside of for loop.

&gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:171
&gt; +

U better put vas_object_image_data_update_add(smartData-&gt;backing_store, destinationX, destinationY, copyWidth, copyHeight) in here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529954</commentid>
    <comment_count>5</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-01-04 19:16:23 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:91
&gt; &gt; +static inline void _ewk_view_reverse_line_move(uint32_t* destination, uint32_t* source, size_t count)
&gt; 
&gt; conut can be const variable.
&gt; 
I&apos;ve changed them to const value.

&gt; &gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:105
&gt; &gt; +    const bool moveLineLeft = sourceX &gt;= destinationX ? true : false;
&gt; 
I was considering readability, anyway I&apos;ve changed it.

&gt; sourceX &gt;= destinationX can be true or false. onst bool moveLineLeft = sourceX &gt;= destinationX; would be fine.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:112
&gt; &gt; +        destination = destinationBegin + (frameWidth * startHeight);
&gt; 
&gt; Why don&apos;t you reduce same calculation ? =&gt; (frameWidth * startHeight)
&gt; 
To do so, I have to have another variable to save the value in the loop.

&gt; &gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:115
&gt; &gt; +        if (moveLineLeft)
&gt; 
&gt; If you can put the comparison condition outside of for loop, it can reduce cost of repetition of fixed condition check.
&gt; 
It cannot be outside of the loop so I leave it.

&gt; &gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:116
&gt; &gt; +            memcpy(destination, source, copyWidth * 4);
&gt; 
&gt; I suggest you to put copyWidth * 4 outside of for loop.
&gt; 
I fixed it,too.

&gt; &gt; Source/WebKit/efl/ewk/ewk_view_single.cpp:171
&gt; &gt; +
&gt; 
&gt; U better put vas_object_image_data_update_add(smartData-&gt;backing_store, destinationX, destinationY, copyWidth, copyHeight) in here.
I moved it close to _ewk_view_screen_move</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530037</commentid>
    <comment_count>6</comment_count>
      <attachid>121224</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-01-04 23:42:34 -0800</bug_when>
    <thetext>Created attachment 121224
fix minor code

small fixes by comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530042</commentid>
    <comment_count>7</comment_count>
    <who name="KwangHyuk">hyuki.kim</who>
    <bug_when>2012-01-04 23:47:39 -0800</bug_when>
    <thetext>LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530201</commentid>
    <comment_count>8</comment_count>
      <attachid>121262</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-01-05 04:54:32 -0800</bug_when>
    <thetext>Created attachment 121262
a patch for using memmove api.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530802</commentid>
    <comment_count>9</comment_count>
    <who name="KwangHyuk">hyuki.kim</who>
    <bug_when>2012-01-05 17:11:13 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=121262) [details]
&gt; a patch for using memmove api.

From the point of code complexity view, it looks really great.

But, IMO, memcpy() doesn&apos;t have any special handling for overlapping buffers therefore it may be faster than memmove().

As a result, I suggest you to use memcpy() and memmove() according to the condition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531030</commentid>
    <comment_count>10</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-01-06 03:41:27 -0800</bug_when>
    <thetext>Unfortunately I understood the original codes&apos; intention and my code would not be so nice. So I am trying to refactor this patch again and testing which one is really fast. Anyway I will file a new patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531809</commentid>
    <comment_count>11</comment_count>
      <attachid>121262</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-01-08 13:51:41 -0800</bug_when>
    <thetext>Comment on attachment 121262
a patch for using memmove api.

Clearing flags while the patch is reworked by the reporter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532010</commentid>
    <comment_count>12</comment_count>
      <attachid>121262</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-01-08 23:42:25 -0800</bug_when>
    <thetext>Comment on attachment 121262
a patch for using memmove api.

I&apos;ve tested codes in many cases. Among using memcpy, memmove, memmove in reverse destination and for-loop to copy the values, the for-loop shows the worst timelap in any cases. I&apos;ve tested it under linux x86 and ARM circumstance. There is not much time gap between memcpy and memmove. Sometimes memcpy shows the best but it wasn&apos;t always. If I consider the code readability, I think it would be better using memmove only. So as the result, this patch is not bad as I worried. I add the request to commit-queue again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532918</commentid>
    <comment_count>13</comment_count>
      <attachid>121816</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-01-10 02:47:05 -0800</bug_when>
    <thetext>Created attachment 121816
new patch via using memcpy and memmove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533162</commentid>
    <comment_count>14</comment_count>
    <who name="KwangHyuk">hyuki.kim</who>
    <bug_when>2012-01-10 10:10:49 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=121816) [details]
&gt; new patch via using memcpy and memmove.

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533663</commentid>
    <comment_count>15</comment_count>
      <attachid>121816</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-10 23:03:24 -0800</bug_when>
    <thetext>Comment on attachment 121816
new patch via using memcpy and memmove.

From the point of code complexity view, it looks better than before. But, I&apos;m not expert for this area. I&apos;m not sure if there are no problems. Can you make / find proper test cases for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533677</commentid>
    <comment_count>16</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-01-10 23:30:07 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 121816 [details])
&gt; From the point of code complexity view, it looks better than before. But, I&apos;m not expert for this area. I&apos;m not sure if there are no problems. Can you make / find proper test cases for this?

Unfortunately no test case for backing store currently. But it&apos;s good point, because I&apos;m thinking about making &quot;run-efl-test.py&quot; in &quot;/Tools/Scripts&quot;. Has anyone the same idea in EFL port? if not, I will make the test case soon. BTW, it is safe. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533690</commentid>
    <comment_count>17</comment_count>
      <attachid>121816</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-01-10 23:58:02 -0800</bug_when>
    <thetext>Comment on attachment 121816
new patch via using memcpy and memmove.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533752</commentid>
    <comment_count>18</comment_count>
      <attachid>121816</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-11 02:06:01 -0800</bug_when>
    <thetext>Comment on attachment 121816
new patch via using memcpy and memmove.

Clearing flags on attachment: 121816

Committed r104687: &lt;http://trac.webkit.org/changeset/104687&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533753</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-11 02:06:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120575</attachid>
            <date>2011-12-27 02:48:04 -0800</date>
            <delta_ts>2012-01-04 00:58:11 -0800</delta_ts>
            <desc>proposal_patch</desc>
            <filename>proposal.patch</filename>
            <type>text/plain</type>
            <size>14306</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBhOWM5OGIxLi5iZTNiZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTEtMTItMjcgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmVmYWN0b3Igc2luZ2xlIGJhY2tpbmcgc3RvcmUg
c2Nyb2xsIGNvZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTI0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSB0aGUgZHVwbGljYXRlZCBjb2RlIGFuZCByZWZhY3RvciB0aGUgc2Nyb2xsIHBy
b2NlZHVyZS4KKyAgICAgICAgV2hlcmV2ZXIgdGhlIHBhZ2UgaXMgc2Nyb2xsZWQsIHRoZXJlIGFy
ZSBvbmUgc2NyZWVuIGNvcHkgYW5kIHR3byB1cGRhdGVzLgorICAgICAgICBJbiB0aGlzIHJlYXNv
biwgYmUgYWJsZSB0byByZWZhY3RvciB0aGUgY3VycmVudCBjb2RlLgorCisgICAgICAgICogZXdr
L2V3a192aWV3X3NpbmdsZS5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcmV2ZXJzZV9saW5lX21v
dmUpOgorICAgICAgICAoX2V3a192aWV3X3NjcmVlbl9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmll
d19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKToKKwogMjAxMS0xMi0yMyAgUmFwaGFlbCBL
dWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBVbnJldmlld2Vk
OyBmaXggYnVpbGQgd2l0aCBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCmluZGV4IDNiYTA1NzMuLmVkMzNmZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCkBAIC04OCwxMTYgKzg4
LDMzIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVzaXplKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHdpZHRoCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5l
IHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3VwKHVpbnQzMl90KiBpbWFnZSwgc2l6ZV90
IHJvd3MsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBz
aXplX3Qgcm93U2l6ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfcmV2ZXJzZV9saW5l
X21vdmUodWludDMyX3QqIGRlc3RpbmF0aW9uLCB1aW50MzJfdCogc291cmNlLCBzaXplX3QgY291
bnQpCiB7Ci0gICAgdWludDMyX3QqIHNvdXJjZTsKLSAgICB1aW50MzJfdCogZGVzdGluYXRpb247
Ci0KLSAgICBkZXN0aW5hdGlvbiA9IGltYWdlICsgeCArIHkgKiByb3dTaXplOwotICAgIHNvdXJj
ZSA9IGRlc3RpbmF0aW9uICsgcm93cyAqIHJvd1NpemU7Ci0gICAgaGVpZ2h0IC09IHJvd3M7Ci0K
LSAgICBmb3IgKDsgaGVpZ2h0ID4gMDsgaGVpZ2h0LS0sIGRlc3RpbmF0aW9uICs9IHJvd1NpemUs
IHNvdXJjZSArPSByb3dTaXplKQotICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwg
d2lkdGggKiA0KTsKKyAgICB1aW50MzJfdCogZW5kT2ZEZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9u
ICsgKGNvdW50IC0gMSk7CisgICAgdWludDMyX3QqIGVuZE9mU291cmNlID0gc291cmNlICsgKGNv
dW50IC0gMSk7CisgICAgZm9yICg7IGRlc3RpbmF0aW9uIDw9IGVuZE9mRGVzdGluYXRpb247IGVu
ZE9mU291cmNlLS0sIGVuZE9mRGVzdGluYXRpb24tLSkKKyAgICAgICAgKmVuZE9mRGVzdGluYXRp
b24gPSAqZW5kT2ZTb3VyY2U7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJf
bW92ZV9yZWdpb25fZG93bih1aW50MzJfdCogaW1hZ2UsIHNpemVfdCByb3dzLCBzaXplX3QgeCwg
c2l6ZV90IHksIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IHJvd1NpemUpCitz
dGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3NjcmVlbl9tb3ZlKHVpbnQzMl90KiBpbWFnZSwg
c2l6ZV90IGRlc3RpbmF0aW9uWCwgc2l6ZV90IGRlc3RpbmF0aW9uWSwgc2l6ZV90IHNvdXJjZVgs
IHNpemVfdCBzb3VyY2VZLCBzaXplX3QgY29weVdpZHRoLCBzaXplX3QgY29weUhlaWdodCwgc2l6
ZV90IGZyYW1lV2lkdGgpCiB7Ci0gICAgdWludDMyX3QqIHNvdXJjZTsKLSAgICB1aW50MzJfdCog
ZGVzdGluYXRpb247Ci0KLSAgICBoZWlnaHQgLT0gcm93czsKLSAgICBzb3VyY2UgPSBpbWFnZSAr
IHggKyAoeSArIGhlaWdodCAtIDEpICogcm93U2l6ZTsKLSAgICBkZXN0aW5hdGlvbiA9IHNvdXJj
ZSArIHJvd3MgKiByb3dTaXplOwotCi0gICAgZm9yICg7IGhlaWdodCA+IDA7IGhlaWdodC0tLCBk
ZXN0aW5hdGlvbiAtPSByb3dTaXplLCBzb3VyY2UgLT0gcm93U2l6ZSkKLSAgICAgICAgbWVtY3B5
KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHdpZHRoICogNCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9p
ZCBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQodWludDMyX3QqIGRlc3RpbmF0aW9uLCBjb25z
dCB1aW50MzJfdCogc291cmNlLCBzaXplX3QgY291bnQpCi17Ci0gICAgdWludDMyX3QqIGVuZE9m
RGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbiArIGNvdW50OwotICAgIC8qIG5vIG1lbWNweSgpIGFz
IGl0IGRvZXMgbm90IGFsbG93IG92ZXJsYXBwaW5nIHJlZ2lvbnMgKi8KLSAgICAvKiBubyBtZW1t
b3ZlKCkgYXMgaXQgd2lsbCBjb3B5IHRvIGEgdGVtcG9yYXJ5IGJ1ZmZlciAqLwotICAgIC8qIFRP
RE86IGxvb3AgdW5yb2xsaW5nLCBjb3B5aW5nIHVwIHRvIHF1YWQtd29yZHMgd291bGQgaGVscCAq
LwotICAgIGZvciAoOyBkZXN0aW5hdGlvbiA8IGVuZE9mRGVzdGluYXRpb247IGRlc3RpbmF0aW9u
KyssIHNvdXJjZSsrKQotICAgICAgICAqZGVzdGluYXRpb24gPSAqc291cmNlOwotfQotCi1zdGF0
aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfbGluZV9yaWdodCh1aW50MzJfdCogZGVz
dGluYXRpb24sIHVpbnQzMl90KiBzb3VyY2UsIHNpemVfdCBjb3VudCkKLXsKLSAgICB1aW50MzJf
dCogZW5kT2ZEZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uIC0gY291bnQ7Ci0gICAgLyogbm8gbWVt
Y3B5KCkgYXMgaXQgZG9lcyBub3QgYWxsb3cgb3ZlcmxhcHBpbmcgcmVnaW9ucyAqLwotICAgIC8q
IG5vIG1lbW1vdmUoKSBhcyBpdCB3aWxsIGNvcHkgdG8gYSB0ZW1wb3JhcnkgYnVmZmVyICovCi0g
ICAgLyogVE9ETzogbG9vcCB1bnJvbGxpbmcsIGNvcHlpbmcgdXAgdG8gcXVhZC13b3JkcyB3b3Vs
ZCBoZWxwICovCi0gICAgZm9yICg7IGRlc3RpbmF0aW9uID4gZW5kT2ZEZXN0aW5hdGlvbjsgZGVz
dGluYXRpb24tLSwgc291cmNlLS0pCi0gICAgICAgICpkZXN0aW5hdGlvbiA9ICpzb3VyY2U7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fbGVmdCh1aW50
MzJfdCogaW1hZ2UsIHNpemVfdCBjb2x1bW5zLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3
aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IHJvd1NpemUpCi17Ci0gICAgdWludDMyX3QqIHNv
dXJjZTsKLSAgICB1aW50MzJfdCogZGVzdGluYXRpb247Ci0KLSAgICBkZXN0aW5hdGlvbiA9IGlt
YWdlICsgeCArIHkgKiByb3dTaXplOwotICAgIHNvdXJjZSA9IGRlc3RpbmF0aW9uICsgY29sdW1u
czsKLSAgICB3aWR0aCAtPSBjb2x1bW5zOwotCi0gICAgZm9yICg7IGhlaWdodCA+IDA7IGhlaWdo
dC0tLCBkZXN0aW5hdGlvbiArPSByb3dTaXplLCBzb3VyY2UgKz0gcm93U2l6ZSkKLSAgICAgICAg
X2V3a192aWV3XzRiX21vdmVfbGluZV9sZWZ0KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHdpZHRoKTsK
LX0KLQotc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9yaWdodCh1
aW50MzJfdCogaW1hZ2UsIHNpemVfdCBjb2x1bW5zLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVf
dCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IHJvd1NpemUpCi17Ci0gICAgdWludDMyX3Qq
IHNvdXJjZTsKLSAgICB1aW50MzJfdCogZGVzdGluYXRpb247Ci0KLSAgICB3aWR0aCAtPSBjb2x1
bW5zOwotICAgIHNvdXJjZSA9IGltYWdlICsgKHggKyB3aWR0aCAtIDEpICsgeSAqIHJvd1NpemU7
Ci0gICAgZGVzdGluYXRpb24gPSBzb3VyY2UgKyBjb2x1bW5zOwotCi0gICAgZm9yICg7IGhlaWdo
dCA+IDA7IGhlaWdodC0tLCBkZXN0aW5hdGlvbiArPSByb3dTaXplLCBzb3VyY2UgKz0gcm93U2l6
ZSkKLSAgICAgICAgX2V3a192aWV3XzRiX21vdmVfbGluZV9yaWdodChkZXN0aW5hdGlvbiwgc291
cmNlLCB3aWR0aCk7Ci19Ci0KLS8qIGNhdGNoLWFsbCBmdW5jdGlvbiwgbm90IGFzIG9wdGltaXpl
ZCBhcyB0aGUgb3RoZXJzLCBidXQgZG9lcyB0aGUgd29yay4gKi8KLXN0YXRpYyBpbmxpbmUgdm9p
ZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb24odWludDMyX3QqIGltYWdlLCBpbnQgZGVsdGFYLCBp
bnQgZGVsdGFZLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdo
dCwgc2l6ZV90IHJvd1NpemUpCi17Ci0gICAgdWludDMyX3QqIHNvdXJjZTsKLSAgICB1aW50MzJf
dCogZGVzdGluYXRpb247Ci0KLSAgICBpZiAoZGVsdGFZIDwgMCkgewotICAgICAgICBoZWlnaHQg
Kz0gZGVsdGFZOwotICAgICAgICBkZXN0aW5hdGlvbiA9IGltYWdlICsgeCArIHkgKiByb3dTaXpl
OwotICAgICAgICBzb3VyY2UgPSBkZXN0aW5hdGlvbiAtIGRlbHRhWSAqIHJvd1NpemU7Ci0gICAg
ICAgIGlmIChkZWx0YVggPD0gMCkgewotICAgICAgICAgICAgd2lkdGggKz0gZGVsdGFYOwotICAg
ICAgICAgICAgc291cmNlIC09IGRlbHRhWDsKLSAgICAgICAgICAgIGZvciAoOyBoZWlnaHQgPiAw
OyBoZWlnaHQtLSwgZGVzdGluYXRpb24gKz0gcm93U2l6ZSwgc291cmNlICs9IHJvd1NpemUpCi0g
ICAgICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfbGluZV9sZWZ0KGRlc3RpbmF0aW9uLCBz
b3VyY2UsIHdpZHRoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHdpZHRoIC09IGRl
bHRhWDsKLSAgICAgICAgICAgIHNvdXJjZSArPSB3aWR0aCAtIDE7Ci0gICAgICAgICAgICBkZXN0
aW5hdGlvbiArPSB3aWR0aCArIGRlbHRhWCAtMTsKLSAgICAgICAgICAgIGZvciAoOyBoZWlnaHQg
PiAwOyBoZWlnaHQtLSwgZGVzdGluYXRpb24gKz0gcm93U2l6ZSwgc291cmNlICs9IHJvd1NpemUp
Ci0gICAgICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfbGluZV9yaWdodChkZXN0aW5hdGlv
biwgc291cmNlLCB3aWR0aCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBoZWln
aHQgLT0gZGVsdGFZOwotICAgICAgICBzb3VyY2UgPSBpbWFnZSArIHggKyAoeSArIGhlaWdodCAt
IDEpICogcm93U2l6ZTsKLSAgICAgICAgZGVzdGluYXRpb24gPSBzb3VyY2UgKyBkZWx0YVkgKiBy
b3dTaXplOwotICAgICAgICBpZiAoZGVsdGFYIDw9IDApIHsKLSAgICAgICAgICAgIHdpZHRoICs9
IGRlbHRhWDsKLSAgICAgICAgICAgIHNvdXJjZSAtPSBkZWx0YVg7Ci0gICAgICAgICAgICBmb3Ig
KDsgaGVpZ2h0ID4gMDsgaGVpZ2h0LS0sIGRlc3RpbmF0aW9uIC09IHJvd1NpemUsIHNvdXJjZSAt
PSByb3dTaXplKQotICAgICAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfbGVmdChk
ZXN0aW5hdGlvbiwgc291cmNlLCB3aWR0aCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICB3aWR0aCAtPSBkZWx0YVg7Ci0gICAgICAgICAgICBzb3VyY2UgKz0gd2lkdGggLSAxOwotICAg
ICAgICAgICAgZGVzdGluYXRpb24gKz0gd2lkdGggKyBkZWx0YVggLSAxOwotICAgICAgICAgICAg
Zm9yICg7IGhlaWdodCA+IDA7IGhlaWdodC0tLCBkZXN0aW5hdGlvbiAtPSByb3dTaXplLCBzb3Vy
Y2UgLT0gcm93U2l6ZSkKLSAgICAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX3Jp
Z2h0KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHdpZHRoKTsKLSAgICAgICAgfQorICAgIHVpbnQzMl90
KiBzb3VyY2VCZWdpbiA9IGltYWdlICsgKGZyYW1lV2lkdGggKiBzb3VyY2VZKSArIHNvdXJjZVg7
CisgICAgdWludDMyX3QqIGRlc3RpbmF0aW9uQmVnaW4gPSBpbWFnZSArIChmcmFtZVdpZHRoICog
ZGVzdGluYXRpb25ZKSArIGRlc3RpbmF0aW9uWDsKKworICAgIGNvbnN0IGJvb2wgbW92ZUxpbmVM
ZWZ0ID0gc291cmNlWCA+PSBkZXN0aW5hdGlvblggPyB0cnVlIDogZmFsc2U7CisgICAgY29uc3Qg
aW50IG1vdmVMaW5lVXBEb3duID0gc291cmNlWSA+PSBkZXN0aW5hdGlvblkgPyAxIDogLTE7Cisg
ICAgaW50IHN0YXJ0SGVpZ2h0ID0gc291cmNlWSA+PSBkZXN0aW5hdGlvblkgPyAwIDogY29weUhl
aWdodCAtIDE7CisKKyAgICB1aW50MzJfdCogc291cmNlLCAqIGRlc3RpbmF0aW9uOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgY29weUhlaWdodDsgaSsrKSB7CisgICAgICAgIHNvdXJjZSA9IHNv
dXJjZUJlZ2luICsgKGZyYW1lV2lkdGggKiBzdGFydEhlaWdodCk7CisgICAgICAgIGRlc3RpbmF0
aW9uID0gZGVzdGluYXRpb25CZWdpbiArIChmcmFtZVdpZHRoICogc3RhcnRIZWlnaHQpOworICAg
ICAgICBzdGFydEhlaWdodCA9IHN0YXJ0SGVpZ2h0ICsgbW92ZUxpbmVVcERvd247CisKKyAgICAg
ICAgaWYgKG1vdmVMaW5lTGVmdCkKKyAgICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291
cmNlLCBjb3B5V2lkdGggKiA0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgX2V3a192aWV3
X3JldmVyc2VfbGluZV9tb3ZlKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvcHlXaWR0aCk7CiAgICAg
fQogfQogCkBAIC0yNDEsMTA1ICsxNTgsMzYgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmll
d19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHMKICAg
ICAgICAgc2Nyb2xsSGVpZ2h0ID0gMDsKIAogICAgIEVJTkFfU0FGRVRZX09OX1RSVUVfUkVUVVJO
KCFzY3JvbGxXaWR0aCB8fCAhc2Nyb2xsSGVpZ2h0KTsKLSAgICBpZiAoIXNjcm9sbFJlcXVlc3Qt
PmR4KSB7Ci0gICAgICAgIGlmIChzY3JvbGxSZXF1ZXN0LT5keSA8IDApIHsKLSAgICAgICAgICAg
IERCRygic2Nyb2xsIHVwOiAlKzAzZCwlKzAzZCB1cGRhdGU9JWQsJWQrJWR4JWQsICIKLSAgICAg
ICAgICAgICAgICAicmVwYWludD0lZCwlZCslZHglZCIsCi0gICAgICAgICAgICAgICAgc2Nyb2xs
UmVxdWVzdC0+ZHgsIHNjcm9sbFJlcXVlc3QtPmR5LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxX
aWR0aCwgc2Nyb2xsSGVpZ2h0ICsgc2Nyb2xsUmVxdWVzdC0+ZHksCi0gICAgICAgICAgICAgICAg
c2Nyb2xsWCwgc2Nyb2xsWSArIHNjcm9sbEhlaWdodCArIHNjcm9sbFJlcXVlc3QtPmR5LCBzY3Jv
bGxXaWR0aCwgLXNjcm9sbFJlcXVlc3QtPmR5KTsKLQotICAgICAgICAgICAgX2V3a192aWV3XzRi
X21vdmVfcmVnaW9uX3VwCi0gICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4o
cGl4ZWxzKSwgLXNjcm9sbFJlcXVlc3QtPmR5LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0
aCwgc2Nyb2xsSGVpZ2h0LCB3aWR0aCk7Ci0gICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9k
YXRhX3VwZGF0ZV9hZGQKLSAgICAgICAgICAgICAgICAoc21hcnREYXRhLT5iYWNraW5nX3N0b3Jl
LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0ICsgc2Nyb2xsUmVx
dWVzdC0+ZHkpOwotCi0gICAgICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEt
Pl9wcml2LCBzY3JvbGxYLCBzY3JvbGxZICsgc2Nyb2xsSGVpZ2h0ICsgc2Nyb2xsUmVxdWVzdC0+
ZHksIHNjcm9sbFdpZHRoLCAtc2Nyb2xsUmVxdWVzdC0+ZHkpOwotICAgICAgICB9IGVsc2UgaWYg
KHNjcm9sbFJlcXVlc3QtPmR5ID4gMCkgewotICAgICAgICAgICAgREJHKCJzY3JvbGwgZG93bjog
JSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCi0gICAgICAgICAgICAgICAgInJlcGFp
bnQ9JWQsJWQrJWR4JWQiLAotICAgICAgICAgICAgICAgIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3Jv
bGxSZXF1ZXN0LT5keSwgc2Nyb2xsWCwgc2Nyb2xsWSArIHNjcm9sbFJlcXVlc3QtPmR5LCBzY3Jv
bGxXaWR0aCwgc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsUmVxdWVzdC0+ZHksCi0gICAgICAgICAgICAg
ICAgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGgsIHNjcm9sbFJlcXVlc3QtPmR5KTsKLQot
ICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX2Rvd24KLSAgICAgICAgICAgICAg
ICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCBzY3JvbGxSZXF1ZXN0LT5keSwgc2Ny
b2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGgsIHNjcm9sbEhlaWdodCwgd2lkdGgpOwotICAgICAg
ICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCi0gICAgICAgICAgICAgICAg
KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgc2Nyb2xsWCwgc2Nyb2xsWSArIHNjcm9sbFJlcXVl
c3QtPmR5LCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsUmVxdWVzdC0+ZHkpOwot
Ci0gICAgICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCBzY3Jv
bGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Nyb2xsUmVxdWVzdC0+ZHkpOwotICAgICAgICB9
Ci0gICAgfSBlbHNlIGlmICghc2Nyb2xsUmVxdWVzdC0+ZHkpIHsKLSAgICAgICAgaWYgKHNjcm9s
bFJlcXVlc3QtPmR4IDwgMCkgewotICAgICAgICAgICAgREJHKCJzY3JvbGwgbGVmdDogJSswM2Qs
JSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCi0gICAgICAgICAgICAgICAgInJlcGFpbnQ9JWQs
JWQrJWR4JWQiLAotICAgICAgICAgICAgICAgIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxSZXF1
ZXN0LT5keSwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGggKyBzY3JvbGxSZXF1ZXN0LT5k
eCwgc2Nyb2xsSGVpZ2h0LAotICAgICAgICAgICAgICAgIHNjcm9sbFggKyBzY3JvbGxXaWR0aCAr
IHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxZLCAtc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbEhl
aWdodCk7Ci0KLSAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9sZWZ0Ci0gICAg
ICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgLXNjcm9sbFJlcXVl
c3QtPmR4LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0LCB3aWR0
aCk7Ci0gICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKLSAgICAg
ICAgICAgICAgICAoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBzY3JvbGxYLCBzY3JvbGxZLCBz
Y3JvbGxXaWR0aCArIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxIZWlnaHQpOwotCi0gICAgICAg
ICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCBzY3JvbGxYICsgc2Ny
b2xsV2lkdGggKyBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsWSwgLXNjcm9sbFJlcXVlc3QtPmR4
LCBzY3JvbGxIZWlnaHQpOwotICAgICAgICB9IGVsc2UgaWYgKHNjcm9sbFJlcXVlc3QtPmR4ID4g
MCkgewotICAgICAgICAgICAgREJHKCJzY3JvbGwgdXA6ICUrMDNkLCUrMDNkIHVwZGF0ZT0lZCwl
ZCslZHglZCwgIgotICAgICAgICAgICAgICAgICJyZXBhaW50PSVkLCVkKyVkeCVkIiwKLSAgICAg
ICAgICAgICAgICBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsUmVxdWVzdC0+ZHksIHNjcm9sbFgg
KyBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGggLSBzY3JvbGxSZXF1ZXN0
LT5keCwgc2Nyb2xsSGVpZ2h0LAotICAgICAgICAgICAgICAgIHNjcm9sbFgsIHNjcm9sbFksIHNj
cm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxIZWlnaHQpOwotCi0gICAgICAgICAgICBfZXdrX3ZpZXdf
NGJfbW92ZV9yZWdpb25fcmlnaHQKLSAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMy
X3QqPihwaXhlbHMpLCBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xs
V2lkdGgsIHNjcm9sbEhlaWdodCwgd2lkdGgpOwotICAgICAgICAgICAgZXZhc19vYmplY3RfaW1h
Z2VfZGF0YV91cGRhdGVfYWRkCi0gICAgICAgICAgICAgICAgKHNtYXJ0RGF0YS0+YmFja2luZ19z
dG9yZSwgc2Nyb2xsWCArIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxZLCBzY3JvbGxXaWR0aCAt
IHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxIZWlnaHQpOwotCi0gICAgICAgICAgICBld2tfdmll
d19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxS
ZXF1ZXN0LT5keCwgc2Nyb2xsSGVpZ2h0KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIEV2YXNfQ29vcmQgbW92ZVgsIG1vdmVZLCBtb3ZlV2lkdGgsIG1vdmVIZWlnaHQ7Ci0gICAg
ICAgIEV2YXNfQ29vcmQgdmVydGljYWxYLCB2ZXJ0aWNhbFksIHZlcnRpY2FsV2lkdGgsIHZlcnRp
Y2FsSGVpZ2h0OwotICAgICAgICBFdmFzX0Nvb3JkIGhvcml6b250YWxYLCBob3Jpem9udGFsWSwg
aG9yaXpvbnRhbFdpZHRoLCBob3Jpem9udGFsSGVpZ2h0OwotCi0gICAgICAgIGlmIChzY3JvbGxS
ZXF1ZXN0LT5keCA8IDApIHsKLSAgICAgICAgICAgIG1vdmVYID0gc2Nyb2xsWDsKLSAgICAgICAg
ICAgIG1vdmVXaWR0aCA9IHNjcm9sbFdpZHRoICsgc2Nyb2xsUmVxdWVzdC0+ZHg7Ci0gICAgICAg
ICAgICB2ZXJ0aWNhbFggPSBtb3ZlWCArIG1vdmVXaWR0aDsKLSAgICAgICAgICAgIHZlcnRpY2Fs
V2lkdGggPSAtc2Nyb2xsUmVxdWVzdC0+ZHg7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICB2ZXJ0aWNhbFggPSBzY3JvbGxYOwotICAgICAgICAgICAgdmVydGljYWxXaWR0aCA9IHNjcm9s
bFJlcXVlc3QtPmR4OwotICAgICAgICAgICAgbW92ZVggPSB2ZXJ0aWNhbFggKyB2ZXJ0aWNhbFdp
ZHRoOwotICAgICAgICAgICAgbW92ZVdpZHRoID0gc2Nyb2xsV2lkdGggLSBzY3JvbGxSZXF1ZXN0
LT5keDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzY3JvbGxSZXF1ZXN0LT5keSA8IDApIHsK
LSAgICAgICAgICAgIG1vdmVZID0gc2Nyb2xsWTsKLSAgICAgICAgICAgIG1vdmVIZWlnaHQgPSBz
Y3JvbGxIZWlnaHQgKyBzY3JvbGxSZXF1ZXN0LT5keTsKLSAgICAgICAgICAgIGhvcml6b250YWxZ
ID0gbW92ZVkgKyBtb3ZlSGVpZ2h0OwotICAgICAgICAgICAgaG9yaXpvbnRhbEhlaWdodCA9IC1z
Y3JvbGxSZXF1ZXN0LT5keTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGhvcml6b250
YWxZID0gc2Nyb2xsWTsKLSAgICAgICAgICAgIGhvcml6b250YWxIZWlnaHQgPSBzY3JvbGxSZXF1
ZXN0LT5keTsKLSAgICAgICAgICAgIG1vdmVZID0gaG9yaXpvbnRhbFkgKyBob3Jpem9udGFsSGVp
Z2h0OwotICAgICAgICAgICAgbW92ZUhlaWdodCA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFJlcXVl
c3QtPmR5OwotICAgICAgICB9Ci0KLSAgICAgICAgdmVydGljYWxZID0gbW92ZVk7Ci0gICAgICAg
IHZlcnRpY2FsSGVpZ2h0ID0gbW92ZUhlaWdodDsKLSAgICAgICAgaG9yaXpvbnRhbFggPSBzY3Jv
bGxYOwotICAgICAgICBob3Jpem9udGFsV2lkdGggPSBzY3JvbGxXaWR0aDsKLQotICAgICAgICBE
QkcoInNjcm9sbCBkaWFnb25hbDogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCi0g
ICAgICAgICAgICAicmVwYWludHM6IGg9JWQsJWQrJWR4JWQgdj0lZCwlZCslZHglZCIsCi0gICAg
ICAgICAgICBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsUmVxdWVzdC0+ZHksIG1vdmVYLCBtb3Zl
WSwgbW92ZVdpZHRoLCBtb3ZlSGVpZ2h0LAotICAgICAgICAgICAgdmVydGljYWxYLCB2ZXJ0aWNh
bFksIHZlcnRpY2FsV2lkdGgsIHZlcnRpY2FsSGVpZ2h0LAotICAgICAgICAgICAgaG9yaXpvbnRh
bFgsIGhvcml6b250YWxZLCBob3Jpem9udGFsV2lkdGgsIGhvcml6b250YWxIZWlnaHQpOwotCi0g
ICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbgotICAgICAgICAgICAgKHN0YXRpY19jYXN0
PHVpbnQzMl90Kj4ocGl4ZWxzKSwgc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbFJlcXVlc3QtPmR5
LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0LCB3aWR0aCk7Ci0K
LSAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkKHNtYXJ0RGF0YS0+YmFj
a2luZ19zdG9yZSwgbW92ZVgsIG1vdmVZLCBtb3ZlV2lkdGgsIG1vdmVIZWlnaHQpOwotICAgICAg
ICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCB2ZXJ0aWNhbFgsIHZlcnRp
Y2FsWSwgdmVydGljYWxXaWR0aCwgdmVydGljYWxIZWlnaHQpOwotICAgICAgICBld2tfdmlld19y
ZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCBob3Jpem9udGFsWCwgaG9yaXpvbnRhbFksIGhv
cml6b250YWxXaWR0aCwgaG9yaXpvbnRhbEhlaWdodCk7Ci0gICAgfQorCisgICAgaW50IHNvdXJj
ZVggPSBzY3JvbGxSZXF1ZXN0LT5keCA8IDAgPyBhYnMoc2Nyb2xsUmVxdWVzdC0+ZHgpIDogMDsK
KyAgICBpbnQgc291cmNlWSA9IHNjcm9sbFJlcXVlc3QtPmR5IDwgMCA/IGFicyhzY3JvbGxSZXF1
ZXN0LT5keSkgOiAwOworICAgIGludCBkZXN0aW5hdGlvblggPSBzY3JvbGxSZXF1ZXN0LT5keCA8
IDAgPyAwIDogc2Nyb2xsUmVxdWVzdC0+ZHg7CisgICAgaW50IGRlc3RpbmF0aW9uWSA9IHNjcm9s
bFJlcXVlc3QtPmR5IDwgMCA/IDAgOiBzY3JvbGxSZXF1ZXN0LT5keTsKKyAgICBpbnQgY29weVdp
ZHRoID0gc2Nyb2xsV2lkdGggLSBhYnMoc2Nyb2xsUmVxdWVzdC0+ZHgpOworICAgIGludCBjb3B5
SGVpZ2h0ID0gc2Nyb2xsSGVpZ2h0IC0gYWJzKHNjcm9sbFJlcXVlc3QtPmR5KTsKKworICAgIEVp
bmFfUmVjdGFuZ2xlIHZlcnRpY2FsVXBkYXRlOworICAgIHZlcnRpY2FsVXBkYXRlLnggPSBkZXN0
aW5hdGlvblggPyAwIDogY29weVdpZHRoOworICAgIHZlcnRpY2FsVXBkYXRlLnkgPSAwOworICAg
IHZlcnRpY2FsVXBkYXRlLncgPSBzY3JvbGxXaWR0aCAtIGNvcHlXaWR0aDsKKyAgICB2ZXJ0aWNh
bFVwZGF0ZS5oID0gc2Nyb2xsSGVpZ2h0OworCisgICAgRWluYV9SZWN0YW5nbGUgaG9yaXpvbnRh
bFVwZGF0ZTsKKyAgICBob3Jpem9udGFsVXBkYXRlLnggPSBkZXN0aW5hdGlvblg7CisgICAgaG9y
aXpvbnRhbFVwZGF0ZS55ID0gZGVzdGluYXRpb25ZID8gMCA6IGNvcHlIZWlnaHQgLSAxOworICAg
IGhvcml6b250YWxVcGRhdGUudyA9IGNvcHlXaWR0aDsKKyAgICBob3Jpem9udGFsVXBkYXRlLmgg
PSBzY3JvbGxIZWlnaHQgLSBjb3B5SGVpZ2h0OworCisgICAgaWYgKGRlc3RpbmF0aW9uWCAhPSBz
b3VyY2VYIHx8IGRlc3RpbmF0aW9uWSAhPSBzb3VyY2VZKQorICAgICAgICBfZXdrX3ZpZXdfc2Ny
ZWVuX21vdmUoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCBkZXN0aW5hdGlvblgsIGRl
c3RpbmF0aW9uWSwgc291cmNlWCwgc291cmNlWSwgY29weVdpZHRoLCBjb3B5SGVpZ2h0LCBzY3Jv
bGxXaWR0aCk7CisKKyAgICBpZiAodmVydGljYWxVcGRhdGUudyAmJiB2ZXJ0aWNhbFVwZGF0ZS5o
KQorICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCB2ZXJ0aWNh
bFVwZGF0ZS54LCB2ZXJ0aWNhbFVwZGF0ZS55LCB2ZXJ0aWNhbFVwZGF0ZS53LCB2ZXJ0aWNhbFVw
ZGF0ZS5oKTsKKworICAgIGlmIChob3Jpem9udGFsVXBkYXRlLncgJiYgaG9yaXpvbnRhbFVwZGF0
ZS5oKQorICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCBob3Jp
em9udGFsVXBkYXRlLngsIGhvcml6b250YWxVcGRhdGUueSwgaG9yaXpvbnRhbFVwZGF0ZS53LCBo
b3Jpem9udGFsVXBkYXRlLmgpOworCisgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVf
YWRkKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lk
dGgsIHNjcm9sbEhlaWdodCk7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Npbmds
ZV9zbWFydF9zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121077</attachid>
            <date>2012-01-04 00:58:11 -0800</date>
            <delta_ts>2012-01-04 23:42:34 -0800</delta_ts>
            <desc>minor fix</desc>
            <filename>single_scroll.patch</filename>
            <type>text/plain</type>
            <size>14302</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBmMzVlY2QzLi40NWVlZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDEtMDQgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmVmYWN0b3Igc2luZ2xlIGJhY2tpbmcgc3RvcmUg
c2Nyb2xsIGNvZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTI0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSB0aGUgZHVwbGljYXRlZCBjb2RlIGFuZCByZWZhY3RvciB0aGUgc2Nyb2xsIHBy
b2NlZHVyZS4KKyAgICAgICAgV2hlcmV2ZXIgdGhlIHBhZ2UgaXMgc2Nyb2xsZWQsIHRoZXJlIGFy
ZSBvbmUgc2NyZWVuIGNvcHkgYW5kIHR3byB1cGRhdGVzLgorICAgICAgICBUaGlzIHBhdGNoIG9w
dGltaXNlcyB0aGUgc2Nyb2xsIHByb2NlZHVyZSBieSBsZXNzIGNhbGN1bGF0aW9uLgorCisgICAg
ICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcmV2ZXJz
ZV9saW5lX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NjcmVlbl9tb3ZlKToKKyAgICAgICAg
KF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKToKKwogMjAxMi0wMS0wMyAg
Sm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgTGVhayBvZiBXZWJOb3RpZmlj
YXRpb25DbGllbnQgd2hlbiBwYWdlIGlzIGRlc3Ryb3llZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXdfc2luZ2xlLmNwcAppbmRleCAzYmEwNTczLi5iY2MxZmZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcApAQCAtODgsMTE2ICs4OCwzNCBAQCBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCogZXdrVmll
dywgRXZhc19Db29yZCB3aWR0aAogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSB2b2lkIF9ld2tf
dmlld180Yl9tb3ZlX3JlZ2lvbl91cCh1aW50MzJfdCogaW1hZ2UsIHNpemVfdCByb3dzLCBzaXpl
X3QgeCwgc2l6ZV90IHksIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IHJvd1Np
emUpCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3JldmVyc2VfbGluZV9tb3ZlKHVpbnQz
Ml90KiBkZXN0aW5hdGlvbiwgdWludDMyX3QqIHNvdXJjZSwgc2l6ZV90IGNvdW50KQogewotICAg
IHVpbnQzMl90KiBzb3VyY2U7Ci0gICAgdWludDMyX3QqIGRlc3RpbmF0aW9uOwotCi0gICAgZGVz
dGluYXRpb24gPSBpbWFnZSArIHggKyB5ICogcm93U2l6ZTsKLSAgICBzb3VyY2UgPSBkZXN0aW5h
dGlvbiArIHJvd3MgKiByb3dTaXplOwotICAgIGhlaWdodCAtPSByb3dzOwotCi0gICAgZm9yICg7
IGhlaWdodCA+IDA7IGhlaWdodC0tLCBkZXN0aW5hdGlvbiArPSByb3dTaXplLCBzb3VyY2UgKz0g
cm93U2l6ZSkKLSAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHdpZHRoICogNCk7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fZG93bih1
aW50MzJfdCogaW1hZ2UsIHNpemVfdCByb3dzLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3
aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IHJvd1NpemUpCi17Ci0gICAgdWludDMyX3QqIHNv
dXJjZTsKLSAgICB1aW50MzJfdCogZGVzdGluYXRpb247Ci0KLSAgICBoZWlnaHQgLT0gcm93czsK
LSAgICBzb3VyY2UgPSBpbWFnZSArIHggKyAoeSArIGhlaWdodCAtIDEpICogcm93U2l6ZTsKLSAg
ICBkZXN0aW5hdGlvbiA9IHNvdXJjZSArIHJvd3MgKiByb3dTaXplOwotCi0gICAgZm9yICg7IGhl
aWdodCA+IDA7IGhlaWdodC0tLCBkZXN0aW5hdGlvbiAtPSByb3dTaXplLCBzb3VyY2UgLT0gcm93
U2l6ZSkKLSAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHdpZHRoICogNCk7Cisg
ICAgc2l6ZV90IHdpZHRoID0gY291bnQgLSAxOworICAgIHVpbnQzMl90KiBlbmRPZkRlc3RpbmF0
aW9uID0gZGVzdGluYXRpb24gKyB3aWR0aDsKKyAgICB1aW50MzJfdCogZW5kT2ZTb3VyY2UgPSBz
b3VyY2UgKyB3aWR0aDsKKyAgICBmb3IgKDsgZGVzdGluYXRpb24gPD0gZW5kT2ZEZXN0aW5hdGlv
bjsgZW5kT2ZTb3VyY2UtLSwgZW5kT2ZEZXN0aW5hdGlvbi0tKQorICAgICAgICAqZW5kT2ZEZXN0
aW5hdGlvbiA9ICplbmRPZlNvdXJjZTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmll
d180Yl9tb3ZlX2xpbmVfbGVmdCh1aW50MzJfdCogZGVzdGluYXRpb24sIGNvbnN0IHVpbnQzMl90
KiBzb3VyY2UsIHNpemVfdCBjb3VudCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2Ny
ZWVuX21vdmUodWludDMyX3QqIGltYWdlLCBzaXplX3QgZGVzdGluYXRpb25YLCBzaXplX3QgZGVz
dGluYXRpb25ZLCBzaXplX3Qgc291cmNlWCwgc2l6ZV90IHNvdXJjZVksIHNpemVfdCBjb3B5V2lk
dGgsIHNpemVfdCBjb3B5SGVpZ2h0LCBzaXplX3QgZnJhbWVXaWR0aCkKIHsKLSAgICB1aW50MzJf
dCogZW5kT2ZEZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uICsgY291bnQ7Ci0gICAgLyogbm8gbWVt
Y3B5KCkgYXMgaXQgZG9lcyBub3QgYWxsb3cgb3ZlcmxhcHBpbmcgcmVnaW9ucyAqLwotICAgIC8q
IG5vIG1lbW1vdmUoKSBhcyBpdCB3aWxsIGNvcHkgdG8gYSB0ZW1wb3JhcnkgYnVmZmVyICovCi0g
ICAgLyogVE9ETzogbG9vcCB1bnJvbGxpbmcsIGNvcHlpbmcgdXAgdG8gcXVhZC13b3JkcyB3b3Vs
ZCBoZWxwICovCi0gICAgZm9yICg7IGRlc3RpbmF0aW9uIDwgZW5kT2ZEZXN0aW5hdGlvbjsgZGVz
dGluYXRpb24rKywgc291cmNlKyspCi0gICAgICAgICpkZXN0aW5hdGlvbiA9ICpzb3VyY2U7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KHVpbnQz
Ml90KiBkZXN0aW5hdGlvbiwgdWludDMyX3QqIHNvdXJjZSwgc2l6ZV90IGNvdW50KQotewotICAg
IHVpbnQzMl90KiBlbmRPZkRlc3RpbmF0aW9uID0gZGVzdGluYXRpb24gLSBjb3VudDsKLSAgICAv
KiBubyBtZW1jcHkoKSBhcyBpdCBkb2VzIG5vdCBhbGxvdyBvdmVybGFwcGluZyByZWdpb25zICov
Ci0gICAgLyogbm8gbWVtbW92ZSgpIGFzIGl0IHdpbGwgY29weSB0byBhIHRlbXBvcmFyeSBidWZm
ZXIgKi8KLSAgICAvKiBUT0RPOiBsb29wIHVucm9sbGluZywgY29weWluZyB1cCB0byBxdWFkLXdv
cmRzIHdvdWxkIGhlbHAgKi8KLSAgICBmb3IgKDsgZGVzdGluYXRpb24gPiBlbmRPZkRlc3RpbmF0
aW9uOyBkZXN0aW5hdGlvbi0tLCBzb3VyY2UtLSkKLSAgICAgICAgKmRlc3RpbmF0aW9uID0gKnNv
dXJjZTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9s
ZWZ0KHVpbnQzMl90KiBpbWFnZSwgc2l6ZV90IGNvbHVtbnMsIHNpemVfdCB4LCBzaXplX3QgeSwg
c2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3Qgcm93U2l6ZSkKLXsKLSAgICB1aW50
MzJfdCogc291cmNlOwotICAgIHVpbnQzMl90KiBkZXN0aW5hdGlvbjsKLQotICAgIGRlc3RpbmF0
aW9uID0gaW1hZ2UgKyB4ICsgeSAqIHJvd1NpemU7Ci0gICAgc291cmNlID0gZGVzdGluYXRpb24g
KyBjb2x1bW5zOwotICAgIHdpZHRoIC09IGNvbHVtbnM7Ci0KLSAgICBmb3IgKDsgaGVpZ2h0ID4g
MDsgaGVpZ2h0LS0sIGRlc3RpbmF0aW9uICs9IHJvd1NpemUsIHNvdXJjZSArPSByb3dTaXplKQot
ICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQoZGVzdGluYXRpb24sIHNvdXJjZSwg
d2lkdGgpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9u
X3JpZ2h0KHVpbnQzMl90KiBpbWFnZSwgc2l6ZV90IGNvbHVtbnMsIHNpemVfdCB4LCBzaXplX3Qg
eSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3Qgcm93U2l6ZSkKLXsKLSAgICB1
aW50MzJfdCogc291cmNlOwotICAgIHVpbnQzMl90KiBkZXN0aW5hdGlvbjsKLQotICAgIHdpZHRo
IC09IGNvbHVtbnM7Ci0gICAgc291cmNlID0gaW1hZ2UgKyAoeCArIHdpZHRoIC0gMSkgKyB5ICog
cm93U2l6ZTsKLSAgICBkZXN0aW5hdGlvbiA9IHNvdXJjZSArIGNvbHVtbnM7Ci0KLSAgICBmb3Ig
KDsgaGVpZ2h0ID4gMDsgaGVpZ2h0LS0sIGRlc3RpbmF0aW9uICs9IHJvd1NpemUsIHNvdXJjZSAr
PSByb3dTaXplKQotICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHdpZHRoKTsKLX0KLQotLyogY2F0Y2gtYWxsIGZ1bmN0aW9uLCBub3QgYXMg
b3B0aW1pemVkIGFzIHRoZSBvdGhlcnMsIGJ1dCBkb2VzIHRoZSB3b3JrLiAqLwotc3RhdGljIGlu
bGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbih1aW50MzJfdCogaW1hZ2UsIGludCBk
ZWx0YVgsIGludCBkZWx0YVksIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHdpZHRoLCBzaXpl
X3QgaGVpZ2h0LCBzaXplX3Qgcm93U2l6ZSkKLXsKLSAgICB1aW50MzJfdCogc291cmNlOwotICAg
IHVpbnQzMl90KiBkZXN0aW5hdGlvbjsKLQotICAgIGlmIChkZWx0YVkgPCAwKSB7Ci0gICAgICAg
IGhlaWdodCArPSBkZWx0YVk7Ci0gICAgICAgIGRlc3RpbmF0aW9uID0gaW1hZ2UgKyB4ICsgeSAq
IHJvd1NpemU7Ci0gICAgICAgIHNvdXJjZSA9IGRlc3RpbmF0aW9uIC0gZGVsdGFZICogcm93U2l6
ZTsKLSAgICAgICAgaWYgKGRlbHRhWCA8PSAwKSB7Ci0gICAgICAgICAgICB3aWR0aCArPSBkZWx0
YVg7Ci0gICAgICAgICAgICBzb3VyY2UgLT0gZGVsdGFYOwotICAgICAgICAgICAgZm9yICg7IGhl
aWdodCA+IDA7IGhlaWdodC0tLCBkZXN0aW5hdGlvbiArPSByb3dTaXplLCBzb3VyY2UgKz0gcm93
U2l6ZSkKLSAgICAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQoZGVzdGlu
YXRpb24sIHNvdXJjZSwgd2lkdGgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgd2lk
dGggLT0gZGVsdGFYOwotICAgICAgICAgICAgc291cmNlICs9IHdpZHRoIC0gMTsKLSAgICAgICAg
ICAgIGRlc3RpbmF0aW9uICs9IHdpZHRoICsgZGVsdGFYIC0xOwotICAgICAgICAgICAgZm9yICg7
IGhlaWdodCA+IDA7IGhlaWdodC0tLCBkZXN0aW5hdGlvbiArPSByb3dTaXplLCBzb3VyY2UgKz0g
cm93U2l6ZSkKLSAgICAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KGRl
c3RpbmF0aW9uLCBzb3VyY2UsIHdpZHRoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGhlaWdodCAtPSBkZWx0YVk7Ci0gICAgICAgIHNvdXJjZSA9IGltYWdlICsgeCArICh5ICsg
aGVpZ2h0IC0gMSkgKiByb3dTaXplOwotICAgICAgICBkZXN0aW5hdGlvbiA9IHNvdXJjZSArIGRl
bHRhWSAqIHJvd1NpemU7Ci0gICAgICAgIGlmIChkZWx0YVggPD0gMCkgewotICAgICAgICAgICAg
d2lkdGggKz0gZGVsdGFYOwotICAgICAgICAgICAgc291cmNlIC09IGRlbHRhWDsKLSAgICAgICAg
ICAgIGZvciAoOyBoZWlnaHQgPiAwOyBoZWlnaHQtLSwgZGVzdGluYXRpb24gLT0gcm93U2l6ZSwg
c291cmNlIC09IHJvd1NpemUpCi0gICAgICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfbGlu
ZV9sZWZ0KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHdpZHRoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHdpZHRoIC09IGRlbHRhWDsKLSAgICAgICAgICAgIHNvdXJjZSArPSB3aWR0aCAt
IDE7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbiArPSB3aWR0aCArIGRlbHRhWCAtIDE7Ci0gICAg
ICAgICAgICBmb3IgKDsgaGVpZ2h0ID4gMDsgaGVpZ2h0LS0sIGRlc3RpbmF0aW9uIC09IHJvd1Np
emUsIHNvdXJjZSAtPSByb3dTaXplKQotICAgICAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3Zl
X2xpbmVfcmlnaHQoZGVzdGluYXRpb24sIHNvdXJjZSwgd2lkdGgpOwotICAgICAgICB9CisgICAg
dWludDMyX3QqIHNvdXJjZUJlZ2luID0gaW1hZ2UgKyAoZnJhbWVXaWR0aCAqIHNvdXJjZVkpICsg
c291cmNlWDsKKyAgICB1aW50MzJfdCogZGVzdGluYXRpb25CZWdpbiA9IGltYWdlICsgKGZyYW1l
V2lkdGggKiBkZXN0aW5hdGlvblkpICsgZGVzdGluYXRpb25YOworCisgICAgY29uc3QgYm9vbCBt
b3ZlTGluZUxlZnQgPSBzb3VyY2VYID49IGRlc3RpbmF0aW9uWCA/IHRydWUgOiBmYWxzZTsKKyAg
ICBjb25zdCBpbnQgbW92ZUxpbmVVcERvd24gPSBzb3VyY2VZID49IGRlc3RpbmF0aW9uWSA/IDEg
OiAtMTsKKyAgICBpbnQgc3RhcnRIZWlnaHQgPSBzb3VyY2VZID49IGRlc3RpbmF0aW9uWSA/IDAg
OiBjb3B5SGVpZ2h0IC0gMTsKKworICAgIHVpbnQzMl90KiBzb3VyY2UsICogZGVzdGluYXRpb247
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3B5SGVpZ2h0OyBpKyspIHsKKyAgICAgICAgc291
cmNlID0gc291cmNlQmVnaW4gKyAoZnJhbWVXaWR0aCAqIHN0YXJ0SGVpZ2h0KTsKKyAgICAgICAg
ZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbkJlZ2luICsgKGZyYW1lV2lkdGggKiBzdGFydEhlaWdo
dCk7CisgICAgICAgIHN0YXJ0SGVpZ2h0ID0gc3RhcnRIZWlnaHQgKyBtb3ZlTGluZVVwRG93bjsK
KworICAgICAgICBpZiAobW92ZUxpbmVMZWZ0KQorICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0
aW9uLCBzb3VyY2UsIGNvcHlXaWR0aCAqIDQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBf
ZXdrX3ZpZXdfcmV2ZXJzZV9saW5lX21vdmUoZGVzdGluYXRpb24sIHNvdXJjZSwgY29weVdpZHRo
KTsKICAgICB9CiB9CiAKQEAgLTI0MSwxMDUgKzE1OSwzMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
X2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0
YSogcwogICAgICAgICBzY3JvbGxIZWlnaHQgPSAwOwogCiAgICAgRUlOQV9TQUZFVFlfT05fVFJV
RV9SRVRVUk4oIXNjcm9sbFdpZHRoIHx8ICFzY3JvbGxIZWlnaHQpOwotICAgIGlmICghc2Nyb2xs
UmVxdWVzdC0+ZHgpIHsKLSAgICAgICAgaWYgKHNjcm9sbFJlcXVlc3QtPmR5IDwgMCkgewotICAg
ICAgICAgICAgREJHKCJzY3JvbGwgdXA6ICUrMDNkLCUrMDNkIHVwZGF0ZT0lZCwlZCslZHglZCwg
IgotICAgICAgICAgICAgICAgICJyZXBhaW50PSVkLCVkKyVkeCVkIiwKLSAgICAgICAgICAgICAg
ICBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsUmVxdWVzdC0+ZHksIHNjcm9sbFgsIHNjcm9sbFks
IHNjcm9sbFdpZHRoLCBzY3JvbGxIZWlnaHQgKyBzY3JvbGxSZXF1ZXN0LT5keSwKLSAgICAgICAg
ICAgICAgICBzY3JvbGxYLCBzY3JvbGxZICsgc2Nyb2xsSGVpZ2h0ICsgc2Nyb2xsUmVxdWVzdC0+
ZHksIHNjcm9sbFdpZHRoLCAtc2Nyb2xsUmVxdWVzdC0+ZHkpOwotCi0gICAgICAgICAgICBfZXdr
X3ZpZXdfNGJfbW92ZV9yZWdpb25fdXAKLSAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWlu
dDMyX3QqPihwaXhlbHMpLCAtc2Nyb2xsUmVxdWVzdC0+ZHksIHNjcm9sbFgsIHNjcm9sbFksIHNj
cm9sbFdpZHRoLCBzY3JvbGxIZWlnaHQsIHdpZHRoKTsKLSAgICAgICAgICAgIGV2YXNfb2JqZWN0
X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAotICAgICAgICAgICAgICAgIChzbWFydERhdGEtPmJhY2tp
bmdfc3RvcmUsIHNjcm9sbFgsIHNjcm9sbFksIHNjcm9sbFdpZHRoLCBzY3JvbGxIZWlnaHQgKyBz
Y3JvbGxSZXF1ZXN0LT5keSk7Ci0KLSAgICAgICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNt
YXJ0RGF0YS0+X3ByaXYsIHNjcm9sbFgsIHNjcm9sbFkgKyBzY3JvbGxIZWlnaHQgKyBzY3JvbGxS
ZXF1ZXN0LT5keSwgc2Nyb2xsV2lkdGgsIC1zY3JvbGxSZXF1ZXN0LT5keSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoc2Nyb2xsUmVxdWVzdC0+ZHkgPiAwKSB7Ci0gICAgICAgICAgICBEQkcoInNjcm9s
bCBkb3duOiAlKzAzZCwlKzAzZCB1cGRhdGU9JWQsJWQrJWR4JWQsICIKLSAgICAgICAgICAgICAg
ICAicmVwYWludD0lZCwlZCslZHglZCIsCi0gICAgICAgICAgICAgICAgc2Nyb2xsUmVxdWVzdC0+
ZHgsIHNjcm9sbFJlcXVlc3QtPmR5LCBzY3JvbGxYLCBzY3JvbGxZICsgc2Nyb2xsUmVxdWVzdC0+
ZHksIHNjcm9sbFdpZHRoLCBzY3JvbGxIZWlnaHQgLSBzY3JvbGxSZXF1ZXN0LT5keSwKLSAgICAg
ICAgICAgICAgICBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Nyb2xsUmVxdWVzdC0+
ZHkpOwotCi0gICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fZG93bgotICAgICAg
ICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIHNjcm9sbFJlcXVlc3Qt
PmR5LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0LCB3aWR0aCk7
Ci0gICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKLSAgICAgICAg
ICAgICAgICAoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBzY3JvbGxYLCBzY3JvbGxZICsgc2Ny
b2xsUmVxdWVzdC0+ZHksIHNjcm9sbFdpZHRoLCBzY3JvbGxIZWlnaHQgLSBzY3JvbGxSZXF1ZXN0
LT5keSk7Ci0KLSAgICAgICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNtYXJ0RGF0YS0+X3By
aXYsIHNjcm9sbFgsIHNjcm9sbFksIHNjcm9sbFdpZHRoLCBzY3JvbGxSZXF1ZXN0LT5keSk7Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKCFzY3JvbGxSZXF1ZXN0LT5keSkgewotICAgICAgICBp
ZiAoc2Nyb2xsUmVxdWVzdC0+ZHggPCAwKSB7Ci0gICAgICAgICAgICBEQkcoInNjcm9sbCBsZWZ0
OiAlKzAzZCwlKzAzZCB1cGRhdGU9JWQsJWQrJWR4JWQsICIKLSAgICAgICAgICAgICAgICAicmVw
YWludD0lZCwlZCslZHglZCIsCi0gICAgICAgICAgICAgICAgc2Nyb2xsUmVxdWVzdC0+ZHgsIHNj
cm9sbFJlcXVlc3QtPmR5LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCArIHNjcm9sbFJl
cXVlc3QtPmR4LCBzY3JvbGxIZWlnaHQsCi0gICAgICAgICAgICAgICAgc2Nyb2xsWCArIHNjcm9s
bFdpZHRoICsgc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbFksIC1zY3JvbGxSZXF1ZXN0LT5keCwg
c2Nyb2xsSGVpZ2h0KTsKLQotICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX2xl
ZnQKLSAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCAtc2Ny
b2xsUmVxdWVzdC0+ZHgsIHNjcm9sbFgsIHNjcm9sbFksIHNjcm9sbFdpZHRoLCBzY3JvbGxIZWln
aHQsIHdpZHRoKTsKLSAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2Fk
ZAotICAgICAgICAgICAgICAgIChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIHNjcm9sbFgsIHNj
cm9sbFksIHNjcm9sbFdpZHRoICsgc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbEhlaWdodCk7Ci0K
LSAgICAgICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNtYXJ0RGF0YS0+X3ByaXYsIHNjcm9s
bFggKyBzY3JvbGxXaWR0aCArIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxZLCAtc2Nyb2xsUmVx
dWVzdC0+ZHgsIHNjcm9sbEhlaWdodCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2Nyb2xsUmVxdWVz
dC0+ZHggPiAwKSB7Ci0gICAgICAgICAgICBEQkcoInNjcm9sbCB1cDogJSswM2QsJSswM2QgdXBk
YXRlPSVkLCVkKyVkeCVkLCAiCi0gICAgICAgICAgICAgICAgInJlcGFpbnQ9JWQsJWQrJWR4JWQi
LAotICAgICAgICAgICAgICAgIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxSZXF1ZXN0LT5keSwg
c2Nyb2xsWCArIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxZLCBzY3JvbGxXaWR0aCAtIHNjcm9s
bFJlcXVlc3QtPmR4LCBzY3JvbGxIZWlnaHQsCi0gICAgICAgICAgICAgICAgc2Nyb2xsWCwgc2Ny
b2xsWSwgc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbEhlaWdodCk7Ci0KLSAgICAgICAgICAgIF9l
d2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9yaWdodAotICAgICAgICAgICAgICAgIChzdGF0aWNfY2Fz
dDx1aW50MzJfdCo+KHBpeGVscyksIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxYLCBzY3JvbGxZ
LCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0LCB3aWR0aCk7Ci0gICAgICAgICAgICBldmFzX29i
amVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKLSAgICAgICAgICAgICAgICAoc21hcnREYXRhLT5i
YWNraW5nX3N0b3JlLCBzY3JvbGxYICsgc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbFksIHNjcm9s
bFdpZHRoIC0gc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbEhlaWdodCk7Ci0KLSAgICAgICAgICAg
IGV3a192aWV3X3JlcGFpbnRfYWRkKHNtYXJ0RGF0YS0+X3ByaXYsIHNjcm9sbFgsIHNjcm9sbFks
IHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxIZWlnaHQpOwotICAgICAgICB9Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgRXZhc19Db29yZCBtb3ZlWCwgbW92ZVksIG1vdmVXaWR0aCwgbW92ZUhlaWdo
dDsKLSAgICAgICAgRXZhc19Db29yZCB2ZXJ0aWNhbFgsIHZlcnRpY2FsWSwgdmVydGljYWxXaWR0
aCwgdmVydGljYWxIZWlnaHQ7Ci0gICAgICAgIEV2YXNfQ29vcmQgaG9yaXpvbnRhbFgsIGhvcml6
b250YWxZLCBob3Jpem9udGFsV2lkdGgsIGhvcml6b250YWxIZWlnaHQ7Ci0KLSAgICAgICAgaWYg
KHNjcm9sbFJlcXVlc3QtPmR4IDwgMCkgewotICAgICAgICAgICAgbW92ZVggPSBzY3JvbGxYOwot
ICAgICAgICAgICAgbW92ZVdpZHRoID0gc2Nyb2xsV2lkdGggKyBzY3JvbGxSZXF1ZXN0LT5keDsK
LSAgICAgICAgICAgIHZlcnRpY2FsWCA9IG1vdmVYICsgbW92ZVdpZHRoOwotICAgICAgICAgICAg
dmVydGljYWxXaWR0aCA9IC1zY3JvbGxSZXF1ZXN0LT5keDsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHZlcnRpY2FsWCA9IHNjcm9sbFg7Ci0gICAgICAgICAgICB2ZXJ0aWNhbFdpZHRo
ID0gc2Nyb2xsUmVxdWVzdC0+ZHg7Ci0gICAgICAgICAgICBtb3ZlWCA9IHZlcnRpY2FsWCArIHZl
cnRpY2FsV2lkdGg7Ci0gICAgICAgICAgICBtb3ZlV2lkdGggPSBzY3JvbGxXaWR0aCAtIHNjcm9s
bFJlcXVlc3QtPmR4OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNjcm9sbFJlcXVlc3QtPmR5
IDwgMCkgewotICAgICAgICAgICAgbW92ZVkgPSBzY3JvbGxZOwotICAgICAgICAgICAgbW92ZUhl
aWdodCA9IHNjcm9sbEhlaWdodCArIHNjcm9sbFJlcXVlc3QtPmR5OwotICAgICAgICAgICAgaG9y
aXpvbnRhbFkgPSBtb3ZlWSArIG1vdmVIZWlnaHQ7Ci0gICAgICAgICAgICBob3Jpem9udGFsSGVp
Z2h0ID0gLXNjcm9sbFJlcXVlc3QtPmR5OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
aG9yaXpvbnRhbFkgPSBzY3JvbGxZOwotICAgICAgICAgICAgaG9yaXpvbnRhbEhlaWdodCA9IHNj
cm9sbFJlcXVlc3QtPmR5OwotICAgICAgICAgICAgbW92ZVkgPSBob3Jpem9udGFsWSArIGhvcml6
b250YWxIZWlnaHQ7Ci0gICAgICAgICAgICBtb3ZlSGVpZ2h0ID0gc2Nyb2xsSGVpZ2h0IC0gc2Ny
b2xsUmVxdWVzdC0+ZHk7Ci0gICAgICAgIH0KLQotICAgICAgICB2ZXJ0aWNhbFkgPSBtb3ZlWTsK
LSAgICAgICAgdmVydGljYWxIZWlnaHQgPSBtb3ZlSGVpZ2h0OwotICAgICAgICBob3Jpem9udGFs
WCA9IHNjcm9sbFg7Ci0gICAgICAgIGhvcml6b250YWxXaWR0aCA9IHNjcm9sbFdpZHRoOwotCi0g
ICAgICAgIERCRygic2Nyb2xsIGRpYWdvbmFsOiAlKzAzZCwlKzAzZCB1cGRhdGU9JWQsJWQrJWR4
JWQsICIKLSAgICAgICAgICAgICJyZXBhaW50czogaD0lZCwlZCslZHglZCB2PSVkLCVkKyVkeCVk
IiwKLSAgICAgICAgICAgIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxSZXF1ZXN0LT5keSwgbW92
ZVgsIG1vdmVZLCBtb3ZlV2lkdGgsIG1vdmVIZWlnaHQsCi0gICAgICAgICAgICB2ZXJ0aWNhbFgs
IHZlcnRpY2FsWSwgdmVydGljYWxXaWR0aCwgdmVydGljYWxIZWlnaHQsCi0gICAgICAgICAgICBo
b3Jpem9udGFsWCwgaG9yaXpvbnRhbFksIGhvcml6b250YWxXaWR0aCwgaG9yaXpvbnRhbEhlaWdo
dCk7Ci0KLSAgICAgICAgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uCi0gICAgICAgICAgICAoc3Rh
dGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsUmVx
dWVzdC0+ZHksIHNjcm9sbFgsIHNjcm9sbFksIHNjcm9sbFdpZHRoLCBzY3JvbGxIZWlnaHQsIHdp
ZHRoKTsKLQotICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc21hcnRE
YXRhLT5iYWNraW5nX3N0b3JlLCBtb3ZlWCwgbW92ZVksIG1vdmVXaWR0aCwgbW92ZUhlaWdodCk7
Ci0gICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNtYXJ0RGF0YS0+X3ByaXYsIHZlcnRpY2Fs
WCwgdmVydGljYWxZLCB2ZXJ0aWNhbFdpZHRoLCB2ZXJ0aWNhbEhlaWdodCk7Ci0gICAgICAgIGV3
a192aWV3X3JlcGFpbnRfYWRkKHNtYXJ0RGF0YS0+X3ByaXYsIGhvcml6b250YWxYLCBob3Jpem9u
dGFsWSwgaG9yaXpvbnRhbFdpZHRoLCBob3Jpem9udGFsSGVpZ2h0KTsKLSAgICB9CisKKyAgICBp
bnQgc291cmNlWCA9IHNjcm9sbFJlcXVlc3QtPmR4IDwgMCA/IGFicyhzY3JvbGxSZXF1ZXN0LT5k
eCkgOiAwOworICAgIGludCBzb3VyY2VZID0gc2Nyb2xsUmVxdWVzdC0+ZHkgPCAwID8gYWJzKHNj
cm9sbFJlcXVlc3QtPmR5KSA6IDA7CisgICAgaW50IGRlc3RpbmF0aW9uWCA9IHNjcm9sbFJlcXVl
c3QtPmR4IDwgMCA/IDAgOiBzY3JvbGxSZXF1ZXN0LT5keDsKKyAgICBpbnQgZGVzdGluYXRpb25Z
ID0gc2Nyb2xsUmVxdWVzdC0+ZHkgPCAwID8gMCA6IHNjcm9sbFJlcXVlc3QtPmR5OworICAgIGlu
dCBjb3B5V2lkdGggPSBzY3JvbGxXaWR0aCAtIGFicyhzY3JvbGxSZXF1ZXN0LT5keCk7CisgICAg
aW50IGNvcHlIZWlnaHQgPSBzY3JvbGxIZWlnaHQgLSBhYnMoc2Nyb2xsUmVxdWVzdC0+ZHkpOwor
ICAgIGlmIChzY3JvbGxSZXF1ZXN0LT5keCB8fCBzY3JvbGxSZXF1ZXN0LT5keSkKKyAgICAgICAg
X2V3a192aWV3X3NjcmVlbl9tb3ZlKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgZGVz
dGluYXRpb25YLCBkZXN0aW5hdGlvblksIHNvdXJjZVgsIHNvdXJjZVksIGNvcHlXaWR0aCwgY29w
eUhlaWdodCwgc2Nyb2xsV2lkdGgpOworCisgICAgRWluYV9SZWN0YW5nbGUgdmVydGljYWxVcGRh
dGU7CisgICAgdmVydGljYWxVcGRhdGUueCA9IGRlc3RpbmF0aW9uWCA/IDAgOiBjb3B5V2lkdGgg
LSAxOworICAgIHZlcnRpY2FsVXBkYXRlLnkgPSAwOworICAgIHZlcnRpY2FsVXBkYXRlLncgPSBh
YnMoc2Nyb2xsUmVxdWVzdC0+ZHgpOworICAgIHZlcnRpY2FsVXBkYXRlLmggPSBzY3JvbGxIZWln
aHQ7CisgICAgaWYgKHZlcnRpY2FsVXBkYXRlLncgJiYgdmVydGljYWxVcGRhdGUuaCkKKyAgICAg
ICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc21hcnREYXRhLT5fcHJpdiwgdmVydGljYWxVcGRhdGUu
eCwgdmVydGljYWxVcGRhdGUueSwgdmVydGljYWxVcGRhdGUudywgdmVydGljYWxVcGRhdGUuaCk7
CisKKyAgICBFaW5hX1JlY3RhbmdsZSBob3Jpem9udGFsVXBkYXRlOworICAgIGhvcml6b250YWxV
cGRhdGUueCA9IGRlc3RpbmF0aW9uWDsKKyAgICBob3Jpem9udGFsVXBkYXRlLnkgPSBkZXN0aW5h
dGlvblkgPyAwIDogY29weUhlaWdodCAtIDE7CisgICAgaG9yaXpvbnRhbFVwZGF0ZS53ID0gY29w
eVdpZHRoOworICAgIGhvcml6b250YWxVcGRhdGUuaCA9IGFicyhzY3JvbGxSZXF1ZXN0LT5keSk7
CisgICAgaWYgKGhvcml6b250YWxVcGRhdGUudyAmJiBob3Jpem9udGFsVXBkYXRlLmgpCisgICAg
ICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNtYXJ0RGF0YS0+X3ByaXYsIGhvcml6b250YWxVcGRh
dGUueCwgaG9yaXpvbnRhbFVwZGF0ZS55LCBob3Jpem9udGFsVXBkYXRlLncsIGhvcml6b250YWxV
cGRhdGUuaCk7CisKKyAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc21hcnRE
YXRhLT5iYWNraW5nX3N0b3JlLCBkZXN0aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgY29weVdpZHRo
LCBjb3B5SGVpZ2h0KTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3Nt
YXJ0X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121224</attachid>
            <date>2012-01-04 23:42:34 -0800</date>
            <delta_ts>2012-01-05 04:54:32 -0800</delta_ts>
            <desc>fix minor code</desc>
            <filename>rebase.patch</filename>
            <type>text/plain</type>
            <size>14355</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAxZDNhYTM5Li4wZGM0YTg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDEtMDQgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmVmYWN0b3Igc2luZ2xlIGJhY2tpbmcgc3RvcmUg
c2Nyb2xsIGNvZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTI0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSB0aGUgZHVwbGljYXRlZCBjb2RlIGFuZCByZWZhY3RvciB0aGUgc2Nyb2xsIHBy
b2NlZHVyZS4KKyAgICAgICAgV2hlcmV2ZXIgdGhlIHBhZ2UgaXMgc2Nyb2xsZWQsIHRoZXJlIGFy
ZSBvbmUgc2NyZWVuIGNvcHkgYW5kIHR3byB1cGRhdGVzLgorICAgICAgICBUaGlzIHBhdGNoIG9w
dGltaXNlcyB0aGUgc2Nyb2xsIHByb2NlZHVyZSBieSBsZXNzIGNhbGN1bGF0aW9uLgorCisgICAg
ICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcmV2ZXJz
ZV9saW5lX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NjcmVlbl9tb3ZlKToKKyAgICAgICAg
KF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKToKKwogMjAxMi0wMS0wNCAg
S3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBS
ZWZhY3RvciB0aGUgd2F5IHVzaW5nIGNhaXJvIGluIGV3a190aWxlZF9iYWNraW5nX3N0b3JlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAppbmRleCAzYmEwNTczLi4z
N2EzNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcApAQCAt
ODgsMTE2ICs4OCwzNSBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Jlc2l6
ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29yZCB3aWR0aAogICAgIH0KIH0KIAotc3Rh
dGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl91cCh1aW50MzJfdCogaW1h
Z2UsIHNpemVfdCByb3dzLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3aWR0aCwgc2l6ZV90
IGhlaWdodCwgc2l6ZV90IHJvd1NpemUpCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3Jl
dmVyc2VfbGluZV9tb3ZlKHVpbnQzMl90KiBkZXN0aW5hdGlvbiwgdWludDMyX3QqIHNvdXJjZSwg
Y29uc3Qgc2l6ZV90IGNvdW50KQogewotICAgIHVpbnQzMl90KiBzb3VyY2U7Ci0gICAgdWludDMy
X3QqIGRlc3RpbmF0aW9uOwotCi0gICAgZGVzdGluYXRpb24gPSBpbWFnZSArIHggKyB5ICogcm93
U2l6ZTsKLSAgICBzb3VyY2UgPSBkZXN0aW5hdGlvbiArIHJvd3MgKiByb3dTaXplOwotICAgIGhl
aWdodCAtPSByb3dzOwotCi0gICAgZm9yICg7IGhlaWdodCA+IDA7IGhlaWdodC0tLCBkZXN0aW5h
dGlvbiArPSByb3dTaXplLCBzb3VyY2UgKz0gcm93U2l6ZSkKLSAgICAgICAgbWVtY3B5KGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIHdpZHRoICogNCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdr
X3ZpZXdfNGJfbW92ZV9yZWdpb25fZG93bih1aW50MzJfdCogaW1hZ2UsIHNpemVfdCByb3dzLCBz
aXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IHJv
d1NpemUpCi17Ci0gICAgdWludDMyX3QqIHNvdXJjZTsKLSAgICB1aW50MzJfdCogZGVzdGluYXRp
b247Ci0KLSAgICBoZWlnaHQgLT0gcm93czsKLSAgICBzb3VyY2UgPSBpbWFnZSArIHggKyAoeSAr
IGhlaWdodCAtIDEpICogcm93U2l6ZTsKLSAgICBkZXN0aW5hdGlvbiA9IHNvdXJjZSArIHJvd3Mg
KiByb3dTaXplOwotCi0gICAgZm9yICg7IGhlaWdodCA+IDA7IGhlaWdodC0tLCBkZXN0aW5hdGlv
biAtPSByb3dTaXplLCBzb3VyY2UgLT0gcm93U2l6ZSkKLSAgICAgICAgbWVtY3B5KGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHdpZHRoICogNCk7CisgICAgc2l6ZV90IHdpZHRoID0gY291bnQgLSAxOwor
ICAgIHVpbnQzMl90KiBlbmRPZkRlc3RpbmF0aW9uID0gZGVzdGluYXRpb24gKyB3aWR0aDsKKyAg
ICB1aW50MzJfdCogZW5kT2ZTb3VyY2UgPSBzb3VyY2UgKyB3aWR0aDsKKyAgICBmb3IgKDsgZGVz
dGluYXRpb24gPD0gZW5kT2ZEZXN0aW5hdGlvbjsgZW5kT2ZTb3VyY2UtLSwgZW5kT2ZEZXN0aW5h
dGlvbi0tKQorICAgICAgICAqZW5kT2ZEZXN0aW5hdGlvbiA9ICplbmRPZlNvdXJjZTsKIH0KIAot
c3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfbGVmdCh1aW50MzJfdCog
ZGVzdGluYXRpb24sIGNvbnN0IHVpbnQzMl90KiBzb3VyY2UsIHNpemVfdCBjb3VudCkKK3N0YXRp
YyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2NyZWVuX21vdmUodWludDMyX3QqIGltYWdlLCBzaXpl
X3QgZGVzdGluYXRpb25YLCBzaXplX3QgZGVzdGluYXRpb25ZLCBzaXplX3Qgc291cmNlWCwgc2l6
ZV90IHNvdXJjZVksIHNpemVfdCBjb3B5V2lkdGgsIHNpemVfdCBjb3B5SGVpZ2h0LCBzaXplX3Qg
ZnJhbWVXaWR0aCkKIHsKLSAgICB1aW50MzJfdCogZW5kT2ZEZXN0aW5hdGlvbiA9IGRlc3RpbmF0
aW9uICsgY291bnQ7Ci0gICAgLyogbm8gbWVtY3B5KCkgYXMgaXQgZG9lcyBub3QgYWxsb3cgb3Zl
cmxhcHBpbmcgcmVnaW9ucyAqLwotICAgIC8qIG5vIG1lbW1vdmUoKSBhcyBpdCB3aWxsIGNvcHkg
dG8gYSB0ZW1wb3JhcnkgYnVmZmVyICovCi0gICAgLyogVE9ETzogbG9vcCB1bnJvbGxpbmcsIGNv
cHlpbmcgdXAgdG8gcXVhZC13b3JkcyB3b3VsZCBoZWxwICovCi0gICAgZm9yICg7IGRlc3RpbmF0
aW9uIDwgZW5kT2ZEZXN0aW5hdGlvbjsgZGVzdGluYXRpb24rKywgc291cmNlKyspCi0gICAgICAg
ICpkZXN0aW5hdGlvbiA9ICpzb3VyY2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3Zp
ZXdfNGJfbW92ZV9saW5lX3JpZ2h0KHVpbnQzMl90KiBkZXN0aW5hdGlvbiwgdWludDMyX3QqIHNv
dXJjZSwgc2l6ZV90IGNvdW50KQotewotICAgIHVpbnQzMl90KiBlbmRPZkRlc3RpbmF0aW9uID0g
ZGVzdGluYXRpb24gLSBjb3VudDsKLSAgICAvKiBubyBtZW1jcHkoKSBhcyBpdCBkb2VzIG5vdCBh
bGxvdyBvdmVybGFwcGluZyByZWdpb25zICovCi0gICAgLyogbm8gbWVtbW92ZSgpIGFzIGl0IHdp
bGwgY29weSB0byBhIHRlbXBvcmFyeSBidWZmZXIgKi8KLSAgICAvKiBUT0RPOiBsb29wIHVucm9s
bGluZywgY29weWluZyB1cCB0byBxdWFkLXdvcmRzIHdvdWxkIGhlbHAgKi8KLSAgICBmb3IgKDsg
ZGVzdGluYXRpb24gPiBlbmRPZkRlc3RpbmF0aW9uOyBkZXN0aW5hdGlvbi0tLCBzb3VyY2UtLSkK
LSAgICAgICAgKmRlc3RpbmF0aW9uID0gKnNvdXJjZTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lk
IF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9sZWZ0KHVpbnQzMl90KiBpbWFnZSwgc2l6ZV90IGNv
bHVtbnMsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBz
aXplX3Qgcm93U2l6ZSkKLXsKLSAgICB1aW50MzJfdCogc291cmNlOwotICAgIHVpbnQzMl90KiBk
ZXN0aW5hdGlvbjsKLQotICAgIGRlc3RpbmF0aW9uID0gaW1hZ2UgKyB4ICsgeSAqIHJvd1NpemU7
Ci0gICAgc291cmNlID0gZGVzdGluYXRpb24gKyBjb2x1bW5zOwotICAgIHdpZHRoIC09IGNvbHVt
bnM7Ci0KLSAgICBmb3IgKDsgaGVpZ2h0ID4gMDsgaGVpZ2h0LS0sIGRlc3RpbmF0aW9uICs9IHJv
d1NpemUsIHNvdXJjZSArPSByb3dTaXplKQotICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5l
X2xlZnQoZGVzdGluYXRpb24sIHNvdXJjZSwgd2lkdGgpOwotfQotCi1zdGF0aWMgaW5saW5lIHZv
aWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3JpZ2h0KHVpbnQzMl90KiBpbWFnZSwgc2l6ZV90
IGNvbHVtbnMsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0
LCBzaXplX3Qgcm93U2l6ZSkKLXsKLSAgICB1aW50MzJfdCogc291cmNlOwotICAgIHVpbnQzMl90
KiBkZXN0aW5hdGlvbjsKLQotICAgIHdpZHRoIC09IGNvbHVtbnM7Ci0gICAgc291cmNlID0gaW1h
Z2UgKyAoeCArIHdpZHRoIC0gMSkgKyB5ICogcm93U2l6ZTsKLSAgICBkZXN0aW5hdGlvbiA9IHNv
dXJjZSArIGNvbHVtbnM7Ci0KLSAgICBmb3IgKDsgaGVpZ2h0ID4gMDsgaGVpZ2h0LS0sIGRlc3Rp
bmF0aW9uICs9IHJvd1NpemUsIHNvdXJjZSArPSByb3dTaXplKQotICAgICAgICBfZXdrX3ZpZXdf
NGJfbW92ZV9saW5lX3JpZ2h0KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHdpZHRoKTsKLX0KLQotLyog
Y2F0Y2gtYWxsIGZ1bmN0aW9uLCBub3QgYXMgb3B0aW1pemVkIGFzIHRoZSBvdGhlcnMsIGJ1dCBk
b2VzIHRoZSB3b3JrLiAqLwotc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3Jl
Z2lvbih1aW50MzJfdCogaW1hZ2UsIGludCBkZWx0YVgsIGludCBkZWx0YVksIHNpemVfdCB4LCBz
aXplX3QgeSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3Qgcm93U2l6ZSkKLXsK
LSAgICB1aW50MzJfdCogc291cmNlOwotICAgIHVpbnQzMl90KiBkZXN0aW5hdGlvbjsKLQotICAg
IGlmIChkZWx0YVkgPCAwKSB7Ci0gICAgICAgIGhlaWdodCArPSBkZWx0YVk7Ci0gICAgICAgIGRl
c3RpbmF0aW9uID0gaW1hZ2UgKyB4ICsgeSAqIHJvd1NpemU7Ci0gICAgICAgIHNvdXJjZSA9IGRl
c3RpbmF0aW9uIC0gZGVsdGFZICogcm93U2l6ZTsKLSAgICAgICAgaWYgKGRlbHRhWCA8PSAwKSB7
Ci0gICAgICAgICAgICB3aWR0aCArPSBkZWx0YVg7Ci0gICAgICAgICAgICBzb3VyY2UgLT0gZGVs
dGFYOwotICAgICAgICAgICAgZm9yICg7IGhlaWdodCA+IDA7IGhlaWdodC0tLCBkZXN0aW5hdGlv
biArPSByb3dTaXplLCBzb3VyY2UgKz0gcm93U2l6ZSkKLSAgICAgICAgICAgICAgICBfZXdrX3Zp
ZXdfNGJfbW92ZV9saW5lX2xlZnQoZGVzdGluYXRpb24sIHNvdXJjZSwgd2lkdGgpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgd2lkdGggLT0gZGVsdGFYOwotICAgICAgICAgICAgc291
cmNlICs9IHdpZHRoIC0gMTsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uICs9IHdpZHRoICsgZGVs
dGFYIC0xOwotICAgICAgICAgICAgZm9yICg7IGhlaWdodCA+IDA7IGhlaWdodC0tLCBkZXN0aW5h
dGlvbiArPSByb3dTaXplLCBzb3VyY2UgKz0gcm93U2l6ZSkKLSAgICAgICAgICAgICAgICBfZXdr
X3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHdpZHRoKTsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGhlaWdodCAtPSBkZWx0YVk7Ci0gICAgICAg
IHNvdXJjZSA9IGltYWdlICsgeCArICh5ICsgaGVpZ2h0IC0gMSkgKiByb3dTaXplOwotICAgICAg
ICBkZXN0aW5hdGlvbiA9IHNvdXJjZSArIGRlbHRhWSAqIHJvd1NpemU7Ci0gICAgICAgIGlmIChk
ZWx0YVggPD0gMCkgewotICAgICAgICAgICAgd2lkdGggKz0gZGVsdGFYOwotICAgICAgICAgICAg
c291cmNlIC09IGRlbHRhWDsKLSAgICAgICAgICAgIGZvciAoOyBoZWlnaHQgPiAwOyBoZWlnaHQt
LSwgZGVzdGluYXRpb24gLT0gcm93U2l6ZSwgc291cmNlIC09IHJvd1NpemUpCi0gICAgICAgICAg
ICAgICAgX2V3a192aWV3XzRiX21vdmVfbGluZV9sZWZ0KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHdp
ZHRoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHdpZHRoIC09IGRlbHRhWDsKLSAg
ICAgICAgICAgIHNvdXJjZSArPSB3aWR0aCAtIDE7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbiAr
PSB3aWR0aCArIGRlbHRhWCAtIDE7Ci0gICAgICAgICAgICBmb3IgKDsgaGVpZ2h0ID4gMDsgaGVp
Z2h0LS0sIGRlc3RpbmF0aW9uIC09IHJvd1NpemUsIHNvdXJjZSAtPSByb3dTaXplKQotICAgICAg
ICAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfcmlnaHQoZGVzdGluYXRpb24sIHNvdXJj
ZSwgd2lkdGgpOwotICAgICAgICB9CisgICAgdWludDMyX3QqIHNvdXJjZUJlZ2luID0gaW1hZ2Ug
KyAoZnJhbWVXaWR0aCAqIHNvdXJjZVkpICsgc291cmNlWDsKKyAgICB1aW50MzJfdCogZGVzdGlu
YXRpb25CZWdpbiA9IGltYWdlICsgKGZyYW1lV2lkdGggKiBkZXN0aW5hdGlvblkpICsgZGVzdGlu
YXRpb25YOworCisgICAgY29uc3QgYm9vbCBtb3ZlTGluZUxlZnQgPSBzb3VyY2VYID49IGRlc3Rp
bmF0aW9uWDsKKyAgICBjb25zdCBpbnQgbW92ZUxpbmVVcERvd24gPSBzb3VyY2VZID49IGRlc3Rp
bmF0aW9uWSA/IDEgOiAtMTsKKyAgICBpbnQgc3RhcnRIZWlnaHQgPSBzb3VyY2VZID49IGRlc3Rp
bmF0aW9uWSA/IDAgOiBjb3B5SGVpZ2h0IC0gMTsKKyAgICBzaXplX3QgY29weUxlbmd0aCA9IGNv
cHlXaWR0aCAqIDQ7CisKKyAgICB1aW50MzJfdCogc291cmNlLCAqIGRlc3RpbmF0aW9uOworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgY29weUhlaWdodDsgaSsrKSB7CisgICAgICAgIHNvdXJjZSA9
IHNvdXJjZUJlZ2luICsgKGZyYW1lV2lkdGggKiBzdGFydEhlaWdodCk7CisgICAgICAgIGRlc3Rp
bmF0aW9uID0gZGVzdGluYXRpb25CZWdpbiArIChmcmFtZVdpZHRoICogc3RhcnRIZWlnaHQpOwor
ICAgICAgICBzdGFydEhlaWdodCA9IHN0YXJ0SGVpZ2h0ICsgbW92ZUxpbmVVcERvd247CisKKyAg
ICAgICAgaWYgKG1vdmVMaW5lTGVmdCkKKyAgICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwg
c291cmNlLCBjb3B5TGVuZ3RoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgX2V3a192aWV3
X3JldmVyc2VfbGluZV9tb3ZlKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvcHlXaWR0aCk7CiAgICAg
fQogfQogCkBAIC0yNDEsMTA1ICsxNjAsMzMgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmll
d19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHMKICAg
ICAgICAgc2Nyb2xsSGVpZ2h0ID0gMDsKIAogICAgIEVJTkFfU0FGRVRZX09OX1RSVUVfUkVUVVJO
KCFzY3JvbGxXaWR0aCB8fCAhc2Nyb2xsSGVpZ2h0KTsKLSAgICBpZiAoIXNjcm9sbFJlcXVlc3Qt
PmR4KSB7Ci0gICAgICAgIGlmIChzY3JvbGxSZXF1ZXN0LT5keSA8IDApIHsKLSAgICAgICAgICAg
IERCRygic2Nyb2xsIHVwOiAlKzAzZCwlKzAzZCB1cGRhdGU9JWQsJWQrJWR4JWQsICIKLSAgICAg
ICAgICAgICAgICAicmVwYWludD0lZCwlZCslZHglZCIsCi0gICAgICAgICAgICAgICAgc2Nyb2xs
UmVxdWVzdC0+ZHgsIHNjcm9sbFJlcXVlc3QtPmR5LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxX
aWR0aCwgc2Nyb2xsSGVpZ2h0ICsgc2Nyb2xsUmVxdWVzdC0+ZHksCi0gICAgICAgICAgICAgICAg
c2Nyb2xsWCwgc2Nyb2xsWSArIHNjcm9sbEhlaWdodCArIHNjcm9sbFJlcXVlc3QtPmR5LCBzY3Jv
bGxXaWR0aCwgLXNjcm9sbFJlcXVlc3QtPmR5KTsKLQotICAgICAgICAgICAgX2V3a192aWV3XzRi
X21vdmVfcmVnaW9uX3VwCi0gICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4o
cGl4ZWxzKSwgLXNjcm9sbFJlcXVlc3QtPmR5LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0
aCwgc2Nyb2xsSGVpZ2h0LCB3aWR0aCk7Ci0gICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9k
YXRhX3VwZGF0ZV9hZGQKLSAgICAgICAgICAgICAgICAoc21hcnREYXRhLT5iYWNraW5nX3N0b3Jl
LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0ICsgc2Nyb2xsUmVx
dWVzdC0+ZHkpOwotCi0gICAgICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEt
Pl9wcml2LCBzY3JvbGxYLCBzY3JvbGxZICsgc2Nyb2xsSGVpZ2h0ICsgc2Nyb2xsUmVxdWVzdC0+
ZHksIHNjcm9sbFdpZHRoLCAtc2Nyb2xsUmVxdWVzdC0+ZHkpOwotICAgICAgICB9IGVsc2UgaWYg
KHNjcm9sbFJlcXVlc3QtPmR5ID4gMCkgewotICAgICAgICAgICAgREJHKCJzY3JvbGwgZG93bjog
JSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCi0gICAgICAgICAgICAgICAgInJlcGFp
bnQ9JWQsJWQrJWR4JWQiLAotICAgICAgICAgICAgICAgIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3Jv
bGxSZXF1ZXN0LT5keSwgc2Nyb2xsWCwgc2Nyb2xsWSArIHNjcm9sbFJlcXVlc3QtPmR5LCBzY3Jv
bGxXaWR0aCwgc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsUmVxdWVzdC0+ZHksCi0gICAgICAgICAgICAg
ICAgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGgsIHNjcm9sbFJlcXVlc3QtPmR5KTsKLQot
ICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX2Rvd24KLSAgICAgICAgICAgICAg
ICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCBzY3JvbGxSZXF1ZXN0LT5keSwgc2Ny
b2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGgsIHNjcm9sbEhlaWdodCwgd2lkdGgpOwotICAgICAg
ICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCi0gICAgICAgICAgICAgICAg
KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgc2Nyb2xsWCwgc2Nyb2xsWSArIHNjcm9sbFJlcXVl
c3QtPmR5LCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsUmVxdWVzdC0+ZHkpOwot
Ci0gICAgICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCBzY3Jv
bGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Nyb2xsUmVxdWVzdC0+ZHkpOwotICAgICAgICB9
Ci0gICAgfSBlbHNlIGlmICghc2Nyb2xsUmVxdWVzdC0+ZHkpIHsKLSAgICAgICAgaWYgKHNjcm9s
bFJlcXVlc3QtPmR4IDwgMCkgewotICAgICAgICAgICAgREJHKCJzY3JvbGwgbGVmdDogJSswM2Qs
JSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCi0gICAgICAgICAgICAgICAgInJlcGFpbnQ9JWQs
JWQrJWR4JWQiLAotICAgICAgICAgICAgICAgIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxSZXF1
ZXN0LT5keSwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGggKyBzY3JvbGxSZXF1ZXN0LT5k
eCwgc2Nyb2xsSGVpZ2h0LAotICAgICAgICAgICAgICAgIHNjcm9sbFggKyBzY3JvbGxXaWR0aCAr
IHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxZLCAtc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbEhl
aWdodCk7Ci0KLSAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9sZWZ0Ci0gICAg
ICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgLXNjcm9sbFJlcXVl
c3QtPmR4LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0LCB3aWR0
aCk7Ci0gICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKLSAgICAg
ICAgICAgICAgICAoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBzY3JvbGxYLCBzY3JvbGxZLCBz
Y3JvbGxXaWR0aCArIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxIZWlnaHQpOwotCi0gICAgICAg
ICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCBzY3JvbGxYICsgc2Ny
b2xsV2lkdGggKyBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsWSwgLXNjcm9sbFJlcXVlc3QtPmR4
LCBzY3JvbGxIZWlnaHQpOwotICAgICAgICB9IGVsc2UgaWYgKHNjcm9sbFJlcXVlc3QtPmR4ID4g
MCkgewotICAgICAgICAgICAgREJHKCJzY3JvbGwgdXA6ICUrMDNkLCUrMDNkIHVwZGF0ZT0lZCwl
ZCslZHglZCwgIgotICAgICAgICAgICAgICAgICJyZXBhaW50PSVkLCVkKyVkeCVkIiwKLSAgICAg
ICAgICAgICAgICBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsUmVxdWVzdC0+ZHksIHNjcm9sbFgg
KyBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGggLSBzY3JvbGxSZXF1ZXN0
LT5keCwgc2Nyb2xsSGVpZ2h0LAotICAgICAgICAgICAgICAgIHNjcm9sbFgsIHNjcm9sbFksIHNj
cm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxIZWlnaHQpOwotCi0gICAgICAgICAgICBfZXdrX3ZpZXdf
NGJfbW92ZV9yZWdpb25fcmlnaHQKLSAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMy
X3QqPihwaXhlbHMpLCBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xs
V2lkdGgsIHNjcm9sbEhlaWdodCwgd2lkdGgpOwotICAgICAgICAgICAgZXZhc19vYmplY3RfaW1h
Z2VfZGF0YV91cGRhdGVfYWRkCi0gICAgICAgICAgICAgICAgKHNtYXJ0RGF0YS0+YmFja2luZ19z
dG9yZSwgc2Nyb2xsWCArIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxZLCBzY3JvbGxXaWR0aCAt
IHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxIZWlnaHQpOwotCi0gICAgICAgICAgICBld2tfdmll
d19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxS
ZXF1ZXN0LT5keCwgc2Nyb2xsSGVpZ2h0KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIEV2YXNfQ29vcmQgbW92ZVgsIG1vdmVZLCBtb3ZlV2lkdGgsIG1vdmVIZWlnaHQ7Ci0gICAg
ICAgIEV2YXNfQ29vcmQgdmVydGljYWxYLCB2ZXJ0aWNhbFksIHZlcnRpY2FsV2lkdGgsIHZlcnRp
Y2FsSGVpZ2h0OwotICAgICAgICBFdmFzX0Nvb3JkIGhvcml6b250YWxYLCBob3Jpem9udGFsWSwg
aG9yaXpvbnRhbFdpZHRoLCBob3Jpem9udGFsSGVpZ2h0OwotCi0gICAgICAgIGlmIChzY3JvbGxS
ZXF1ZXN0LT5keCA8IDApIHsKLSAgICAgICAgICAgIG1vdmVYID0gc2Nyb2xsWDsKLSAgICAgICAg
ICAgIG1vdmVXaWR0aCA9IHNjcm9sbFdpZHRoICsgc2Nyb2xsUmVxdWVzdC0+ZHg7Ci0gICAgICAg
ICAgICB2ZXJ0aWNhbFggPSBtb3ZlWCArIG1vdmVXaWR0aDsKLSAgICAgICAgICAgIHZlcnRpY2Fs
V2lkdGggPSAtc2Nyb2xsUmVxdWVzdC0+ZHg7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICB2ZXJ0aWNhbFggPSBzY3JvbGxYOwotICAgICAgICAgICAgdmVydGljYWxXaWR0aCA9IHNjcm9s
bFJlcXVlc3QtPmR4OwotICAgICAgICAgICAgbW92ZVggPSB2ZXJ0aWNhbFggKyB2ZXJ0aWNhbFdp
ZHRoOwotICAgICAgICAgICAgbW92ZVdpZHRoID0gc2Nyb2xsV2lkdGggLSBzY3JvbGxSZXF1ZXN0
LT5keDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzY3JvbGxSZXF1ZXN0LT5keSA8IDApIHsK
LSAgICAgICAgICAgIG1vdmVZID0gc2Nyb2xsWTsKLSAgICAgICAgICAgIG1vdmVIZWlnaHQgPSBz
Y3JvbGxIZWlnaHQgKyBzY3JvbGxSZXF1ZXN0LT5keTsKLSAgICAgICAgICAgIGhvcml6b250YWxZ
ID0gbW92ZVkgKyBtb3ZlSGVpZ2h0OwotICAgICAgICAgICAgaG9yaXpvbnRhbEhlaWdodCA9IC1z
Y3JvbGxSZXF1ZXN0LT5keTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGhvcml6b250
YWxZID0gc2Nyb2xsWTsKLSAgICAgICAgICAgIGhvcml6b250YWxIZWlnaHQgPSBzY3JvbGxSZXF1
ZXN0LT5keTsKLSAgICAgICAgICAgIG1vdmVZID0gaG9yaXpvbnRhbFkgKyBob3Jpem9udGFsSGVp
Z2h0OwotICAgICAgICAgICAgbW92ZUhlaWdodCA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFJlcXVl
c3QtPmR5OwotICAgICAgICB9Ci0KLSAgICAgICAgdmVydGljYWxZID0gbW92ZVk7Ci0gICAgICAg
IHZlcnRpY2FsSGVpZ2h0ID0gbW92ZUhlaWdodDsKLSAgICAgICAgaG9yaXpvbnRhbFggPSBzY3Jv
bGxYOwotICAgICAgICBob3Jpem9udGFsV2lkdGggPSBzY3JvbGxXaWR0aDsKLQotICAgICAgICBE
QkcoInNjcm9sbCBkaWFnb25hbDogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCi0g
ICAgICAgICAgICAicmVwYWludHM6IGg9JWQsJWQrJWR4JWQgdj0lZCwlZCslZHglZCIsCi0gICAg
ICAgICAgICBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsUmVxdWVzdC0+ZHksIG1vdmVYLCBtb3Zl
WSwgbW92ZVdpZHRoLCBtb3ZlSGVpZ2h0LAotICAgICAgICAgICAgdmVydGljYWxYLCB2ZXJ0aWNh
bFksIHZlcnRpY2FsV2lkdGgsIHZlcnRpY2FsSGVpZ2h0LAotICAgICAgICAgICAgaG9yaXpvbnRh
bFgsIGhvcml6b250YWxZLCBob3Jpem9udGFsV2lkdGgsIGhvcml6b250YWxIZWlnaHQpOwotCi0g
ICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbgotICAgICAgICAgICAgKHN0YXRpY19jYXN0
PHVpbnQzMl90Kj4ocGl4ZWxzKSwgc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbFJlcXVlc3QtPmR5
LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0LCB3aWR0aCk7Ci0K
LSAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkKHNtYXJ0RGF0YS0+YmFj
a2luZ19zdG9yZSwgbW92ZVgsIG1vdmVZLCBtb3ZlV2lkdGgsIG1vdmVIZWlnaHQpOwotICAgICAg
ICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCB2ZXJ0aWNhbFgsIHZlcnRp
Y2FsWSwgdmVydGljYWxXaWR0aCwgdmVydGljYWxIZWlnaHQpOwotICAgICAgICBld2tfdmlld19y
ZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCBob3Jpem9udGFsWCwgaG9yaXpvbnRhbFksIGhv
cml6b250YWxXaWR0aCwgaG9yaXpvbnRhbEhlaWdodCk7CisKKyAgICBpbnQgc291cmNlWCA9IHNj
cm9sbFJlcXVlc3QtPmR4IDwgMCA/IGFicyhzY3JvbGxSZXF1ZXN0LT5keCkgOiAwOworICAgIGlu
dCBzb3VyY2VZID0gc2Nyb2xsUmVxdWVzdC0+ZHkgPCAwID8gYWJzKHNjcm9sbFJlcXVlc3QtPmR5
KSA6IDA7CisgICAgaW50IGRlc3RpbmF0aW9uWCA9IHNjcm9sbFJlcXVlc3QtPmR4IDwgMCA/IDAg
OiBzY3JvbGxSZXF1ZXN0LT5keDsKKyAgICBpbnQgZGVzdGluYXRpb25ZID0gc2Nyb2xsUmVxdWVz
dC0+ZHkgPCAwID8gMCA6IHNjcm9sbFJlcXVlc3QtPmR5OworICAgIGludCBjb3B5V2lkdGggPSBz
Y3JvbGxXaWR0aCAtIGFicyhzY3JvbGxSZXF1ZXN0LT5keCk7CisgICAgaW50IGNvcHlIZWlnaHQg
PSBzY3JvbGxIZWlnaHQgLSBhYnMoc2Nyb2xsUmVxdWVzdC0+ZHkpOworICAgIGlmIChzY3JvbGxS
ZXF1ZXN0LT5keCB8fCBzY3JvbGxSZXF1ZXN0LT5keSkgeworICAgICAgICBfZXdrX3ZpZXdfc2Ny
ZWVuX21vdmUoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCBkZXN0aW5hdGlvblgsIGRl
c3RpbmF0aW9uWSwgc291cmNlWCwgc291cmNlWSwgY29weVdpZHRoLCBjb3B5SGVpZ2h0LCBzY3Jv
bGxXaWR0aCk7CisgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzbWFy
dERhdGEtPmJhY2tpbmdfc3RvcmUsIGRlc3RpbmF0aW9uWCwgZGVzdGluYXRpb25ZLCBjb3B5V2lk
dGgsIGNvcHlIZWlnaHQpOwogICAgIH0KKworICAgIEVpbmFfUmVjdGFuZ2xlIHZlcnRpY2FsVXBk
YXRlOworICAgIHZlcnRpY2FsVXBkYXRlLnggPSBkZXN0aW5hdGlvblggPyAwIDogY29weVdpZHRo
IC0gMTsKKyAgICB2ZXJ0aWNhbFVwZGF0ZS55ID0gMDsKKyAgICB2ZXJ0aWNhbFVwZGF0ZS53ID0g
YWJzKHNjcm9sbFJlcXVlc3QtPmR4KTsKKyAgICB2ZXJ0aWNhbFVwZGF0ZS5oID0gc2Nyb2xsSGVp
Z2h0OworICAgIGlmICh2ZXJ0aWNhbFVwZGF0ZS53ICYmIHZlcnRpY2FsVXBkYXRlLmgpCisgICAg
ICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNtYXJ0RGF0YS0+X3ByaXYsIHZlcnRpY2FsVXBkYXRl
LngsIHZlcnRpY2FsVXBkYXRlLnksIHZlcnRpY2FsVXBkYXRlLncsIHZlcnRpY2FsVXBkYXRlLmgp
OworCisgICAgRWluYV9SZWN0YW5nbGUgaG9yaXpvbnRhbFVwZGF0ZTsKKyAgICBob3Jpem9udGFs
VXBkYXRlLnggPSBkZXN0aW5hdGlvblg7CisgICAgaG9yaXpvbnRhbFVwZGF0ZS55ID0gZGVzdGlu
YXRpb25ZID8gMCA6IGNvcHlIZWlnaHQgLSAxOworICAgIGhvcml6b250YWxVcGRhdGUudyA9IGNv
cHlXaWR0aDsKKyAgICBob3Jpem9udGFsVXBkYXRlLmggPSBhYnMoc2Nyb2xsUmVxdWVzdC0+ZHkp
OworICAgIGlmIChob3Jpem9udGFsVXBkYXRlLncgJiYgaG9yaXpvbnRhbFVwZGF0ZS5oKQorICAg
ICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCBob3Jpem9udGFsVXBk
YXRlLngsIGhvcml6b250YWxVcGRhdGUueSwgaG9yaXpvbnRhbFVwZGF0ZS53LCBob3Jpem9udGFs
VXBkYXRlLmgpOwogfQogCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRf
c2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121262</attachid>
            <date>2012-01-05 04:54:32 -0800</date>
            <delta_ts>2012-01-10 02:47:05 -0800</delta_ts>
            <desc>a patch for using memmove api.</desc>
            <filename>memmove.patch</filename>
            <type>text/plain</type>
            <size>13812</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAxZDNhYTM5Li4wZGM0YTg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDEtMDQgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmVmYWN0b3Igc2luZ2xlIGJhY2tpbmcgc3RvcmUg
c2Nyb2xsIGNvZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTI0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSB0aGUgZHVwbGljYXRlZCBjb2RlIGFuZCByZWZhY3RvciB0aGUgc2Nyb2xsIHBy
b2NlZHVyZS4KKyAgICAgICAgV2hlcmV2ZXIgdGhlIHBhZ2UgaXMgc2Nyb2xsZWQsIHRoZXJlIGFy
ZSBvbmUgc2NyZWVuIGNvcHkgYW5kIHR3byB1cGRhdGVzLgorICAgICAgICBUaGlzIHBhdGNoIG9w
dGltaXNlcyB0aGUgc2Nyb2xsIHByb2NlZHVyZSBieSBsZXNzIGNhbGN1bGF0aW9uLgorCisgICAg
ICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcmV2ZXJz
ZV9saW5lX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NjcmVlbl9tb3ZlKToKKyAgICAgICAg
KF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKToKKwogMjAxMi0wMS0wNCAg
S3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBS
ZWZhY3RvciB0aGUgd2F5IHVzaW5nIGNhaXJvIGluIGV3a190aWxlZF9iYWNraW5nX3N0b3JlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAppbmRleCAzYmEwNTczLi5j
ZDNjZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcApAQCAt
ODgsMTE2ICs4OCwyMiBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Jlc2l6
ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29yZCB3aWR0aAogICAgIH0KIH0KIAotc3Rh
dGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl91cCh1aW50MzJfdCogaW1h
Z2UsIHNpemVfdCByb3dzLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3aWR0aCwgc2l6ZV90
IGhlaWdodCwgc2l6ZV90IHJvd1NpemUpCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3Nj
cmVlbl9tb3ZlKHVpbnQzMl90KiBpbWFnZSwgc2l6ZV90IGRlc3RpbmF0aW9uWCwgc2l6ZV90IGRl
c3RpbmF0aW9uWSwgc2l6ZV90IHNvdXJjZVgsIHNpemVfdCBzb3VyY2VZLCBzaXplX3QgY29weVdp
ZHRoLCBzaXplX3QgY29weUhlaWdodCwgc2l6ZV90IGZyYW1lV2lkdGgpCiB7Ci0gICAgdWludDMy
X3QqIHNvdXJjZTsKLSAgICB1aW50MzJfdCogZGVzdGluYXRpb247CisgICAgdWludDMyX3QqIHNv
dXJjZUJlZ2luID0gaW1hZ2UgKyAoZnJhbWVXaWR0aCAqIHNvdXJjZVkpICsgc291cmNlWDsKKyAg
ICB1aW50MzJfdCogZGVzdGluYXRpb25CZWdpbiA9IGltYWdlICsgKGZyYW1lV2lkdGggKiBkZXN0
aW5hdGlvblkpICsgZGVzdGluYXRpb25YOwogCi0gICAgZGVzdGluYXRpb24gPSBpbWFnZSArIHgg
KyB5ICogcm93U2l6ZTsKLSAgICBzb3VyY2UgPSBkZXN0aW5hdGlvbiArIHJvd3MgKiByb3dTaXpl
OwotICAgIGhlaWdodCAtPSByb3dzOworICAgIHNpemVfdCBjb3B5TGVuZ3RoID0gY29weVdpZHRo
ICogNDsKKyAgICBjb25zdCBpbnQgbW92ZUxpbmVVcERvd24gPSBzb3VyY2VZID49IGRlc3RpbmF0
aW9uWSA/IDEgOiAtMTsKKyAgICBpbnQgc3RhcnRIZWlnaHQgPSBzb3VyY2VZID49IGRlc3RpbmF0
aW9uWSA/IDAgOiBjb3B5SGVpZ2h0IC0gMTsKIAotICAgIGZvciAoOyBoZWlnaHQgPiAwOyBoZWln
aHQtLSwgZGVzdGluYXRpb24gKz0gcm93U2l6ZSwgc291cmNlICs9IHJvd1NpemUpCi0gICAgICAg
IG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNlLCB3aWR0aCAqIDQpOwotfQotCi1zdGF0aWMgaW5s
aW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX2Rvd24odWludDMyX3QqIGltYWdlLCBz
aXplX3Qgcm93cywgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWln
aHQsIHNpemVfdCByb3dTaXplKQotewotICAgIHVpbnQzMl90KiBzb3VyY2U7Ci0gICAgdWludDMy
X3QqIGRlc3RpbmF0aW9uOwotCi0gICAgaGVpZ2h0IC09IHJvd3M7Ci0gICAgc291cmNlID0gaW1h
Z2UgKyB4ICsgKHkgKyBoZWlnaHQgLSAxKSAqIHJvd1NpemU7Ci0gICAgZGVzdGluYXRpb24gPSBz
b3VyY2UgKyByb3dzICogcm93U2l6ZTsKLQotICAgIGZvciAoOyBoZWlnaHQgPiAwOyBoZWlnaHQt
LSwgZGVzdGluYXRpb24gLT0gcm93U2l6ZSwgc291cmNlIC09IHJvd1NpemUpCi0gICAgICAgIG1l
bWNweShkZXN0aW5hdGlvbiwgc291cmNlLCB3aWR0aCAqIDQpOwotfQotCi1zdGF0aWMgaW5saW5l
IHZvaWQgX2V3a192aWV3XzRiX21vdmVfbGluZV9sZWZ0KHVpbnQzMl90KiBkZXN0aW5hdGlvbiwg
Y29uc3QgdWludDMyX3QqIHNvdXJjZSwgc2l6ZV90IGNvdW50KQotewotICAgIHVpbnQzMl90KiBl
bmRPZkRlc3RpbmF0aW9uID0gZGVzdGluYXRpb24gKyBjb3VudDsKLSAgICAvKiBubyBtZW1jcHko
KSBhcyBpdCBkb2VzIG5vdCBhbGxvdyBvdmVybGFwcGluZyByZWdpb25zICovCi0gICAgLyogbm8g
bWVtbW92ZSgpIGFzIGl0IHdpbGwgY29weSB0byBhIHRlbXBvcmFyeSBidWZmZXIgKi8KLSAgICAv
KiBUT0RPOiBsb29wIHVucm9sbGluZywgY29weWluZyB1cCB0byBxdWFkLXdvcmRzIHdvdWxkIGhl
bHAgKi8KLSAgICBmb3IgKDsgZGVzdGluYXRpb24gPCBlbmRPZkRlc3RpbmF0aW9uOyBkZXN0aW5h
dGlvbisrLCBzb3VyY2UrKykKLSAgICAgICAgKmRlc3RpbmF0aW9uID0gKnNvdXJjZTsKLX0KLQot
c3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfcmlnaHQodWludDMyX3Qq
IGRlc3RpbmF0aW9uLCB1aW50MzJfdCogc291cmNlLCBzaXplX3QgY291bnQpCi17Ci0gICAgdWlu
dDMyX3QqIGVuZE9mRGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbiAtIGNvdW50OwotICAgIC8qIG5v
IG1lbWNweSgpIGFzIGl0IGRvZXMgbm90IGFsbG93IG92ZXJsYXBwaW5nIHJlZ2lvbnMgKi8KLSAg
ICAvKiBubyBtZW1tb3ZlKCkgYXMgaXQgd2lsbCBjb3B5IHRvIGEgdGVtcG9yYXJ5IGJ1ZmZlciAq
LwotICAgIC8qIFRPRE86IGxvb3AgdW5yb2xsaW5nLCBjb3B5aW5nIHVwIHRvIHF1YWQtd29yZHMg
d291bGQgaGVscCAqLwotICAgIGZvciAoOyBkZXN0aW5hdGlvbiA+IGVuZE9mRGVzdGluYXRpb247
IGRlc3RpbmF0aW9uLS0sIHNvdXJjZS0tKQotICAgICAgICAqZGVzdGluYXRpb24gPSAqc291cmNl
OwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX2xlZnQo
dWludDMyX3QqIGltYWdlLCBzaXplX3QgY29sdW1ucywgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXpl
X3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCByb3dTaXplKQotewotICAgIHVpbnQzMl90
KiBzb3VyY2U7Ci0gICAgdWludDMyX3QqIGRlc3RpbmF0aW9uOworICAgIHVpbnQzMl90KiBzb3Vy
Y2UsICogZGVzdGluYXRpb247CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3B5SGVpZ2h0OyBp
KyspIHsKKyAgICAgICAgc291cmNlID0gc291cmNlQmVnaW4gKyAoZnJhbWVXaWR0aCAqIHN0YXJ0
SGVpZ2h0KTsKKyAgICAgICAgZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbkJlZ2luICsgKGZyYW1l
V2lkdGggKiBzdGFydEhlaWdodCk7CisgICAgICAgIHN0YXJ0SGVpZ2h0ID0gc3RhcnRIZWlnaHQg
KyBtb3ZlTGluZVVwRG93bjsKIAotICAgIGRlc3RpbmF0aW9uID0gaW1hZ2UgKyB4ICsgeSAqIHJv
d1NpemU7Ci0gICAgc291cmNlID0gZGVzdGluYXRpb24gKyBjb2x1bW5zOwotICAgIHdpZHRoIC09
IGNvbHVtbnM7Ci0KLSAgICBmb3IgKDsgaGVpZ2h0ID4gMDsgaGVpZ2h0LS0sIGRlc3RpbmF0aW9u
ICs9IHJvd1NpemUsIHNvdXJjZSArPSByb3dTaXplKQotICAgICAgICBfZXdrX3ZpZXdfNGJfbW92
ZV9saW5lX2xlZnQoZGVzdGluYXRpb24sIHNvdXJjZSwgd2lkdGgpOwotfQotCi1zdGF0aWMgaW5s
aW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3JpZ2h0KHVpbnQzMl90KiBpbWFnZSwg
c2l6ZV90IGNvbHVtbnMsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHdpZHRoLCBzaXplX3Qg
aGVpZ2h0LCBzaXplX3Qgcm93U2l6ZSkKLXsKLSAgICB1aW50MzJfdCogc291cmNlOwotICAgIHVp
bnQzMl90KiBkZXN0aW5hdGlvbjsKLQotICAgIHdpZHRoIC09IGNvbHVtbnM7Ci0gICAgc291cmNl
ID0gaW1hZ2UgKyAoeCArIHdpZHRoIC0gMSkgKyB5ICogcm93U2l6ZTsKLSAgICBkZXN0aW5hdGlv
biA9IHNvdXJjZSArIGNvbHVtbnM7Ci0KLSAgICBmb3IgKDsgaGVpZ2h0ID4gMDsgaGVpZ2h0LS0s
IGRlc3RpbmF0aW9uICs9IHJvd1NpemUsIHNvdXJjZSArPSByb3dTaXplKQotICAgICAgICBfZXdr
X3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHdpZHRoKTsKLX0K
LQotLyogY2F0Y2gtYWxsIGZ1bmN0aW9uLCBub3QgYXMgb3B0aW1pemVkIGFzIHRoZSBvdGhlcnMs
IGJ1dCBkb2VzIHRoZSB3b3JrLiAqLwotc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9t
b3ZlX3JlZ2lvbih1aW50MzJfdCogaW1hZ2UsIGludCBkZWx0YVgsIGludCBkZWx0YVksIHNpemVf
dCB4LCBzaXplX3QgeSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3Qgcm93U2l6
ZSkKLXsKLSAgICB1aW50MzJfdCogc291cmNlOwotICAgIHVpbnQzMl90KiBkZXN0aW5hdGlvbjsK
LQotICAgIGlmIChkZWx0YVkgPCAwKSB7Ci0gICAgICAgIGhlaWdodCArPSBkZWx0YVk7Ci0gICAg
ICAgIGRlc3RpbmF0aW9uID0gaW1hZ2UgKyB4ICsgeSAqIHJvd1NpemU7Ci0gICAgICAgIHNvdXJj
ZSA9IGRlc3RpbmF0aW9uIC0gZGVsdGFZICogcm93U2l6ZTsKLSAgICAgICAgaWYgKGRlbHRhWCA8
PSAwKSB7Ci0gICAgICAgICAgICB3aWR0aCArPSBkZWx0YVg7Ci0gICAgICAgICAgICBzb3VyY2Ug
LT0gZGVsdGFYOwotICAgICAgICAgICAgZm9yICg7IGhlaWdodCA+IDA7IGhlaWdodC0tLCBkZXN0
aW5hdGlvbiArPSByb3dTaXplLCBzb3VyY2UgKz0gcm93U2l6ZSkKLSAgICAgICAgICAgICAgICBf
ZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQoZGVzdGluYXRpb24sIHNvdXJjZSwgd2lkdGgpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgd2lkdGggLT0gZGVsdGFYOwotICAgICAgICAg
ICAgc291cmNlICs9IHdpZHRoIC0gMTsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uICs9IHdpZHRo
ICsgZGVsdGFYIC0xOwotICAgICAgICAgICAgZm9yICg7IGhlaWdodCA+IDA7IGhlaWdodC0tLCBk
ZXN0aW5hdGlvbiArPSByb3dTaXplLCBzb3VyY2UgKz0gcm93U2l6ZSkKLSAgICAgICAgICAgICAg
ICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHdpZHRo
KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGhlaWdodCAtPSBkZWx0YVk7Ci0g
ICAgICAgIHNvdXJjZSA9IGltYWdlICsgeCArICh5ICsgaGVpZ2h0IC0gMSkgKiByb3dTaXplOwot
ICAgICAgICBkZXN0aW5hdGlvbiA9IHNvdXJjZSArIGRlbHRhWSAqIHJvd1NpemU7Ci0gICAgICAg
IGlmIChkZWx0YVggPD0gMCkgewotICAgICAgICAgICAgd2lkdGggKz0gZGVsdGFYOwotICAgICAg
ICAgICAgc291cmNlIC09IGRlbHRhWDsKLSAgICAgICAgICAgIGZvciAoOyBoZWlnaHQgPiAwOyBo
ZWlnaHQtLSwgZGVzdGluYXRpb24gLT0gcm93U2l6ZSwgc291cmNlIC09IHJvd1NpemUpCi0gICAg
ICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfbGluZV9sZWZ0KGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIHdpZHRoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHdpZHRoIC09IGRlbHRh
WDsKLSAgICAgICAgICAgIHNvdXJjZSArPSB3aWR0aCAtIDE7Ci0gICAgICAgICAgICBkZXN0aW5h
dGlvbiArPSB3aWR0aCArIGRlbHRhWCAtIDE7Ci0gICAgICAgICAgICBmb3IgKDsgaGVpZ2h0ID4g
MDsgaGVpZ2h0LS0sIGRlc3RpbmF0aW9uIC09IHJvd1NpemUsIHNvdXJjZSAtPSByb3dTaXplKQot
ICAgICAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfcmlnaHQoZGVzdGluYXRpb24s
IHNvdXJjZSwgd2lkdGgpOwotICAgICAgICB9CisgICAgICAgIG1lbW1vdmUoZGVzdGluYXRpb24s
IHNvdXJjZSwgY29weUxlbmd0aCk7CiAgICAgfQogfQogCkBAIC0yNDEsMTA1ICsxNDcsMzMgQEAg
c3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xl
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHMKICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gMDsKIAogICAg
IEVJTkFfU0FGRVRZX09OX1RSVUVfUkVUVVJOKCFzY3JvbGxXaWR0aCB8fCAhc2Nyb2xsSGVpZ2h0
KTsKLSAgICBpZiAoIXNjcm9sbFJlcXVlc3QtPmR4KSB7Ci0gICAgICAgIGlmIChzY3JvbGxSZXF1
ZXN0LT5keSA8IDApIHsKLSAgICAgICAgICAgIERCRygic2Nyb2xsIHVwOiAlKzAzZCwlKzAzZCB1
cGRhdGU9JWQsJWQrJWR4JWQsICIKLSAgICAgICAgICAgICAgICAicmVwYWludD0lZCwlZCslZHgl
ZCIsCi0gICAgICAgICAgICAgICAgc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbFJlcXVlc3QtPmR5
LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0ICsgc2Nyb2xsUmVx
dWVzdC0+ZHksCi0gICAgICAgICAgICAgICAgc2Nyb2xsWCwgc2Nyb2xsWSArIHNjcm9sbEhlaWdo
dCArIHNjcm9sbFJlcXVlc3QtPmR5LCBzY3JvbGxXaWR0aCwgLXNjcm9sbFJlcXVlc3QtPmR5KTsK
LQotICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3VwCi0gICAgICAgICAgICAg
ICAgKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgLXNjcm9sbFJlcXVlc3QtPmR5LCBz
Y3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0LCB3aWR0aCk7Ci0gICAg
ICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKLSAgICAgICAgICAgICAg
ICAoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0
aCwgc2Nyb2xsSGVpZ2h0ICsgc2Nyb2xsUmVxdWVzdC0+ZHkpOwotCi0gICAgICAgICAgICBld2tf
dmlld19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCBzY3JvbGxYLCBzY3JvbGxZICsgc2Ny
b2xsSGVpZ2h0ICsgc2Nyb2xsUmVxdWVzdC0+ZHksIHNjcm9sbFdpZHRoLCAtc2Nyb2xsUmVxdWVz
dC0+ZHkpOwotICAgICAgICB9IGVsc2UgaWYgKHNjcm9sbFJlcXVlc3QtPmR5ID4gMCkgewotICAg
ICAgICAgICAgREJHKCJzY3JvbGwgZG93bjogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVk
LCAiCi0gICAgICAgICAgICAgICAgInJlcGFpbnQ9JWQsJWQrJWR4JWQiLAotICAgICAgICAgICAg
ICAgIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxSZXF1ZXN0LT5keSwgc2Nyb2xsWCwgc2Nyb2xs
WSArIHNjcm9sbFJlcXVlc3QtPmR5LCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xs
UmVxdWVzdC0+ZHksCi0gICAgICAgICAgICAgICAgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lk
dGgsIHNjcm9sbFJlcXVlc3QtPmR5KTsKLQotICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVf
cmVnaW9uX2Rvd24KLSAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhl
bHMpLCBzY3JvbGxSZXF1ZXN0LT5keSwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGgsIHNj
cm9sbEhlaWdodCwgd2lkdGgpOwotICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91
cGRhdGVfYWRkCi0gICAgICAgICAgICAgICAgKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgc2Ny
b2xsWCwgc2Nyb2xsWSArIHNjcm9sbFJlcXVlc3QtPmR5LCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVp
Z2h0IC0gc2Nyb2xsUmVxdWVzdC0+ZHkpOwotCi0gICAgICAgICAgICBld2tfdmlld19yZXBhaW50
X2FkZChzbWFydERhdGEtPl9wcml2LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Ny
b2xsUmVxdWVzdC0+ZHkpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICghc2Nyb2xsUmVxdWVz
dC0+ZHkpIHsKLSAgICAgICAgaWYgKHNjcm9sbFJlcXVlc3QtPmR4IDwgMCkgewotICAgICAgICAg
ICAgREJHKCJzY3JvbGwgbGVmdDogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCi0g
ICAgICAgICAgICAgICAgInJlcGFpbnQ9JWQsJWQrJWR4JWQiLAotICAgICAgICAgICAgICAgIHNj
cm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxSZXF1ZXN0LT5keSwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Ny
b2xsV2lkdGggKyBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsSGVpZ2h0LAotICAgICAgICAgICAg
ICAgIHNjcm9sbFggKyBzY3JvbGxXaWR0aCArIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxZLCAt
c2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbEhlaWdodCk7Ci0KLSAgICAgICAgICAgIF9ld2tfdmll
d180Yl9tb3ZlX3JlZ2lvbl9sZWZ0Ci0gICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQz
Ml90Kj4ocGl4ZWxzKSwgLXNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3Jv
bGxXaWR0aCwgc2Nyb2xsSGVpZ2h0LCB3aWR0aCk7Ci0gICAgICAgICAgICBldmFzX29iamVjdF9p
bWFnZV9kYXRhX3VwZGF0ZV9hZGQKLSAgICAgICAgICAgICAgICAoc21hcnREYXRhLT5iYWNraW5n
X3N0b3JlLCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCArIHNjcm9sbFJlcXVlc3QtPmR4
LCBzY3JvbGxIZWlnaHQpOwotCi0gICAgICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFy
dERhdGEtPl9wcml2LCBzY3JvbGxYICsgc2Nyb2xsV2lkdGggKyBzY3JvbGxSZXF1ZXN0LT5keCwg
c2Nyb2xsWSwgLXNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxIZWlnaHQpOwotICAgICAgICB9IGVs
c2UgaWYgKHNjcm9sbFJlcXVlc3QtPmR4ID4gMCkgewotICAgICAgICAgICAgREJHKCJzY3JvbGwg
dXA6ICUrMDNkLCUrMDNkIHVwZGF0ZT0lZCwlZCslZHglZCwgIgotICAgICAgICAgICAgICAgICJy
ZXBhaW50PSVkLCVkKyVkeCVkIiwKLSAgICAgICAgICAgICAgICBzY3JvbGxSZXF1ZXN0LT5keCwg
c2Nyb2xsUmVxdWVzdC0+ZHksIHNjcm9sbFggKyBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsWSwg
c2Nyb2xsV2lkdGggLSBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsSGVpZ2h0LAotICAgICAgICAg
ICAgICAgIHNjcm9sbFgsIHNjcm9sbFksIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxIZWlnaHQp
OwotCi0gICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fcmlnaHQKLSAgICAgICAg
ICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCBzY3JvbGxSZXF1ZXN0LT5k
eCwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGgsIHNjcm9sbEhlaWdodCwgd2lkdGgpOwot
ICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCi0gICAgICAgICAg
ICAgICAgKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgc2Nyb2xsWCArIHNjcm9sbFJlcXVlc3Qt
PmR4LCBzY3JvbGxZLCBzY3JvbGxXaWR0aCAtIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxIZWln
aHQpOwotCi0gICAgICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2
LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsSGVpZ2h0KTsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIEV2YXNfQ29vcmQgbW92ZVgsIG1vdmVZLCBt
b3ZlV2lkdGgsIG1vdmVIZWlnaHQ7Ci0gICAgICAgIEV2YXNfQ29vcmQgdmVydGljYWxYLCB2ZXJ0
aWNhbFksIHZlcnRpY2FsV2lkdGgsIHZlcnRpY2FsSGVpZ2h0OwotICAgICAgICBFdmFzX0Nvb3Jk
IGhvcml6b250YWxYLCBob3Jpem9udGFsWSwgaG9yaXpvbnRhbFdpZHRoLCBob3Jpem9udGFsSGVp
Z2h0OwotCi0gICAgICAgIGlmIChzY3JvbGxSZXF1ZXN0LT5keCA8IDApIHsKLSAgICAgICAgICAg
IG1vdmVYID0gc2Nyb2xsWDsKLSAgICAgICAgICAgIG1vdmVXaWR0aCA9IHNjcm9sbFdpZHRoICsg
c2Nyb2xsUmVxdWVzdC0+ZHg7Ci0gICAgICAgICAgICB2ZXJ0aWNhbFggPSBtb3ZlWCArIG1vdmVX
aWR0aDsKLSAgICAgICAgICAgIHZlcnRpY2FsV2lkdGggPSAtc2Nyb2xsUmVxdWVzdC0+ZHg7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2ZXJ0aWNhbFggPSBzY3JvbGxYOwotICAgICAg
ICAgICAgdmVydGljYWxXaWR0aCA9IHNjcm9sbFJlcXVlc3QtPmR4OwotICAgICAgICAgICAgbW92
ZVggPSB2ZXJ0aWNhbFggKyB2ZXJ0aWNhbFdpZHRoOwotICAgICAgICAgICAgbW92ZVdpZHRoID0g
c2Nyb2xsV2lkdGggLSBzY3JvbGxSZXF1ZXN0LT5keDsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChzY3JvbGxSZXF1ZXN0LT5keSA8IDApIHsKLSAgICAgICAgICAgIG1vdmVZID0gc2Nyb2xsWTsK
LSAgICAgICAgICAgIG1vdmVIZWlnaHQgPSBzY3JvbGxIZWlnaHQgKyBzY3JvbGxSZXF1ZXN0LT5k
eTsKLSAgICAgICAgICAgIGhvcml6b250YWxZID0gbW92ZVkgKyBtb3ZlSGVpZ2h0OwotICAgICAg
ICAgICAgaG9yaXpvbnRhbEhlaWdodCA9IC1zY3JvbGxSZXF1ZXN0LT5keTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGhvcml6b250YWxZID0gc2Nyb2xsWTsKLSAgICAgICAgICAgIGhv
cml6b250YWxIZWlnaHQgPSBzY3JvbGxSZXF1ZXN0LT5keTsKLSAgICAgICAgICAgIG1vdmVZID0g
aG9yaXpvbnRhbFkgKyBob3Jpem9udGFsSGVpZ2h0OwotICAgICAgICAgICAgbW92ZUhlaWdodCA9
IHNjcm9sbEhlaWdodCAtIHNjcm9sbFJlcXVlc3QtPmR5OwotICAgICAgICB9Ci0KLSAgICAgICAg
dmVydGljYWxZID0gbW92ZVk7Ci0gICAgICAgIHZlcnRpY2FsSGVpZ2h0ID0gbW92ZUhlaWdodDsK
LSAgICAgICAgaG9yaXpvbnRhbFggPSBzY3JvbGxYOwotICAgICAgICBob3Jpem9udGFsV2lkdGgg
PSBzY3JvbGxXaWR0aDsKLQotICAgICAgICBEQkcoInNjcm9sbCBkaWFnb25hbDogJSswM2QsJSsw
M2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCi0gICAgICAgICAgICAicmVwYWludHM6IGg9JWQsJWQr
JWR4JWQgdj0lZCwlZCslZHglZCIsCi0gICAgICAgICAgICBzY3JvbGxSZXF1ZXN0LT5keCwgc2Ny
b2xsUmVxdWVzdC0+ZHksIG1vdmVYLCBtb3ZlWSwgbW92ZVdpZHRoLCBtb3ZlSGVpZ2h0LAotICAg
ICAgICAgICAgdmVydGljYWxYLCB2ZXJ0aWNhbFksIHZlcnRpY2FsV2lkdGgsIHZlcnRpY2FsSGVp
Z2h0LAotICAgICAgICAgICAgaG9yaXpvbnRhbFgsIGhvcml6b250YWxZLCBob3Jpem9udGFsV2lk
dGgsIGhvcml6b250YWxIZWlnaHQpOwotCi0gICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lv
bgotICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgc2Nyb2xsUmVx
dWVzdC0+ZHgsIHNjcm9sbFJlcXVlc3QtPmR5LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0
aCwgc2Nyb2xsSGVpZ2h0LCB3aWR0aCk7Ci0KLSAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0
YV91cGRhdGVfYWRkKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgbW92ZVgsIG1vdmVZLCBtb3Zl
V2lkdGgsIG1vdmVIZWlnaHQpOwotICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERh
dGEtPl9wcml2LCB2ZXJ0aWNhbFgsIHZlcnRpY2FsWSwgdmVydGljYWxXaWR0aCwgdmVydGljYWxI
ZWlnaHQpOwotICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEtPl9wcml2LCBo
b3Jpem9udGFsWCwgaG9yaXpvbnRhbFksIGhvcml6b250YWxXaWR0aCwgaG9yaXpvbnRhbEhlaWdo
dCk7CisKKyAgICBpbnQgc291cmNlWCA9IHNjcm9sbFJlcXVlc3QtPmR4IDwgMCA/IGFicyhzY3Jv
bGxSZXF1ZXN0LT5keCkgOiAwOworICAgIGludCBzb3VyY2VZID0gc2Nyb2xsUmVxdWVzdC0+ZHkg
PCAwID8gYWJzKHNjcm9sbFJlcXVlc3QtPmR5KSA6IDA7CisgICAgaW50IGRlc3RpbmF0aW9uWCA9
IHNjcm9sbFJlcXVlc3QtPmR4IDwgMCA/IDAgOiBzY3JvbGxSZXF1ZXN0LT5keDsKKyAgICBpbnQg
ZGVzdGluYXRpb25ZID0gc2Nyb2xsUmVxdWVzdC0+ZHkgPCAwID8gMCA6IHNjcm9sbFJlcXVlc3Qt
PmR5OworICAgIGludCBjb3B5V2lkdGggPSBzY3JvbGxXaWR0aCAtIGFicyhzY3JvbGxSZXF1ZXN0
LT5keCk7CisgICAgaW50IGNvcHlIZWlnaHQgPSBzY3JvbGxIZWlnaHQgLSBhYnMoc2Nyb2xsUmVx
dWVzdC0+ZHkpOworICAgIGlmIChzY3JvbGxSZXF1ZXN0LT5keCB8fCBzY3JvbGxSZXF1ZXN0LT5k
eSkgeworICAgICAgICBfZXdrX3ZpZXdfc2NyZWVuX21vdmUoc3RhdGljX2Nhc3Q8dWludDMyX3Qq
PihwaXhlbHMpLCBkZXN0aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgc291cmNlWCwgc291cmNlWSwg
Y29weVdpZHRoLCBjb3B5SGVpZ2h0LCBzY3JvbGxXaWR0aCk7CisgICAgICAgIGV2YXNfb2JqZWN0
X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIGRlc3RpbmF0
aW9uWCwgZGVzdGluYXRpb25ZLCBjb3B5V2lkdGgsIGNvcHlIZWlnaHQpOwogICAgIH0KKworICAg
IEVpbmFfUmVjdGFuZ2xlIHZlcnRpY2FsVXBkYXRlOworICAgIHZlcnRpY2FsVXBkYXRlLnggPSBk
ZXN0aW5hdGlvblggPyAwIDogY29weVdpZHRoIC0gMTsKKyAgICB2ZXJ0aWNhbFVwZGF0ZS55ID0g
MDsKKyAgICB2ZXJ0aWNhbFVwZGF0ZS53ID0gYWJzKHNjcm9sbFJlcXVlc3QtPmR4KTsKKyAgICB2
ZXJ0aWNhbFVwZGF0ZS5oID0gc2Nyb2xsSGVpZ2h0OworICAgIGlmICh2ZXJ0aWNhbFVwZGF0ZS53
ICYmIHZlcnRpY2FsVXBkYXRlLmgpCisgICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNtYXJ0
RGF0YS0+X3ByaXYsIHZlcnRpY2FsVXBkYXRlLngsIHZlcnRpY2FsVXBkYXRlLnksIHZlcnRpY2Fs
VXBkYXRlLncsIHZlcnRpY2FsVXBkYXRlLmgpOworCisgICAgRWluYV9SZWN0YW5nbGUgaG9yaXpv
bnRhbFVwZGF0ZTsKKyAgICBob3Jpem9udGFsVXBkYXRlLnggPSBkZXN0aW5hdGlvblg7CisgICAg
aG9yaXpvbnRhbFVwZGF0ZS55ID0gZGVzdGluYXRpb25ZID8gMCA6IGNvcHlIZWlnaHQgLSAxOwor
ICAgIGhvcml6b250YWxVcGRhdGUudyA9IGNvcHlXaWR0aDsKKyAgICBob3Jpem9udGFsVXBkYXRl
LmggPSBhYnMoc2Nyb2xsUmVxdWVzdC0+ZHkpOworICAgIGlmIChob3Jpem9udGFsVXBkYXRlLncg
JiYgaG9yaXpvbnRhbFVwZGF0ZS5oKQorICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFy
dERhdGEtPl9wcml2LCBob3Jpem9udGFsVXBkYXRlLngsIGhvcml6b250YWxVcGRhdGUueSwgaG9y
aXpvbnRhbFVwZGF0ZS53LCBob3Jpem9udGFsVXBkYXRlLmgpOwogfQogCiBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNtYXJ0RGF0YSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121816</attachid>
            <date>2012-01-10 02:47:05 -0800</date>
            <delta_ts>2012-01-11 02:06:01 -0800</delta_ts>
            <desc>new patch via using memcpy and memmove.</desc>
            <filename>memmove_rebase.patch</filename>
            <type>text/plain</type>
            <size>14096</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBmZmU3YTEwLi44ZGM0NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTItMDEtMTAgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmVmYWN0b3Igc2luZ2xlIGJhY2tpbmcgc3RvcmUg
c2Nyb2xsIGNvZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTI0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSB0aGUgZHVwbGljYXRlZCBjb2RlIGFuZCByZWZhY3RvciB0aGUgc2Nyb2xsIHBy
b2NlZHVyZS4KKyAgICAgICAgV2hlcmV2ZXIgdGhlIHBhZ2UgaXMgc2Nyb2xsZWQsIHRoZXJlIGFy
ZSBvbmUgc2NyZWVuIGNvcHkgYW5kIHR3byB1cGRhdGVzLgorICAgICAgICBUaGlzIHBhdGNoIG9w
dGltaXNlcyB0aGUgc2Nyb2xsIHByb2NlZHVyZSBieSBsZXNzIGNhbGN1bGF0aW9uLgorCisgICAg
ICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfc2NyZWVu
X21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUp
OgorCiAyMDEyLTAxLTA2ICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtFRkxdIEFkZCBuZXcgcHJlLXJlbmRlcmluZyBjb2RlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAppbmRleCBiZTgzNmQwLi5lZDcyNjMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcApAQCAtODgsMTE1ICs4OCwy
OSBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVj
dCogZXdrVmlldywgRXZhc19Db29yZCB3aWR0aAogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSB2
b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl91cCh1aW50MzJfdCogaW1hZ2UsIHNpemVfdCBy
b3dzLCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgc2l6
ZV90IHJvd1NpemUpCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3NjcmVlbl9tb3ZlKHVp
bnQzMl90KiBpbWFnZSwgc2l6ZV90IGRlc3RpbmF0aW9uWCwgc2l6ZV90IGRlc3RpbmF0aW9uWSwg
c2l6ZV90IHNvdXJjZVgsIHNpemVfdCBzb3VyY2VZLCBzaXplX3QgY29weVdpZHRoLCBzaXplX3Qg
Y29weUhlaWdodCwgc2l6ZV90IGZyYW1lV2lkdGgpCiB7Ci0gICAgdWludDMyX3QqIHNvdXJjZTsK
LSAgICB1aW50MzJfdCogZGVzdGluYXRpb247Ci0KLSAgICBkZXN0aW5hdGlvbiA9IGltYWdlICsg
eCArIHkgKiByb3dTaXplOwotICAgIHNvdXJjZSA9IGRlc3RpbmF0aW9uICsgcm93cyAqIHJvd1Np
emU7Ci0gICAgaGVpZ2h0IC09IHJvd3M7Ci0KLSAgICBmb3IgKDsgaGVpZ2h0ID4gMDsgaGVpZ2h0
LS0sIGRlc3RpbmF0aW9uICs9IHJvd1NpemUsIHNvdXJjZSArPSByb3dTaXplKQotICAgICAgICBt
ZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgd2lkdGggKiA0KTsKLX0KLQotc3RhdGljIGlubGlu
ZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9kb3duKHVpbnQzMl90KiBpbWFnZSwgc2l6
ZV90IHJvd3MsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0
LCBzaXplX3Qgcm93U2l6ZSkKLXsKLSAgICB1aW50MzJfdCogc291cmNlOwotICAgIHVpbnQzMl90
KiBkZXN0aW5hdGlvbjsKLQotICAgIGhlaWdodCAtPSByb3dzOwotICAgIHNvdXJjZSA9IGltYWdl
ICsgeCArICh5ICsgaGVpZ2h0IC0gMSkgKiByb3dTaXplOwotICAgIGRlc3RpbmF0aW9uID0gc291
cmNlICsgcm93cyAqIHJvd1NpemU7Ci0KLSAgICBmb3IgKDsgaGVpZ2h0ID4gMDsgaGVpZ2h0LS0s
IGRlc3RpbmF0aW9uIC09IHJvd1NpemUsIHNvdXJjZSAtPSByb3dTaXplKQotICAgICAgICBtZW1j
cHkoZGVzdGluYXRpb24sIHNvdXJjZSwgd2lkdGggKiA0KTsKLX0KLQotc3RhdGljIGlubGluZSB2
b2lkIF9ld2tfdmlld180Yl9tb3ZlX2xpbmVfbGVmdCh1aW50MzJfdCogZGVzdGluYXRpb24sIGNv
bnN0IHVpbnQzMl90KiBzb3VyY2UsIHNpemVfdCBjb3VudCkKLXsKLSAgICB1aW50MzJfdCogZW5k
T2ZEZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uICsgY291bnQ7Ci0gICAgLyogbm8gbWVtY3B5KCkg
YXMgaXQgZG9lcyBub3QgYWxsb3cgb3ZlcmxhcHBpbmcgcmVnaW9ucyAqLwotICAgIC8qIG5vIG1l
bW1vdmUoKSBhcyBpdCB3aWxsIGNvcHkgdG8gYSB0ZW1wb3JhcnkgYnVmZmVyICovCi0gICAgLyog
VE9ETzogbG9vcCB1bnJvbGxpbmcsIGNvcHlpbmcgdXAgdG8gcXVhZC13b3JkcyB3b3VsZCBoZWxw
ICovCi0gICAgZm9yICg7IGRlc3RpbmF0aW9uIDwgZW5kT2ZEZXN0aW5hdGlvbjsgZGVzdGluYXRp
b24rKywgc291cmNlKyspCi0gICAgICAgICpkZXN0aW5hdGlvbiA9ICpzb3VyY2U7Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KHVpbnQzMl90KiBk
ZXN0aW5hdGlvbiwgdWludDMyX3QqIHNvdXJjZSwgc2l6ZV90IGNvdW50KQotewotICAgIHVpbnQz
Ml90KiBlbmRPZkRlc3RpbmF0aW9uID0gZGVzdGluYXRpb24gLSBjb3VudDsKLSAgICAvKiBubyBt
ZW1jcHkoKSBhcyBpdCBkb2VzIG5vdCBhbGxvdyBvdmVybGFwcGluZyByZWdpb25zICovCi0gICAg
Lyogbm8gbWVtbW92ZSgpIGFzIGl0IHdpbGwgY29weSB0byBhIHRlbXBvcmFyeSBidWZmZXIgKi8K
LSAgICAvKiBUT0RPOiBsb29wIHVucm9sbGluZywgY29weWluZyB1cCB0byBxdWFkLXdvcmRzIHdv
dWxkIGhlbHAgKi8KLSAgICBmb3IgKDsgZGVzdGluYXRpb24gPiBlbmRPZkRlc3RpbmF0aW9uOyBk
ZXN0aW5hdGlvbi0tLCBzb3VyY2UtLSkKLSAgICAgICAgKmRlc3RpbmF0aW9uID0gKnNvdXJjZTsK
LX0KLQotc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9sZWZ0KHVp
bnQzMl90KiBpbWFnZSwgc2l6ZV90IGNvbHVtbnMsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90
IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3Qgcm93U2l6ZSkKLXsKLSAgICB1aW50MzJfdCog
c291cmNlOwotICAgIHVpbnQzMl90KiBkZXN0aW5hdGlvbjsKLQotICAgIGRlc3RpbmF0aW9uID0g
aW1hZ2UgKyB4ICsgeSAqIHJvd1NpemU7Ci0gICAgc291cmNlID0gZGVzdGluYXRpb24gKyBjb2x1
bW5zOwotICAgIHdpZHRoIC09IGNvbHVtbnM7Ci0KLSAgICBmb3IgKDsgaGVpZ2h0ID4gMDsgaGVp
Z2h0LS0sIGRlc3RpbmF0aW9uICs9IHJvd1NpemUsIHNvdXJjZSArPSByb3dTaXplKQotICAgICAg
ICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQoZGVzdGluYXRpb24sIHNvdXJjZSwgd2lkdGgp
OwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3JpZ2h0
KHVpbnQzMl90KiBpbWFnZSwgc2l6ZV90IGNvbHVtbnMsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6
ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3Qgcm93U2l6ZSkKLXsKLSAgICB1aW50MzJf
dCogc291cmNlOwotICAgIHVpbnQzMl90KiBkZXN0aW5hdGlvbjsKLQotICAgIHdpZHRoIC09IGNv
bHVtbnM7Ci0gICAgc291cmNlID0gaW1hZ2UgKyAoeCArIHdpZHRoIC0gMSkgKyB5ICogcm93U2l6
ZTsKLSAgICBkZXN0aW5hdGlvbiA9IHNvdXJjZSArIGNvbHVtbnM7Ci0KLSAgICBmb3IgKDsgaGVp
Z2h0ID4gMDsgaGVpZ2h0LS0sIGRlc3RpbmF0aW9uICs9IHJvd1NpemUsIHNvdXJjZSArPSByb3dT
aXplKQotICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KGRlc3RpbmF0aW9uLCBz
b3VyY2UsIHdpZHRoKTsKLX0KLQotLyogY2F0Y2gtYWxsIGZ1bmN0aW9uLCBub3QgYXMgb3B0aW1p
emVkIGFzIHRoZSBvdGhlcnMsIGJ1dCBkb2VzIHRoZSB3b3JrLiAqLwotc3RhdGljIGlubGluZSB2
b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbih1aW50MzJfdCogaW1hZ2UsIGludCBkZWx0YVgs
IGludCBkZWx0YVksIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVp
Z2h0LCBzaXplX3Qgcm93U2l6ZSkKLXsKLSAgICB1aW50MzJfdCogc291cmNlOwotICAgIHVpbnQz
Ml90KiBkZXN0aW5hdGlvbjsKLQotICAgIGlmIChkZWx0YVkgPCAwKSB7Ci0gICAgICAgIGhlaWdo
dCArPSBkZWx0YVk7Ci0gICAgICAgIGRlc3RpbmF0aW9uID0gaW1hZ2UgKyB4ICsgeSAqIHJvd1Np
emU7Ci0gICAgICAgIHNvdXJjZSA9IGRlc3RpbmF0aW9uIC0gZGVsdGFZICogcm93U2l6ZTsKLSAg
ICAgICAgaWYgKGRlbHRhWCA8PSAwKSB7Ci0gICAgICAgICAgICB3aWR0aCArPSBkZWx0YVg7Ci0g
ICAgICAgICAgICBzb3VyY2UgLT0gZGVsdGFYOwotICAgICAgICAgICAgZm9yICg7IGhlaWdodCA+
IDA7IGhlaWdodC0tLCBkZXN0aW5hdGlvbiArPSByb3dTaXplLCBzb3VyY2UgKz0gcm93U2l6ZSkK
LSAgICAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQoZGVzdGluYXRpb24s
IHNvdXJjZSwgd2lkdGgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgd2lkdGggLT0g
ZGVsdGFYOwotICAgICAgICAgICAgc291cmNlICs9IHdpZHRoIC0gMTsKLSAgICAgICAgICAgIGRl
c3RpbmF0aW9uICs9IHdpZHRoICsgZGVsdGFYIC0xOwotICAgICAgICAgICAgZm9yICg7IGhlaWdo
dCA+IDA7IGhlaWdodC0tLCBkZXN0aW5hdGlvbiArPSByb3dTaXplLCBzb3VyY2UgKz0gcm93U2l6
ZSkKLSAgICAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9saW5lX3JpZ2h0KGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHdpZHRoKTsKKyAgICB1aW50MzJfdCogc291cmNlQmVnaW4gPSBpbWFnZSAr
IChmcmFtZVdpZHRoICogc291cmNlWSkgKyBzb3VyY2VYOworICAgIHVpbnQzMl90KiBkZXN0aW5h
dGlvbkJlZ2luID0gaW1hZ2UgKyAoZnJhbWVXaWR0aCAqIGRlc3RpbmF0aW9uWSkgKyBkZXN0aW5h
dGlvblg7CisKKyAgICBzaXplX3QgY29weUxlbmd0aCA9IGNvcHlXaWR0aCAqIDQ7CisgICAgY29u
c3QgaW50IG1vdmVMaW5lVXBEb3duID0gc291cmNlWSA+PSBkZXN0aW5hdGlvblkgPyAxIDogLTE7
CisgICAgaW50IHN0YXJ0SGVpZ2h0ID0gc291cmNlWSA+PSBkZXN0aW5hdGlvblkgPyAwIDogY29w
eUhlaWdodCAtIDE7CisKKyAgICB1aW50MzJfdCogc291cmNlLCAqIGRlc3RpbmF0aW9uOworICAg
IGlmIChzb3VyY2VYID49IGRlc3RpbmF0aW9uWCkgeworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGNvcHlIZWlnaHQ7IGkrKykgeworICAgICAgICAgICAgc291cmNlID0gc291cmNlQmVnaW4g
KyAoZnJhbWVXaWR0aCAqIHN0YXJ0SGVpZ2h0KTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0g
ZGVzdGluYXRpb25CZWdpbiArIChmcmFtZVdpZHRoICogc3RhcnRIZWlnaHQpOworICAgICAgICAg
ICAgc3RhcnRIZWlnaHQgPSBzdGFydEhlaWdodCArIG1vdmVMaW5lVXBEb3duOworICAgICAgICAg
ICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvcHlMZW5ndGgpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgaGVpZ2h0IC09IGRlbHRhWTsKLSAgICAgICAgc291cmNlID0g
aW1hZ2UgKyB4ICsgKHkgKyBoZWlnaHQgLSAxKSAqIHJvd1NpemU7Ci0gICAgICAgIGRlc3RpbmF0
aW9uID0gc291cmNlICsgZGVsdGFZICogcm93U2l6ZTsKLSAgICAgICAgaWYgKGRlbHRhWCA8PSAw
KSB7Ci0gICAgICAgICAgICB3aWR0aCArPSBkZWx0YVg7Ci0gICAgICAgICAgICBzb3VyY2UgLT0g
ZGVsdGFYOwotICAgICAgICAgICAgZm9yICg7IGhlaWdodCA+IDA7IGhlaWdodC0tLCBkZXN0aW5h
dGlvbiAtPSByb3dTaXplLCBzb3VyY2UgLT0gcm93U2l6ZSkKLSAgICAgICAgICAgICAgICBfZXdr
X3ZpZXdfNGJfbW92ZV9saW5lX2xlZnQoZGVzdGluYXRpb24sIHNvdXJjZSwgd2lkdGgpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgd2lkdGggLT0gZGVsdGFYOwotICAgICAgICAgICAg
c291cmNlICs9IHdpZHRoIC0gMTsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uICs9IHdpZHRoICsg
ZGVsdGFYIC0gMTsKLSAgICAgICAgICAgIGZvciAoOyBoZWlnaHQgPiAwOyBoZWlnaHQtLSwgZGVz
dGluYXRpb24gLT0gcm93U2l6ZSwgc291cmNlIC09IHJvd1NpemUpCi0gICAgICAgICAgICAgICAg
X2V3a192aWV3XzRiX21vdmVfbGluZV9yaWdodChkZXN0aW5hdGlvbiwgc291cmNlLCB3aWR0aCk7
CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29weUhlaWdodDsgaSsrKSB7CisgICAgICAg
ICAgICBzb3VyY2UgPSBzb3VyY2VCZWdpbiArIChmcmFtZVdpZHRoICogc3RhcnRIZWlnaHQpOwor
ICAgICAgICAgICAgZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbkJlZ2luICsgKGZyYW1lV2lkdGgg
KiBzdGFydEhlaWdodCk7CisgICAgICAgICAgICBzdGFydEhlaWdodCA9IHN0YXJ0SGVpZ2h0ICsg
bW92ZUxpbmVVcERvd247CisgICAgICAgICAgICBtZW1tb3ZlKGRlc3RpbmF0aW9uLCBzb3VyY2Us
IGNvcHlMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjQxLDEwNSArMTU1LDMzIEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9jZXNzX3Npbmds
ZShFd2tfVmlld19TbWFydF9EYXRhKiBzCiAgICAgICAgIHNjcm9sbEhlaWdodCA9IDA7CiAKICAg
ICBFSU5BX1NBRkVUWV9PTl9UUlVFX1JFVFVSTighc2Nyb2xsV2lkdGggfHwgIXNjcm9sbEhlaWdo
dCk7Ci0gICAgaWYgKCFzY3JvbGxSZXF1ZXN0LT5keCkgewotICAgICAgICBpZiAoc2Nyb2xsUmVx
dWVzdC0+ZHkgPCAwKSB7Ci0gICAgICAgICAgICBEQkcoInNjcm9sbCB1cDogJSswM2QsJSswM2Qg
dXBkYXRlPSVkLCVkKyVkeCVkLCAiCi0gICAgICAgICAgICAgICAgInJlcGFpbnQ9JWQsJWQrJWR4
JWQiLAotICAgICAgICAgICAgICAgIHNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxSZXF1ZXN0LT5k
eSwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGgsIHNjcm9sbEhlaWdodCArIHNjcm9sbFJl
cXVlc3QtPmR5LAotICAgICAgICAgICAgICAgIHNjcm9sbFgsIHNjcm9sbFkgKyBzY3JvbGxIZWln
aHQgKyBzY3JvbGxSZXF1ZXN0LT5keSwgc2Nyb2xsV2lkdGgsIC1zY3JvbGxSZXF1ZXN0LT5keSk7
Ci0KLSAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl91cAotICAgICAgICAgICAg
ICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIC1zY3JvbGxSZXF1ZXN0LT5keSwg
c2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGgsIHNjcm9sbEhlaWdodCwgd2lkdGgpOwotICAg
ICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCi0gICAgICAgICAgICAg
ICAgKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lk
dGgsIHNjcm9sbEhlaWdodCArIHNjcm9sbFJlcXVlc3QtPmR5KTsKLQotICAgICAgICAgICAgZXdr
X3ZpZXdfcmVwYWludF9hZGQoc21hcnREYXRhLT5fcHJpdiwgc2Nyb2xsWCwgc2Nyb2xsWSArIHNj
cm9sbEhlaWdodCArIHNjcm9sbFJlcXVlc3QtPmR5LCBzY3JvbGxXaWR0aCwgLXNjcm9sbFJlcXVl
c3QtPmR5KTsKLSAgICAgICAgfSBlbHNlIGlmIChzY3JvbGxSZXF1ZXN0LT5keSA+IDApIHsKLSAg
ICAgICAgICAgIERCRygic2Nyb2xsIGRvd246ICUrMDNkLCUrMDNkIHVwZGF0ZT0lZCwlZCslZHgl
ZCwgIgotICAgICAgICAgICAgICAgICJyZXBhaW50PSVkLCVkKyVkeCVkIiwKLSAgICAgICAgICAg
ICAgICBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsUmVxdWVzdC0+ZHksIHNjcm9sbFgsIHNjcm9s
bFkgKyBzY3JvbGxSZXF1ZXN0LT5keSwgc2Nyb2xsV2lkdGgsIHNjcm9sbEhlaWdodCAtIHNjcm9s
bFJlcXVlc3QtPmR5LAotICAgICAgICAgICAgICAgIHNjcm9sbFgsIHNjcm9sbFksIHNjcm9sbFdp
ZHRoLCBzY3JvbGxSZXF1ZXN0LT5keSk7Ci0KLSAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3Zl
X3JlZ2lvbl9kb3duCi0gICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4
ZWxzKSwgc2Nyb2xsUmVxdWVzdC0+ZHksIHNjcm9sbFgsIHNjcm9sbFksIHNjcm9sbFdpZHRoLCBz
Y3JvbGxIZWlnaHQsIHdpZHRoKTsKLSAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFf
dXBkYXRlX2FkZAotICAgICAgICAgICAgICAgIChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIHNj
cm9sbFgsIHNjcm9sbFkgKyBzY3JvbGxSZXF1ZXN0LT5keSwgc2Nyb2xsV2lkdGgsIHNjcm9sbEhl
aWdodCAtIHNjcm9sbFJlcXVlc3QtPmR5KTsKLQotICAgICAgICAgICAgZXdrX3ZpZXdfcmVwYWlu
dF9hZGQoc21hcnREYXRhLT5fcHJpdiwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGgsIHNj
cm9sbFJlcXVlc3QtPmR5KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoIXNjcm9sbFJlcXVl
c3QtPmR5KSB7Ci0gICAgICAgIGlmIChzY3JvbGxSZXF1ZXN0LT5keCA8IDApIHsKLSAgICAgICAg
ICAgIERCRygic2Nyb2xsIGxlZnQ6ICUrMDNkLCUrMDNkIHVwZGF0ZT0lZCwlZCslZHglZCwgIgot
ICAgICAgICAgICAgICAgICJyZXBhaW50PSVkLCVkKyVkeCVkIiwKLSAgICAgICAgICAgICAgICBz
Y3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsUmVxdWVzdC0+ZHksIHNjcm9sbFgsIHNjcm9sbFksIHNj
cm9sbFdpZHRoICsgc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbEhlaWdodCwKLSAgICAgICAgICAg
ICAgICBzY3JvbGxYICsgc2Nyb2xsV2lkdGggKyBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsWSwg
LXNjcm9sbFJlcXVlc3QtPmR4LCBzY3JvbGxIZWlnaHQpOwotCi0gICAgICAgICAgICBfZXdrX3Zp
ZXdfNGJfbW92ZV9yZWdpb25fbGVmdAotICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50
MzJfdCo+KHBpeGVscyksIC1zY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Ny
b2xsV2lkdGgsIHNjcm9sbEhlaWdodCwgd2lkdGgpOwotICAgICAgICAgICAgZXZhc19vYmplY3Rf
aW1hZ2VfZGF0YV91cGRhdGVfYWRkCi0gICAgICAgICAgICAgICAgKHNtYXJ0RGF0YS0+YmFja2lu
Z19zdG9yZSwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGggKyBzY3JvbGxSZXF1ZXN0LT5k
eCwgc2Nyb2xsSGVpZ2h0KTsKLQotICAgICAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc21h
cnREYXRhLT5fcHJpdiwgc2Nyb2xsWCArIHNjcm9sbFdpZHRoICsgc2Nyb2xsUmVxdWVzdC0+ZHgs
IHNjcm9sbFksIC1zY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsSGVpZ2h0KTsKLSAgICAgICAgfSBl
bHNlIGlmIChzY3JvbGxSZXF1ZXN0LT5keCA+IDApIHsKLSAgICAgICAgICAgIERCRygic2Nyb2xs
IHVwOiAlKzAzZCwlKzAzZCB1cGRhdGU9JWQsJWQrJWR4JWQsICIKLSAgICAgICAgICAgICAgICAi
cmVwYWludD0lZCwlZCslZHglZCIsCi0gICAgICAgICAgICAgICAgc2Nyb2xsUmVxdWVzdC0+ZHgs
IHNjcm9sbFJlcXVlc3QtPmR5LCBzY3JvbGxYICsgc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbFks
IHNjcm9sbFdpZHRoIC0gc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbEhlaWdodCwKLSAgICAgICAg
ICAgICAgICBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsSGVpZ2h0
KTsKLQotICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3JpZ2h0Ci0gICAgICAg
ICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgc2Nyb2xsUmVxdWVzdC0+
ZHgsIHNjcm9sbFgsIHNjcm9sbFksIHNjcm9sbFdpZHRoLCBzY3JvbGxIZWlnaHQsIHdpZHRoKTsK
LSAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAotICAgICAgICAg
ICAgICAgIChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIHNjcm9sbFggKyBzY3JvbGxSZXF1ZXN0
LT5keCwgc2Nyb2xsWSwgc2Nyb2xsV2lkdGggLSBzY3JvbGxSZXF1ZXN0LT5keCwgc2Nyb2xsSGVp
Z2h0KTsKLQotICAgICAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc21hcnREYXRhLT5fcHJp
diwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsUmVxdWVzdC0+ZHgsIHNjcm9sbEhlaWdodCk7Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBFdmFzX0Nvb3JkIG1vdmVYLCBtb3ZlWSwg
bW92ZVdpZHRoLCBtb3ZlSGVpZ2h0OwotICAgICAgICBFdmFzX0Nvb3JkIHZlcnRpY2FsWCwgdmVy
dGljYWxZLCB2ZXJ0aWNhbFdpZHRoLCB2ZXJ0aWNhbEhlaWdodDsKLSAgICAgICAgRXZhc19Db29y
ZCBob3Jpem9udGFsWCwgaG9yaXpvbnRhbFksIGhvcml6b250YWxXaWR0aCwgaG9yaXpvbnRhbEhl
aWdodDsKLQotICAgICAgICBpZiAoc2Nyb2xsUmVxdWVzdC0+ZHggPCAwKSB7Ci0gICAgICAgICAg
ICBtb3ZlWCA9IHNjcm9sbFg7Ci0gICAgICAgICAgICBtb3ZlV2lkdGggPSBzY3JvbGxXaWR0aCAr
IHNjcm9sbFJlcXVlc3QtPmR4OwotICAgICAgICAgICAgdmVydGljYWxYID0gbW92ZVggKyBtb3Zl
V2lkdGg7Ci0gICAgICAgICAgICB2ZXJ0aWNhbFdpZHRoID0gLXNjcm9sbFJlcXVlc3QtPmR4Owot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmVydGljYWxYID0gc2Nyb2xsWDsKLSAgICAg
ICAgICAgIHZlcnRpY2FsV2lkdGggPSBzY3JvbGxSZXF1ZXN0LT5keDsKLSAgICAgICAgICAgIG1v
dmVYID0gdmVydGljYWxYICsgdmVydGljYWxXaWR0aDsKLSAgICAgICAgICAgIG1vdmVXaWR0aCA9
IHNjcm9sbFdpZHRoIC0gc2Nyb2xsUmVxdWVzdC0+ZHg7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoc2Nyb2xsUmVxdWVzdC0+ZHkgPCAwKSB7Ci0gICAgICAgICAgICBtb3ZlWSA9IHNjcm9sbFk7
Ci0gICAgICAgICAgICBtb3ZlSGVpZ2h0ID0gc2Nyb2xsSGVpZ2h0ICsgc2Nyb2xsUmVxdWVzdC0+
ZHk7Ci0gICAgICAgICAgICBob3Jpem9udGFsWSA9IG1vdmVZICsgbW92ZUhlaWdodDsKLSAgICAg
ICAgICAgIGhvcml6b250YWxIZWlnaHQgPSAtc2Nyb2xsUmVxdWVzdC0+ZHk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBob3Jpem9udGFsWSA9IHNjcm9sbFk7Ci0gICAgICAgICAgICBo
b3Jpem9udGFsSGVpZ2h0ID0gc2Nyb2xsUmVxdWVzdC0+ZHk7Ci0gICAgICAgICAgICBtb3ZlWSA9
IGhvcml6b250YWxZICsgaG9yaXpvbnRhbEhlaWdodDsKLSAgICAgICAgICAgIG1vdmVIZWlnaHQg
PSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxSZXF1ZXN0LT5keTsKLSAgICAgICAgfQogCi0gICAgICAg
IHZlcnRpY2FsWSA9IG1vdmVZOwotICAgICAgICB2ZXJ0aWNhbEhlaWdodCA9IG1vdmVIZWlnaHQ7
Ci0gICAgICAgIGhvcml6b250YWxYID0gc2Nyb2xsWDsKLSAgICAgICAgaG9yaXpvbnRhbFdpZHRo
ID0gc2Nyb2xsV2lkdGg7Ci0KLSAgICAgICAgREJHKCJzY3JvbGwgZGlhZ29uYWw6ICUrMDNkLCUr
MDNkIHVwZGF0ZT0lZCwlZCslZHglZCwgIgotICAgICAgICAgICAgInJlcGFpbnRzOiBoPSVkLCVk
KyVkeCVkIHY9JWQsJWQrJWR4JWQiLAotICAgICAgICAgICAgc2Nyb2xsUmVxdWVzdC0+ZHgsIHNj
cm9sbFJlcXVlc3QtPmR5LCBtb3ZlWCwgbW92ZVksIG1vdmVXaWR0aCwgbW92ZUhlaWdodCwKLSAg
ICAgICAgICAgIHZlcnRpY2FsWCwgdmVydGljYWxZLCB2ZXJ0aWNhbFdpZHRoLCB2ZXJ0aWNhbEhl
aWdodCwKLSAgICAgICAgICAgIGhvcml6b250YWxYLCBob3Jpem9udGFsWSwgaG9yaXpvbnRhbFdp
ZHRoLCBob3Jpem9udGFsSGVpZ2h0KTsKLQotICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdp
b24KLSAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIHNjcm9sbFJl
cXVlc3QtPmR4LCBzY3JvbGxSZXF1ZXN0LT5keSwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lk
dGgsIHNjcm9sbEhlaWdodCwgd2lkdGgpOwotCi0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2Rh
dGFfdXBkYXRlX2FkZChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIG1vdmVYLCBtb3ZlWSwgbW92
ZVdpZHRoLCBtb3ZlSGVpZ2h0KTsKLSAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc21hcnRE
YXRhLT5fcHJpdiwgdmVydGljYWxYLCB2ZXJ0aWNhbFksIHZlcnRpY2FsV2lkdGgsIHZlcnRpY2Fs
SGVpZ2h0KTsKLSAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc21hcnREYXRhLT5fcHJpdiwg
aG9yaXpvbnRhbFgsIGhvcml6b250YWxZLCBob3Jpem9udGFsV2lkdGgsIGhvcml6b250YWxIZWln
aHQpOworICAgIGludCBzb3VyY2VYID0gc2Nyb2xsUmVxdWVzdC0+ZHggPCAwID8gYWJzKHNjcm9s
bFJlcXVlc3QtPmR4KSA6IDA7CisgICAgaW50IHNvdXJjZVkgPSBzY3JvbGxSZXF1ZXN0LT5keSA8
IDAgPyBhYnMoc2Nyb2xsUmVxdWVzdC0+ZHkpIDogMDsKKyAgICBpbnQgZGVzdGluYXRpb25YID0g
c2Nyb2xsUmVxdWVzdC0+ZHggPCAwID8gMCA6IHNjcm9sbFJlcXVlc3QtPmR4OworICAgIGludCBk
ZXN0aW5hdGlvblkgPSBzY3JvbGxSZXF1ZXN0LT5keSA8IDAgPyAwIDogc2Nyb2xsUmVxdWVzdC0+
ZHk7CisgICAgaW50IGNvcHlXaWR0aCA9IHNjcm9sbFdpZHRoIC0gYWJzKHNjcm9sbFJlcXVlc3Qt
PmR4KTsKKyAgICBpbnQgY29weUhlaWdodCA9IHNjcm9sbEhlaWdodCAtIGFicyhzY3JvbGxSZXF1
ZXN0LT5keSk7CisgICAgaWYgKHNjcm9sbFJlcXVlc3QtPmR4IHx8IHNjcm9sbFJlcXVlc3QtPmR5
KSB7CisgICAgICAgIF9ld2tfdmlld19zY3JlZW5fbW92ZShzdGF0aWNfY2FzdDx1aW50MzJfdCo+
KHBpeGVscyksIGRlc3RpbmF0aW9uWCwgZGVzdGluYXRpb25ZLCBzb3VyY2VYLCBzb3VyY2VZLCBj
b3B5V2lkdGgsIGNvcHlIZWlnaHQsIHNjcm9sbFdpZHRoKTsKKyAgICAgICAgZXZhc19vYmplY3Rf
aW1hZ2VfZGF0YV91cGRhdGVfYWRkKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgZGVzdGluYXRp
b25YLCBkZXN0aW5hdGlvblksIGNvcHlXaWR0aCwgY29weUhlaWdodCk7CiAgICAgfQorCisgICAg
RWluYV9SZWN0YW5nbGUgdmVydGljYWxVcGRhdGU7CisgICAgdmVydGljYWxVcGRhdGUueCA9IGRl
c3RpbmF0aW9uWCA/IDAgOiBjb3B5V2lkdGggLSAxOworICAgIHZlcnRpY2FsVXBkYXRlLnkgPSAw
OworICAgIHZlcnRpY2FsVXBkYXRlLncgPSBhYnMoc2Nyb2xsUmVxdWVzdC0+ZHgpOworICAgIHZl
cnRpY2FsVXBkYXRlLmggPSBzY3JvbGxIZWlnaHQ7CisgICAgaWYgKHZlcnRpY2FsVXBkYXRlLncg
JiYgdmVydGljYWxVcGRhdGUuaCkKKyAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc21hcnRE
YXRhLT5fcHJpdiwgdmVydGljYWxVcGRhdGUueCwgdmVydGljYWxVcGRhdGUueSwgdmVydGljYWxV
cGRhdGUudywgdmVydGljYWxVcGRhdGUuaCk7CisKKyAgICBFaW5hX1JlY3RhbmdsZSBob3Jpem9u
dGFsVXBkYXRlOworICAgIGhvcml6b250YWxVcGRhdGUueCA9IGRlc3RpbmF0aW9uWDsKKyAgICBo
b3Jpem9udGFsVXBkYXRlLnkgPSBkZXN0aW5hdGlvblkgPyAwIDogY29weUhlaWdodCAtIDE7Cisg
ICAgaG9yaXpvbnRhbFVwZGF0ZS53ID0gY29weVdpZHRoOworICAgIGhvcml6b250YWxVcGRhdGUu
aCA9IGFicyhzY3JvbGxSZXF1ZXN0LT5keSk7CisgICAgaWYgKGhvcml6b250YWxVcGRhdGUudyAm
JiBob3Jpem9udGFsVXBkYXRlLmgpCisgICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNtYXJ0
RGF0YS0+X3ByaXYsIGhvcml6b250YWxVcGRhdGUueCwgaG9yaXpvbnRhbFVwZGF0ZS55LCBob3Jp
em9udGFsVXBkYXRlLncsIGhvcml6b250YWxVcGRhdGUuaCk7CiB9CiAKIHN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>