<?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>107503</bug_id>
          
          <creation_ts>2013-01-21 22:46:16 -0800</creation_ts>
          <short_desc>Fix DateMath.cpp to compile with -Wshorten-64-to-32</short_desc>
          <delta_ts>2013-01-30 09:49:33 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>107093</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>benjamin</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>812627</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-01-21 22:46:16 -0800</bug_when>
    <thetext>&lt;http://webkit.org/b/000000&gt;

Reviewed by NOBODY (OOPS!).

Source/JavaScriptCore:

* runtime/JSDateMath.cpp:
(JSC::parseDateFromNullTerminatedCharacters): Remove unneeded
static_cast&lt;int&gt;().

Source/WTF:

Fixes the following build errors with -Wshorten-64-to-32:

DateMath.cpp:742:47: error: implicit conversion loses integer precision: &apos;long&apos; to &apos;int&apos; [-Werror,-Wshorten-64-to-32]
if (month == 2 &amp;&amp; day &gt; 28 &amp;&amp; !isLeapYear(year))
~~~~~~~~~~ ^~~~
DateMath.cpp:757:48: error: implicit conversion loses integer precision: &apos;long&apos; to &apos;int&apos; [-Werror,-Wshorten-64-to-32]
double dateSeconds = ymdhmsToSeconds(year, month, day, hours, minutes, seconds) - timeZoneSeconds;
~~~~~~~~~~~~~~~       ^~~~~
DateMath.cpp:757:55: error: implicit conversion loses integer precision: &apos;long&apos; to &apos;int&apos; [-Werror,-Wshorten-64-to-32]
double dateSeconds = ymdhmsToSeconds(year, month, day, hours, minutes, seconds) - timeZoneSeconds;
~~~~~~~~~~~~~~~              ^~~
DateMath.cpp:757:60: error: implicit conversion loses integer precision: &apos;long&apos; to &apos;int&apos; [-Werror,-Wshorten-64-to-32]
double dateSeconds = ymdhmsToSeconds(year, month, day, hours, minutes, seconds) - timeZoneSeconds;
~~~~~~~~~~~~~~~                   ^~~~~
DateMath.cpp:757:67: error: implicit conversion loses integer precision: &apos;long&apos; to &apos;int&apos; [-Werror,-Wshorten-64-to-32]
double dateSeconds = ymdhmsToSeconds(year, month, day, hours, minutes, seconds) - timeZoneSeconds;
~~~~~~~~~~~~~~~                          ^~~~~~~
DateMath.cpp:996:59: error: implicit conversion loses integer precision: &apos;long&apos; to &apos;int&apos; [-Werror,-Wshorten-64-to-32]
offset = ((o / 100) * 60 + (o % 100)) * sgn;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
DateMath.cpp:998:37: error: implicit conversion loses integer precision: &apos;long&apos; to &apos;int&apos; [-Werror,-Wshorten-64-to-32]
offset = o * 60 * sgn;
~ ~~~~~~~^~~~~
DateMath.cpp:1005:40: error: implicit conversion loses integer precision: &apos;long&apos; to &apos;int&apos; [-Werror,-Wshorten-64-to-32]
offset = (o * 60 + o2) * sgn;
~ ~~~~~~~~~~~~~~^~~~~
DateMath.cpp:1041:40: error: implicit conversion loses integer precision: &apos;long&apos; to &apos;int&apos; [-Werror,-Wshorten-64-to-32]
return ymdhmsToSeconds(year, month + 1, day, hour, minute, second) * msPerSecond;
~~~~~~~~~~~~~~~       ~~~~~~^~~
DateMath.cpp:1041:45: error: implicit conversion loses integer precision: &apos;long&apos; to &apos;int&apos; [-Werror,-Wshorten-64-to-32]
return ymdhmsToSeconds(year, month + 1, day, hour, minute, second) * msPerSecond;
~~~~~~~~~~~~~~~                  ^~~
DateMath.cpp:1041:50: error: implicit conversion loses integer precision: &apos;long&apos; to &apos;int&apos; [-Werror,-Wshorten-64-to-32]
return ymdhmsToSeconds(year, month + 1, day, hour, minute, second) * msPerSecond;
~~~~~~~~~~~~~~~                       ^~~~
DateMath.cpp:1041:56: error: implicit conversion loses integer precision: &apos;long&apos; to &apos;int&apos; [-Werror,-Wshorten-64-to-32]
return ymdhmsToSeconds(year, month + 1, day, hour, minute, second) * msPerSecond;
~~~~~~~~~~~~~~~                             ^~~~~~
12 errors generated.

* wtf/DateMath.cpp:
(WTF::ymdhmsToSeconds): Change year argument from long to int.
Change mon, day, hour, minute arguments from int to long.
(WTF::parseInt): Add.  Identical to parseLong but bounds checks
for type int.
(WTF::parseLong): Switch to std::numeric_limits&lt;long&gt; instead of
macros.
(WTF::parseES5DatePortion): Change year argument from long to
int.
(WTF::parseES5DateFromNullTerminatedCharacters): Change year
local variable from long to int.
(WTF::parseDateFromNullTerminatedCharacters): Change year and
offset local variables from long to int.  Switch from using
parseLong() to parseInt() as needed.  Ditto for labs() to abs().
Add overflow check when switching from &quot;MM/DD/YYYY&quot; to
&quot;YYYY/MM/DD&quot; parsing.
---
 4 files changed, 104 insertions(+), 17 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812628</commentid>
    <comment_count>1</comment_count>
      <attachid>183893</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-01-21 22:46:17 -0800</bug_when>
    <thetext>Created attachment 183893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813066</commentid>
    <comment_count>2</comment_count>
      <attachid>183996</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-01-22 08:47:53 -0800</bug_when>
    <thetext>Created attachment 183996
Patch 2 of 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813068</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-01-22 08:49:13 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=183893) [details]
&gt; Patch

The general idea here is to switch &apos;offset&apos; and &apos;year&apos; to be type &apos;int&apos;, and continue using &apos;long&apos; for other time values.

Patch 2 of 2 is cleanup to merge parseInt() and parseLong() into a single template function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813122</commentid>
    <comment_count>4</comment_count>
      <attachid>183996</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-22 10:06:46 -0800</bug_when>
    <thetext>Comment on attachment 183996
Patch 2 of 2

Your changes are OK.

There’s a lot that is wrong about this parse function for WebKit. It’s basically a cover for the strtol library function:

- The workaround for Windows CE behavior is done here, but in WebKit such workarounds are supposed to go into &lt;wtf/MathExtras.h&gt;
- The function can’t parse the minimum or maximum values of a given type, an unconventional limitation that I assume is not a problem in the date parsing code.
- The function uses the strtol library function. But we have good numeric parsing functions elsewhere in WTF, which probably didn’t exist when this was first written. The space skipping behavior of strtol is based on isspace and thus is affected by the POSIX locale set in the standard library, which is why we don’t use these kinds of library functions elsewhere in WebKit, and also why our ASCIICType.h header exists.
- The function retains the strtol “base” argument, even though callers always pass 10.
- The function uses pointers for its out arguments. While some of the Chromium project contributors have argued for this, it is not the usual WebKit coding style. We use references for such things.

Because of that, if I was fixing this, I’d probably also rewrite this to not use strtol.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813125</commentid>
    <comment_count>5</comment_count>
      <attachid>183893</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-22 10:09:42 -0800</bug_when>
    <thetext>Comment on attachment 183893
Patch

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

Seems OK. Things are still a bit of a mess. If we had more time to clean up further, I think we could stop using long here. There’s no reason we need to use strtol when we have perfectly good numeric conversion functions of our own.

&gt; Source/WTF/wtf/DateMath.cpp:837
&gt; +        if (day &lt;= std::numeric_limits&lt;int&gt;::min() || day &gt;= std::numeric_limits&lt;int&gt;::max())

These should be &lt; and &gt; rather than &lt;= or &gt;=. Unless there is some reason the limit values are a problem. Except that probably will cause warnings on platforms where long and int are the same size. Ugh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813154</commentid>
    <comment_count>6</comment_count>
      <attachid>183893</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-22 10:28:52 -0800</bug_when>
    <thetext>Comment on attachment 183893
