<?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>108794</bug_id>
          
          <creation_ts>2013-02-03 23:09:40 -0800</creation_ts>
          <short_desc>[EFL][WK2] Stop using WebString in ewk_cookie_manager, ewk_form_submission_request and ewk_text_checker</short_desc>
          <delta_ts>2013-02-13 13:57:48 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>107657</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>824086</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-03 23:09:40 -0800</bug_when>
    <thetext>ewk_cookie_manager, ewk_form_submission_request and ewk_text_checker still rely on internal C++ API, in particular WebString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824088</commentid>
    <comment_count>1</comment_count>
      <attachid>186312</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-03 23:14:07 -0800</bug_when>
    <thetext>Created attachment 186312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824135</commentid>
    <comment_count>2</comment_count>
      <attachid>186312</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-04 01:20:11 -0800</bug_when>
    <thetext>Comment on attachment 186312
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_cookie_manager.cpp:197
&gt; +        String hostname = toWTFString(wkHostname);

Shouldnt we use WKStringRef instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824139</commentid>
    <comment_count>3</comment_count>
      <attachid>186312</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-04 01:26:02 -0800</bug_when>
    <thetext>Comment on attachment 186312
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824152</commentid>
    <comment_count>4</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-04 01:41:07 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 186312 [details])
&gt; LGTM.

However agree with Kenneth, that using WKStringRef is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824162</commentid>
    <comment_count>5</comment_count>
      <attachid>186328</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-04 02:23:39 -0800</bug_when>
    <thetext>Created attachment 186328
Patch

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824172</commentid>
    <comment_count>6</comment_count>
      <attachid>186328</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-04 02:43:10 -0800</bug_when>
    <thetext>Comment on attachment 186328
Patch

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

LGTM