Patch

Clearing flags on attachment: 183893

Committed r140437: &lt;http://trac.webkit.org/changeset/140437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820276</commentid>
    <comment_count>7</comment_count>
      <attachid>183996</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-01-30 09:49:33 -0800</bug_when>
    <thetext>Comment on attachment 183996
Patch 2 of 2

I&apos;m going to file some follow-up bugs based on Darin&apos;s comments rather than landing this patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183893</attachid>
            <date>2013-01-21 22:46:17 -0800</date>
            <delta_ts>2013-01-22 10:28:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107503-20130121224312.patch</filename>
            <type>text/plain</type>
            <size>13545</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NGE5MGI2MjFhMmNhZTE0OTFmOWQ5MmFkMGM2NDFiYThkYmNhODRhLi43MjE2ZDI5ZTgyMjNjYWIz
NjBmZGE4OGVkZjA3OGMyM2FhMWY5YmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMy0wMS0yMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIEZpeCBEYXRlTWF0aC5jcHAgdG8gY29tcGlsZSB3aXRoIC1Xc2hvcnRlbi02
NC10by0zMgorICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMDc1MDM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL0pTRGF0ZU1h
dGguY3BwOgorICAgICAgICAoSlNDOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0
ZXJzKTogUmVtb3ZlIHVubmVlZGVkCisgICAgICAgIHN0YXRpY19jYXN0PGludD4oKS4KKwogMjAx
My0wMS0xNyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIE9iamVjdGl2ZS1DIEFQSTogQ2xlYW4gdXAgSlNWYWx1ZS5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAxODAwNDc3ODZi
NDBhZjBiYmU3MjgwZGRiMjZkMWY1MTRjZWRlMTMyLi44ODc0YzZiNmQ2Y2E3MWUxZTY4YTI5YmNi
MzMxZmY1ZmQ0ZDZiMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEzLTAxLTIxICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IERhdGVNYXRoLmNwcCB0
byBjb21waWxlIHdpdGggLVdzaG9ydGVuLTY0LXRvLTMyCisgICAgICAgIDxodHRwOi8vd2Via2l0
Lm9yZy9iLzEwNzUwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGaXhlcyB0aGUgZm9sbG93aW5nIGJ1aWxkIGVycm9ycyB3aXRoIC1Xc2hvcnRlbi02
NC10by0zMjoKKworICAgICAgICAgICAgRGF0ZU1hdGguY3BwOjc0Mjo0NzogZXJyb3I6IGltcGxp
Y2l0IGNvbnZlcnNpb24gbG9zZXMgaW50ZWdlciBwcmVjaXNpb246ICdsb25nJyB0byAnaW50JyBb
LVdlcnJvciwtV3Nob3J0ZW4tNjQtdG8tMzJdCisgICAgICAgICAgICAgICAgaWYgKG1vbnRoID09
IDIgJiYgZGF5ID4gMjggJiYgIWlzTGVhcFllYXIoeWVhcikpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn4gXn5+fgorICAgICAgICAgICAg
RGF0ZU1hdGguY3BwOjc1Nzo0ODogZXJyb3I6IGltcGxpY2l0IGNvbnZlcnNpb24gbG9zZXMgaW50
ZWdlciBwcmVjaXNpb246ICdsb25nJyB0byAnaW50JyBbLVdlcnJvciwtV3Nob3J0ZW4tNjQtdG8t
MzJdCisgICAgICAgICAgICAgICAgZG91YmxlIGRhdGVTZWNvbmRzID0geW1kaG1zVG9TZWNvbmRz
KHllYXIsIG1vbnRoLCBkYXksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSAtIHRpbWVab25lU2Vj
b25kczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5+
fn4gICAgICAgXn5+fn4KKyAgICAgICAgICAgIERhdGVNYXRoLmNwcDo3NTc6NTU6IGVycm9yOiBp
bXBsaWNpdCBjb252ZXJzaW9uIGxvc2VzIGludGVnZXIgcHJlY2lzaW9uOiAnbG9uZycgdG8gJ2lu
dCcgWy1XZXJyb3IsLVdzaG9ydGVuLTY0LXRvLTMyXQorICAgICAgICAgICAgICAgIGRvdWJsZSBk
YXRlU2Vjb25kcyA9IHltZGhtc1RvU2Vjb25kcyh5ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWlu
dXRlcywgc2Vjb25kcykgLSB0aW1lWm9uZVNlY29uZHM7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+ICAgICAgICAgICAgICBefn4KKyAgICAgICAg
ICAgIERhdGVNYXRoLmNwcDo3NTc6NjA6IGVycm9yOiBpbXBsaWNpdCBjb252ZXJzaW9uIGxvc2Vz
IGludGVnZXIgcHJlY2lzaW9uOiAnbG9uZycgdG8gJ2ludCcgWy1XZXJyb3IsLVdzaG9ydGVuLTY0
LXRvLTMyXQorICAgICAgICAgICAgICAgIGRvdWJsZSBkYXRlU2Vjb25kcyA9IHltZGhtc1RvU2Vj
b25kcyh5ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWludXRlcywgc2Vjb25kcykgLSB0aW1lWm9u
ZVNlY29uZHM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+
fn5+fn5+ICAgICAgICAgICAgICAgICAgIF5+fn5+CisgICAgICAgICAgICBEYXRlTWF0aC5jcHA6
NzU3OjY3OiBlcnJvcjogaW1wbGljaXQgY29udmVyc2lvbiBsb3NlcyBpbnRlZ2VyIHByZWNpc2lv
bjogJ2xvbmcnIHRvICdpbnQnIFstV2Vycm9yLC1Xc2hvcnRlbi02NC10by0zMl0KKyAgICAgICAg
ICAgICAgICBkb3VibGUgZGF0ZVNlY29uZHMgPSB5bWRobXNUb1NlY29uZHMoeWVhciwgbW9udGgs
IGRheSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpIC0gdGltZVpvbmVTZWNvbmRzOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fiAgICAgICAgICAg
ICAgICAgICAgICAgICAgXn5+fn5+fgorICAgICAgICAgICAgRGF0ZU1hdGguY3BwOjk5Njo1OTog
ZXJyb3I6IGltcGxpY2l0IGNvbnZlcnNpb24gbG9zZXMgaW50ZWdlciBwcmVjaXNpb246ICdsb25n
JyB0byAnaW50JyBbLVdlcnJvciwtV3Nob3J0ZW4tNjQtdG8tMzJdCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9mZnNldCA9ICgobyAvIDEwMCkgKiA2MCArIChvICUgMTAwKSkgKiBz
Z247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+IH5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+Xn5+fn4KKyAgICAgICAgICAgIERhdGVNYXRoLmNwcDo5OTg6Mzc6
IGVycm9yOiBpbXBsaWNpdCBjb252ZXJzaW9uIGxvc2VzIGludGVnZXIgcHJlY2lzaW9uOiAnbG9u
ZycgdG8gJ2ludCcgWy1XZXJyb3IsLVdzaG9ydGVuLTY0LXRvLTMyXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvZmZzZXQgPSBvICogNjAgKiBzZ247CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB+IH5+fn5+fn5efn5+fgorICAgICAgICAgICAgRGF0ZU1h
dGguY3BwOjEwMDU6NDA6IGVycm9yOiBpbXBsaWNpdCBjb252ZXJzaW9uIGxvc2VzIGludGVnZXIg
cHJlY2lzaW9uOiAnbG9uZycgdG8gJ2ludCcgWy1XZXJyb3IsLVdzaG9ydGVuLTY0LXRvLTMyXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IChvICogNjAgKyBvMikgKiBzZ247
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH4gfn5+fn5+fn5+fn5+fn5efn5+
fgorICAgICAgICAgICAgRGF0ZU1hdGguY3BwOjEwNDE6NDA6IGVycm9yOiBpbXBsaWNpdCBjb252
ZXJzaW9uIGxvc2VzIGludGVnZXIgcHJlY2lzaW9uOiAnbG9uZycgdG8gJ2ludCcgWy1XZXJyb3Is
LVdzaG9ydGVuLTY0LXRvLTMyXQorICAgICAgICAgICAgICAgIHJldHVybiB5bWRobXNUb1NlY29u
ZHMoeWVhciwgbW9udGggKyAxLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKSAqIG1zUGVyU2Vj
b25kOworICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5+fn4gICAgICAgfn5+fn5+
Xn5+CisgICAgICAgICAgICBEYXRlTWF0aC5jcHA6MTA0MTo0NTogZXJyb3I6IGltcGxpY2l0IGNv
bnZlcnNpb24gbG9zZXMgaW50ZWdlciBwcmVjaXNpb246ICdsb25nJyB0byAnaW50JyBbLVdlcnJv
ciwtV3Nob3J0ZW4tNjQtdG8tMzJdCisgICAgICAgICAgICAgICAgcmV0dXJuIHltZGhtc1RvU2Vj
b25kcyh5ZWFyLCBtb250aCArIDEsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpICogbXNQZXJT
ZWNvbmQ7CisgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fiAgICAgICAgICAg
ICAgICAgIF5+fgorICAgICAgICAgICAgRGF0ZU1hdGguY3BwOjEwNDE6NTA6IGVycm9yOiBpbXBs
aWNpdCBjb252ZXJzaW9uIGxvc2VzIGludGVnZXIgcHJlY2lzaW9uOiAnbG9uZycgdG8gJ2ludCcg
Wy1XZXJyb3IsLVdzaG9ydGVuLTY0LXRvLTMyXQorICAgICAgICAgICAgICAgIHJldHVybiB5bWRo
bXNUb1NlY29uZHMoeWVhciwgbW9udGggKyAxLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKSAq
IG1zUGVyU2Vjb25kOworICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5+fn4gICAg
ICAgICAgICAgICAgICAgICAgIF5+fn4KKyAgICAgICAgICAgIERhdGVNYXRoLmNwcDoxMDQxOjU2
OiBlcnJvcjogaW1wbGljaXQgY29udmVyc2lvbiBsb3NlcyBpbnRlZ2VyIHByZWNpc2lvbjogJ2xv
bmcnIHRvICdpbnQnIFstV2Vycm9yLC1Xc2hvcnRlbi02NC10by0zMl0KKyAgICAgICAgICAgICAg
ICByZXR1cm4geW1kaG1zVG9TZWNvbmRzKHllYXIsIG1vbnRoICsgMSwgZGF5LCBob3VyLCBtaW51
dGUsIHNlY29uZCkgKiBtc1BlclNlY29uZDsKKyAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+
fn5+fn5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn4KKyAgICAgICAgICAg
IDEyIGVycm9ycyBnZW5lcmF0ZWQuCisKKyAgICAgICAgKiB3dGYvRGF0ZU1hdGguY3BwOgorICAg
ICAgICAoV1RGOjp5bWRobXNUb1NlY29uZHMpOiBDaGFuZ2UgeWVhciBhcmd1bWVudCBmcm9tIGxv
bmcgdG8gaW50LgorICAgICAgICBDaGFuZ2UgbW9uLCBkYXksIGhvdXIsIG1pbnV0ZSBhcmd1bWVu
dHMgZnJvbSBpbnQgdG8gbG9uZy4KKyAgICAgICAgKFdURjo6cGFyc2VJbnQpOiBBZGQuICBJZGVu
dGljYWwgdG8gcGFyc2VMb25nIGJ1dCBib3VuZHMgY2hlY2tzCisgICAgICAgIGZvciB0eXBlIGlu
dC4KKyAgICAgICAgKFdURjo6cGFyc2VMb25nKTogU3dpdGNoIHRvIHN0ZDo6bnVtZXJpY19saW1p
dHM8bG9uZz4gaW5zdGVhZCBvZgorICAgICAgICBtYWNyb3MuCisgICAgICAgIChXVEY6OnBhcnNl
RVM1RGF0ZVBvcnRpb24pOiBDaGFuZ2UgeWVhciBhcmd1bWVudCBmcm9tIGxvbmcgdG8KKyAgICAg
ICAgaW50LgorICAgICAgICAoV1RGOjpwYXJzZUVTNURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFy
YWN0ZXJzKTogQ2hhbmdlIHllYXIKKyAgICAgICAgbG9jYWwgdmFyaWFibGUgZnJvbSBsb25nIHRv
IGludC4KKyAgICAgICAgKFdURjo6cGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVy
cyk6IENoYW5nZSB5ZWFyIGFuZAorICAgICAgICBvZmZzZXQgbG9jYWwgdmFyaWFibGVzIGZyb20g
bG9uZyB0byBpbnQuICBTd2l0Y2ggZnJvbSB1c2luZworICAgICAgICBwYXJzZUxvbmcoKSB0byBw
YXJzZUludCgpIGFzIG5lZWRlZC4gIERpdHRvIGZvciBsYWJzKCkgdG8gYWJzKCkuCisgICAgICAg
IEFkZCBvdmVyZmxvdyBjaGVjayB3aGVuIHN3aXRjaGluZyBmcm9tICJNTS9ERC9ZWVlZIiB0bwor
ICAgICAgICAiWVlZWS9NTS9ERCIgcGFyc2luZy4KKwogMjAxMy0wMS0xOCAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBXVEY6OmNvcHlMQ2hhcnNGcm9t
VUNoYXJTb3VyY2UoKSB0byBjb21waWxlIHdpdGggLVdzaG9ydGVuLTY0LXRvLTMyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCmluZGV4IDRlNjU4YmM1NDk0
ODJjMmY1MjVhNjZkZDBiOTk5Y2QwZTgyNTZkNWYuLjU0MmM2M2JkMGJlYjFkNzBiODk0MmVjMDZl
OTg0MWUzY2JlYzEyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
ZU1hdGguY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVy
bWluYXRlZENoYXJhY3RlcnMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBkYXRlU3QKICAg
ICBpZiAoIWhhdmVUWikgewogICAgICAgICBkb3VibGUgdXRjT2Zmc2V0ID0gZ2V0VVRDT2Zmc2V0
KGV4ZWMpOwogICAgICAgICBkb3VibGUgZHN0T2Zmc2V0ID0gZ2V0RFNUT2Zmc2V0KGV4ZWMsIG1z
LCB1dGNPZmZzZXQpOwotICAgICAgICBvZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+KCh1dGNPZmZz
ZXQgKyBkc3RPZmZzZXQpIC8gV1RGOjptc1Blck1pbnV0ZSk7CisgICAgICAgIG9mZnNldCA9ICh1
dGNPZmZzZXQgKyBkc3RPZmZzZXQpIC8gV1RGOjptc1Blck1pbnV0ZTsKICAgICB9CiAgICAgcmV0
dXJuIG1zIC0gKG9mZnNldCAqIFdURjo6bXNQZXJNaW51dGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCmlu
ZGV4IDZkMGU1ZDczZjM4YjhkZDY2NjIxOWViNTY5NWY1MzQ1NDQ3ZGU5M2YuLjA1ZDcwNDgzMDk2
YTMyNzE3Y2VlNDRiZDI0NjM1NDExMjJlYzBhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0RhdGVNYXRoLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKQEAgLTQ4NSw3
ICs0ODUsNyBAQCB2b2lkIGluaXRpYWxpemVEYXRlcygpCiAgICAgZXF1aXZhbGVudFllYXJGb3JE
U1QoMjAwMCk7IC8vIE5lZWQgdG8gY2FsbCBvbmNlIHRvIGluaXRpYWxpemUgYSBzdGF0aWMgdXNl
ZCBpbiB0aGlzIGZ1bmN0aW9uLgogfQogCi1zdGF0aWMgaW5saW5lIGRvdWJsZSB5bWRobXNUb1Nl
Y29uZHMobG9uZyB5ZWFyLCBpbnQgbW9uLCBpbnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbnV0ZSwg
ZG91YmxlIHNlY29uZCkKK3N0YXRpYyBpbmxpbmUgZG91YmxlIHltZGhtc1RvU2Vjb25kcyhpbnQg
eWVhciwgbG9uZyBtb24sIGxvbmcgZGF5LCBsb25nIGhvdXIsIGxvbmcgbWludXRlLCBkb3VibGUg
c2Vjb25kKQogewogICAgIGRvdWJsZSBkYXlzID0gKGRheSAtIDMyMDc1KQogICAgICAgICArIGZs
b29yKDE0NjEgKiAoeWVhciArIDQ4MDAuMCArIChtb24gLSAxNCkgLyAxMikgLyA0KQpAQCAtNTU0
LDExICs1NTQsMjEgQEAgc3RhdGljIGludCBmaW5kTW9udGgoY29uc3QgY2hhciogbW9udGhTdHIp
CiAgICAgcmV0dXJuIC0xOwogfQogCitzdGF0aWMgYm9vbCBwYXJzZUludChjb25zdCBjaGFyKiBz
dHJpbmcsIGNoYXIqKiBzdG9wUG9zaXRpb24sIGludCBiYXNlLCBpbnQqIHJlc3VsdCkKK3sKKyAg
ICBsb25nIGxvbmdSZXN1bHQgPSBzdHJ0b2woc3RyaW5nLCBzdG9wUG9zaXRpb24sIGJhc2UpOwor
ICAgIC8vIEF2b2lkIHRoZSB1c2Ugb2YgZXJybm8gYXMgaXQgaXMgbm90IGF2YWlsYWJsZSBvbiBX
aW5kb3dzIENFCisgICAgaWYgKHN0cmluZyA9PSAqc3RvcFBvc2l0aW9uIHx8IGxvbmdSZXN1bHQg
PD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSB8fCBsb25nUmVzdWx0ID49IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAq
cmVzdWx0ID0gc3RhdGljX2Nhc3Q8aW50Pihsb25nUmVzdWx0KTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogc3RhdGljIGJvb2wgcGFyc2VMb25nKGNvbnN0IGNoYXIqIHN0cmluZywgY2hhcioqIHN0
b3BQb3NpdGlvbiwgaW50IGJhc2UsIGxvbmcqIHJlc3VsdCkKIHsKICAgICAqcmVzdWx0ID0gc3Ry
dG9sKHN0cmluZywgc3RvcFBvc2l0aW9uLCBiYXNlKTsKICAgICAvLyBBdm9pZCB0aGUgdXNlIG9m
IGVycm5vIGFzIGl0IGlzIG5vdCBhdmFpbGFibGUgb24gV2luZG93cyBDRQotICAgIGlmIChzdHJp
bmcgPT0gKnN0b3BQb3NpdGlvbiB8fCAqcmVzdWx0ID09IExPTkdfTUlOIHx8ICpyZXN1bHQgPT0g
TE9OR19NQVgpCisgICAgaWYgKHN0cmluZyA9PSAqc3RvcFBvc2l0aW9uIHx8ICpyZXN1bHQgPT0g
c3RkOjpudW1lcmljX2xpbWl0czxsb25nPjo6bWluKCkgfHwgKnJlc3VsdCA9PSBzdGQ6Om51bWVy
aWNfbGltaXRzPGxvbmc+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtNTY2LDE0ICs1NzYsMTQgQEAgc3RhdGljIGJvb2wgcGFyc2VMb25nKGNv
bnN0IGNoYXIqIHN0cmluZywgY2hhcioqIHN0b3BQb3NpdGlvbiwgaW50IGJhc2UsIGxvbmcqIHIK
IC8vIFBhcnNlcyBhIGRhdGUgd2l0aCB0aGUgZm9ybWF0IFlZWVlbLU1NWy1ERF1dLgogLy8gWWVh
ciBwYXJzaW5nIGlzIGxlbmllbnQsIGFsbG93cyBhbnkgbnVtYmVyIG9mIGRpZ2l0cywgYW5kICsv
LS4KIC8vIFJldHVybnMgMCBpZiBhIHBhcnNlIGVycm9yIG9jY3VycywgZWxzZSByZXR1cm5zIHRo
ZSBlbmQgb2YgdGhlIHBhcnNlZCBwb3J0aW9uIG9mIHRoZSBzdHJpbmcuCi1zdGF0aWMgY2hhciog
cGFyc2VFUzVEYXRlUG9ydGlvbihjb25zdCBjaGFyKiBjdXJyZW50UG9zaXRpb24sIGxvbmcmIHll
YXIsIGxvbmcmIG1vbnRoLCBsb25nJiBkYXkpCitzdGF0aWMgY2hhciogcGFyc2VFUzVEYXRlUG9y
dGlvbihjb25zdCBjaGFyKiBjdXJyZW50UG9zaXRpb24sIGludCYgeWVhciwgbG9uZyYgbW9udGgs
IGxvbmcmIGRheSkKIHsKICAgICBjaGFyKiBwb3N0UGFyc2VQb3NpdGlvbjsKIAogICAgIC8vIFRo
aXMgaXMgYSBiaXQgbW9yZSBsZW5pZW50IG9uIHRoZSB5ZWFyIHN0cmluZyB0aGFuIEVTNSBzcGVj
aWZpZXM6CiAgICAgLy8gaW5zdGVhZCBvZiByZXN0cmljdGluZyB0byA0IGRpZ2l0cyAob3IgNiBk
aWdpdHMgd2l0aCBtYW5kYXRvcnkgKy8tKSwKICAgICAvLyBpdCBhY2NlcHRzIGFueSBpbnRlZ2Vy
IHZhbHVlLiBDb25zaWRlciB0aGlzIGFuIGltcGxlbWVudGF0aW9uIGZhbGxiYWNrLgotICAgIGlm
ICghcGFyc2VMb25nKGN1cnJlbnRQb3NpdGlvbiwgJnBvc3RQYXJzZVBvc2l0aW9uLCAxMCwgJnll
YXIpKQorICAgIGlmICghcGFyc2VJbnQoY3VycmVudFBvc2l0aW9uLCAmcG9zdFBhcnNlUG9zaXRp
b24sIDEwLCAmeWVhcikpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gQ2hlY2sgZm9yIHBy
ZXNlbmNlIG9mIC1NTSBwb3J0aW9uLgpAQCAtNzEwLDcgKzcyMCw3IEBAIGRvdWJsZSBwYXJzZUVT
NURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcp
CiAgICAgc3RhdGljIGNvbnN0IGxvbmcgZGF5c1Blck1vbnRoWzEyXSA9IHsgMzEsIDI5LCAzMSwg
MzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMSB9OwogICAgIAogICAgIC8vIFRoZSB5
ZWFyIG11c3QgYmUgcHJlc2VudCwgYnV0IHRoZSBvdGhlciBmaWVsZHMgbWF5IGJlIG9taXR0ZWQg
LSBzZWUgRVM1LjEgMTUuOS4xLjE1LgotICAgIGxvbmcgeWVhciA9IDA7CisgICAgaW50IHllYXIg
PSAwOwogICAgIGxvbmcgbW9udGggPSAxOwogICAgIGxvbmcgZGF5ID0gMTsKICAgICBsb25nIGhv
dXJzID0gMDsKQEAgLTgxNiw3ICs4MjYsNyBAQCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJt
aW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nLCBib29sJiBoYXZlVAogICAg
IGlmIChkYXkgPCAwKQogICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKTsKIAotICAgIGxvbmcgeWVhciA9IDA7CisgICAgaW50IHllYXIgPSAwOwog
ICAgIGlmIChkYXkgPiAzMSkgewogICAgICAgICAvLyAjIyMgd2hlcmUgaXMgdGhlIGJvdW5kYXJ5
IGFuZCB3aGF0IGhhcHBlbnMgYmVsb3c/CiAgICAgICAgIGlmICgqZGF0ZVN0cmluZyAhPSAnLycp
CkBAIC04MjQsNyArODM0LDkgQEAgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENo
YXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZywgYm9vbCYgaGF2ZVQKICAgICAgICAgLy8g
bG9va3MgbGlrZSBhIFlZWVkvTU0vREQgZGF0ZQogICAgICAgICBpZiAoISorK2RhdGVTdHJpbmcp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9O
YU4oKTsKLSAgICAgICAgeWVhciA9IGRheTsKKyAgICAgICAgaWYgKGRheSA8PSBzdGQ6Om51bWVy
aWNfbGltaXRzPGludD46Om1pbigpIHx8IGRheSA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46
Om1heCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
cXVpZXRfTmFOKCk7CisgICAgICAgIHllYXIgPSBzdGF0aWNfY2FzdDxpbnQ+KGRheSk7CiAgICAg
ICAgIGlmICghcGFyc2VMb25nKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwLCAmbW9udGgpKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFO
KCk7CiAgICAgICAgIG1vbnRoIC09IDE7CkBAIC04NzksNyArODkxLDcgQEAgZG91YmxlIHBhcnNl
RGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZywg
Ym9vbCYgaGF2ZVQKIAogICAgIC8vICc5OSAyMzoxMjo0MCBHTVQnCiAgICAgaWYgKHllYXIgPD0g
MCAmJiAqZGF0ZVN0cmluZykgewotICAgICAgICBpZiAoIXBhcnNlTG9uZyhkYXRlU3RyaW5nLCAm
bmV3UG9zU3RyLCAxMCwgJnllYXIpKQorICAgICAgICBpZiAoIXBhcnNlSW50KGRhdGVTdHJpbmcs
ICZuZXdQb3NTdHIsIDEwLCAmeWVhcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKICAgICB9CiAKQEAgLTk2Niw3ICs5NzgsNyBA
QCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFy
KiBkYXRlU3RyaW5nLCBib29sJiBoYXZlVAogICAgIAogICAgIC8vIFRoZSB5ZWFyIG1heSBiZSBh
ZnRlciB0aGUgdGltZSBidXQgYmVmb3JlIHRoZSB0aW1lIHpvbmUuCiAgICAgaWYgKGlzQVNDSUlE
aWdpdCgqZGF0ZVN0cmluZykgJiYgeWVhciA9PSAtMSkgewotICAgICAgICBpZiAoIXBhcnNlTG9u
ZyhkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCwgJnllYXIpKQorICAgICAgICBpZiAoIXBhcnNl
SW50KGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwLCAmeWVhcikpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKICAgICAgICAgZGF0
ZVN0cmluZyA9IG5ld1Bvc1N0cjsKICAgICAgICAgc2tpcFNwYWNlc0FuZENvbW1lbnRzKGRhdGVT
dHJpbmcpOwpAQCAtOTgxLDggKzk5Myw4IEBAIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1p
bmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcsIGJvb2wmIGhhdmVUCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoKmRhdGVTdHJpbmcgPT0gJysnIHx8ICpkYXRlU3RyaW5nID09
ICctJykgewotICAgICAgICAgICAgbG9uZyBvOwotICAgICAgICAgICAgaWYgKCFwYXJzZUxvbmco
ZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTAsICZvKSkKKyAgICAgICAgICAgIGludCBvOworICAg
ICAgICAgICAgaWYgKCFwYXJzZUludChkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCwgJm8pKQog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0
X05hTigpOwogICAgICAgICAgICAgZGF0ZVN0cmluZyA9IG5ld1Bvc1N0cjsKIApAQCAtOTkwLDcg
KzEwMDIsNyBAQCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhj
b25zdCBjaGFyKiBkYXRlU3RyaW5nLCBib29sJiBoYXZlVAogICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogCiAgICAgICAgICAg
ICBpbnQgc2duID0gKG8gPCAwKSA/IC0xIDogMTsKLSAgICAgICAgICAgIG8gPSBsYWJzKG8pOwor
ICAgICAgICAgICAgbyA9IGFicyhvKTsKICAgICAgICAgICAgIGlmICgqZGF0ZVN0cmluZyAhPSAn
OicpIHsKICAgICAgICAgICAgICAgICBpZiAobyA+PSAyNCkKICAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0ID0gKChvIC8gMTAwKSAqIDYwICsgKG8gJSAxMDApKSAqIHNnbjsKQEAgLTk5OCw4ICsx
MDEwLDggQEAgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29u
c3QgY2hhciogZGF0ZVN0cmluZywgYm9vbCYgaGF2ZVQKICAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0ID0gbyAqIDYwICogc2duOwogICAgICAgICAgICAgfSBlbHNlIHsgLy8gR01UKzA1OjAwCiAg
ICAgICAgICAgICAgICAgKytkYXRlU3RyaW5nOyAvLyBza2lwIHRoZSAnOicKLSAgICAgICAgICAg
ICAgICBsb25nIG8yOwotICAgICAgICAgICAgICAgIGlmICghcGFyc2VMb25nKGRhdGVTdHJpbmcs
ICZuZXdQb3NTdHIsIDEwLCAmbzIpKQorICAgICAgICAgICAgICAgIGludCBvMjsKKyAgICAgICAg
ICAgICAgICBpZiAoIXBhcnNlSW50KGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwLCAmbzIpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpx
dWlldF9OYU4oKTsKICAgICAgICAgICAgICAgICBkYXRlU3RyaW5nID0gbmV3UG9zU3RyOwogICAg
ICAgICAgICAgICAgIG9mZnNldCA9IChvICogNjAgKyBvMikgKiBzZ247CkBAIC0xMDIwLDcgKzEw
MzIsNyBAQCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25z
dCBjaGFyKiBkYXRlU3RyaW5nLCBib29sJiBoYXZlVAogICAgIHNraXBTcGFjZXNBbmRDb21tZW50
cyhkYXRlU3RyaW5nKTsKIAogICAgIGlmICgqZGF0ZVN0cmluZyAmJiB5ZWFyID09IC0xKSB7Ci0g
ICAgICAgIGlmICghcGFyc2VMb25nKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwLCAmeWVhcikp
CisgICAgICAgIGlmICghcGFyc2VJbnQoZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTAsICZ5ZWFy
KSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0
X05hTigpOwogICAgICAgICBkYXRlU3RyaW5nID0gbmV3UG9zU3RyOwogICAgICAgICBza2lwU3Bh
Y2VzQW5kQ29tbWVudHMoZGF0ZVN0cmluZyk7CkBAIC0xMDUzLDcgKzEwNjUsNyBAQCBkb3VibGUg
cGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3Ry
aW5nKQogICAgIGlmICghaGF2ZVRaKSB7CiAgICAgICAgIGRvdWJsZSB1dGNPZmZzZXQgPSBjYWxj
dWxhdGVVVENPZmZzZXQoKTsKICAgICAgICAgZG91YmxlIGRzdE9mZnNldCA9IGNhbGN1bGF0ZURT
VE9mZnNldChtcywgdXRjT2Zmc2V0KTsKLSAgICAgICAgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8aW50
PigodXRjT2Zmc2V0ICsgZHN0T2Zmc2V0KSAvIG1zUGVyTWludXRlKTsKKyAgICAgICAgb2Zmc2V0
ID0gKHV0Y09mZnNldCArIGRzdE9mZnNldCkgLyBtc1Blck1pbnV0ZTsKICAgICB9CiAgICAgcmV0
dXJuIG1zIC0gKG9mZnNldCAqIG1zUGVyTWludXRlKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183996</attachid>
            <date>2013-01-22 08:47:53 -0800</date>
            <delta_ts>2013-01-30 09:49:33 -0800</delta_ts>
            <desc>Patch 2 of 2</desc>
            <filename>bug-107503-20130122084448.patch</filename>
            <type>text/plain</type>
            <size>11653</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGViNjU5YTZjMWYxYWJkY2Q0NzJjODY5