&gt; Source/WebKit2/UIProcess/API/efl/ewk_form_submission_request.cpp:51
&gt; -String EwkFormSubmissionRequest::fieldValue(const String&amp; fieldName) const
&gt; +WKEinaSharedString EwkFormSubmissionRequest::fieldValue(const char* fieldName) const
&gt;  {

it is really valuable having these methods when they are called only from one place? and they are very simple

&gt; Source/WebKit2/UIProcess/API/efl/ewk_form_submission_request.cpp:79
&gt;          WKStringRef wkKey = static_cast&lt;WKStringRef&gt;(WKArrayGetItemAtIndex(wkKeys.get(), i));

is this really the key or the value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824210</commentid>
    <comment_count>7</comment_count>
      <attachid>186328</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-04 03:43:56 -0800</bug_when>
    <thetext>Comment on attachment 186328
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_form_submission_request.cpp:51
&gt;&gt;  {
&gt; 
&gt; it is really valuable having these methods when they are called only from one place? and they are very simple

This is the pattern we have used so far for encapsulation since m_wkValues is private in EwkFormSubmissionRequest currently.
While this pattern could be changed, I think it is not really related to this patch.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_form_submission_request.cpp:79
&gt;&gt;          WKStringRef wkKey = static_cast&lt;WKStringRef&gt;(WKArrayGetItemAtIndex(wkKeys.get(), i));
&gt; 
&gt; is this really the key or the value?

Those are really the *keys* in m_wkValues dictionary although we could rename to wkFieldName if you would prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824317</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-04 06:46:23 -0800</bug_when>
    <thetext>&gt; This is the pattern we have used so far for encapsulation since m_wkValues is private in EwkFormSubmissionRequest currently.
&gt; While this pattern could be changed, I think it is not really related to this patch.

Sure.

&gt; Those are really the *keys* in m_wkValues dictionary although we could rename to wkFieldName if you would prefer.

I think it would. Apart from this it looks good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824333</commentid>
    <comment_count>9</comment_count>
      <attachid>186370</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-04 07:12:31 -0800</bug_when>
    <thetext>Created attachment 186370
Patch

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824347</commentid>
    <comment_count>10</comment_count>
      <attachid>186370</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-04 07:40:42 -0800</bug_when>
    <thetext>Comment on attachment 186370
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_form_submission_request_private.h:48
&gt; +    WKEinaSharedString fieldValue(const char* fieldName) const;

would it be better if this function returns &apos;const char*&apos; (avoid WKEinaSharedString copy constructor invoke)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824376</commentid>
    <comment_count>11</comment_count>
      <attachid>186383</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-04 08:26:43 -0800</bug_when>
    <thetext>Created attachment 186383
Patch

Add new WKEinaSharedString::leakString() and use it, as discussed via IRC with Mikhail and Kenneth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824384</commentid>
    <comment_count>12</comment_count>
      <attachid>186383</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-04 08:31:34 -0800</bug_when>
    <thetext>Comment on attachment 186383
Patch

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

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:49
&gt; +    const char* leakString();

think it should return Eina_Stringshare*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824397</commentid>
    <comment_count>13</comment_count>
      <attachid>186383</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-04 08:41:37 -0800</bug_when>
    <thetext>Comment on attachment 186383
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:49
&gt;&gt; +    const char* leakString();
&gt; 
&gt; think it should return Eina_Stringshare*

Yes, it is clearer. I&apos;ll update. BTW, we use const char* when we mean Eina_Stringshare* in a lot of places. We should probably fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824400</commentid>
    <comment_count>14</comment_count>
      <attachid>186391</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-04 08:43:12 -0800</bug_when>
    <thetext>Created attachment 186391
Patch

Take Mikhail&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831256</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-12 14:22:27 -0800</bug_when>
    <thetext>Could a WK2 owner please take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832188</commentid>
    <comment_count>16</comment_count>
      <attachid>186391</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-13 12:27:04 -0800</bug_when>
    <thetext>Comment on attachment 186391
Patch

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

This is EFL code, so mostly carrying over others&apos; reviews.

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:119
&gt; +    m_string = 0;

I don&apos;t know if I would expect a method named leakString() to do this.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_form_submission_request.cpp:53
&gt; -    WKRetainPtr&lt;WKStringRef&gt; wkFieldName = adoptWK(toCopiedAPI(fieldName));
&gt; +    WKRetainPtr&lt;WKStringRef&gt; wkFieldName(AdoptWK, WKStringCreateWithUTF8CString(fieldName));

I think that the adoptWK() form is preferred these days, although I&apos;m not sure why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832192</commentid>
    <comment_count>17</comment_count>
      <attachid>186391</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-13 12:31:26 -0800</bug_when>
    <thetext>Comment on attachment 186391
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:119
&gt;&gt; +    m_string = 0;
&gt; 
&gt; I don&apos;t know if I would expect a method named leakString() to do this.

I used OwnPtr::leakPtr() as reference.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_form_submission_request.cpp:53
&gt;&gt; +    WKRetainPtr&lt;WKStringRef&gt; wkFieldName(AdoptWK, WKStringCreateWithUTF8CString(fieldName));
&gt; 
&gt; I think that the adoptWK() form is preferred these days, although I&apos;m not sure why.

I did not know that. I&apos;ll fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832209</commentid>
    <comment_count>18</comment_count>
      <attachid>188149</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-13 12:38:51 -0800</bug_when>
    <thetext>Created attachment 188149
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832313</commentid>
    <comment_count>19</comment_count>
      <attachid>188149</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 13:57:41 -0800</bug_when>
    <thetext>Comment on attachment 188149
Patch for landing

Clearing flags on attachment: 188149

Committed r142794: &lt;http://trac.webkit.org/changeset/142794&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832314</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 13:57:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186312</attachid>
            <date>2013-02-03 23:14:07 -0800</date>
            <delta_ts>2013-02-04 02:23:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>108794_towtfstring.patch</filename>
            <type>text/plain</type>
            <size>6622</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhNTUwYjhiLi41NDlhY2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTMtMDItMDMgIENocmlzdG9waGUgRHVtZXogIDxkY2hyaXNAZ21haWwuY29tPgorCisg
ICAgICAgIFtFRkxdW1dLMl0gUmVtb3ZlIHJlbWFpbmluZyB1c2Ugb2YgQysrIEFQSSBmcm9tIGV3
a19jb29raWVfbWFuYWdlciwgZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0IGFuZCBld2tfdGV4
dF9jaGVja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDg3OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTdG9wIHVzaW5nIFdlYlN0cmluZyBpbiBld2tfY29va2llX21hbmFnZXIsIGV3a19mb3JtX3N1
Ym1pc3Npb25fcmVxdWVzdAorICAgICAgICBhbmQgZXdrX3RleHRfY2hlY2tlciBhcyBpdCBpcyBp
bnRlcm5hbCBDKysgQVBJLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tp
ZV9tYW5hZ2VyLmNwcDoKKyAgICAgICAgKGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2sp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVz
dC5jcHA6CisgICAgICAgIChFd2tGb3JtU3VibWlzc2lvblJlcXVlc3Q6OmZpZWxkVmFsdWUpOgor
ICAgICAgICAoZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X2ZpZWxkX25hbWVzX2dldCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RleHRfY2hlY2tlci5jcHA6CisgICAgICAg
IChjaGVja1NwZWxsaW5nT2ZTdHJpbmcpOgorICAgICAgICAoZ3Vlc3Nlc0ZvcldvcmQpOgorICAg
ICAgICAobGVhcm5Xb3JkKToKKyAgICAgICAgKGlnbm9yZVdvcmQpOgorCiAyMDEzLTAyLTAzICBL
d2FuZ1lvbmcgQ2hvaSAgPGt5MC5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEZpeCBidWls
ZCB3YXJuaW5nIGFmdGVyIHIxNDE2NDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCmluZGV4IGY4MTAzYWEuLjJmNTI5
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29r
aWVfbWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2Nvb2tpZV9tYW5hZ2VyLmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIHN0YXRpYyB2b2lkIGdldEhv
c3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2soV0tBcnJheVJlZiB3a0hvc3RuYW1lcywgV0tFcnJv
clJlZiB3CiAgICAgY29uc3Qgc2l6ZV90IGhvc3RuYW1lQ291bnQgPSBXS0FycmF5R2V0U2l6ZSh3
a0hvc3RuYW1lcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBob3N0bmFtZUNvdW50OyAr
K2kpIHsKICAgICAgICAgV0tTdHJpbmdSZWYgd2tIb3N0bmFtZSA9IHN0YXRpY19jYXN0PFdLU3Ry
aW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgod2tIb3N0bmFtZXMsIGkpKTsKLSAgICAgICAg
U3RyaW5nIGhvc3RuYW1lID0gdG9JbXBsKHdrSG9zdG5hbWUpLT5zdHJpbmcoKTsKKyAgICAgICAg
U3RyaW5nIGhvc3RuYW1lID0gdG9XVEZTdHJpbmcod2tIb3N0bmFtZSk7CiAgICAgICAgIGlmICho
b3N0bmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaG9zdG5h
bWVzID0gZWluYV9saXN0X2FwcGVuZChob3N0bmFtZXMsIGVpbmFfc3RyaW5nc2hhcmVfYWRkKGhv
c3RuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuY3BwCmlu
ZGV4IGU2MWE0MmYuLmQ5YWVkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmNwcApA
QCAtNTQsNyArNTQsNyBAQCBTdHJpbmcgRXdrRm9ybVN1Ym1pc3Npb25SZXF1ZXN0OjpmaWVsZFZh
bHVlKGNvbnN0IFN0cmluZyYgZmllbGROYW1lKSBjb25zdAogICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiB3a0ZpZWxkTmFtZSA9IGFkb3B0V0sodG9Db3BpZWRBUEkoZmllbGROYW1lKSk7CiAg
ICAgV0tTdHJpbmdSZWYgd2tWYWx1ZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG1fd2tWYWx1ZXMuZ2V0KCksIHdrRmllbGROYW1lLmdldCgpKSk7
CiAKLSAgICByZXR1cm4gd2tWYWx1ZSA/IHRvSW1wbCh3a1ZhbHVlKS0+c3RyaW5nKCkgOiBTdHJp
bmcoKTsKKyAgICByZXR1cm4gdG9XVEZTdHJpbmcod2tWYWx1ZSk7CiB9CiAKIFdLUmV0YWluUHRy
PFdLQXJyYXlSZWY+IEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdDo6ZmllbGROYW1lcygpIGNvbnN0
CkBAIC03OCw3ICs3OCw3IEBAIEVpbmFfTGlzdCogZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0
X2ZpZWxkX25hbWVzX2dldChFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlCiAgICAgY29uc3Qgc2l6
ZV90IG51bUtleXMgPSBXS0FycmF5R2V0U2l6ZSh3a0tleXMuZ2V0KCkpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtS2V5czsgKytpKSB7CiAgICAgICAgIFdLU3RyaW5nUmVmIHdrS2V5
ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a0tleXMu
Z2V0KCksIGkpKTsKLSAgICAgICAgbmFtZXMgPSBlaW5hX2xpc3RfYXBwZW5kKG5hbWVzLCBlaW5h
X3N0cmluZ3NoYXJlX2FkZCh0b0ltcGwod2tLZXkpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7
CisgICAgICAgIG5hbWVzID0gZWluYV9saXN0X2FwcGVuZChuYW1lcywgZWluYV9zdHJpbmdzaGFy
ZV9hZGQodG9XVEZTdHJpbmcod2tLZXkpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gbmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdGV4dF9jaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a190ZXh0X2NoZWNrZXIuY3BwCmluZGV4IGNlNTQ2ZDUuLjNkZTFmYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190ZXh0X2NoZWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190ZXh0X2NoZWNrZXIuY3Bw
CkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1Rl
eHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSAiV2ViU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3RleHRfY2hl
Y2tlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWluYS5oPgpAQCAtOTksOSArOTgsOSBAQCBzdGF0
aWMgdm9pZCBjbG9zZVNwZWxsRG9jdW1lbnRXaXRoVGFnKHVpbnQ2NF90IHRhZywgY29uc3Qgdm9p
ZCopCiBzdGF0aWMgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcodWludDY0X3QgdGFnLCBXS1N0
cmluZ1JlZiB0ZXh0LCBpbnQzMl90KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQzMl90KiBtaXNz
cGVsbGluZ0xlbmd0aCwgY29uc3Qgdm9pZCopCiB7CiAgICAgaWYgKGNsaWVudENhbGxiYWNrcygp
LnN0cmluZ19zcGVsbGluZ19jaGVjaykKLSAgICAgICAgY2xpZW50Q2FsbGJhY2tzKCkuc3RyaW5n
X3NwZWxsaW5nX2NoZWNrKHRhZywgdG9JbXBsKHRleHQpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7CisgICAgICAgIGNsaWVu
dENhbGxiYWNrcygpLnN0cmluZ19zcGVsbGluZ19jaGVjayh0YWcsIHRvV1RGU3RyaW5nKHRleHQp
LnV0ZjgoKS5kYXRhKCksIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsK
ICAgICBlbHNlCi0gICAgICAgIHRleHRDaGVja2VyRW5jaGFudCgpLT5jaGVja1NwZWxsaW5nT2ZT
dHJpbmcodG9JbXBsKHRleHQpLT5zdHJpbmcoKSwgKm1pc3NwZWxsaW5nTG9jYXRpb24sICptaXNz
cGVsbGluZ0xlbmd0aCk7CisgICAgICAgIHRleHRDaGVja2VyRW5jaGFudCgpLT5jaGVja1NwZWxs
aW5nT2ZTdHJpbmcodG9XVEZTdHJpbmcodGV4dCksICptaXNzcGVsbGluZ0xvY2F0aW9uLCAqbWlz
c3BlbGxpbmdMZW5ndGgpOwogfQogCiBzdGF0aWMgV0tBcnJheVJlZiBndWVzc2VzRm9yV29yZCh1
aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIHdvcmQsIGNvbnN0IHZvaWQqKQpAQCAtMTA5LDcgKzEw
OCw3IEBAIHN0YXRpYyBXS0FycmF5UmVmIGd1ZXNzZXNGb3JXb3JkKHVpbnQ2NF90IHRhZywgV0tT
dHJpbmdSZWYgd29yZCwgY29uc3Qgdm9pZCopCiAgICAgV0tNdXRhYmxlQXJyYXlSZWYgc3VnZ2Vz
dGlvbnNGb3JXb3JkID0gV0tNdXRhYmxlQXJyYXlDcmVhdGUoKTsKIAogICAgIGlmIChjbGllbnRD
YWxsYmFja3MoKS53b3JkX2d1ZXNzZXNfZ2V0KSB7Ci0gICAgICAgIEVpbmFfTGlzdCogbGlzdCA9
IGNsaWVudENhbGxiYWNrcygpLndvcmRfZ3Vlc3Nlc19nZXQodGFnLCB0b0ltcGwod29yZCktPnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBFaW5hX0xpc3QqIGxpc3QgPSBjbGllbnRD
YWxsYmFja3MoKS53b3JkX2d1ZXNzZXNfZ2V0KHRhZywgdG9XVEZTdHJpbmcod29yZCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIHZvaWQqIGl0ZW07CiAKICAgICAgICAgRUlOQV9MSVNUX0ZSRUUo
bGlzdCwgaXRlbSkgewpAQCAtMTE4LDcgKzExNyw3IEBAIHN0YXRpYyBXS0FycmF5UmVmIGd1ZXNz
ZXNGb3JXb3JkKHVpbnQ2NF90IHRhZywgV0tTdHJpbmdSZWYgd29yZCwgY29uc3Qgdm9pZCopCiAg
ICAgICAgICAgICBmcmVlKGl0ZW0pOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMgPSB0ZXh0Q2hlY2tlckVuY2hhbnQoKS0+Z2V0
R3Vlc3Nlc0ZvcldvcmQodG9JbXBsKHdvcmQpLT5zdHJpbmcoKSk7CisgICAgICAgIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBndWVzc2VzID0gdGV4dENoZWNrZXJFbmNoYW50KCktPmdldEd1ZXNzZXNG
b3JXb3JkKHRvV1RGU3RyaW5nKHdvcmQpKTsKICAgICAgICAgc2l6ZV90IG51bWJlck9mR3Vlc3Nl
cyA9IGd1ZXNzZXMuc2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJl
ck9mR3Vlc3NlczsgKytpKSB7CiAgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
c3VnZ2VzdGlvbihBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhndWVzc2Vz
W2ldLnV0ZjgoKS5kYXRhKCkpKTsKQEAgLTEzMiwxNyArMTMxLDE3IEBAIHN0YXRpYyBXS0FycmF5
UmVmIGd1ZXNzZXNGb3JXb3JkKHVpbnQ2NF90IHRhZywgV0tTdHJpbmdSZWYgd29yZCwgY29uc3Qg
dm9pZCopCiBzdGF0aWMgdm9pZCBsZWFybldvcmQodWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB3
b3JkLCBjb25zdCB2b2lkKikKIHsKICAgICBpZiAoY2xpZW50Q2FsbGJhY2tzKCkud29yZF9sZWFy
bikKLSAgICAgICAgY2xpZW50Q2FsbGJhY2tzKCkud29yZF9sZWFybih0YWcsIHRvSW1wbCh3b3Jk
KS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGNsaWVudENhbGxiYWNrcygpLndv
cmRfbGVhcm4odGFnLCB0b1dURlN0cmluZyh3b3JkKS51dGY4KCkuZGF0YSgpKTsKICAgICBlbHNl
Ci0gICAgICAgIHRleHRDaGVja2VyRW5jaGFudCgpLT5sZWFybldvcmQodG9JbXBsKHdvcmQpLT5z
dHJpbmcoKSk7CisgICAgICAgIHRleHRDaGVja2VyRW5jaGFudCgpLT5sZWFybldvcmQodG9XVEZT
dHJpbmcod29yZCkpOwogfQogCiBzdGF0aWMgdm9pZCBpZ25vcmVXb3JkKHVpbnQ2NF90IHRhZywg
V0tTdHJpbmdSZWYgd29yZCwgY29uc3Qgdm9pZCopCiB7CiAgICAgaWYgKGNsaWVudENhbGxiYWNr
cygpLndvcmRfaWdub3JlKQotICAgICAgICBjbGllbnRDYWxsYmFja3MoKS53b3JkX2lnbm9yZSh0
YWcsIHRvSW1wbCh3b3JkKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGNsaWVu
dENhbGxiYWNrcygpLndvcmRfaWdub3JlKHRhZywgdG9XVEZTdHJpbmcod29yZCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgZWxzZQotICAgICAgICB0ZXh0Q2hlY2tlckVuY2hhbnQoKS0+aWdub3JlV29y
ZCh0b0ltcGwod29yZCktPnN0cmluZygpKTsKKyAgICAgICAgdGV4dENoZWNrZXJFbmNoYW50KCkt
Pmlnbm9yZVdvcmQodG9XVEZTdHJpbmcod29yZCkpOwogfQogCiBuYW1lc3BhY2UgRXdrX1RleHRf
Q2hlY2tlciB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186328</attachid>
            <date>2013-02-04 02:23:39 -0800</date>
            <delta_ts>2013-02-04 07:12:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>108794_towtfstring.patch</filename>
            <type>text/plain</type>
            <size>9309</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhNTUwYjhiLi4wZDAzNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTMtMDItMDQgIENocmlzdG9waGUgRHVtZXogIDxkY2hyaXNAZ21haWwuY29tPgorCisg
ICAgICAgIFtFRkxdW1dLMl0gU3RvcCB1c2luZyBXZWJTdHJpbmcgaW4gZXdrX2Nvb2tpZV9tYW5h
Z2VyLCBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QgYW5kIGV3a190ZXh0X2NoZWNrZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc5NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0b3AgdXNpbmcg
V2ViU3RyaW5nIGluIGV3a19jb29raWVfbWFuYWdlciwgZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1
ZXN0CisgICAgICAgIGFuZCBld2tfdGV4dF9jaGVja2VyIGFzIGl0IGlzIGludGVybmFsIEMrKyBB
UEkuIFdLU3RyaW5nIGFuZAorICAgICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgYXJlIHVzZWQgaW5z
dGVhZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5j
cHA6CisgICAgICAgIChnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNrKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuY3BwOgorICAg
ICAgICAoRXdrRm9ybVN1Ym1pc3Npb25SZXF1ZXN0OjpmaWVsZFZhbHVlKToKKyAgICAgICAgKGV3
a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9maWVsZF9uYW1lc19nZXQpOgorICAgICAgICAoZXdr
X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X2ZpZWxkX3ZhbHVlX2dldCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X3ByaXZhdGUuaDoKKyAg
ICAgICAgKEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3RleHRfY2hlY2tlci5jcHA6CisgICAgICAgIChjaGVja1NwZWxsaW5nT2ZTdHJp
bmcpOgorICAgICAgICAoZ3Vlc3Nlc0ZvcldvcmQpOgorICAgICAgICAobGVhcm5Xb3JkKToKKyAg
ICAgICAgKGlnbm9yZVdvcmQpOgorCiAyMDEzLTAyLTAzICBLd2FuZ1lvbmcgQ2hvaSAgPGt5MC5j
aG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCB3YXJuaW5nIGFmdGVyIHIxNDE2
NDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29r
aWVfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29v
a2llX21hbmFnZXIuY3BwCmluZGV4IGY4MTAzYWEuLjRmMzY2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcApA
QCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUgImV3a19lcnJvcl9wcml2YXRlLmgiCiAjaW5jbHVk
ZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC0xOTQsMTAgKzE5Miw5IEBAIHN0YXRpYyB2b2lkIGdl
dEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2soV0tBcnJheVJlZiB3a0hvc3RuYW1lcywgV0tF
cnJvclJlZiB3CiAgICAgY29uc3Qgc2l6ZV90IGhvc3RuYW1lQ291bnQgPSBXS0FycmF5R2V0U2l6
ZSh3a0hvc3RuYW1lcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBob3N0bmFtZUNvdW50
OyArK2kpIHsKICAgICAgICAgV0tTdHJpbmdSZWYgd2tIb3N0bmFtZSA9IHN0YXRpY19jYXN0PFdL
U3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgod2tIb3N0bmFtZXMsIGkpKTsKLSAgICAg
ICAgU3RyaW5nIGhvc3RuYW1lID0gdG9JbXBsKHdrSG9zdG5hbWUpLT5zdHJpbmcoKTsKLSAgICAg
ICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFbXB0eSh3
a0hvc3RuYW1lKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBob3N0bmFtZXMgPSBl
aW5hX2xpc3RfYXBwZW5kKGhvc3RuYW1lcywgZWluYV9zdHJpbmdzaGFyZV9hZGQoaG9zdG5hbWUu
dXRmOCgpLmRhdGEoKSkpOworICAgICAgICBob3N0bmFtZXMgPSBlaW5hX2xpc3RfYXBwZW5kKGhv
c3RuYW1lcywgV0tFaW5hU2hhcmVkU3RyaW5nKHdrSG9zdG5hbWUpKTsKICAgICB9CiAKICAgICBj
YWxsYmFja0RhdGEtPmNhbGxiYWNrKGhvc3RuYW1lcywgZXdrRXJyb3IuZ2V0KCksIGNhbGxiYWNr
RGF0YS0+dXNlckRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5jcHAKaW5kZXggZTYx
YTQyZi4uNjBjYmI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuY3BwCkBAIC0zMSw3
ICszMSw2IEBACiAjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNp
bmNsdWRlICJld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oIgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtNDgs
MTMgKzQ3LDEzIEBAIEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdDo6fkV3a0Zvcm1TdWJtaXNzaW9u
UmVxdWVzdCgpCiAgICAgICAgIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lckNvbnRpbnVlKG1fd2tM
aXN0ZW5lci5nZXQoKSk7CiB9CiAKLVN0cmluZyBFd2tGb3JtU3VibWlzc2lvblJlcXVlc3Q6OmZp
ZWxkVmFsdWUoY29uc3QgU3RyaW5nJiBmaWVsZE5hbWUpIGNvbnN0CitXS0VpbmFTaGFyZWRTdHJp
bmcgRXdrRm9ybVN1Ym1pc3Npb25SZXF1ZXN0OjpmaWVsZFZhbHVlKGNvbnN0IGNoYXIqIGZpZWxk
TmFtZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZmllbGROYW1lKTsKLSAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gd2tGaWVsZE5hbWUgPSBhZG9wdFdLKHRvQ29waWVkQVBJKGZpZWxkTmFtZSkp
OworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0ZpZWxkTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhmaWVsZE5hbWUpKTsKICAgICBXS1N0cmluZ1JlZiB3
a1ZhbHVlID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkobV93a1ZhbHVlcy5nZXQoKSwgd2tGaWVsZE5hbWUuZ2V0KCkpKTsKIAotICAgIHJldHVybiB3
a1ZhbHVlID8gdG9JbXBsKHdrVmFsdWUpLT5zdHJpbmcoKSA6IFN0cmluZygpOworICAgIHJldHVy
biBXS0VpbmFTaGFyZWRTdHJpbmcod2tWYWx1ZSk7CiB9CiAKIFdLUmV0YWluUHRyPFdLQXJyYXlS
ZWY+IEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdDo6ZmllbGROYW1lcygpIGNvbnN0CkBAIC03OCw3
ICs3Nyw3IEBAIEVpbmFfTGlzdCogZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X2ZpZWxkX25h
bWVzX2dldChFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlCiAgICAgY29uc3Qgc2l6ZV90IG51bUtl
eXMgPSBXS0FycmF5R2V0U2l6ZSh3a0tleXMuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtS2V5czsgKytpKSB7CiAgICAgICAgIFdLU3RyaW5nUmVmIHdrS2V5ID0gc3RhdGlj
X2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a0tleXMuZ2V0KCksIGkp
KTsKLSAgICAgICAgbmFtZXMgPSBlaW5hX2xpc3RfYXBwZW5kKG5hbWVzLCBlaW5hX3N0cmluZ3No
YXJlX2FkZCh0b0ltcGwod2tLZXkpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAg
IG5hbWVzID0gZWluYV9saXN0X2FwcGVuZChuYW1lcywgV0tFaW5hU2hhcmVkU3RyaW5nKHdrS2V5
KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG5hbWVzOwpAQCAtODksOSArODgsNyBAQCBjb25zdCBj
aGFyKiBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfZmllbGRfdmFsdWVfZ2V0KEV3a19Gb3Jt
X1N1Ym1pc3Npb25fUmVxdQogICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKEV3a0Zvcm1T
dWJtaXNzaW9uUmVxdWVzdCwgcmVxdWVzdCwgaW1wbCwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKG5hbWUsIDApOwogCi0gICAgU3RyaW5nIHZhbHVlID0gaW1wbC0+Zmll
bGRWYWx1ZShTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKLQotICAgIHJldHVybiB2YWx1ZS5pc051
bGwoKSA/ICAwIDogZWluYV9zdHJpbmdzaGFyZV9hZGQodmFsdWUudXRmOCgpLmRhdGEoKSk7Cisg
ICAgcmV0dXJuIGltcGwtPmZpZWxkVmFsdWUobmFtZSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfZm9y
bV9zdWJtaXNzaW9uX3JlcXVlc3Rfc3VibWl0KEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdCog
cmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oCmluZGV4
IDI2ZDMyNDYuLjg5YmJjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9wcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X3By
aXZhdGUuaApAQCAtMjcsMTEgKzI3LDExIEBACiAjZGVmaW5lIGV3a19mb3JtX3N1Ym1pc3Npb25f
cmVxdWVzdF9wcml2YXRlX2gKIAogI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgorI2luY2x1ZGUg
IldLRWluYVNoYXJlZFN0cmluZy5oIgogI2luY2x1ZGUgIldLRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiZXdrX29iamVjdF9wcml2
YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogY2xhc3MgRXdrRm9ybVN1Ym1pc3Npb25SZXF1ZXN0IDogcHVibGljIEV3
a09iamVjdCB7CiBwdWJsaWM6CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBmaWVsZE5hbWVzKCkgY29uc3Q7Ci0gICAgU3RyaW5n
IGZpZWxkVmFsdWUoY29uc3QgU3RyaW5nJiBmaWVsZE5hbWUpIGNvbnN0OworICAgIFdLRWluYVNo
YXJlZFN0cmluZyBmaWVsZFZhbHVlKGNvbnN0IGNoYXIqIGZpZWxkTmFtZSkgY29uc3Q7CiAKICAg
ICB2b2lkIHN1Ym1pdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdGV4dF9jaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a190ZXh0X2NoZWNrZXIuY3BwCmluZGV4IGNlNTQ2ZDUuLjJiZTI4YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190ZXh0X2NoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190ZXh0X2NoZWNr
ZXIuY3BwCkBAIC0zMSwxNyArMzEsMTYgQEAKIAogI2luY2x1ZGUgIlRleHRDaGVja2VyRW5jaGFu
dC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmlu
Zy5oIgogI2luY2x1ZGUgIldLTXV0YWJsZUFycmF5LmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIu
aCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldLVGV4dENoZWNrZXIuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRl
ICJld2tfc2V0dGluZ3MuaCIKICNpbmNsdWRlICJld2tfdGV4dF9jaGVja2VyX3ByaXZhdGUuaCIK
ICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwpAQCAtOTksOSArOTgsOSBAQCBzdGF0aWMgdm9pZCBjbG9zZVNwZWxsRG9j
dW1lbnRXaXRoVGFnKHVpbnQ2NF90IHRhZywgY29uc3Qgdm9pZCopCiBzdGF0aWMgdm9pZCBjaGVj
a1NwZWxsaW5nT2ZTdHJpbmcodWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB0ZXh0LCBpbnQzMl90
KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQzMl90KiBtaXNzcGVsbGluZ0xlbmd0aCwgY29uc3Qg
dm9pZCopCiB7CiAgICAgaWYgKGNsaWVudENhbGxiYWNrcygpLnN0cmluZ19zcGVsbGluZ19jaGVj
aykKLSAgICAgICAgY2xpZW50Q2FsbGJhY2tzKCkuc3RyaW5nX3NwZWxsaW5nX2NoZWNrKHRhZywg
dG9JbXBsKHRleHQpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtaXNzcGVsbGluZ0xvY2F0aW9u
LCBtaXNzcGVsbGluZ0xlbmd0aCk7CisgICAgICAgIGNsaWVudENhbGxiYWNrcygpLnN0cmluZ19z
cGVsbGluZ19jaGVjayh0YWcsIFdLRWluYVNoYXJlZFN0cmluZyh0ZXh0KSwgbWlzc3BlbGxpbmdM
b2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwogICAgIGVsc2UKLSAgICAgICAgdGV4dENoZWNr
ZXJFbmNoYW50KCktPmNoZWNrU3BlbGxpbmdPZlN0cmluZyh0b0ltcGwodGV4dCktPnN0cmluZygp
LCAqbWlzc3BlbGxpbmdMb2NhdGlvbiwgKm1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgdGV4
dENoZWNrZXJFbmNoYW50KCktPmNoZWNrU3BlbGxpbmdPZlN0cmluZyh0b1dURlN0cmluZyh0ZXh0
KSwgKm1pc3NwZWxsaW5nTG9jYXRpb24sICptaXNzcGVsbGluZ0xlbmd0aCk7CiB9CiAKIHN0YXRp
YyBXS0FycmF5UmVmIGd1ZXNzZXNGb3JXb3JkKHVpbnQ2NF90IHRhZywgV0tTdHJpbmdSZWYgd29y
ZCwgY29uc3Qgdm9pZCopCkBAIC0xMDksNyArMTA4LDcgQEAgc3RhdGljIFdLQXJyYXlSZWYgZ3Vl
c3Nlc0ZvcldvcmQodWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB3b3JkLCBjb25zdCB2b2lkKikK
ICAgICBXS011dGFibGVBcnJheVJlZiBzdWdnZXN0aW9uc0ZvcldvcmQgPSBXS011dGFibGVBcnJh
eUNyZWF0ZSgpOwogCiAgICAgaWYgKGNsaWVudENhbGxiYWNrcygpLndvcmRfZ3Vlc3Nlc19nZXQp
IHsKLSAgICAgICAgRWluYV9MaXN0KiBsaXN0ID0gY2xpZW50Q2FsbGJhY2tzKCkud29yZF9ndWVz
c2VzX2dldCh0YWcsIHRvSW1wbCh3b3JkKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIEVpbmFfTGlzdCogbGlzdCA9IGNsaWVudENhbGxiYWNrcygpLndvcmRfZ3Vlc3Nlc19nZXQo
dGFnLCBXS0VpbmFTaGFyZWRTdHJpbmcod29yZCkpOwogICAgICAgICB2b2lkKiBpdGVtOwogCiAg
ICAgICAgIEVJTkFfTElTVF9GUkVFKGxpc3QsIGl0ZW0pIHsKQEAgLTExOCw3ICsxMTcsNyBAQCBz
dGF0aWMgV0tBcnJheVJlZiBndWVzc2VzRm9yV29yZCh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVm
IHdvcmQsIGNvbnN0IHZvaWQqKQogICAgICAgICAgICAgZnJlZShpdGVtKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzID0gdGV4
dENoZWNrZXJFbmNoYW50KCktPmdldEd1ZXNzZXNGb3JXb3JkKHRvSW1wbCh3b3JkKS0+c3RyaW5n
KCkpOworICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcyA9IHRleHRDaGVja2Vy
RW5jaGFudCgpLT5nZXRHdWVzc2VzRm9yV29yZCh0b1dURlN0cmluZyh3b3JkKSk7CiAgICAgICAg
IHNpemVfdCBudW1iZXJPZkd1ZXNzZXMgPSBndWVzc2VzLnNpemUoKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkd1ZXNzZXM7ICsraSkgewogICAgICAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1Z2dlc3Rpb24oQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoZ3Vlc3Nlc1tpXS51dGY4KCkuZGF0YSgpKSk7CkBAIC0xMzIsMTcgKzEz
MSwxNyBAQCBzdGF0aWMgV0tBcnJheVJlZiBndWVzc2VzRm9yV29yZCh1aW50NjRfdCB0YWcsIFdL
U3RyaW5nUmVmIHdvcmQsIGNvbnN0IHZvaWQqKQogc3RhdGljIHZvaWQgbGVhcm5Xb3JkKHVpbnQ2
NF90IHRhZywgV0tTdHJpbmdSZWYgd29yZCwgY29uc3Qgdm9pZCopCiB7CiAgICAgaWYgKGNsaWVu
dENhbGxiYWNrcygpLndvcmRfbGVhcm4pCi0gICAgICAgIGNsaWVudENhbGxiYWNrcygpLndvcmRf
bGVhcm4odGFnLCB0b0ltcGwod29yZCktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICBjbGllbnRDYWxsYmFja3MoKS53b3JkX2xlYXJuKHRhZywgV0tFaW5hU2hhcmVkU3RyaW5nKHdv
cmQpKTsKICAgICBlbHNlCi0gICAgICAgIHRleHRDaGVja2VyRW5jaGFudCgpLT5sZWFybldvcmQo
dG9JbXBsKHdvcmQpLT5zdHJpbmcoKSk7CisgICAgICAgIHRleHRDaGVja2VyRW5jaGFudCgpLT5s
ZWFybldvcmQodG9XVEZTdHJpbmcod29yZCkpOwogfQogCiBzdGF0aWMgdm9pZCBpZ25vcmVXb3Jk
KHVpbnQ2NF90IHRhZywgV0tTdHJpbmdSZWYgd29yZCwgY29uc3Qgdm9pZCopCiB7CiAgICAgaWYg
KGNsaWVudENhbGxiYWNrcygpLndvcmRfaWdub3JlKQotICAgICAgICBjbGllbnRDYWxsYmFja3Mo
KS53b3JkX2lnbm9yZSh0YWcsIHRvSW1wbCh3b3JkKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIGNsaWVudENhbGxiYWNrcygpLndvcmRfaWdub3JlKHRhZywgV0tFaW5hU2hhcmVk
U3RyaW5nKHdvcmQpKTsKICAgICBlbHNlCi0gICAgICAgIHRleHRDaGVja2VyRW5jaGFudCgpLT5p
Z25vcmVXb3JkKHRvSW1wbCh3b3JkKS0+c3RyaW5nKCkpOworICAgICAgICB0ZXh0Q2hlY2tlckVu
Y2hhbnQoKS0+aWdub3JlV29yZCh0b1dURlN0cmluZyh3b3JkKSk7CiB9CiAKIG5hbWVzcGFjZSBF
d2tfVGV4dF9DaGVja2VyIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186370</attachid>
            <date>2013-02-04 07:12:31 -0800</date>
            <delta_ts>2013-02-04 08:26:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>108794_towtfstring.patch</filename>
            <type>text/plain</type>
            <size>9901</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2YjJhNjYxLi41YjUxMDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTMtMDItMDQgIENocmlzdG9waGUgRHVtZXogIDxkY2hyaXNAZ21haWwuY29tPgorCisg
ICAgICAgIFtFRkxdW1dLMl0gU3RvcCB1c2luZyBXZWJTdHJpbmcgaW4gZXdrX2Nvb2tpZV9tYW5h
Z2VyLCBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QgYW5kIGV3a190ZXh0X2NoZWNrZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc5NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0b3AgdXNpbmcg
V2ViU3RyaW5nIGluIGV3a19jb29raWVfbWFuYWdlciwgZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1
ZXN0CisgICAgICAgIGFuZCBld2tfdGV4dF9jaGVja2VyIGFzIGl0IGlzIGludGVybmFsIEMrKyBB
UEkuIFdLU3RyaW5nIGFuZAorICAgICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgYXJlIHVzZWQgaW5z
dGVhZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5j
cHA6CisgICAgICAgIChnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNrKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuY3BwOgorICAg
ICAgICAoRXdrRm9ybVN1Ym1pc3Npb25SZXF1ZXN0OjpmaWVsZFZhbHVlKToKKyAgICAgICAgKGV3
a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9maWVsZF9uYW1lc19nZXQpOgorICAgICAgICAoZXdr
X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X2ZpZWxkX3ZhbHVlX2dldCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X3ByaXZhdGUuaDoKKyAg
ICAgICAgKEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3RleHRfY2hlY2tlci5jcHA6CisgICAgICAgIChjaGVja1NwZWxsaW5nT2ZTdHJp
bmcpOgorICAgICAgICAoZ3Vlc3Nlc0ZvcldvcmQpOgorICAgICAgICAobGVhcm5Xb3JkKToKKyAg
ICAgICAgKGlnbm9yZVdvcmQpOgorCiAyMDEzLTAyLTA0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgU29ydCBXZWJLaXQyIFhjb2RlIHByb2plY3QgZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9t
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVf
bWFuYWdlci5jcHAKaW5kZXggZjgxMDNhYS4uNGYzNjZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCkBAIC0z
NCw4ICszNCw2IEBACiAjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlICJl
d2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTE5NCwxMCArMTkyLDkgQEAgc3RhdGljIHZvaWQgZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayhXS0FycmF5UmVmIHdrSG9zdG5hbWVzLCBXS0Vycm9y
UmVmIHcKICAgICBjb25zdCBzaXplX3QgaG9zdG5hbWVDb3VudCA9IFdLQXJyYXlHZXRTaXplKHdr
SG9zdG5hbWVzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhvc3RuYW1lQ291bnQ7ICsr
aSkgewogICAgICAgICBXS1N0cmluZ1JlZiB3a0hvc3RuYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJp
bmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a0hvc3RuYW1lcywgaSkpOwotICAgICAgICBT
dHJpbmcgaG9zdG5hbWUgPSB0b0ltcGwod2tIb3N0bmFtZSktPnN0cmluZygpOwotICAgICAgICBp
ZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICBpZiAoV0tTdHJpbmdJc0VtcHR5KHdrSG9z
dG5hbWUpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGhvc3RuYW1lcyA9IGVpbmFf
bGlzdF9hcHBlbmQoaG9zdG5hbWVzLCBlaW5hX3N0cmluZ3NoYXJlX2FkZChob3N0bmFtZS51dGY4
KCkuZGF0YSgpKSk7CisgICAgICAgIGhvc3RuYW1lcyA9IGVpbmFfbGlzdF9hcHBlbmQoaG9zdG5h
bWVzLCBXS0VpbmFTaGFyZWRTdHJpbmcod2tIb3N0bmFtZSkpOwogICAgIH0KIAogICAgIGNhbGxi
YWNrRGF0YS0+Y2FsbGJhY2soaG9zdG5hbWVzLCBld2tFcnJvci5nZXQoKSwgY2FsbGJhY2tEYXRh
LT51c2VyRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmNwcAppbmRleCBlNjFhNDJm
Li42N2FmZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5jcHAKQEAgLTMxLDcgKzMx
LDYgQEAKICNpbmNsdWRlICJXS0Jhc2UuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1
ZGUgImV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9wcml2YXRlLmgiCi0jaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00OCwxMyAr
NDcsMTMgQEAgRXdrRm9ybVN1Ym1pc3Npb25SZXF1ZXN0Ojp+RXdrRm9ybVN1Ym1pc3Npb25SZXF1
ZXN0KCkKICAgICAgICAgV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyQ29udGludWUobV93a0xpc3Rl
bmVyLmdldCgpKTsKIH0KIAotU3RyaW5nIEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdDo6ZmllbGRW
YWx1ZShjb25zdCBTdHJpbmcmIGZpZWxkTmFtZSkgY29uc3QKK1dLRWluYVNoYXJlZFN0cmluZyBF
d2tGb3JtU3VibWlzc2lvblJlcXVlc3Q6OmZpZWxkVmFsdWUoY29uc3QgY2hhciogZmllbGROYW1l
KSBjb25zdAogewogICAgIEFTU0VSVChmaWVsZE5hbWUpOwotICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiB3a0ZpZWxkTmFtZSA9IGFkb3B0V0sodG9Db3BpZWRBUEkoZmllbGROYW1lKSk7Cisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrRmllbGROYW1lKEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKGZpZWxkTmFtZSkpOwogICAgIFdLU3RyaW5nUmVmIHdrVmFs
dWUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleSht
X3drVmFsdWVzLmdldCgpLCB3a0ZpZWxkTmFtZS5nZXQoKSkpOwogCi0gICAgcmV0dXJuIHdrVmFs
dWUgPyB0b0ltcGwod2tWYWx1ZSktPnN0cmluZygpIDogU3RyaW5nKCk7CisgICAgcmV0dXJuIFdL
RWluYVNoYXJlZFN0cmluZyh3a1ZhbHVlKTsKIH0KIAogV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4g
RXdrRm9ybVN1Ym1pc3Npb25SZXF1ZXN0OjpmaWVsZE5hbWVzKCkgY29uc3QKQEAgLTcyLDE2ICs3
MSwxNiBAQCBFaW5hX0xpc3QqIGV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9maWVsZF9uYW1l
c19nZXQoRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZQogewogICAgIEVXS19PQkpfR0VUX0lNUExf
T1JfUkVUVVJOKEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdCwgcmVxdWVzdCwgaW1wbCwgMCk7CiAK
LSAgICBFaW5hX0xpc3QqIG5hbWVzID0gMDsKKyAgICBFaW5hX0xpc3QqIGZpZWxkTmFtZXMgPSAw
OwogCi0gICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tLZXlzID0gaW1wbC0+ZmllbGROYW1l
cygpOwotICAgIGNvbnN0IHNpemVfdCBudW1LZXlzID0gV0tBcnJheUdldFNpemUod2tLZXlzLmdl
dCgpKTsKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a0ZpZWxkTmFtZXMgPSBpbXBsLT5m
aWVsZE5hbWVzKCk7CisgICAgY29uc3Qgc2l6ZV90IG51bUtleXMgPSBXS0FycmF5R2V0U2l6ZSh3
a0ZpZWxkTmFtZXMuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtS2V5czsg
KytpKSB7Ci0gICAgICAgIFdLU3RyaW5nUmVmIHdrS2V5ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdS
ZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a0tleXMuZ2V0KCksIGkpKTsKLSAgICAgICAgbmFt
ZXMgPSBlaW5hX2xpc3RfYXBwZW5kKG5hbWVzLCBlaW5hX3N0cmluZ3NoYXJlX2FkZCh0b0ltcGwo
d2tLZXkpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIFdLU3RyaW5nUmVmIHdr
RmllbGROYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRl
eCh3a0ZpZWxkTmFtZXMuZ2V0KCksIGkpKTsKKyAgICAgICAgZmllbGROYW1lcyA9IGVpbmFfbGlz
dF9hcHBlbmQoZmllbGROYW1lcywgV0tFaW5hU2hhcmVkU3RyaW5nKHdrRmllbGROYW1lKSk7CiAg
ICAgfQogCi0gICAgcmV0dXJuIG5hbWVzOworICAgIHJldHVybiBmaWVsZE5hbWVzOwogfQogCiBj
b25zdCBjaGFyKiBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfZmllbGRfdmFsdWVfZ2V0KEV3
a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogbmFtZSkKQEAg
LTg5LDkgKzg4LDcgQEAgY29uc3QgY2hhciogZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X2Zp
ZWxkX3ZhbHVlX2dldChFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXUKICAgICBFV0tfT0JKX0dFVF9J
TVBMX09SX1JFVFVSTihFd2tGb3JtU3VibWlzc2lvblJlcXVlc3QsIHJlcXVlc3QsIGltcGwsIDAp
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChuYW1lLCAwKTsKIAotICAgIFN0
cmluZyB2YWx1ZSA9IGltcGwtPmZpZWxkVmFsdWUoU3RyaW5nOjpmcm9tVVRGOChuYW1lKSk7Ci0K
LSAgICByZXR1cm4gdmFsdWUuaXNOdWxsKCkgPyAgMCA6IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHZh
bHVlLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBpbXBsLT5maWVsZFZhbHVlKG5hbWUpOwog
fQogCiBFaW5hX0Jvb2wgZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X3N1Ym1pdChFd2tfRm9y
bV9TdWJtaXNzaW9uX1JlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9y
ZXF1ZXN0X3ByaXZhdGUuaAppbmRleCAyNmQzMjQ2Li44OWJiYzZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3Rf
cHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3Jt
X3N1Ym1pc3Npb25fcmVxdWVzdF9wcml2YXRlLmgKQEAgLTI3LDExICsyNywxMSBAQAogI2RlZmlu
ZSBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZV9oCiAKICNpbmNsdWRlICJXS0Rp
Y3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJX
S0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgogI2lu
Y2x1ZGUgImV3a19vYmplY3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIGNsYXNzIEV3a0Zvcm1TdWJtaXNz
aW9uUmVxdWVzdCA6IHB1YmxpYyBFd2tPYmplY3QgewogcHVibGljOgpAQCAtNDUsNyArNDUsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gZmllbGROYW1l
cygpIGNvbnN0OwotICAgIFN0cmluZyBmaWVsZFZhbHVlKGNvbnN0IFN0cmluZyYgZmllbGROYW1l
KSBjb25zdDsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgZmllbGRWYWx1ZShjb25zdCBjaGFyKiBm
aWVsZE5hbWUpIGNvbnN0OwogCiAgICAgdm9pZCBzdWJtaXQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RleHRfY2hlY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdGV4dF9jaGVja2VyLmNwcAppbmRleCBj
ZTU0NmQ1Li4yYmUyOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdGV4dF9jaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdGV4dF9jaGVja2VyLmNwcApAQCAtMzEsMTcgKzMxLDE2IEBACiAKICNpbmNs
dWRlICJUZXh0Q2hlY2tlckVuY2hhbnQuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNs
dWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXS011dGFibGVBcnJheS5oIgog
I2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRl
ICJXS1RleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSAi
V2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3Rl
eHRfY2hlY2tlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTk5LDkgKzk4LDkgQEAgc3Rh
dGljIHZvaWQgY2xvc2VTcGVsbERvY3VtZW50V2l0aFRhZyh1aW50NjRfdCB0YWcsIGNvbnN0IHZv
aWQqKQogc3RhdGljIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKHVpbnQ2NF90IHRhZywgV0tT
dHJpbmdSZWYgdGV4dCwgaW50MzJfdCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50MzJfdCogbWlz
c3BlbGxpbmdMZW5ndGgsIGNvbnN0IHZvaWQqKQogewogICAgIGlmIChjbGllbnRDYWxsYmFja3Mo
KS5zdHJpbmdfc3BlbGxpbmdfY2hlY2spCi0gICAgICAgIGNsaWVudENhbGxiYWNrcygpLnN0cmlu
Z19zcGVsbGluZ19jaGVjayh0YWcsIHRvSW1wbCh0ZXh0KS0+c3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICBjbGll
bnRDYWxsYmFja3MoKS5zdHJpbmdfc3BlbGxpbmdfY2hlY2sodGFnLCBXS0VpbmFTaGFyZWRTdHJp
bmcodGV4dCksIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKICAgICBl
bHNlCi0gICAgICAgIHRleHRDaGVja2VyRW5jaGFudCgpLT5jaGVja1NwZWxsaW5nT2ZTdHJpbmco
dG9JbXBsKHRleHQpLT5zdHJpbmcoKSwgKm1pc3NwZWxsaW5nTG9jYXRpb24sICptaXNzcGVsbGlu
Z0xlbmd0aCk7CisgICAgICAgIHRleHRDaGVja2VyRW5jaGFudCgpLT5jaGVja1NwZWxsaW5nT2ZT
dHJpbmcodG9XVEZTdHJpbmcodGV4dCksICptaXNzcGVsbGluZ0xvY2F0aW9uLCAqbWlzc3BlbGxp
bmdMZW5ndGgpOwogfQogCiBzdGF0aWMgV0tBcnJheVJlZiBndWVzc2VzRm9yV29yZCh1aW50NjRf
dCB0YWcsIFdLU3RyaW5nUmVmIHdvcmQsIGNvbnN0IHZvaWQqKQpAQCAtMTA5LDcgKzEwOCw3IEBA
IHN0YXRpYyBXS0FycmF5UmVmIGd1ZXNzZXNGb3JXb3JkKHVpbnQ2NF90IHRhZywgV0tTdHJpbmdS
ZWYgd29yZCwgY29uc3Qgdm9pZCopCiAgICAgV0tNdXRhYmxlQXJyYXlSZWYgc3VnZ2VzdGlvbnNG
b3JXb3JkID0gV0tNdXRhYmxlQXJyYXlDcmVhdGUoKTsKIAogICAgIGlmIChjbGllbnRDYWxsYmFj
a3MoKS53b3JkX2d1ZXNzZXNfZ2V0KSB7Ci0gICAgICAgIEVpbmFfTGlzdCogbGlzdCA9IGNsaWVu
dENhbGxiYWNrcygpLndvcmRfZ3Vlc3Nlc19nZXQodGFnLCB0b0ltcGwod29yZCktPnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBFaW5hX0xpc3QqIGxpc3QgPSBjbGllbnRDYWxsYmFj
a3MoKS53b3JkX2d1ZXNzZXNfZ2V0KHRhZywgV0tFaW5hU2hhcmVkU3RyaW5nKHdvcmQpKTsKICAg
ICAgICAgdm9pZCogaXRlbTsKIAogICAgICAgICBFSU5BX0xJU1RfRlJFRShsaXN0LCBpdGVtKSB7
CkBAIC0xMTgsNyArMTE3LDcgQEAgc3RhdGljIFdLQXJyYXlSZWYgZ3Vlc3Nlc0ZvcldvcmQodWlu
dDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB3b3JkLCBjb25zdCB2b2lkKikKICAgICAgICAgICAgIGZy
ZWUoaXRlbSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZ3Vlc3NlcyA9IHRleHRDaGVja2VyRW5jaGFudCgpLT5nZXRHdWVzc2VzRm9yV29y
ZCh0b0ltcGwod29yZCktPnN0cmluZygpKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGd1ZXNzZXMgPSB0ZXh0Q2hlY2tlckVuY2hhbnQoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQodG9XVEZT
dHJpbmcod29yZCkpOwogICAgICAgICBzaXplX3QgbnVtYmVyT2ZHdWVzc2VzID0gZ3Vlc3Nlcy5z
aXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZHdWVzc2VzOyAr
K2kpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWdnZXN0aW9uKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGd1ZXNzZXNbaV0udXRmOCgpLmRh
dGEoKSkpOwpAQCAtMTMyLDE3ICsxMzEsMTcgQEAgc3RhdGljIFdLQXJyYXlSZWYgZ3Vlc3Nlc0Zv
cldvcmQodWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB3b3JkLCBjb25zdCB2b2lkKikKIHN0YXRp
YyB2b2lkIGxlYXJuV29yZCh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIHdvcmQsIGNvbnN0IHZv
aWQqKQogewogICAgIGlmIChjbGllbnRDYWxsYmFja3MoKS53b3JkX2xlYXJuKQotICAgICAgICBj
bGllbnRDYWxsYmFja3MoKS53b3JkX2xlYXJuKHRhZywgdG9JbXBsKHdvcmQpLT5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgY2xpZW50Q2FsbGJhY2tzKCkud29yZF9sZWFybih0YWcs
IFdLRWluYVNoYXJlZFN0cmluZyh3b3JkKSk7CiAgICAgZWxzZQotICAgICAgICB0ZXh0Q2hlY2tl
ckVuY2hhbnQoKS0+bGVhcm5Xb3JkKHRvSW1wbCh3b3JkKS0+c3RyaW5nKCkpOworICAgICAgICB0
ZXh0Q2hlY2tlckVuY2hhbnQoKS0+bGVhcm5Xb3JkKHRvV1RGU3RyaW5nKHdvcmQpKTsKIH0KIAog
c3RhdGljIHZvaWQgaWdub3JlV29yZCh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIHdvcmQsIGNv
bnN0IHZvaWQqKQogewogICAgIGlmIChjbGllbnRDYWxsYmFja3MoKS53b3JkX2lnbm9yZSkKLSAg
ICAgICAgY2xpZW50Q2FsbGJhY2tzKCkud29yZF9pZ25vcmUodGFnLCB0b0ltcGwod29yZCktPnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBjbGllbnRDYWxsYmFja3MoKS53b3JkX2ln
bm9yZSh0YWcsIFdLRWluYVNoYXJlZFN0cmluZyh3b3JkKSk7CiAgICAgZWxzZQotICAgICAgICB0
ZXh0Q2hlY2tlckVuY2hhbnQoKS0+aWdub3JlV29yZCh0b0ltcGwod29yZCktPnN0cmluZygpKTsK
KyAgICAgICAgdGV4dENoZWNrZXJFbmNoYW50KCktPmlnbm9yZVdvcmQodG9XVEZTdHJpbmcod29y
ZCkpOwogfQogCiBuYW1lc3BhY2UgRXdrX1RleHRfQ2hlY2tlciB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186383</attachid>
            <date>2013-02-04 08:26:43 -0800</date>
            <delta_ts>2013-02-04 08:43:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>108794_towtfstring.patch</filename>
            <type>text/plain</type>
            <size>12413</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2YjJhNjYxLi4zYWMwMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTMtMDItMDQgIENocmlzdG9waGUgRHVtZXogIDxkY2hyaXNAZ21haWwuY29tPgorCisg
ICAgICAgIFtFRkxdW1dLMl0gU3RvcCB1c2luZyBXZWJTdHJpbmcgaW4gZXdrX2Nvb2tpZV9tYW5h
Z2VyLCBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QgYW5kIGV3a190ZXh0X2NoZWNrZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc5NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0b3AgdXNpbmcg
V2ViU3RyaW5nIGluIGV3a19jb29raWVfbWFuYWdlciwgZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1
ZXN0CisgICAgICAgIGFuZCBld2tfdGV4dF9jaGVja2VyIGFzIGl0IGlzIGludGVybmFsIEMrKyBB
UEkuIFdLU3RyaW5nIGFuZAorICAgICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgYXJlIHVzZWQgaW5z
dGVhZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJp
bmcuY3BwOgorICAgICAgICAoV0tFaW5hU2hhcmVkU3RyaW5nOjpsZWFrU3RyaW5nKTogQWRkIGxl
YWtTdHJpbmcoKSBtZXRob2QgdG8KKyAgICAgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHNvIHRoYXQg
d2UgY2FuIGNvbnZlbmllbnRseSBjb252ZXJ0IGEgV0tTdHJpbmcgdG8gYQorICAgICAgICBFaW5h
IHNoYXJlZCBzdHJpbmcgYW5kIHRha2Ugb3duZXJzaGlwIG9mIGl0LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwOgorICAgICAgICAoZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXNDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zv
cm1fc3VibWlzc2lvbl9yZXF1ZXN0LmNwcDoKKyAgICAgICAgKEV3a0Zvcm1TdWJtaXNzaW9uUmVx
dWVzdDo6Y29weUZpZWxkVmFsdWUpOgorICAgICAgICAoZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1
ZXN0X2ZpZWxkX25hbWVzX2dldCk6CisgICAgICAgIChld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVl
c3RfZmllbGRfdmFsdWVfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9y
bV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oOgorICAgICAgICAoRXdrRm9ybVN1Ym1pc3Np
b25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdGV4dF9jaGVja2Vy
LmNwcDoKKyAgICAgICAgKGNoZWNrU3BlbGxpbmdPZlN0cmluZyk6CisgICAgICAgIChndWVzc2Vz
Rm9yV29yZCk6CisgICAgICAgIChsZWFybldvcmQpOgorICAgICAgICAoaWdub3JlV29yZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2VpbmFfc2hhcmVkX3N0
cmluZy5jcHA6CisgICAgICAgIChURVNUX0YpOiBBZGQgQVBJIHRlc3QgZm9yIG5ldyBXS0VpbmFT
aGFyZWRTdHJpbmc6OmxlYWtTdHJpbmcoKSBtZXRob2QuCisKIDIwMTMtMDItMDQgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBTb3J0IFdlYktpdDIgWGNvZGUg
cHJvamVjdCBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Nw
cC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwCmluZGV4IDIxZmY1OTcuLmExMWE2ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFT
aGFyZWRTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2Vm
bC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwCkBAIC0xMTIsMyArMTEyLDExIEBAIFdLRWluYVNoYXJl
ZFN0cmluZyBXS0VpbmFTaGFyZWRTdHJpbmc6OmFkb3B0KEVpbmFfU3RyaW5nc2hhcmUqIHN0cmlu
ZykKICAgICBzaGFyZWRTdHJpbmcubV9zdHJpbmcgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
c3RyaW5nKTsKICAgICByZXR1cm4gc2hhcmVkU3RyaW5nOwogfQorCitjb25zdCBjaGFyKiBXS0Vp
bmFTaGFyZWRTdHJpbmc6OmxlYWtTdHJpbmcoKQoreworICAgIGNvbnN0IGNoYXIqIHNoYXJlZFN0
cmluZyA9IG1fc3RyaW5nOworICAgIG1fc3RyaW5nID0gMDsKKworICAgIHJldHVybiBzaGFyZWRT
dHJpbmc7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9l
ZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Nw
cC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmgKaW5kZXggNTJjZmZmYS4uYWViZjE1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0
cmluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFT
aGFyZWRTdHJpbmcuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAKICAgICB+V0tFaW5hU2hh
cmVkU3RyaW5nKCk7CiAKKyAgICBjb25zdCBjaGFyKiBsZWFrU3RyaW5nKCk7CisKICAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG90aGVy
KTsKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBjaGFyKiBzdHIpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2ll
X21hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tp
ZV9tYW5hZ2VyLmNwcAppbmRleCBmODEwM2FhLi40NzVkY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAKQEAg
LTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMTk0LDEwICsxOTIsOSBAQCBzdGF0aWMgdm9pZCBnZXRI
b3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNrKFdLQXJyYXlSZWYgd2tIb3N0bmFtZXMsIFdLRXJy
b3JSZWYgdwogICAgIGNvbnN0IHNpemVfdCBob3N0bmFtZUNvdW50ID0gV0tBcnJheUdldFNpemUo
d2tIb3N0bmFtZXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaG9zdG5hbWVDb3VudDsg
KytpKSB7CiAgICAgICAgIFdLU3RyaW5nUmVmIHdrSG9zdG5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0
cmluZ1JlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KHdrSG9zdG5hbWVzLCBpKSk7Ci0gICAgICAg
IFN0cmluZyBob3N0bmFtZSA9IHRvSW1wbCh3a0hvc3RuYW1lKS0+c3RyaW5nKCk7Ci0gICAgICAg
IGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGlmIChXS1N0cmluZ0lzRW1wdHkod2tI
b3N0bmFtZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaG9zdG5hbWVzID0gZWlu
YV9saXN0X2FwcGVuZChob3N0bmFtZXMsIGVpbmFfc3RyaW5nc2hhcmVfYWRkKGhvc3RuYW1lLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgaG9zdG5hbWVzID0gZWluYV9saXN0X2FwcGVuZChob3N0
bmFtZXMsIFdLRWluYVNoYXJlZFN0cmluZyh3a0hvc3RuYW1lKS5sZWFrU3RyaW5nKCkpOwogICAg
IH0KIAogICAgIGNhbGxiYWNrRGF0YS0+Y2FsbGJhY2soaG9zdG5hbWVzLCBld2tFcnJvci5nZXQo
KSwgY2FsbGJhY2tEYXRhLT51c2VyRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmNw
cAppbmRleCBlNjFhNDJmLi5kMzE1ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5j
cHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJXS0Jhc2UuaCIKICNpbmNsdWRlICJXS1N0
cmluZy5oIgogI2luY2x1ZGUgImV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9wcml2YXRlLmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogCkBAIC00OCwxMyArNDcsMTMgQEAgRXdrRm9ybVN1Ym1pc3Npb25SZXF1ZXN0Ojp+RXdrRm9y
bVN1Ym1pc3Npb25SZXF1ZXN0KCkKICAgICAgICAgV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyQ29u
dGludWUobV93a0xpc3RlbmVyLmdldCgpKTsKIH0KIAotU3RyaW5nIEV3a0Zvcm1TdWJtaXNzaW9u
UmVxdWVzdDo6ZmllbGRWYWx1ZShjb25zdCBTdHJpbmcmIGZpZWxkTmFtZSkgY29uc3QKK2NvbnN0
IGNoYXIqIEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdDo6Y29weUZpZWxkVmFsdWUoY29uc3QgY2hh
ciogZmllbGROYW1lKSBjb25zdAogewogICAgIEFTU0VSVChmaWVsZE5hbWUpOwotICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiB3a0ZpZWxkTmFtZSA9IGFkb3B0V0sodG9Db3BpZWRBUEkoZmll
bGROYW1lKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrRmllbGROYW1lKEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGZpZWxkTmFtZSkpOwogICAgIFdLU3Ry
aW5nUmVmIHdrVmFsdWUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShtX3drVmFsdWVzLmdldCgpLCB3a0ZpZWxkTmFtZS5nZXQoKSkpOwogCi0gICAg
cmV0dXJuIHdrVmFsdWUgPyB0b0ltcGwod2tWYWx1ZSktPnN0cmluZygpIDogU3RyaW5nKCk7Cisg
ICAgcmV0dXJuIFdLRWluYVNoYXJlZFN0cmluZyh3a1ZhbHVlKS5sZWFrU3RyaW5nKCk7CiB9CiAK
IFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdDo6ZmllbGRO
YW1lcygpIGNvbnN0CkBAIC03MiwxNiArNzEsMTYgQEAgRWluYV9MaXN0KiBld2tfZm9ybV9zdWJt
aXNzaW9uX3JlcXVlc3RfZmllbGRfbmFtZXNfZ2V0KEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWUK
IHsKICAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihFd2tGb3JtU3VibWlzc2lvblJlcXVl
c3QsIHJlcXVlc3QsIGltcGwsIDApOwogCi0gICAgRWluYV9MaXN0KiBuYW1lcyA9IDA7CisgICAg
RWluYV9MaXN0KiBmaWVsZE5hbWVzID0gMDsKIAotICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+
IHdrS2V5cyA9IGltcGwtPmZpZWxkTmFtZXMoKTsKLSAgICBjb25zdCBzaXplX3QgbnVtS2V5cyA9
IFdLQXJyYXlHZXRTaXplKHdrS2V5cy5nZXQoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJl
Zj4gd2tGaWVsZE5hbWVzID0gaW1wbC0+ZmllbGROYW1lcygpOworICAgIGNvbnN0IHNpemVfdCBu
dW1LZXlzID0gV0tBcnJheUdldFNpemUod2tGaWVsZE5hbWVzLmdldCgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bUtleXM7ICsraSkgewotICAgICAgICBXS1N0cmluZ1JlZiB3a0tl
eSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgod2tLZXlz
LmdldCgpLCBpKSk7Ci0gICAgICAgIG5hbWVzID0gZWluYV9saXN0X2FwcGVuZChuYW1lcywgZWlu
YV9zdHJpbmdzaGFyZV9hZGQodG9JbXBsKHdrS2V5KS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSkp
OworICAgICAgICBXS1N0cmluZ1JlZiB3a0ZpZWxkTmFtZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5n
UmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgod2tGaWVsZE5hbWVzLmdldCgpLCBpKSk7CisgICAg
ICAgIGZpZWxkTmFtZXMgPSBlaW5hX2xpc3RfYXBwZW5kKGZpZWxkTmFtZXMsIFdLRWluYVNoYXJl
ZFN0cmluZyh3a0ZpZWxkTmFtZSkubGVha1N0cmluZygpKTsKICAgICB9CiAKLSAgICByZXR1cm4g
bmFtZXM7CisgICAgcmV0dXJuIGZpZWxkTmFtZXM7CiB9CiAKIGNvbnN0IGNoYXIqIGV3a19mb3Jt
X3N1Ym1pc3Npb25fcmVxdWVzdF9maWVsZF92YWx1ZV9nZXQoRXdrX0Zvcm1fU3VibWlzc2lvbl9S
ZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBjaGFyKiBuYW1lKQpAQCAtODksOSArODgsNyBAQCBjb25z
dCBjaGFyKiBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfZmllbGRfdmFsdWVfZ2V0KEV3a19G
b3JtX1N1Ym1pc3Npb25fUmVxdQogICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKEV3a0Zv
cm1TdWJtaXNzaW9uUmVxdWVzdCwgcmVxdWVzdCwgaW1wbCwgMCk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKG5hbWUsIDApOwogCi0gICAgU3RyaW5nIHZhbHVlID0gaW1wbC0+
ZmllbGRWYWx1ZShTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKLQotICAgIHJldHVybiB2YWx1ZS5p
c051bGwoKSA/ICAwIDogZWluYV9zdHJpbmdzaGFyZV9hZGQodmFsdWUudXRmOCgpLmRhdGEoKSk7
CisgICAgcmV0dXJuIGltcGwtPmNvcHlGaWVsZFZhbHVlKG5hbWUpOwogfQogCiBFaW5hX0Jvb2wg
ZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X3N1Ym1pdChFd2tfRm9ybV9TdWJtaXNzaW9uX1Jl
cXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X3ByaXZhdGUu
aAppbmRleCAyNmQzMjQ2Li4xODkzMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVx
dWVzdF9wcml2YXRlLmgKQEAgLTI3LDExICsyNywxMSBAQAogI2RlZmluZSBld2tfZm9ybV9zdWJt
aXNzaW9uX3JlcXVlc3RfcHJpdmF0ZV9oCiAKICNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKKyNp
bmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXS0Zvcm1TdWJtaXNzaW9u
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgogI2luY2x1ZGUgImV3a19vYmpl
Y3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIGNsYXNzIEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdCA6IHB1
YmxpYyBFd2tPYmplY3QgewogcHVibGljOgpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gZmllbGROYW1lcygpIGNvbnN0OwotICAg
IFN0cmluZyBmaWVsZFZhbHVlKGNvbnN0IFN0cmluZyYgZmllbGROYW1lKSBjb25zdDsKKyAgICBj
b25zdCBjaGFyKiBjb3B5RmllbGRWYWx1ZShjb25zdCBjaGFyKiBmaWVsZE5hbWUpIGNvbnN0Owog
CiAgICAgdm9pZCBzdWJtaXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3RleHRfY2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdGV4dF9jaGVja2VyLmNwcAppbmRleCBjZTU0NmQ1Li4yYmUyOGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdGV4dF9jaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdGV4dF9j
aGVja2VyLmNwcApAQCAtMzEsMTcgKzMxLDE2IEBACiAKICNpbmNsdWRlICJUZXh0Q2hlY2tlckVu
Y2hhbnQuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRT
dHJpbmcuaCIKICNpbmNsdWRlICJXS011dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIldLUmV0YWlu
UHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXS1RleHRDaGVja2VyLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5j
bHVkZSAiZXdrX3NldHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3RleHRfY2hlY2tlcl9wcml2YXRl
LmgiCiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKQEAgLTk5LDkgKzk4LDkgQEAgc3RhdGljIHZvaWQgY2xvc2VTcGVs
bERvY3VtZW50V2l0aFRhZyh1aW50NjRfdCB0YWcsIGNvbnN0IHZvaWQqKQogc3RhdGljIHZvaWQg
Y2hlY2tTcGVsbGluZ09mU3RyaW5nKHVpbnQ2NF90IHRhZywgV0tTdHJpbmdSZWYgdGV4dCwgaW50
MzJfdCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50MzJfdCogbWlzc3BlbGxpbmdMZW5ndGgsIGNv
bnN0IHZvaWQqKQogewogICAgIGlmIChjbGllbnRDYWxsYmFja3MoKS5zdHJpbmdfc3BlbGxpbmdf
Y2hlY2spCi0gICAgICAgIGNsaWVudENhbGxiYWNrcygpLnN0cmluZ19zcGVsbGluZ19jaGVjayh0
YWcsIHRvSW1wbCh0ZXh0KS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbWlzc3BlbGxpbmdMb2Nh
dGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICBjbGllbnRDYWxsYmFja3MoKS5zdHJp
bmdfc3BlbGxpbmdfY2hlY2sodGFnLCBXS0VpbmFTaGFyZWRTdHJpbmcodGV4dCksIG1pc3NwZWxs
aW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKICAgICBlbHNlCi0gICAgICAgIHRleHRD
aGVja2VyRW5jaGFudCgpLT5jaGVja1NwZWxsaW5nT2ZTdHJpbmcodG9JbXBsKHRleHQpLT5zdHJp
bmcoKSwgKm1pc3NwZWxsaW5nTG9jYXRpb24sICptaXNzcGVsbGluZ0xlbmd0aCk7CisgICAgICAg
IHRleHRDaGVja2VyRW5jaGFudCgpLT5jaGVja1NwZWxsaW5nT2ZTdHJpbmcodG9XVEZTdHJpbmco
dGV4dCksICptaXNzcGVsbGluZ0xvY2F0aW9uLCAqbWlzc3BlbGxpbmdMZW5ndGgpOwogfQogCiBz
dGF0aWMgV0tBcnJheVJlZiBndWVzc2VzRm9yV29yZCh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVm
IHdvcmQsIGNvbnN0IHZvaWQqKQpAQCAtMTA5LDcgKzEwOCw3IEBAIHN0YXRpYyBXS0FycmF5UmVm
IGd1ZXNzZXNGb3JXb3JkKHVpbnQ2NF90IHRhZywgV0tTdHJpbmdSZWYgd29yZCwgY29uc3Qgdm9p
ZCopCiAgICAgV0tNdXRhYmxlQXJyYXlSZWYgc3VnZ2VzdGlvbnNGb3JXb3JkID0gV0tNdXRhYmxl
QXJyYXlDcmVhdGUoKTsKIAogICAgIGlmIChjbGllbnRDYWxsYmFja3MoKS53b3JkX2d1ZXNzZXNf
Z2V0KSB7Ci0gICAgICAgIEVpbmFfTGlzdCogbGlzdCA9IGNsaWVudENhbGxiYWNrcygpLndvcmRf
Z3Vlc3Nlc19nZXQodGFnLCB0b0ltcGwod29yZCktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBFaW5hX0xpc3QqIGxpc3QgPSBjbGllbnRDYWxsYmFja3MoKS53b3JkX2d1ZXNzZXNf
Z2V0KHRhZywgV0tFaW5hU2hhcmVkU3RyaW5nKHdvcmQpKTsKICAgICAgICAgdm9pZCogaXRlbTsK
IAogICAgICAgICBFSU5BX0xJU1RfRlJFRShsaXN0LCBpdGVtKSB7CkBAIC0xMTgsNyArMTE3LDcg
QEAgc3RhdGljIFdLQXJyYXlSZWYgZ3Vlc3Nlc0ZvcldvcmQodWludDY0X3QgdGFnLCBXS1N0cmlu
Z1JlZiB3b3JkLCBjb25zdCB2b2lkKikKICAgICAgICAgICAgIGZyZWUoaXRlbSk7CiAgICAgICAg
IH0KICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcyA9
IHRleHRDaGVja2VyRW5jaGFudCgpLT5nZXRHdWVzc2VzRm9yV29yZCh0b0ltcGwod29yZCktPnN0
cmluZygpKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMgPSB0ZXh0Q2hl
Y2tlckVuY2hhbnQoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQodG9XVEZTdHJpbmcod29yZCkpOwogICAg
ICAgICBzaXplX3QgbnVtYmVyT2ZHdWVzc2VzID0gZ3Vlc3Nlcy5zaXplKCk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZHdWVzc2VzOyArK2kpIHsKICAgICAgICAgICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWdnZXN0aW9uKEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKGd1ZXNzZXNbaV0udXRmOCgpLmRhdGEoKSkpOwpAQCAtMTMyLDE3
ICsxMzEsMTcgQEAgc3RhdGljIFdLQXJyYXlSZWYgZ3Vlc3Nlc0ZvcldvcmQodWludDY0X3QgdGFn
LCBXS1N0cmluZ1JlZiB3b3JkLCBjb25zdCB2b2lkKikKIHN0YXRpYyB2b2lkIGxlYXJuV29yZCh1
aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIHdvcmQsIGNvbnN0IHZvaWQqKQogewogICAgIGlmIChj
bGllbnRDYWxsYmFja3MoKS53b3JkX2xlYXJuKQotICAgICAgICBjbGllbnRDYWxsYmFja3MoKS53
b3JkX2xlYXJuKHRhZywgdG9JbXBsKHdvcmQpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgY2xpZW50Q2FsbGJhY2tzKCkud29yZF9sZWFybih0YWcsIFdLRWluYVNoYXJlZFN0cmlu
Zyh3b3JkKSk7CiAgICAgZWxzZQotICAgICAgICB0ZXh0Q2hlY2tlckVuY2hhbnQoKS0+bGVhcm5X
b3JkKHRvSW1wbCh3b3JkKS0+c3RyaW5nKCkpOworICAgICAgICB0ZXh0Q2hlY2tlckVuY2hhbnQo
KS0+bGVhcm5Xb3JkKHRvV1RGU3RyaW5nKHdvcmQpKTsKIH0KIAogc3RhdGljIHZvaWQgaWdub3Jl
V29yZCh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIHdvcmQsIGNvbnN0IHZvaWQqKQogewogICAg
IGlmIChjbGllbnRDYWxsYmFja3MoKS53b3JkX2lnbm9yZSkKLSAgICAgICAgY2xpZW50Q2FsbGJh
Y2tzKCkud29yZF9pZ25vcmUodGFnLCB0b0ltcGwod29yZCktPnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBjbGllbnRDYWxsYmFja3MoKS53b3JkX2lnbm9yZSh0YWcsIFdLRWluYVNo
YXJlZFN0cmluZyh3b3JkKSk7CiAgICAgZWxzZQotICAgICAgICB0ZXh0Q2hlY2tlckVuY2hhbnQo
KS0+aWdub3JlV29yZCh0b0ltcGwod29yZCktPnN0cmluZygpKTsKKyAgICAgICAgdGV4dENoZWNr
ZXJFbmNoYW50KCktPmlnbm9yZVdvcmQodG9XVEZTdHJpbmcod29yZCkpOwogfQogCiBuYW1lc3Bh
Y2UgRXdrX1RleHRfQ2hlY2tlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfZWluYV9zaGFyZWRfc3RyaW5nLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9laW5hX3NoYXJlZF9z
dHJpbmcuY3BwCmluZGV4IDI1ODI0OWMuLjE0YjFlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9laW5hX3NoYXJlZF9zdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdr
Ml9laW5hX3NoYXJlZF9zdHJpbmcuY3BwCkBAIC0xMjQsMyArMTI0LDE3IEBAIFRFU1RfRihFV0sy
VW5pdFRlc3RCYXNlLCBhc3NpZ25tZW50T3BlcmF0b3JzKQogICAgIHN0cmluZyA9IHN0cmluZzsg
Ly8gQ2hlY2sgdGhhdCBzZWxmLWFzc2lnbm1lbnQgZG9lcyBub3QgYnJlYWsgV0tFaW5hU2hhcmVk
U3RyaW5nIGludGVybmFsIGRhdGEuCiAgICAgY2hlY2tTdHJpbmcoc3RyaW5nLCBhbm90aGVyVGVz
dFN0cmluZyk7CiB9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBsZWFrU3RyaW5nKQorewor
ICAgIFdLRWluYVNoYXJlZFN0cmluZyBzdHJpbmc7CisKKyAgICBzdHJpbmcgPSB0ZXN0U3RyaW5n
OworICAgIGNoZWNrU3RyaW5nKHN0cmluZywgdGVzdFN0cmluZyk7CisKKyAgICBjb25zdCBjaGFy
KiBsZWFrZWRTdHJpbmcgPSBzdHJpbmcubGVha1N0cmluZygpOworICAgIGNoZWNrU3RyaW5nKHN0
cmluZywgMCk7CisgICAgQVNTRVJUX1NUUkVRKGxlYWtlZFN0cmluZywgdGVzdFN0cmluZyk7CisK
KyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChsZWFrZWRTdHJpbmcpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186391</attachid>
            <date>2013-02-04 08:43:12 -0800</date>
            <delta_ts>2013-02-13 12:38:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>108794_towtfstring.patch</filename>
            <type>text/plain</type>
            <size>12449</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2YjJhNjYxLi4zYWMwMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTMtMDItMDQgIENocmlzdG9waGUgRHVtZXogIDxkY2hyaXNAZ21haWwuY29tPgorCisg
ICAgICAgIFtFRkxdW1dLMl0gU3RvcCB1c2luZyBXZWJTdHJpbmcgaW4gZXdrX2Nvb2tpZV9tYW5h
Z2VyLCBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QgYW5kIGV3a190ZXh0X2NoZWNrZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc5NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0b3AgdXNpbmcg
V2ViU3RyaW5nIGluIGV3a19jb29raWVfbWFuYWdlciwgZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1
ZXN0CisgICAgICAgIGFuZCBld2tfdGV4dF9jaGVja2VyIGFzIGl0IGlzIGludGVybmFsIEMrKyBB
UEkuIFdLU3RyaW5nIGFuZAorICAgICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgYXJlIHVzZWQgaW5z
dGVhZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJp
bmcuY3BwOgorICAgICAgICAoV0tFaW5hU2hhcmVkU3RyaW5nOjpsZWFrU3RyaW5nKTogQWRkIGxl
YWtTdHJpbmcoKSBtZXRob2QgdG8KKyAgICAgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHNvIHRoYXQg
d2UgY2FuIGNvbnZlbmllbnRseSBjb252ZXJ0IGEgV0tTdHJpbmcgdG8gYQorICAgICAgICBFaW5h
IHNoYXJlZCBzdHJpbmcgYW5kIHRha2Ugb3duZXJzaGlwIG9mIGl0LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwOgorICAgICAgICAoZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXNDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zv
cm1fc3VibWlzc2lvbl9yZXF1ZXN0LmNwcDoKKyAgICAgICAgKEV3a0Zvcm1TdWJtaXNzaW9uUmVx
dWVzdDo6Y29weUZpZWxkVmFsdWUpOgorICAgICAgICAoZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1
ZXN0X2ZpZWxkX25hbWVzX2dldCk6CisgICAgICAgIChld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVl
c3RfZmllbGRfdmFsdWVfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9y
bV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oOgorICAgICAgICAoRXdrRm9ybVN1Ym1pc3Np
b25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdGV4dF9jaGVja2Vy
LmNwcDoKKyAgICAgICAgKGNoZWNrU3BlbGxpbmdPZlN0cmluZyk6CisgICAgICAgIChndWVzc2Vz
Rm9yV29yZCk6CisgICAgICAgIChsZWFybldvcmQpOgorICAgICAgICAoaWdub3JlV29yZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2VpbmFfc2hhcmVkX3N0
cmluZy5jcHA6CisgICAgICAgIChURVNUX0YpOiBBZGQgQVBJIHRlc3QgZm9yIG5ldyBXS0VpbmFT
aGFyZWRTdHJpbmc6OmxlYWtTdHJpbmcoKSBtZXRob2QuCisKIDIwMTMtMDItMDQgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBTb3J0IFdlYktpdDIgWGNvZGUg
cHJvamVjdCBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Nw
cC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwCmluZGV4IDIxZmY1OTcuLmVjYjdiNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFT
aGFyZWRTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2Vm
bC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwCkBAIC0xMTIsMyArMTEyLDExIEBAIFdLRWluYVNoYXJl
ZFN0cmluZyBXS0VpbmFTaGFyZWRTdHJpbmc6OmFkb3B0KEVpbmFfU3RyaW5nc2hhcmUqIHN0cmlu
ZykKICAgICBzaGFyZWRTdHJpbmcubV9zdHJpbmcgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
c3RyaW5nKTsKICAgICByZXR1cm4gc2hhcmVkU3RyaW5nOwogfQorCitFaW5hX1N0cmluZ3NoYXJl
KiBXS0VpbmFTaGFyZWRTdHJpbmc6OmxlYWtTdHJpbmcoKQoreworICAgIEVpbmFfU3RyaW5nc2hh
cmUqIHNoYXJlZFN0cmluZyA9IG1fc3RyaW5nOworICAgIG1fc3RyaW5nID0gMDsKKworICAgIHJl
dHVybiBzaGFyZWRTdHJpbmc7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmgKaW5kZXggNTJjZmZmYS4uZGJi
NWY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dL
RWluYVNoYXJlZFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3Bw
L2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAKICAg
ICB+V0tFaW5hU2hhcmVkU3RyaW5nKCk7CiAKKyAgICBFaW5hX1N0cmluZ3NoYXJlKiBsZWFrU3Ry
aW5nKCk7CisKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBXS0VpbmFT
aGFyZWRTdHJpbmcmIG90aGVyKTsKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcmIG9wZXJhdG9yPShj
b25zdCBjaGFyKiBzdHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcAppbmRleCBmODEwM2FhLi40NzVkY2E3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29r
aWVfbWFuYWdlci5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJld2tfZXJyb3JfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMTk0LDEwICsxOTIsOSBA
QCBzdGF0aWMgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNrKFdLQXJyYXlSZWYg
d2tIb3N0bmFtZXMsIFdLRXJyb3JSZWYgdwogICAgIGNvbnN0IHNpemVfdCBob3N0bmFtZUNvdW50
ID0gV0tBcnJheUdldFNpemUod2tIb3N0bmFtZXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaG9zdG5hbWVDb3VudDsgKytpKSB7CiAgICAgICAgIFdLU3RyaW5nUmVmIHdrSG9zdG5hbWUg
PSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KHdrSG9zdG5h
bWVzLCBpKSk7Ci0gICAgICAgIFN0cmluZyBob3N0bmFtZSA9IHRvSW1wbCh3a0hvc3RuYW1lKS0+
c3RyaW5nKCk7Ci0gICAgICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGlmIChX
S1N0cmluZ0lzRW1wdHkod2tIb3N0bmFtZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaG9zdG5hbWVzID0gZWluYV9saXN0X2FwcGVuZChob3N0bmFtZXMsIGVpbmFfc3RyaW5nc2hh
cmVfYWRkKGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgaG9zdG5hbWVzID0gZWlu
YV9saXN0X2FwcGVuZChob3N0bmFtZXMsIFdLRWluYVNoYXJlZFN0cmluZyh3a0hvc3RuYW1lKS5s
ZWFrU3RyaW5nKCkpOwogICAgIH0KIAogICAgIGNhbGxiYWNrRGF0YS0+Y2FsbGJhY2soaG9zdG5h
bWVzLCBld2tFcnJvci5nZXQoKSwgY2FsbGJhY2tEYXRhLT51c2VyRGF0YSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3Jl
cXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3Vi
bWlzc2lvbl9yZXF1ZXN0LmNwcAppbmRleCBlNjFhNDJmLi4wY2RlMmExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1
Ym1pc3Npb25fcmVxdWVzdC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJXS0Jhc2Uu
aCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgImV3a19mb3JtX3N1Ym1pc3Npb25f
cmVxdWVzdF9wcml2YXRlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00OCwxMyArNDcsMTMgQEAgRXdrRm9ybVN1Ym1pc3Np
b25SZXF1ZXN0Ojp+RXdrRm9ybVN1Ym1pc3Npb25SZXF1ZXN0KCkKICAgICAgICAgV0tGb3JtU3Vi
bWlzc2lvbkxpc3RlbmVyQ29udGludWUobV93a0xpc3RlbmVyLmdldCgpKTsKIH0KIAotU3RyaW5n
IEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdDo6ZmllbGRWYWx1ZShjb25zdCBTdHJpbmcmIGZpZWxk
TmFtZSkgY29uc3QKK0VpbmFfU3RyaW5nc2hhcmUqIEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdDo6
Y29weUZpZWxkVmFsdWUoY29uc3QgY2hhciogZmllbGROYW1lKSBjb25zdAogewogICAgIEFTU0VS
VChmaWVsZE5hbWUpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0ZpZWxkTmFtZSA9
IGFkb3B0V0sodG9Db3BpZWRBUEkoZmllbGROYW1lKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHdrRmllbGROYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KGZpZWxkTmFtZSkpOwogICAgIFdLU3RyaW5nUmVmIHdrVmFsdWUgPSBzdGF0aWNfY2FzdDxXS1N0
cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtX3drVmFsdWVzLmdldCgpLCB3a0Zp
ZWxkTmFtZS5nZXQoKSkpOwogCi0gICAgcmV0dXJuIHdrVmFsdWUgPyB0b0ltcGwod2tWYWx1ZSkt
PnN0cmluZygpIDogU3RyaW5nKCk7CisgICAgcmV0dXJuIFdLRWluYVNoYXJlZFN0cmluZyh3a1Zh
bHVlKS5sZWFrU3RyaW5nKCk7CiB9CiAKIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IEV3a0Zvcm1T
dWJtaXNzaW9uUmVxdWVzdDo6ZmllbGROYW1lcygpIGNvbnN0CkBAIC03MiwxNiArNzEsMTYgQEAg
RWluYV9MaXN0KiBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfZmllbGRfbmFtZXNfZ2V0KEV3
a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWUKIHsKICAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVS
TihFd2tGb3JtU3VibWlzc2lvblJlcXVlc3QsIHJlcXVlc3QsIGltcGwsIDApOwogCi0gICAgRWlu
YV9MaXN0KiBuYW1lcyA9IDA7CisgICAgRWluYV9MaXN0KiBmaWVsZE5hbWVzID0gMDsKIAotICAg
IFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrS2V5cyA9IGltcGwtPmZpZWxkTmFtZXMoKTsKLSAg
ICBjb25zdCBzaXplX3QgbnVtS2V5cyA9IFdLQXJyYXlHZXRTaXplKHdrS2V5cy5nZXQoKSk7Cisg
ICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tGaWVsZE5hbWVzID0gaW1wbC0+ZmllbGROYW1l
cygpOworICAgIGNvbnN0IHNpemVfdCBudW1LZXlzID0gV0tBcnJheUdldFNpemUod2tGaWVsZE5h
bWVzLmdldCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUtleXM7ICsraSkgewot
ICAgICAgICBXS1N0cmluZ1JlZiB3a0tleSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0Fy
cmF5R2V0SXRlbUF0SW5kZXgod2tLZXlzLmdldCgpLCBpKSk7Ci0gICAgICAgIG5hbWVzID0gZWlu
YV9saXN0X2FwcGVuZChuYW1lcywgZWluYV9zdHJpbmdzaGFyZV9hZGQodG9JbXBsKHdrS2V5KS0+
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBXS1N0cmluZ1JlZiB3a0ZpZWxkTmFt
ZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgod2tGaWVs
ZE5hbWVzLmdldCgpLCBpKSk7CisgICAgICAgIGZpZWxkTmFtZXMgPSBlaW5hX2xpc3RfYXBwZW5k
KGZpZWxkTmFtZXMsIFdLRWluYVNoYXJlZFN0cmluZyh3a0ZpZWxkTmFtZSkubGVha1N0cmluZygp
KTsKICAgICB9CiAKLSAgICByZXR1cm4gbmFtZXM7CisgICAgcmV0dXJuIGZpZWxkTmFtZXM7CiB9
CiAKIGNvbnN0IGNoYXIqIGV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9maWVsZF92YWx1ZV9n
ZXQoRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBjaGFyKiBuYW1l
KQpAQCAtODksOSArODgsNyBAQCBjb25zdCBjaGFyKiBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVl
c3RfZmllbGRfdmFsdWVfZ2V0KEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdQogICAgIEVXS19PQkpf
R0VUX0lNUExfT1JfUkVUVVJOKEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdCwgcmVxdWVzdCwgaW1w
bCwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG5hbWUsIDApOwogCi0g
ICAgU3RyaW5nIHZhbHVlID0gaW1wbC0+ZmllbGRWYWx1ZShTdHJpbmc6OmZyb21VVEY4KG5hbWUp
KTsKLQotICAgIHJldHVybiB2YWx1ZS5pc051bGwoKSA/ICAwIDogZWluYV9zdHJpbmdzaGFyZV9h
ZGQodmFsdWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGltcGwtPmNvcHlGaWVsZFZhbHVl
KG5hbWUpOwogfQogCiBFaW5hX0Jvb2wgZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X3N1Ym1p
dChFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3Rf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3Vi
bWlzc2lvbl9yZXF1ZXN0X3ByaXZhdGUuaAppbmRleCAyNmQzMjQ2Li5iMmI4MDczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9u
X3JlcXVlc3RfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9wcml2YXRlLmgKQEAgLTI3LDExICsyNywxMSBA
QAogI2RlZmluZSBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZV9oCiAKICNpbmNs
dWRlICJXS0RpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNp
bmNsdWRlICJXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJXS1JldGFpblB0
ci5oIgogI2luY2x1ZGUgImV3a19vYmplY3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIGNsYXNzIEV3a0Zv
cm1TdWJtaXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBFd2tPYmplY3QgewogcHVibGljOgpAQCAtNDUs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4g
ZmllbGROYW1lcygpIGNvbnN0OwotICAgIFN0cmluZyBmaWVsZFZhbHVlKGNvbnN0IFN0cmluZyYg
ZmllbGROYW1lKSBjb25zdDsKKyAgICBFaW5hX1N0cmluZ3NoYXJlKiBjb3B5RmllbGRWYWx1ZShj
b25zdCBjaGFyKiBmaWVsZE5hbWUpIGNvbnN0OwogCiAgICAgdm9pZCBzdWJtaXQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RleHRfY2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdGV4dF9jaGVja2Vy
LmNwcAppbmRleCBjZTU0NmQ1Li4yYmUyOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdGV4dF9jaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdGV4dF9jaGVja2VyLmNwcApAQCAtMzEsMTcgKzMxLDE2
IEBACiAKICNpbmNsdWRlICJUZXh0Q2hlY2tlckVuY2hhbnQuaCIKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXS011dGFi
bGVBcnJheS5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcu
aCIKICNpbmNsdWRlICJXS1RleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
Ci0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzLmgiCiAjaW5j
bHVkZSAiZXdrX3RleHRfY2hlY2tlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWluYS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTk5LDkg
Kzk4LDkgQEAgc3RhdGljIHZvaWQgY2xvc2VTcGVsbERvY3VtZW50V2l0aFRhZyh1aW50NjRfdCB0
YWcsIGNvbnN0IHZvaWQqKQogc3RhdGljIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKHVpbnQ2
NF90IHRhZywgV0tTdHJpbmdSZWYgdGV4dCwgaW50MzJfdCogbWlzc3BlbGxpbmdMb2NhdGlvbiwg
aW50MzJfdCogbWlzc3BlbGxpbmdMZW5ndGgsIGNvbnN0IHZvaWQqKQogewogICAgIGlmIChjbGll
bnRDYWxsYmFja3MoKS5zdHJpbmdfc3BlbGxpbmdfY2hlY2spCi0gICAgICAgIGNsaWVudENhbGxi
YWNrcygpLnN0cmluZ19zcGVsbGluZ19jaGVjayh0YWcsIHRvSW1wbCh0ZXh0KS0+c3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwor
ICAgICAgICBjbGllbnRDYWxsYmFja3MoKS5zdHJpbmdfc3BlbGxpbmdfY2hlY2sodGFnLCBXS0Vp
bmFTaGFyZWRTdHJpbmcodGV4dCksIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVu
Z3RoKTsKICAgICBlbHNlCi0gICAgICAgIHRleHRDaGVja2VyRW5jaGFudCgpLT5jaGVja1NwZWxs
aW5nT2ZTdHJpbmcodG9JbXBsKHRleHQpLT5zdHJpbmcoKSwgKm1pc3NwZWxsaW5nTG9jYXRpb24s
ICptaXNzcGVsbGluZ0xlbmd0aCk7CisgICAgICAgIHRleHRDaGVja2VyRW5jaGFudCgpLT5jaGVj
a1NwZWxsaW5nT2ZTdHJpbmcodG9XVEZTdHJpbmcodGV4dCksICptaXNzcGVsbGluZ0xvY2F0aW9u
LCAqbWlzc3BlbGxpbmdMZW5ndGgpOwogfQogCiBzdGF0aWMgV0tBcnJheVJlZiBndWVzc2VzRm9y
V29yZCh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIHdvcmQsIGNvbnN0IHZvaWQqKQpAQCAtMTA5
LDcgKzEwOCw3IEBAIHN0YXRpYyBXS0FycmF5UmVmIGd1ZXNzZXNGb3JXb3JkKHVpbnQ2NF90IHRh
ZywgV0tTdHJpbmdSZWYgd29yZCwgY29uc3Qgdm9pZCopCiAgICAgV0tNdXRhYmxlQXJyYXlSZWYg
c3VnZ2VzdGlvbnNGb3JXb3JkID0gV0tNdXRhYmxlQXJyYXlDcmVhdGUoKTsKIAogICAgIGlmIChj
bGllbnRDYWxsYmFja3MoKS53b3JkX2d1ZXNzZXNfZ2V0KSB7Ci0gICAgICAgIEVpbmFfTGlzdCog
bGlzdCA9IGNsaWVudENhbGxiYWNrcygpLndvcmRfZ3Vlc3Nlc19nZXQodGFnLCB0b0ltcGwod29y
ZCktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBFaW5hX0xpc3QqIGxpc3QgPSBj
bGllbnRDYWxsYmFja3MoKS53b3JkX2d1ZXNzZXNfZ2V0KHRhZywgV0tFaW5hU2hhcmVkU3RyaW5n
KHdvcmQpKTsKICAgICAgICAgdm9pZCogaXRlbTsKIAogICAgICAgICBFSU5BX0xJU1RfRlJFRShs
aXN0LCBpdGVtKSB7CkBAIC0xMTgsNyArMTE3LDcgQEAgc3RhdGljIFdLQXJyYXlSZWYgZ3Vlc3Nl
c0ZvcldvcmQodWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB3b3JkLCBjb25zdCB2b2lkKikKICAg
ICAgICAgICAgIGZyZWUoaXRlbSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcyA9IHRleHRDaGVja2VyRW5jaGFudCgpLT5nZXRH
dWVzc2VzRm9yV29yZCh0b0ltcGwod29yZCktPnN0cmluZygpKTsKKyAgICAgICAgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGd1ZXNzZXMgPSB0ZXh0Q2hlY2tlckVuY2hhbnQoKS0+Z2V0R3Vlc3Nlc0Zv
cldvcmQodG9XVEZTdHJpbmcod29yZCkpOwogICAgICAgICBzaXplX3QgbnVtYmVyT2ZHdWVzc2Vz
ID0gZ3Vlc3Nlcy5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVy
T2ZHdWVzc2VzOyArK2kpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBz
dWdnZXN0aW9uKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGd1ZXNzZXNb
aV0udXRmOCgpLmRhdGEoKSkpOwpAQCAtMTMyLDE3ICsxMzEsMTcgQEAgc3RhdGljIFdLQXJyYXlS
ZWYgZ3Vlc3Nlc0ZvcldvcmQodWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB3b3JkLCBjb25zdCB2
b2lkKikKIHN0YXRpYyB2b2lkIGxlYXJuV29yZCh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIHdv
cmQsIGNvbnN0IHZvaWQqKQogewogICAgIGlmIChjbGllbnRDYWxsYmFja3MoKS53b3JkX2xlYXJu
KQotICAgICAgICBjbGllbnRDYWxsYmFja3MoKS53b3JkX2xlYXJuKHRhZywgdG9JbXBsKHdvcmQp
LT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgY2xpZW50Q2FsbGJhY2tzKCkud29y
ZF9sZWFybih0YWcsIFdLRWluYVNoYXJlZFN0cmluZyh3b3JkKSk7CiAgICAgZWxzZQotICAgICAg
ICB0ZXh0Q2hlY2tlckVuY2hhbnQoKS0+bGVhcm5Xb3JkKHRvSW1wbCh3b3JkKS0+c3RyaW5nKCkp
OworICAgICAgICB0ZXh0Q2hlY2tlckVuY2hhbnQoKS0+bGVhcm5Xb3JkKHRvV1RGU3RyaW5nKHdv
cmQpKTsKIH0KIAogc3RhdGljIHZvaWQgaWdub3JlV29yZCh1aW50NjRfdCB0YWcsIFdLU3RyaW5n
UmVmIHdvcmQsIGNvbnN0IHZvaWQqKQogewogICAgIGlmIChjbGllbnRDYWxsYmFja3MoKS53b3Jk
X2lnbm9yZSkKLSAgICAgICAgY2xpZW50Q2FsbGJhY2tzKCkud29yZF9pZ25vcmUodGFnLCB0b0lt
cGwod29yZCktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBjbGllbnRDYWxsYmFj
a3MoKS53b3JkX2lnbm9yZSh0YWcsIFdLRWluYVNoYXJlZFN0cmluZyh3b3JkKSk7CiAgICAgZWxz
ZQotICAgICAgICB0ZXh0Q2hlY2tlckVuY2hhbnQoKS0+aWdub3JlV29yZCh0b0ltcGwod29yZCkt
PnN0cmluZygpKTsKKyAgICAgICAgdGV4dENoZWNrZXJFbmNoYW50KCktPmlnbm9yZVdvcmQodG9X
VEZTdHJpbmcod29yZCkpOwogfQogCiBuYW1lc3BhY2UgRXdrX1RleHRfQ2hlY2tlciB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
ZWluYV9zaGFyZWRfc3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl9laW5hX3NoYXJlZF9zdHJpbmcuY3BwCmluZGV4IDI1ODI0OWMuLjE1
YTA4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L3Rlc3RfZXdrMl9laW5hX3NoYXJlZF9zdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9laW5hX3NoYXJlZF9zdHJpbmcuY3BwCkBA
IC0xMjQsMyArMTI0LDE3IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBhc3NpZ25tZW50T3Bl
cmF0b3JzKQogICAgIHN0cmluZyA9IHN0cmluZzsgLy8gQ2hlY2sgdGhhdCBzZWxmLWFzc2lnbm1l
bnQgZG9lcyBub3QgYnJlYWsgV0tFaW5hU2hhcmVkU3RyaW5nIGludGVybmFsIGRhdGEuCiAgICAg
Y2hlY2tTdHJpbmcoc3RyaW5nLCBhbm90aGVyVGVzdFN0cmluZyk7CiB9CisKK1RFU1RfRihFV0sy
VW5pdFRlc3RCYXNlLCBsZWFrU3RyaW5nKQoreworICAgIFdLRWluYVNoYXJlZFN0cmluZyBzdHJp
bmc7CisKKyAgICBzdHJpbmcgPSB0ZXN0U3RyaW5nOworICAgIGNoZWNrU3RyaW5nKHN0cmluZywg
dGVzdFN0cmluZyk7CisKKyAgICBFaW5hX1N0cmluZ3NoYXJlKiBsZWFrZWRTdHJpbmcgPSBzdHJp
bmcubGVha1N0cmluZygpOworICAgIGNoZWNrU3RyaW5nKHN0cmluZywgMCk7CisgICAgQVNTRVJU
X1NUUkVRKGxlYWtlZFN0cmluZywgdGVzdFN0cmluZyk7CisKKyAgICBlaW5hX3N0cmluZ3NoYXJl
X2RlbChsZWFrZWRTdHJpbmcpOworfQo=
</data>
<flag name="review"
          id="205814"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188149</attachid>
            <date>2013-02-13 12:38:51 -0800</date>
            <delta_ts>2013-02-13 13:57:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>108794_towtfstring.patch</filename>
            <type>text/plain</type>
            <size>12487</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5ZDY1ODUxLi4xZmNkYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTMtMDItMDQgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gU3RvcCB1c2luZyBXZWJTdHJpbmcgaW4gZXdrX2Nv
b2tpZV9tYW5hZ2VyLCBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QgYW5kIGV3a190ZXh0X2No
ZWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
ODc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAg
ICAgU3RvcCB1c2luZyBXZWJTdHJpbmcgaW4gZXdrX2Nvb2tpZV9tYW5hZ2VyLCBld2tfZm9ybV9z
dWJtaXNzaW9uX3JlcXVlc3QKKyAgICAgICAgYW5kIGV3a190ZXh0X2NoZWNrZXIgYXMgaXQgaXMg
aW50ZXJuYWwgQysrIEFQSS4gV0tTdHJpbmcgYW5kCisgICAgICAgIFdLRWluYVNoYXJlZFN0cmlu
ZyBhcmUgdXNlZCBpbnN0ZWFkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dL
RWluYVNoYXJlZFN0cmluZy5jcHA6CisgICAgICAgIChXS0VpbmFTaGFyZWRTdHJpbmc6OmxlYWtT
dHJpbmcpOiBBZGQgbGVha1N0cmluZygpIG1ldGhvZCB0bworICAgICAgICBXS0VpbmFTaGFyZWRT
dHJpbmcgc28gdGhhdCB3ZSBjYW4gY29udmVuaWVudGx5IGNvbnZlcnQgYSBXS1N0cmluZyB0byBh
CisgICAgICAgIEVpbmEgc2hhcmVkIHN0cmluZyBhbmQgdGFrZSBvd25lcnNoaXAgb2YgaXQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHA6CisgICAgICAg
IChnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuY3BwOgorICAgICAgICAoRXdrRm9y
bVN1Ym1pc3Npb25SZXF1ZXN0Ojpjb3B5RmllbGRWYWx1ZSk6CisgICAgICAgIChld2tfZm9ybV9z
dWJtaXNzaW9uX3JlcXVlc3RfZmllbGRfbmFtZXNfZ2V0KToKKyAgICAgICAgKGV3a19mb3JtX3N1
Ym1pc3Npb25fcmVxdWVzdF9maWVsZF92YWx1ZV9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9wcml2YXRlLmg6CisgICAgICAgIChF
d2tGb3JtU3VibWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a190ZXh0X2NoZWNrZXIuY3BwOgorICAgICAgICAoY2hlY2tTcGVsbGluZ09mU3RyaW5nKToKKyAg
ICAgICAgKGd1ZXNzZXNGb3JXb3JkKToKKyAgICAgICAgKGxlYXJuV29yZCk6CisgICAgICAgIChp
Z25vcmVXb3JkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
ZWluYV9zaGFyZWRfc3RyaW5nLmNwcDoKKyAgICAgICAgKFRFU1RfRik6IEFkZCBBUEkgdGVzdCBm
b3IgbmV3IFdLRWluYVNoYXJlZFN0cmluZzo6bGVha1N0cmluZygpIG1ldGhvZC4KKwogMjAxMy0w
Mi0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1h
a2UgU2VjSXRlbVNoaW1Qcm94eSBiZSBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0
cmluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hh
cmVkU3RyaW5nLmNwcAppbmRleCAyMWZmNTk3Li5lY2I3YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5n
LmNwcApAQCAtMTEyLDMgKzExMiwxMSBAQCBXS0VpbmFTaGFyZWRTdHJpbmcgV0tFaW5hU2hhcmVk
U3RyaW5nOjphZG9wdChFaW5hX1N0cmluZ3NoYXJlKiBzdHJpbmcpCiAgICAgc2hhcmVkU3RyaW5n
Lm1fc3RyaW5nID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHN0cmluZyk7CiAgICAgcmV0dXJu
IHNoYXJlZFN0cmluZzsKIH0KKworRWluYV9TdHJpbmdzaGFyZSogV0tFaW5hU2hhcmVkU3RyaW5n
OjpsZWFrU3RyaW5nKCkKK3sKKyAgICBFaW5hX1N0cmluZ3NoYXJlKiBzaGFyZWRTdHJpbmcgPSBt
X3N0cmluZzsKKyAgICBtX3N0cmluZyA9IDA7CisKKyAgICByZXR1cm4gc2hhcmVkU3RyaW5nOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWlu
YVNoYXJlZFN0cmluZy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dL
RWluYVNoYXJlZFN0cmluZy5oCmluZGV4IDUyY2ZmZmEuLmRiYjVmNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3Ry
aW5nLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogCiAgICAgfldLRWluYVNoYXJlZFN0cmlu
ZygpOwogCisgICAgRWluYV9TdHJpbmdzaGFyZSogbGVha1N0cmluZygpOworCiAgICAgV0tFaW5h
U2hhcmVkU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBvdGhlcik7
CiAgICAgV0tFaW5hU2hhcmVkU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgY2hhciogc3RyKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9t
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVf
bWFuYWdlci5jcHAKaW5kZXggZjgxMDNhYS4uNDc1ZGNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCkBAIC0z
NCw4ICszNCw2IEBACiAjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlICJl
d2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTE5NCwxMCArMTkyLDkgQEAgc3RhdGljIHZvaWQgZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayhXS0FycmF5UmVmIHdrSG9zdG5hbWVzLCBXS0Vycm9y
UmVmIHcKICAgICBjb25zdCBzaXplX3QgaG9zdG5hbWVDb3VudCA9IFdLQXJyYXlHZXRTaXplKHdr
SG9zdG5hbWVzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhvc3RuYW1lQ291bnQ7ICsr
aSkgewogICAgICAgICBXS1N0cmluZ1JlZiB3a0hvc3RuYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJp
bmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a0hvc3RuYW1lcywgaSkpOwotICAgICAgICBT
dHJpbmcgaG9zdG5hbWUgPSB0b0ltcGwod2tIb3N0bmFtZSktPnN0cmluZygpOwotICAgICAgICBp
ZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICBpZiAoV0tTdHJpbmdJc0VtcHR5KHdrSG9z
dG5hbWUpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGhvc3RuYW1lcyA9IGVpbmFf
bGlzdF9hcHBlbmQoaG9zdG5hbWVzLCBlaW5hX3N0cmluZ3NoYXJlX2FkZChob3N0bmFtZS51dGY4
KCkuZGF0YSgpKSk7CisgICAgICAgIGhvc3RuYW1lcyA9IGVpbmFfbGlzdF9hcHBlbmQoaG9zdG5h
bWVzLCBXS0VpbmFTaGFyZWRTdHJpbmcod2tIb3N0bmFtZSkubGVha1N0cmluZygpKTsKICAgICB9
CiAKICAgICBjYWxsYmFja0RhdGEtPmNhbGxiYWNrKGhvc3RuYW1lcywgZXdrRXJyb3IuZ2V0KCks
IGNhbGxiYWNrRGF0YS0+dXNlckRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5jcHAK
aW5kZXggZTYxYTQyZi4uNjA3OThlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuY3Bw
CkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSAiV0tTdHJp
bmcuaCIKICNpbmNsdWRlICJld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IApAQCAtNDgsMTMgKzQ3LDEzIEBAIEV3a0Zvcm1TdWJtaXNzaW9uUmVxdWVzdDo6fkV3a0Zvcm1T
dWJtaXNzaW9uUmVxdWVzdCgpCiAgICAgICAgIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lckNvbnRp
bnVlKG1fd2tMaXN0ZW5lci5nZXQoKSk7CiB9CiAKLVN0cmluZyBFd2tGb3JtU3VibWlzc2lvblJl
cXVlc3Q6OmZpZWxkVmFsdWUoY29uc3QgU3RyaW5nJiBmaWVsZE5hbWUpIGNvbnN0CitFaW5hX1N0
cmluZ3NoYXJlKiBFd2tGb3JtU3VibWlzc2lvblJlcXVlc3Q6OmNvcHlGaWVsZFZhbHVlKGNvbnN0
IGNoYXIqIGZpZWxkTmFtZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZmllbGROYW1lKTsKLSAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tGaWVsZE5hbWUgPSBhZG9wdFdLKHRvQ29waWVkQVBJ
KGZpZWxkTmFtZSkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0ZpZWxkTmFtZSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZmllbGROYW1lKSk7CiAgICAg
V0tTdHJpbmdSZWYgd2tWYWx1ZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KG1fd2tWYWx1ZXMuZ2V0KCksIHdrRmllbGROYW1lLmdldCgpKSk7CiAK
LSAgICByZXR1cm4gd2tWYWx1ZSA/IHRvSW1wbCh3a1ZhbHVlKS0+c3RyaW5nKCkgOiBTdHJpbmco
KTsKKyAgICByZXR1cm4gV0tFaW5hU2hhcmVkU3RyaW5nKHdrVmFsdWUpLmxlYWtTdHJpbmcoKTsK
IH0KIAogV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gRXdrRm9ybVN1Ym1pc3Npb25SZXF1ZXN0Ojpm
aWVsZE5hbWVzKCkgY29uc3QKQEAgLTcyLDE2ICs3MSwxNiBAQCBFaW5hX0xpc3QqIGV3a19mb3Jt
X3N1Ym1pc3Npb25fcmVxdWVzdF9maWVsZF9uYW1lc19nZXQoRXdrX0Zvcm1fU3VibWlzc2lvbl9S
ZXF1ZQogewogICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKEV3a0Zvcm1TdWJtaXNzaW9u
UmVxdWVzdCwgcmVxdWVzdCwgaW1wbCwgMCk7CiAKLSAgICBFaW5hX0xpc3QqIG5hbWVzID0gMDsK
KyAgICBFaW5hX0xpc3QqIGZpZWxkTmFtZXMgPSAwOwogCi0gICAgV0tSZXRhaW5QdHI8V0tBcnJh
eVJlZj4gd2tLZXlzID0gaW1wbC0+ZmllbGROYW1lcygpOwotICAgIGNvbnN0IHNpemVfdCBudW1L
ZXlzID0gV0tBcnJheUdldFNpemUod2tLZXlzLmdldCgpKTsKKyAgICBXS1JldGFpblB0cjxXS0Fy
cmF5UmVmPiB3a0ZpZWxkTmFtZXMgPSBpbXBsLT5maWVsZE5hbWVzKCk7CisgICAgY29uc3Qgc2l6
ZV90IG51bUtleXMgPSBXS0FycmF5R2V0U2l6ZSh3a0ZpZWxkTmFtZXMuZ2V0KCkpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtS2V5czsgKytpKSB7Ci0gICAgICAgIFdLU3RyaW5nUmVm
IHdrS2V5ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3
a0tleXMuZ2V0KCksIGkpKTsKLSAgICAgICAgbmFtZXMgPSBlaW5hX2xpc3RfYXBwZW5kKG5hbWVz
LCBlaW5hX3N0cmluZ3NoYXJlX2FkZCh0b0ltcGwod2tLZXkpLT5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKSk7CisgICAgICAgIFdLU3RyaW5nUmVmIHdrRmllbGROYW1lID0gc3RhdGljX2Nhc3Q8V0tT
dHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a0ZpZWxkTmFtZXMuZ2V0KCksIGkpKTsK
KyAgICAgICAgZmllbGROYW1lcyA9IGVpbmFfbGlzdF9hcHBlbmQoZmllbGROYW1lcywgV0tFaW5h
U2hhcmVkU3RyaW5nKHdrRmllbGROYW1lKS5sZWFrU3RyaW5nKCkpOwogICAgIH0KIAotICAgIHJl
dHVybiBuYW1lczsKKyAgICByZXR1cm4gZmllbGROYW1lczsKIH0KIAogY29uc3QgY2hhciogZXdr
X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X2ZpZWxkX3ZhbHVlX2dldChFd2tfRm9ybV9TdWJtaXNz
aW9uX1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IGNoYXIqIG5hbWUpCkBAIC04OSw5ICs4OCw3IEBA
IGNvbnN0IGNoYXIqIGV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9maWVsZF92YWx1ZV9nZXQo
RXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1CiAgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4o
RXdrRm9ybVN1Ym1pc3Npb25SZXF1ZXN0LCByZXF1ZXN0LCBpbXBsLCAwKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobmFtZSwgMCk7CiAKLSAgICBTdHJpbmcgdmFsdWUgPSBp
bXBsLT5maWVsZFZhbHVlKFN0cmluZzo6ZnJvbVVURjgobmFtZSkpOwotCi0gICAgcmV0dXJuIHZh
bHVlLmlzTnVsbCgpID8gIDAgOiBlaW5hX3N0cmluZ3NoYXJlX2FkZCh2YWx1ZS51dGY4KCkuZGF0
YSgpKTsKKyAgICByZXR1cm4gaW1wbC0+Y29weUZpZWxkVmFsdWUobmFtZSk7CiB9CiAKIEVpbmFf
Qm9vbCBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3Rfc3VibWl0KEV3a19Gb3JtX1N1Ym1pc3Np
b25fUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9wcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJp
dmF0ZS5oCmluZGV4IDI2ZDMyNDYuLmIyYjgwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9wcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lv
bl9yZXF1ZXN0X3ByaXZhdGUuaApAQCAtMjcsMTEgKzI3LDExIEBACiAjZGVmaW5lIGV3a19mb3Jt
X3N1Ym1pc3Npb25fcmVxdWVzdF9wcml2YXRlX2gKIAogI2luY2x1ZGUgIldLRGljdGlvbmFyeS5o
IgorI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgogI2luY2x1ZGUgIldLRm9ybVN1Ym1p
c3Npb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiZXdr
X29iamVjdF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogY2xhc3MgRXdrRm9ybVN1Ym1pc3Npb25SZXF1ZXN0
IDogcHVibGljIEV3a09iamVjdCB7CiBwdWJsaWM6CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBmaWVsZE5hbWVzKCkgY29uc3Q7
Ci0gICAgU3RyaW5nIGZpZWxkVmFsdWUoY29uc3QgU3RyaW5nJiBmaWVsZE5hbWUpIGNvbnN0Owor
ICAgIEVpbmFfU3RyaW5nc2hhcmUqIGNvcHlGaWVsZFZhbHVlKGNvbnN0IGNoYXIqIGZpZWxkTmFt
ZSkgY29uc3Q7CiAKICAgICB2b2lkIHN1Ym1pdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdGV4dF9jaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190ZXh0X2NoZWNrZXIuY3BwCmluZGV4IGNlNTQ2ZDUu
LjJiZTI4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a190ZXh0X2NoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a190ZXh0X2NoZWNrZXIuY3BwCkBAIC0zMSwxNyArMzEsMTYgQEAKIAogI2luY2x1ZGUgIlRl
eHRDaGVja2VyRW5jaGFudC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldL
RWluYVNoYXJlZFN0cmluZy5oIgogI2luY2x1ZGUgIldLTXV0YWJsZUFycmF5LmgiCiAjaW5jbHVk
ZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldLVGV4
dENoZWNrZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJXZWJTdHJp
bmcuaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3MuaCIKICNpbmNsdWRlICJld2tfdGV4dF9jaGVj
a2VyX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtOTksOSArOTgsOSBAQCBzdGF0aWMgdm9p
ZCBjbG9zZVNwZWxsRG9jdW1lbnRXaXRoVGFnKHVpbnQ2NF90IHRhZywgY29uc3Qgdm9pZCopCiBz
dGF0aWMgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcodWludDY0X3QgdGFnLCBXS1N0cmluZ1Jl
ZiB0ZXh0LCBpbnQzMl90KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQzMl90KiBtaXNzcGVsbGlu
Z0xlbmd0aCwgY29uc3Qgdm9pZCopCiB7CiAgICAgaWYgKGNsaWVudENhbGxiYWNrcygpLnN0cmlu
Z19zcGVsbGluZ19jaGVjaykKLSAgICAgICAgY2xpZW50Q2FsbGJhY2tzKCkuc3RyaW5nX3NwZWxs
aW5nX2NoZWNrKHRhZywgdG9JbXBsKHRleHQpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtaXNz
cGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7CisgICAgICAgIGNsaWVudENhbGxi
YWNrcygpLnN0cmluZ19zcGVsbGluZ19jaGVjayh0YWcsIFdLRWluYVNoYXJlZFN0cmluZyh0ZXh0
KSwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwogICAgIGVsc2UKLSAg
ICAgICAgdGV4dENoZWNrZXJFbmNoYW50KCktPmNoZWNrU3BlbGxpbmdPZlN0cmluZyh0b0ltcGwo
dGV4dCktPnN0cmluZygpLCAqbWlzc3BlbGxpbmdMb2NhdGlvbiwgKm1pc3NwZWxsaW5nTGVuZ3Ro
KTsKKyAgICAgICAgdGV4dENoZWNrZXJFbmNoYW50KCktPmNoZWNrU3BlbGxpbmdPZlN0cmluZyh0
b1dURlN0cmluZyh0ZXh0KSwgKm1pc3NwZWxsaW5nTG9jYXRpb24sICptaXNzcGVsbGluZ0xlbmd0
aCk7CiB9CiAKIHN0YXRpYyBXS0FycmF5UmVmIGd1ZXNzZXNGb3JXb3JkKHVpbnQ2NF90IHRhZywg
V0tTdHJpbmdSZWYgd29yZCwgY29uc3Qgdm9pZCopCkBAIC0xMDksNyArMTA4LDcgQEAgc3RhdGlj
IFdLQXJyYXlSZWYgZ3Vlc3Nlc0ZvcldvcmQodWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB3b3Jk
LCBjb25zdCB2b2lkKikKICAgICBXS011dGFibGVBcnJheVJlZiBzdWdnZXN0aW9uc0ZvcldvcmQg
PSBXS011dGFibGVBcnJheUNyZWF0ZSgpOwogCiAgICAgaWYgKGNsaWVudENhbGxiYWNrcygpLndv
cmRfZ3Vlc3Nlc19nZXQpIHsKLSAgICAgICAgRWluYV9MaXN0KiBsaXN0ID0gY2xpZW50Q2FsbGJh
Y2tzKCkud29yZF9ndWVzc2VzX2dldCh0YWcsIHRvSW1wbCh3b3JkKS0+c3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIEVpbmFfTGlzdCogbGlzdCA9IGNsaWVudENhbGxiYWNrcygpLndv
cmRfZ3Vlc3Nlc19nZXQodGFnLCBXS0VpbmFTaGFyZWRTdHJpbmcod29yZCkpOwogICAgICAgICB2
b2lkKiBpdGVtOwogCiAgICAgICAgIEVJTkFfTElTVF9GUkVFKGxpc3QsIGl0ZW0pIHsKQEAgLTEx
OCw3ICsxMTcsNyBAQCBzdGF0aWMgV0tBcnJheVJlZiBndWVzc2VzRm9yV29yZCh1aW50NjRfdCB0
YWcsIFdLU3RyaW5nUmVmIHdvcmQsIGNvbnN0IHZvaWQqKQogICAgICAgICAgICAgZnJlZShpdGVt
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBndWVzc2VzID0gdGV4dENoZWNrZXJFbmNoYW50KCktPmdldEd1ZXNzZXNGb3JXb3JkKHRvSW1w
bCh3b3JkKS0+c3RyaW5nKCkpOworICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nl
cyA9IHRleHRDaGVja2VyRW5jaGFudCgpLT5nZXRHdWVzc2VzRm9yV29yZCh0b1dURlN0cmluZyh3
b3JkKSk7CiAgICAgICAgIHNpemVfdCBudW1iZXJPZkd1ZXNzZXMgPSBndWVzc2VzLnNpemUoKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkd1ZXNzZXM7ICsraSkgewog
ICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1Z2dlc3Rpb24oQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZ3Vlc3Nlc1tpXS51dGY4KCkuZGF0YSgpKSk7
CkBAIC0xMzIsMTcgKzEzMSwxNyBAQCBzdGF0aWMgV0tBcnJheVJlZiBndWVzc2VzRm9yV29yZCh1
aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIHdvcmQsIGNvbnN0IHZvaWQqKQogc3RhdGljIHZvaWQg
bGVhcm5Xb3JkKHVpbnQ2NF90IHRhZywgV0tTdHJpbmdSZWYgd29yZCwgY29uc3Qgdm9pZCopCiB7
CiAgICAgaWYgKGNsaWVudENhbGxiYWNrcygpLndvcmRfbGVhcm4pCi0gICAgICAgIGNsaWVudENh
bGxiYWNrcygpLndvcmRfbGVhcm4odGFnLCB0b0ltcGwod29yZCktPnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICBjbGllbnRDYWxsYmFja3MoKS53b3JkX2xlYXJuKHRhZywgV0tFaW5h
U2hhcmVkU3RyaW5nKHdvcmQpKTsKICAgICBlbHNlCi0gICAgICAgIHRleHRDaGVja2VyRW5jaGFu
dCgpLT5sZWFybldvcmQodG9JbXBsKHdvcmQpLT5zdHJpbmcoKSk7CisgICAgICAgIHRleHRDaGVj
a2VyRW5jaGFudCgpLT5sZWFybldvcmQodG9XVEZTdHJpbmcod29yZCkpOwogfQogCiBzdGF0aWMg
dm9pZCBpZ25vcmVXb3JkKHVpbnQ2NF90IHRhZywgV0tTdHJpbmdSZWYgd29yZCwgY29uc3Qgdm9p
ZCopCiB7CiAgICAgaWYgKGNsaWVudENhbGxiYWNrcygpLndvcmRfaWdub3JlKQotICAgICAgICBj
bGllbnRDYWxsYmFja3MoKS53b3JkX2lnbm9yZSh0YWcsIHRvSW1wbCh3b3JkKS0+c3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGNsaWVudENhbGxiYWNrcygpLndvcmRfaWdub3JlKHRh
ZywgV0tFaW5hU2hhcmVkU3RyaW5nKHdvcmQpKTsKICAgICBlbHNlCi0gICAgICAgIHRleHRDaGVj
a2VyRW5jaGFudCgpLT5pZ25vcmVXb3JkKHRvSW1wbCh3b3JkKS0+c3RyaW5nKCkpOworICAgICAg
ICB0ZXh0Q2hlY2tlckVuY2hhbnQoKS0+aWdub3JlV29yZCh0b1dURlN0cmluZyh3b3JkKSk7CiB9
CiAKIG5hbWVzcGFjZSBFd2tfVGV4dF9DaGVja2VyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9laW5hX3NoYXJlZF9zdHJpbmcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Vp
bmFfc2hhcmVkX3N0cmluZy5jcHAKaW5kZXggMjU4MjQ5Yy4uMTVhMDg0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2VpbmFfc2hh
cmVkX3N0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvdGVzdF9ld2syX2VpbmFfc2hhcmVkX3N0cmluZy5jcHAKQEAgLTEyNCwzICsxMjQsMTcgQEAg
VEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGFzc2lnbm1lbnRPcGVyYXRvcnMpCiAgICAgc3RyaW5n
ID0gc3RyaW5nOyAvLyBDaGVjayB0aGF0IHNlbGYtYXNzaWdubWVudCBkb2VzIG5vdCBicmVhayBX
S0VpbmFTaGFyZWRTdHJpbmcgaW50ZXJuYWwgZGF0YS4KICAgICBjaGVja1N0cmluZyhzdHJpbmcs
IGFub3RoZXJUZXN0U3RyaW5nKTsKIH0KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGxlYWtT
dHJpbmcpCit7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHN0cmluZzsKKworICAgIHN0cmluZyA9
IHRlc3RTdHJpbmc7CisgICAgY2hlY2tTdHJpbmcoc3RyaW5nLCB0ZXN0U3RyaW5nKTsKKworICAg
IEVpbmFfU3RyaW5nc2hhcmUqIGxlYWtlZFN0cmluZyA9IHN0cmluZy5sZWFrU3RyaW5nKCk7Cisg
ICAgY2hlY2tTdHJpbmcoc3RyaW5nLCAwKTsKKyAgICBBU1NFUlRfU1RSRVEobGVha2VkU3RyaW5n
LCB0ZXN0U3RyaW5nKTsKKworICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGxlYWtlZFN0cmluZyk7
Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>