YjdiOGQ3YmI0MzhhZGU0OWEuLmRlZmQ3ODFjNzc2NDYzNmQ1MDEwZmZiYTViMTI2Yjc5OTE5ODQz
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTMtMDEtMjEgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXBsYWNlIHBhcnNlSW50KCkgYW5kIHBhcnNlTG9u
ZygpIHdpdGggcGFyc2VJbnRlZ2VyKCkKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTA3
NTAzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKFdURjo6cGFyc2VJbnRlZ2VyKToKKyAgICAgICAg
LSBSZXBsYWNlIHBhcnNlSW50KCkgYW5kIHBhcnNlTG9uZygpIHdpdGggdGhpcyB0ZW1wbGF0ZSBt
ZXRob2QuCisKKyAgICAgICAgKFdURjo6cGFyc2VFUzVEYXRlUG9ydGlvbik6CisgICAgICAgIChX
VEY6OnBhcnNlRVM1VGltZVBvcnRpb24pOgorICAgICAgICAoV1RGOjpwYXJzZURhdGVGcm9tTnVs
bFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKToKKyAgICAgICAgLSBTd2l0Y2ggZnJvbSBwYXJzZUludCgp
IGFuZCBwYXJzZUxvbmcoKSB0byBwYXJzZUludGVnZXIoKS4KKworMjAxMy0wMS0yMSAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCiAgICAgICAgIEZpeCBEYXRlTWF0aC5jcHAg
dG8gY29tcGlsZSB3aXRoIC1Xc2hvcnRlbi02NC10by0zMgogICAgICAgICA8aHR0cDovL3dlYmtp
dC5vcmcvYi8xMDc1MDM+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcAppbmRleCAwNWQ3MDQ4MzA5NmEzMjcxN2Nl
ZTQ0YmQyNDYzNTQxMTIyZWMwYWU2Li42N2Q0N2NiZDdiNTY5YzliYjE0YmE3YjA5ZTNhMjcwYTk2
Y2MzN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCkBAIC01NTQsMjIgKzU1NCwxNCBAQCBzdGF0aWMgaW50
IGZpbmRNb250aChjb25zdCBjaGFyKiBtb250aFN0cikKICAgICByZXR1cm4gLTE7CiB9CiAKLXN0
YXRpYyBib29sIHBhcnNlSW50KGNvbnN0IGNoYXIqIHN0cmluZywgY2hhcioqIHN0b3BQb3NpdGlv
biwgaW50IGJhc2UsIGludCogcmVzdWx0KQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMg
Ym9vbCBwYXJzZUludGVnZXIoY29uc3QgY2hhciogc3RyaW5nLCBjaGFyKiogc3RvcFBvc2l0aW9u
LCBpbnQgYmFzZSwgVCogcmVzdWx0KQogewotICAgIGxvbmcgbG9uZ1Jlc3VsdCA9IHN0cnRvbChz
dHJpbmcsIHN0b3BQb3NpdGlvbiwgYmFzZSk7CisgICAgbG9uZyBwYXJzZVJlc3VsdCA9IHN0cnRv
bChzdHJpbmcsIHN0b3BQb3NpdGlvbiwgYmFzZSk7CiAgICAgLy8gQXZvaWQgdGhlIHVzZSBvZiBl
cnJubyBhcyBpdCBpcyBub3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MgQ0UKLSAgICBpZiAoc3RyaW5n
ID09ICpzdG9wUG9zaXRpb24gfHwgbG9uZ1Jlc3VsdCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1pbigpIHx8IGxvbmdSZXN1bHQgPj0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxpbnQ+
KGxvbmdSZXN1bHQpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBwYXJzZUxv
bmcoY29uc3QgY2hhciogc3RyaW5nLCBjaGFyKiogc3RvcFBvc2l0aW9uLCBpbnQgYmFzZSwgbG9u
ZyogcmVzdWx0KQotewotICAgICpyZXN1bHQgPSBzdHJ0b2woc3RyaW5nLCBzdG9wUG9zaXRpb24s
IGJhc2UpOwotICAgIC8vIEF2b2lkIHRoZSB1c2Ugb2YgZXJybm8gYXMgaXQgaXMgbm90IGF2YWls
YWJsZSBvbiBXaW5kb3dzIENFCi0gICAgaWYgKHN0cmluZyA9PSAqc3RvcFBvc2l0aW9uIHx8ICpy
ZXN1bHQgPT0gc3RkOjpudW1lcmljX2xpbWl0czxsb25nPjo6bWluKCkgfHwgKnJlc3VsdCA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPGxvbmc+OjptYXgoKSkKKyAgICBpZiAoc3RyaW5nID09ICpzdG9w
UG9zaXRpb24gfHwgcGFyc2VSZXN1bHQgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKCkg
fHwgcGFyc2VSZXN1bHQgPj0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VD4ocGFyc2VSZXN1bHQp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01ODMsNyArNTc1LDcgQEAgc3RhdGljIGNoYXIq
IHBhcnNlRVM1RGF0ZVBvcnRpb24oY29uc3QgY2hhciogY3VycmVudFBvc2l0aW9uLCBpbnQmIHll
YXIsIGxvbmcmIG0KICAgICAvLyBUaGlzIGlzIGEgYml0IG1vcmUgbGVuaWVudCBvbiB0aGUgeWVh
ciBzdHJpbmcgdGhhbiBFUzUgc3BlY2lmaWVzOgogICAgIC8vIGluc3RlYWQgb2YgcmVzdHJpY3Rp
bmcgdG8gNCBkaWdpdHMgKG9yIDYgZGlnaXRzIHdpdGggbWFuZGF0b3J5ICsvLSksCiAgICAgLy8g
aXQgYWNjZXB0cyBhbnkgaW50ZWdlciB2YWx1ZS4gQ29uc2lkZXIgdGhpcyBhbiBpbXBsZW1lbnRh
dGlvbiBmYWxsYmFjay4KLSAgICBpZiAoIXBhcnNlSW50KGN1cnJlbnRQb3NpdGlvbiwgJnBvc3RQ
YXJzZVBvc2l0aW9uLCAxMCwgJnllYXIpKQorICAgIGlmICghcGFyc2VJbnRlZ2VyKGN1cnJlbnRQ
b3NpdGlvbiwgJnBvc3RQYXJzZVBvc2l0aW9uLCAxMCwgJnllYXIpKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIC8vIENoZWNrIGZvciBwcmVzZW5jZSBvZiAtTU0gcG9ydGlvbi4KQEAgLTU5Myw3
ICs1ODUsNyBAQCBzdGF0aWMgY2hhciogcGFyc2VFUzVEYXRlUG9ydGlvbihjb25zdCBjaGFyKiBj
dXJyZW50UG9zaXRpb24sIGludCYgeWVhciwgbG9uZyYgbQogICAgIAogICAgIGlmICghaXNBU0NJ
SURpZ2l0KCpjdXJyZW50UG9zaXRpb24pKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIXBh
cnNlTG9uZyhjdXJyZW50UG9zaXRpb24sICZwb3N0UGFyc2VQb3NpdGlvbiwgMTAsICZtb250aCkp
CisgICAgaWYgKCFwYXJzZUludGVnZXIoY3VycmVudFBvc2l0aW9uLCAmcG9zdFBhcnNlUG9zaXRp
b24sIDEwLCAmbW9udGgpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoKHBvc3RQYXJzZVBv
c2l0aW9uIC0gY3VycmVudFBvc2l0aW9uKSAhPSAyKQogICAgICAgICByZXR1cm4gMDsKQEAgLTYw
NSw3ICs1OTcsNyBAQCBzdGF0aWMgY2hhciogcGFyc2VFUzVEYXRlUG9ydGlvbihjb25zdCBjaGFy
KiBjdXJyZW50UG9zaXRpb24sIGludCYgeWVhciwgbG9uZyYgbQogICAgIAogICAgIGlmICghaXNB
U0NJSURpZ2l0KCpjdXJyZW50UG9zaXRpb24pKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAo
IXBhcnNlTG9uZyhjdXJyZW50UG9zaXRpb24sICZwb3N0UGFyc2VQb3NpdGlvbiwgMTAsICZkYXkp
KQorICAgIGlmICghcGFyc2VJbnRlZ2VyKGN1cnJlbnRQb3NpdGlvbiwgJnBvc3RQYXJzZVBvc2l0
aW9uLCAxMCwgJmRheSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICgocG9zdFBhcnNlUG9z
aXRpb24gLSBjdXJyZW50UG9zaXRpb24pICE9IDIpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNjIw
LDcgKzYxMiw3IEBAIHN0YXRpYyBjaGFyKiBwYXJzZUVTNVRpbWVQb3J0aW9uKGNoYXIqIGN1cnJl
bnRQb3NpdGlvbiwgbG9uZyYgaG91cnMsIGxvbmcmIG1pbnV0CiAgICAgY2hhciogcG9zdFBhcnNl
UG9zaXRpb247CiAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKmN1cnJlbnRQb3NpdGlvbikpCiAgICAg
ICAgIHJldHVybiAwOwotICAgIGlmICghcGFyc2VMb25nKGN1cnJlbnRQb3NpdGlvbiwgJnBvc3RQ
YXJzZVBvc2l0aW9uLCAxMCwgJmhvdXJzKSkKKyAgICBpZiAoIXBhcnNlSW50ZWdlcihjdXJyZW50
UG9zaXRpb24sICZwb3N0UGFyc2VQb3NpdGlvbiwgMTAsICZob3VycykpCiAgICAgICAgIHJldHVy
biAwOwogICAgIGlmICgqcG9zdFBhcnNlUG9zaXRpb24gIT0gJzonIHx8IChwb3N0UGFyc2VQb3Np
dGlvbiAtIGN1cnJlbnRQb3NpdGlvbikgIT0gMikKICAgICAgICAgcmV0dXJuIDA7CkBAIC02Mjgs
NyArNjIwLDcgQEAgc3RhdGljIGNoYXIqIHBhcnNlRVM1VGltZVBvcnRpb24oY2hhciogY3VycmVu
dFBvc2l0aW9uLCBsb25nJiBob3VycywgbG9uZyYgbWludXQKICAgICAKICAgICBpZiAoIWlzQVND
SUlEaWdpdCgqY3VycmVudFBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFw
YXJzZUxvbmcoY3VycmVudFBvc2l0aW9uLCAmcG9zdFBhcnNlUG9zaXRpb24sIDEwLCAmbWludXRl
cykpCisgICAgaWYgKCFwYXJzZUludGVnZXIoY3VycmVudFBvc2l0aW9uLCAmcG9zdFBhcnNlUG9z
aXRpb24sIDEwLCAmbWludXRlcykpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICgocG9zdFBh
cnNlUG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb24pICE9IDIpCiAgICAgICAgIHJldHVybiAwOwpA
QCAtNjQxLDcgKzYzMyw3IEBAIHN0YXRpYyBjaGFyKiBwYXJzZUVTNVRpbWVQb3J0aW9uKGNoYXIq
IGN1cnJlbnRQb3NpdGlvbiwgbG9uZyYgaG91cnMsIGxvbmcmIG1pbnV0CiAgICAgICAgIGxvbmcg
aW50U2Vjb25kczsKICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKmN1cnJlbnRQb3NpdGlvbikp
CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFwYXJzZUxvbmcoY3VycmVudFBv
c2l0aW9uLCAmcG9zdFBhcnNlUG9zaXRpb24sIDEwLCAmaW50U2Vjb25kcykpCisgICAgICAgIGlm
ICghcGFyc2VJbnRlZ2VyKGN1cnJlbnRQb3NpdGlvbiwgJnBvc3RQYXJzZVBvc2l0aW9uLCAxMCwg
JmludFNlY29uZHMpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmICgocG9zdFBh
cnNlUG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb24pICE9IDIpCiAgICAgICAgICAgICByZXR1cm4g
MDsKQEAgLTY1Nyw3ICs2NDksNyBAQCBzdGF0aWMgY2hhciogcGFyc2VFUzVUaW1lUG9ydGlvbihj
aGFyKiBjdXJyZW50UG9zaXRpb24sIGxvbmcmIGhvdXJzLCBsb25nJiBtaW51dAogICAgICAgICAg
ICAgCiAgICAgICAgICAgICAvLyBXZSBhcmUgbW9yZSBsZW5pZW50IHRoYW4gRVM1IGJ5IGFjY2Vw
dGluZyBtb3JlIG9yIGxlc3MgdGhhbiAzIGZyYWN0aW9uIGRpZ2l0cy4KICAgICAgICAgICAgIGxv
bmcgZnJhY1NlY29uZHM7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlTG9uZyhjdXJyZW50UG9zaXRp
b24sICZwb3N0UGFyc2VQb3NpdGlvbiwgMTAsICZmcmFjU2Vjb25kcykpCisgICAgICAgICAgICBp
ZiAoIXBhcnNlSW50ZWdlcihjdXJyZW50UG9zaXRpb24sICZwb3N0UGFyc2VQb3NpdGlvbiwgMTAs
ICZmcmFjU2Vjb25kcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGxvbmcgbnVtRnJhY0RpZ2l0cyA9IHBvc3RQYXJzZVBvc2l0aW9uIC0gY3Vy
cmVudFBvc2l0aW9uOwpAQCAtNjg0LDcgKzY3Niw3IEBAIHN0YXRpYyBjaGFyKiBwYXJzZUVTNVRp
bWVQb3J0aW9uKGNoYXIqIGN1cnJlbnRQb3NpdGlvbiwgbG9uZyYgaG91cnMsIGxvbmcmIG1pbnV0
CiAgICAgCiAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKmN1cnJlbnRQb3NpdGlvbikpCiAgICAgICAg
IHJldHVybiAwOwotICAgIGlmICghcGFyc2VMb25nKGN1cnJlbnRQb3NpdGlvbiwgJnBvc3RQYXJz
ZVBvc2l0aW9uLCAxMCwgJnR6SG91cnMpKQorICAgIGlmICghcGFyc2VJbnRlZ2VyKGN1cnJlbnRQ
b3NpdGlvbiwgJnBvc3RQYXJzZVBvc2l0aW9uLCAxMCwgJnR6SG91cnMpKQogICAgICAgICByZXR1
cm4gMDsKICAgICBpZiAoKnBvc3RQYXJzZVBvc2l0aW9uICE9ICc6JyB8fCAocG9zdFBhcnNlUG9z
aXRpb24gLSBjdXJyZW50UG9zaXRpb24pICE9IDIpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNjkz
LDcgKzY4NSw3IEBAIHN0YXRpYyBjaGFyKiBwYXJzZUVTNVRpbWVQb3J0aW9uKGNoYXIqIGN1cnJl
bnRQb3NpdGlvbiwgbG9uZyYgaG91cnMsIGxvbmcmIG1pbnV0CiAgICAgCiAgICAgaWYgKCFpc0FT
Q0lJRGlnaXQoKmN1cnJlbnRQb3NpdGlvbikpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmICgh
cGFyc2VMb25nKGN1cnJlbnRQb3NpdGlvbiwgJnBvc3RQYXJzZVBvc2l0aW9uLCAxMCwgJnR6TWlu
dXRlcykpCisgICAgaWYgKCFwYXJzZUludGVnZXIoY3VycmVudFBvc2l0aW9uLCAmcG9zdFBhcnNl
UG9zaXRpb24sIDEwLCAmdHpNaW51dGVzKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKChw
b3N0UGFyc2VQb3NpdGlvbiAtIGN1cnJlbnRQb3NpdGlvbikgIT0gMikKICAgICAgICAgcmV0dXJu
IDA7CkBAIC04MTYsNyArODA4LDcgQEAgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRl
ZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZywgYm9vbCYgaGF2ZVQKICAgICAvLyAn
IDA5LU5vdi05OSAyMzoxMjo0MCBHTVQnCiAgICAgY2hhciogbmV3UG9zU3RyOwogICAgIGxvbmcg
ZGF5OwotICAgIGlmICghcGFyc2VMb25nKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwLCAmZGF5
KSkKKyAgICBpZiAoIXBhcnNlSW50ZWdlcihkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCwgJmRh
eSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpOwogICAgIGRhdGVTdHJpbmcgPSBuZXdQb3NTdHI7CiAKQEAgLTgzNywyMCArODI5LDIwIEBA
IGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIq
IGRhdGVTdHJpbmcsIGJvb2wmIGhhdmVUCiAgICAgICAgIGlmIChkYXkgPD0gc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ+OjptaW4oKSB8fCBkYXkgPj0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+Ojpt
YXgoKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1
aWV0X05hTigpOwogICAgICAgICB5ZWFyID0gc3RhdGljX2Nhc3Q8aW50PihkYXkpOwotICAgICAg
ICBpZiAoIXBhcnNlTG9uZyhkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCwgJm1vbnRoKSkKKyAg
ICAgICAgaWYgKCFwYXJzZUludGVnZXIoZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTAsICZtb250
aCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWll
dF9OYU4oKTsKICAgICAgICAgbW9udGggLT0gMTsKICAgICAgICAgZGF0ZVN0cmluZyA9IG5ld1Bv
c1N0cjsKICAgICAgICAgaWYgKCpkYXRlU3RyaW5nKysgIT0gJy8nIHx8ICEqZGF0ZVN0cmluZykK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpOwotICAgICAgICBpZiAoIXBhcnNlTG9uZyhkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCwg
JmRheSkpCisgICAgICAgIGlmICghcGFyc2VJbnRlZ2VyKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIs
IDEwLCAmZGF5KSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OnF1aWV0X05hTigpOwogICAgICAgICBkYXRlU3RyaW5nID0gbmV3UG9zU3RyOwogICAgIH0g
ZWxzZSBpZiAoKmRhdGVTdHJpbmcgPT0gJy8nICYmIG1vbnRoID09IC0xKSB7CiAgICAgICAgIGRh
dGVTdHJpbmcrKzsKICAgICAgICAgLy8gVGhpcyBsb29rcyBsaWtlIGEgTU0vREQvWVlZWSBkYXRl
LCBub3QgYW4gUkZDIGRhdGUuCiAgICAgICAgIG1vbnRoID0gZGF5IC0gMTsgLy8gMC1iYXNlZAot
ICAgICAgICBpZiAoIXBhcnNlTG9uZyhkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCwgJmRheSkp
CisgICAgICAgIGlmICghcGFyc2VJbnRlZ2VyKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwLCAm
ZGF5KSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1
aWV0X05hTigpOwogICAgICAgICBpZiAoZGF5IDwgMSB8fCBkYXkgPiAzMSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwpAQCAtODkx
LDcgKzg4Myw3IEBAIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJz
KGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcsIGJvb2wmIGhhdmVUCiAKICAgICAvLyAnOTkgMjM6MTI6
NDAgR01UJwogICAgIGlmICh5ZWFyIDw9IDAgJiYgKmRhdGVTdHJpbmcpIHsKLSAgICAgICAgaWYg
KCFwYXJzZUludChkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCwgJnllYXIpKQorICAgICAgICBp
ZiAoIXBhcnNlSW50ZWdlcihkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCwgJnllYXIpKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7
CiAgICAgfQogCkBAIC05MTQsNyArOTA2LDcgQEAgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVy
bWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZywgYm9vbCYgaGF2ZVQKICAg
ICAgICAgICAgIHNraXBTcGFjZXNBbmRDb21tZW50cyhkYXRlU3RyaW5nKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHBhcnNlTG9uZyhkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCwgJmhvdXIpOwor
ICAgICAgICBwYXJzZUludGVnZXIoZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTAsICZob3VyKTsK
ICAgICAgICAgLy8gRG8gbm90IGNoZWNrIGZvciBlcnJubyBoZXJlIHNpbmNlIHdlIHdhbnQgdG8g
Y29udGludWUKICAgICAgICAgLy8gZXZlbiBpZiBlcnJubyB3YXMgc2V0IGJlY2FzdWUgd2UgYXJl
IHN0aWxsIGxvb2tpbmcKICAgICAgICAgLy8gZm9yIHRoZSB0aW1lem9uZSEKQEAgLTkzMyw3ICs5
MjUsNyBAQCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25z
dCBjaGFyKiBkYXRlU3RyaW5nLCBib29sJiBoYXZlVAogICAgICAgICAgICAgaWYgKCpkYXRlU3Ry
aW5nKysgIT0gJzonKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OnF1aWV0X05hTigpOwogCi0gICAgICAgICAgICBpZiAoIXBhcnNlTG9uZyhkYXRl
U3RyaW5nLCAmbmV3UG9zU3RyLCAxMCwgJm1pbnV0ZSkpCisgICAgICAgICAgICBpZiAoIXBhcnNl
SW50ZWdlcihkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCwgJm1pbnV0ZSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CiAg
ICAgICAgICAgICBkYXRlU3RyaW5nID0gbmV3UG9zU3RyOwogCkBAIC05NDgsNyArOTQwLDcgQEAg
ZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciog
ZGF0ZVN0cmluZywgYm9vbCYgaGF2ZVQKICAgICAgICAgICAgIGlmICgqZGF0ZVN0cmluZyA9PSc6
JykgewogICAgICAgICAgICAgICAgIGRhdGVTdHJpbmcrKzsKIAotICAgICAgICAgICAgICAgIGlm
ICghcGFyc2VMb25nKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwLCAmc2Vjb25kKSkKKyAgICAg
ICAgICAgICAgICBpZiAoIXBhcnNlSW50ZWdlcihkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCwg
JnNlY29uZCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OnF1aWV0X05hTigpOwogICAgICAgICAgICAgICAgIGRhdGVTdHJpbmcgPSBuZXdQ
b3NTdHI7CiAKQEAgLTk3OCw3ICs5NzAsNyBAQCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJt
aW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nLCBib29sJiBoYXZlVAogICAg
IAogICAgIC8vIFRoZSB5ZWFyIG1heSBiZSBhZnRlciB0aGUgdGltZSBidXQgYmVmb3JlIHRoZSB0
aW1lIHpvbmUuCiAgICAgaWYgKGlzQVNDSUlEaWdpdCgqZGF0ZVN0cmluZykgJiYgeWVhciA9PSAt
MSkgewotICAgICAgICBpZiAoIXBhcnNlSW50KGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwLCAm
eWVhcikpCisgICAgICAgIGlmICghcGFyc2VJbnRlZ2VyKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIs
IDEwLCAmeWVhcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjpxdWlldF9OYU4oKTsKICAgICAgICAgZGF0ZVN0cmluZyA9IG5ld1Bvc1N0cjsKICAgICAg
ICAgc2tpcFNwYWNlc0FuZENvbW1lbnRzKGRhdGVTdHJpbmcpOwpAQCAtOTk0LDcgKzk4Niw3IEBA
IGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIq
IGRhdGVTdHJpbmcsIGJvb2wmIGhhdmVUCiAKICAgICAgICAgaWYgKCpkYXRlU3RyaW5nID09ICcr
JyB8fCAqZGF0ZVN0cmluZyA9PSAnLScpIHsKICAgICAgICAgICAgIGludCBvOwotICAgICAgICAg
ICAgaWYgKCFwYXJzZUludChkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCwgJm8pKQorICAgICAg
ICAgICAgaWYgKCFwYXJzZUludGVnZXIoZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTAsICZvKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWll
dF9OYU4oKTsKICAgICAgICAgICAgIGRhdGVTdHJpbmcgPSBuZXdQb3NTdHI7CiAKQEAgLTEwMTEs
NyArMTAwMyw3IEBAIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJz
KGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcsIGJvb2wmIGhhdmVUCiAgICAgICAgICAgICB9IGVsc2Ug
eyAvLyBHTVQrMDU6MDAKICAgICAgICAgICAgICAgICArK2RhdGVTdHJpbmc7IC8vIHNraXAgdGhl
ICc6JwogICAgICAgICAgICAgICAgIGludCBvMjsKLSAgICAgICAgICAgICAgICBpZiAoIXBhcnNl
SW50KGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwLCAmbzIpKQorICAgICAgICAgICAgICAgIGlm
ICghcGFyc2VJbnRlZ2VyKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwLCAmbzIpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9O
YU4oKTsKICAgICAgICAgICAgICAgICBkYXRlU3RyaW5nID0gbmV3UG9zU3RyOwogICAgICAgICAg
ICAgICAgIG9mZnNldCA9IChvICogNjAgKyBvMikgKiBzZ247CkBAIC0xMDMyLDcgKzEwMjQsNyBA
QCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFy
KiBkYXRlU3RyaW5nLCBib29sJiBoYXZlVAogICAgIHNraXBTcGFjZXNBbmRDb21tZW50cyhkYXRl
U3RyaW5nKTsKIAogICAgIGlmICgqZGF0ZVN0cmluZyAmJiB5ZWFyID09IC0xKSB7Ci0gICAgICAg
IGlmICghcGFyc2VJbnQoZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTAsICZ5ZWFyKSkKKyAgICAg
ICAgaWYgKCFwYXJzZUludGVnZXIoZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTAsICZ5ZWFyKSkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpOwogICAgICAgICBkYXRlU3RyaW5nID0gbmV3UG9zU3RyOwogICAgICAgICBza2lwU3BhY2Vz
QW5kQ29tbWVudHMoZGF0ZVN0cmluZyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>