<?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>85039</bug_id>
          
          <creation_ts>2012-04-27 02:14:36 -0700</creation_ts>
          <short_desc>[Mac] Add LocalizedDateMac</short_desc>
          <delta_ts>2012-04-30 20:06:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</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>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>84388</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>haraken</cc>
    
    <cc>keishi</cc>
    
    <cc>mjs</cc>
    
    <cc>morrita</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>611323</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-27 02:14:36 -0700</bug_when>
    <thetext>It will be used for Chromium-Mac. Of couse we can use it for Apple Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611327</commentid>
    <comment_count>1</comment_count>
      <attachid>139153</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-27 02:24:00 -0700</bug_when>
    <thetext>Created attachment 139153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611708</commentid>
    <comment_count>2</comment_count>
      <attachid>139153</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-27 11:17:43 -0700</bug_when>
    <thetext>Comment on attachment 139153
Patch

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

Waiting for keishi-san&apos;s informal review. I am not familiar with ObjC.

&gt; Source/WebCore/platform/text/mac/LocalizedDateMac.mm:94
&gt; +static bool isYearSymbol(UChar letter) { return letter == &apos;y&apos; || letter == &apos;Y&apos; || letter == &apos;u&apos;; }
&gt; +static bool isMonthSymbol(UChar letter) { return letter == &apos;M&apos; || letter == &apos;L&apos;; }

Why do you support &apos;Y&apos;, &apos;u&apos; and &apos;L&apos; in Mac but not support in Win?

&gt; Source/WebCore/platform/text/mac/LocalizedDateMac.mm:123
&gt; +            String text = dateFormatYearText();
&gt; +            buffer.append(text.isEmpty() ? &quot;Year&quot; : text);

Let&apos;s put

    String text = dateFormatYearText();
    String textString = text.isEmpty() ? &quot;Year&quot; : text;

outside of the for loop, and then use textString here.

&gt; Source/WebCore/platform/text/mac/LocalizedDateMac.mm:128
&gt; +            String text = dateFormatMonthText();
&gt; +            buffer.append(text.isEmpty() ? &quot;Month&quot; : text);

Ditto.

&gt; Source/WebCore/platform/text/mac/LocalizedDateMac.mm:133
&gt; +            String text = dateFormatDayInMonthText();
&gt; +            buffer.append(text.isEmpty() ? &quot;Day&quot; : text);

Ditto.

&gt; Source/WebCore/platform/text/mac/LocalizedDateMac.mm:174
&gt; +    labels.append(&quot;January&quot;);
&gt; +    labels.append(&quot;February&quot;);
&gt; +    labels.append(&quot;March&quot;);
&gt; +    labels.append(&quot;April&quot;);
&gt; +    labels.append(&quot;May&quot;);
&gt; +    labels.append(&quot;June&quot;);
&gt; +    labels.append(&quot;July&quot;);
&gt; +    labels.append(&quot;August&quot;);
&gt; +    labels.append(&quot;September&quot;);
&gt; +    labels.append(&quot;October&quot;);
&gt; +    labels.append(&quot;November&quot;);
&gt; +    labels.append(&quot;December&quot;);

Let&apos;s implement WTF::monthFullName[]. You are using in Win too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612372</commentid>
    <comment_count>3</comment_count>
      <attachid>139153</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-28 19:04:58 -0700</bug_when>
    <thetext>Comment on attachment 139153
Patch

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

&gt;&gt; Source/WebCore/platform/text/mac/LocalizedDateMac.mm:94
&gt;&gt; +static bool isMonthSymbol(UChar letter) { return letter == &apos;M&apos; || letter == &apos;L&apos;; }
&gt; 
&gt; Why do you support &apos;Y&apos;, &apos;u&apos; and &apos;L&apos; in Mac but not support in Win?

Because the format used in OS X and the format used in Windows are different.

Windows:
http://msdn.microsoft.com/en-us/library/dd317787(v=vs.85).aspx

OS X:
Using http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns according to the NSDateFormatter reference.

&gt;&gt; Source/WebCore/platform/text/mac/LocalizedDateMac.mm:123
&gt;&gt; +            buffer.append(text.isEmpty() ? &quot;Year&quot; : text);
&gt; 
&gt; Let&apos;s put
&gt; 
&gt;     String text = dateFormatYearText();
&gt;     String textString = text.isEmpty() ? &quot;Year&quot; : text;
&gt; 
&gt; outside of the for loop, and then use textString here.

done

&gt;&gt; Source/WebCore/platform/text/mac/LocalizedDateMac.mm:128
&gt;&gt; +            buffer.append(text.isEmpty() ? &quot;Month&quot; : text);
&gt; 
&gt; Ditto.

done

&gt;&gt; Source/WebCore/platform/text/mac/LocalizedDateMac.mm:133
&gt;&gt; +            buffer.append(text.isEmpty() ? &quot;Day&quot; : text);
&gt; 
&gt; Ditto.

done

&gt;&gt; Source/WebCore/platform/text/mac/LocalizedDateMac.mm:174
&gt;&gt; +    labels.append(&quot;December&quot;);
&gt; 
&gt; Let&apos;s implement WTF::monthFullName[]. You are using in Win too.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612373</commentid>
    <comment_count>4</comment_count>
      <attachid>139386</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-28 19:11:50 -0700</bug_when>
    <thetext>Created attachment 139386
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612374</commentid>
    <comment_count>5</comment_count>
      <attachid>139386</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-28 19:38:23 -0700</bug_when>
    <thetext>Comment on attachment 139386
Patch 2

Looks OK to me. r+ it for now. If keishi-san would have other thoughts, please fix it in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612458</commentid>
    <comment_count>6</comment_count>
      <attachid>139386</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-29 17:25:14 -0700</bug_when>
    <thetext>Comment on attachment 139386
Patch 2

Clearing flags on attachment: 139386

Committed r115600: &lt;http://trac.webkit.org/changeset/115600&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612459</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-29 17:25:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612473</commentid>
    <comment_count>8</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-04-29 18:45:01 -0700</bug_when>
    <thetext>Looks like this change broke the chromium-mac build. Also why was this done Chromium-specific? And finally, the claim that this is covered by &lt;fast/forms/date/date-appearance.html&gt; seems dubious, since that doesn&apos;t test the effect of different preference settings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613193</commentid>
    <comment_count>9</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-30 20:06:07 -0700</bug_when>
    <thetext>Thank you for the comment.

(In reply to comment #8)
&gt; Looks like this change broke the chromium-mac build.

Fixed.

&gt; Also why was this done Chromium-specific?

Because non-Chromium ports have no code paths to use this file for now.  I&apos;m going to add &lt;input type=date&gt; related files to each of build files later.

&gt; And finally, the claim that this is covered by &lt;fast/forms/date/date-appearance.html&gt; seems dubious, since that doesn&apos;t test the effect of different preference settings.

I have no good idea to test this with various settings.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139153</attachid>
            <date>2012-04-27 02:24:00 -0700</date>
            <delta_ts>2012-04-28 19:11:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85039-20120427182358.patch</filename>
            <type>text/plain</type>
            <size>11277</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIzZGM0ODEzNTlmNGI3
YmNiY2IxODM3MTU4Nzg4NzM0MjQ4NTkzYy4uZDUwYjY4ZjE2NDQyODY5MzdkMWM3NTYzN2JiZDkw
MmE3Y2FkNTZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA0LTI3ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBbTWFjXSBBZGQgTG9jYWxp
emVkRGF0ZU1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODUwMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBIGRhdGUgc2hvd24gPGlucHV0IHR5cGU9ZGF0ZT4gc2hvdWxkIGJlIGZvcm1hdHRlZCBmb3Ig
dXNlcidzIE9TCisgICAgICAgIHNldHRpbmdzLiBDaHJvbWl1bS1NYWMgdXNlZCBMb2NhbGl6ZWRE
YXRlSUNVLmNwcCB0byBmb3JtYXQvcGFyc2UgdmlzaWJsZQorICAgICAgICBkYXRlIHN0cmluZ3Mg
YW5kIGl0IGRpZG4ndCByZWZsZWN0IHVzZXItc2V0dGluZ3MuCisKKyAgICAgICAgVGVzdDogY292
ZXJlZCBieSBmYXN0L2Zvcm1zL2RhdGUvZGF0ZS1hcHBlYXJhbmNlLmh0bWwKKworICAgICAgICAq
IFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICBVc2UgTG9jYWxpemVkRGF0ZU1hYy5t
bSBmb3IgT1MgWCBpbnN0ZWFkIG9mIExvY2FsaXplZERhdGVJQ1UuY3BwLgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaTogQWRkIExvY2FsaXplZERhdGVNYWMubW0KKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L21hYy9Mb2NhbGl6ZWREYXRlTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVNob3J0RGF0ZUZvcm1hdHRlcik6CisgICAgICAgIENyZWF0ZXMgYSBOU0RhdGVGb3JtYXR0
ZXIgd2l0aCBkZXNpcmVkIHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VMb2NhbGl6
ZWREYXRlKTogSW1wZWxtZW50IGZvciB0eWVwPWRhdGUuCisgICAgICAgIChXZWJDb3JlOjpmb3Jt
YXRMb2NhbGl6ZWREYXRlKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc1llYXJTeW1ib2wp
OiBBIHJlYWRhYmlsaXR5IGhlbHBlciBmb3IgZm9ybWF0IHN0cmluZyBwYXJzaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6aXNNb250aFN5bWJvbCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNE
YXlTeW1ib2wpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplRGF0ZUZvcm1hdCk6
CisgICAgICAgIFBhcnNlIGEgZm9ybWF0IHN0cmluZywgYW5kIHJlcGxhY2Ugc3ltYm9scyB3aXRo
IHVzZXItZnJpZW5kbHkgbGFiZWxzLgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkRGF0ZUZv
cm1hdFRleHQpOgorICAgICAgICBHZXRzIGEgZm9ybWF0IHN0cmluZywgYW5kIGFwcGx5IGxvY2Fs
aXplRGF0ZUZvcm1hdCgpLgorICAgICAgICAoV2ViQ29yZTo6bW9udGhMYWJlbHMpOiBPYnRhaW4g
bW9udGggbmFtZXMgZnJvbSB0aGUgc3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6d2Vla0RheVNo
b3J0TGFiZWxzKTogT2J0YWluIHdlZWsgZGF5IHN5bWJvbHMgZnJvbSB0aGUgc3lzdGVtLgorICAg
ICAgICAoV2ViQ29yZTo6Zmlyc3REYXlPZldlZWspOiBPYnRhaW4gZmlyc3QgZGF5IG9mIHdlZWsg
ZnJvbSB0aGUgc3lzdGVtLgorCiAyMDEyLTA0LTI2ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3
ZWJraXQub3JnPgogCiAgICAgICAgIGRhdGFsaXN0OiBGb3JtIGNvbnRyb2wgaW4gYSA8ZGF0YWxp
c3Q+IHNob3VsZCBiZSBiYXJyZWQgZnJvbSBjb25zdHJhaW50IHZhbGlkYXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggYTFmMTMyZjNhNzFjMDQ2MmZmNGFjMGFk
NjU3MDY5NWIwNDE0NTkyNy4uY2EzYzcyNzI2NGQ3ODBkMzEzZjkwZDVlYzM1YmQ2M2VjZmYyMDMy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTE2MDAsNiArMTYw
MCwxMCBAQAogCiAgICAgICAgICAgICBbJ2luY2x1ZGUnLCAnV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2VcXC5tbSQnXSwKIAorICAgICAgICAgICAgIyBXZSB1c2Ug
TG9jYWxpemVkRGF0ZU1hYy5tbSBpbnN0ZWFkIG9mIExvY2FsaXplZERhdGVJQ1UuY3BwLgorICAg
ICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL3RleHQvTG9jYWxpemVkRGF0ZUlDVVxcLmNw
cCQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGl6
ZWREYXRlTWFjXFwubW0kJ10sCisKICAgICAgICAgICAgICMgVGhlIE1hYyB1c2VzIHBsYXRmb3Jt
L21hYy9LaWxsUmluZ01hYy5tbSBpbnN0ZWFkIG9mIHRoZSBkdW1teQogICAgICAgICAgICAgIyBp
bXBsZW1lbnRhdGlvbi4KICAgICAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9LaWxsUmlu
Z05vbmVcXC5jcHAkJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZjEzNzk4Y2ZhOWIxYjcyMmQyNmQ0
NDBiYjczNDUzZDEwNTA3ODJhOS4uMjQ0ODdhODM3NmNiNmI5Yjc4Yjg1NTRjYjJlMmE5NTlhM2Ey
N2IzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDUxNyw2ICs0NTE3LDcgQEAKICAgICAgICAgICAg
ICdwbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q29kZWNHdGsuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS90ZXh0L2d0ay9UZXh0Q29kZWNHdGsuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4
dC9tYWMvSHlwaGVuYXRpb25NYWMubW0nLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvbWFj
L0xvY2FsaXplZERhdGVNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvbWFjL0xv
Y2FsaXplZE51bWJlck1hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9tYWMvU2hh
cGVBcmFiaWMuYycsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9tYWMvU2hhcGVBcmFiaWMu
aCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGl6
ZWREYXRlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxpemVk
RGF0ZU1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWE1ZTYyMWQ1MmEyMTA1NmNlZmQyNGJlOTllODE1MGNj
NzhlZmViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9t
YWMvTG9jYWxpemVkRGF0ZU1hYy5tbQpAQCAtMCwwICsxLDIwOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJMb2NhbGl6ZWREYXRlLmgiCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNE
YXRlRm9ybWF0dGVyLmg+CisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2luY2x1ZGUg
PGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCit1c2luZyBuYW1l
c3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBOU0RhdGVGb3JtYXR0
ZXIgKmNyZWF0ZVNob3J0RGF0ZUZvcm1hdHRlcigpCit7CisgICAgTlNEYXRlRm9ybWF0dGVyICpm
b3JtYXR0ZXIgPSBbW05TRGF0ZUZvcm1hdHRlciBhbGxvY10gaW5pdF07CisgICAgW2Zvcm1hdHRl
ciBzZXREYXRlU3R5bGU6TlNEYXRlRm9ybWF0dGVyU2hvcnRTdHlsZV07CisgICAgW2Zvcm1hdHRl
ciBzZXRUaW1lU3R5bGU6TlNEYXRlRm9ybWF0dGVyTm9TdHlsZV07CisgICAgW2Zvcm1hdHRlciBz
ZXRUaW1lWm9uZTpbTlNUaW1lWm9uZSB0aW1lWm9uZVdpdGhBYmJyZXZpYXRpb246QCJVVEMiXV07
CisgICAgW2Zvcm1hdHRlciBzZXRDYWxlbmRhcjpbW05TQ2FsZW5kYXIgYWxsb2NdIGluaXRXaXRo
Q2FsZW5kYXJJZGVudGlmaWVyOk5TR3JlZ29yaWFuQ2FsZW5kYXJdXTsKKyAgICByZXR1cm4gZm9y
bWF0dGVyOworfQorCitkb3VibGUgcGFyc2VMb2NhbGl6ZWREYXRlKGNvbnN0IFN0cmluZyYgaW5w
dXQsIERhdGVDb21wb25lbnRzOjpUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZTogeworICAgICAgICBSZXRhaW5QdHI8TlNEYXRl
Rm9ybWF0dGVyPiBmb3JtYXR0ZXIoQWRvcHROUywgY3JlYXRlU2hvcnREYXRlRm9ybWF0dGVyKCkp
OworICAgICAgICByZXR1cm4gW1tmb3JtYXR0ZXIuZ2V0KCkgZGF0ZUZyb21TdHJpbmc6aW5wdXRd
IHRpbWVJbnRlcnZhbFNpbmNlMTk3MF0gKiBtc1BlclNlY29uZDsKKyAgICB9CisgICAgY2FzZSBE
YXRlQ29tcG9uZW50czo6RGF0ZVRpbWU6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZVRp
bWVMb2NhbDoKKyAgICBjYXNlIERhdGVDb21wb25lbnRzOjpNb250aDoKKyAgICBjYXNlIERhdGVD
b21wb25lbnRzOjpUaW1lOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHM6OldlZWs6CisgICAgY2Fz
ZSBEYXRlQ29tcG9uZW50czo6SW52YWxpZDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJl
dHVybiBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKK30KKworU3RyaW5nIGZv
cm1hdExvY2FsaXplZERhdGUoY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGVDb21wb25lbnRzKQor
eworICAgIHN3aXRjaCAoZGF0ZUNvbXBvbmVudHMudHlwZSgpKSB7CisgICAgY2FzZSBEYXRlQ29t
cG9uZW50czo6RGF0ZTogeworICAgICAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBmb3Jt
YXR0ZXIoQWRvcHROUywgY3JlYXRlU2hvcnREYXRlRm9ybWF0dGVyKCkpOworICAgICAgICBOU1Rp
bWVJbnRlcnZhbCBpbnRlcnZhbCA9IGRhdGVDb21wb25lbnRzLm1pbGxpc2Vjb25kc1NpbmNlRXBv
Y2goKSAvIG1zUGVyU2Vjb25kOworICAgICAgICByZXR1cm4gU3RyaW5nKFtmb3JtYXR0ZXIuZ2V0
KCkgc3RyaW5nRnJvbURhdGU6W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpp
bnRlcnZhbF1dKTsKKyAgICB9CisgICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWU6Cisg
ICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIERhdGVDb21w
b25lbnRzOjpNb250aDoKKyAgICBjYXNlIERhdGVDb21wb25lbnRzOjpUaW1lOgorICAgIGNhc2Ug
RGF0ZUNvbXBvbmVudHM6OldlZWs6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50czo6SW52YWxpZDoK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworI2lmIEVO
QUJMRShDQUxFTkRBUl9QSUNLRVIpCitzdGF0aWMgYm9vbCBpc1llYXJTeW1ib2woVUNoYXIgbGV0
dGVyKSB7IHJldHVybiBsZXR0ZXIgPT0gJ3knIHx8IGxldHRlciA9PSAnWScgfHwgbGV0dGVyID09
ICd1JzsgfQorc3RhdGljIGJvb2wgaXNNb250aFN5bWJvbChVQ2hhciBsZXR0ZXIpIHsgcmV0dXJu
IGxldHRlciA9PSAnTScgfHwgbGV0dGVyID09ICdMJzsgfQorc3RhdGljIGJvb2wgaXNEYXlTeW1i
b2woVUNoYXIgbGV0dGVyKSB7IHJldHVybiBsZXR0ZXIgPT0gJ2QnOyB9CisKKy8vIGh0dHA6Ly91
bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS02Lmh0bWwjRGF0ZV9Gb3JtYXRfUGF0dGVybnMK
K3N0YXRpYyBTdHJpbmcgbG9jYWxpemVEYXRlRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQor
eworICAgIFN0cmluZ0J1aWxkZXIgYnVmZmVyOworICAgIGJvb2wgaW5RdW90ZSA9IGZhbHNlOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb3JtYXQubGVuZ3RoKCk7ICsraSkgeworICAg
ICAgICBVQ2hhciBjaCA9IGZvcm1hdFtpXTsKKyAgICAgICAgaWYgKGluUXVvdGUpIHsKKyAgICAg
ICAgICAgIGlmIChjaCA9PSAnXCcnKSB7CisgICAgICAgICAgICAgICAgaW5RdW90ZSA9IGZhbHNl
OworICAgICAgICAgICAgICAgIEFTU0VSVChpKTsKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0
W2kgLSAxXSA9PSAnXCcnKQorICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCdcJycp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChjaCk7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjaCA9PSAn
XCcnKSB7CisgICAgICAgICAgICBpblF1b3RlID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChpID4g
MCAmJiBmb3JtYXRbaSAtIDFdID09ICdcJycpCisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVu
ZChjaCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNZZWFyU3ltYm9sKGNoKSkgeworICAgICAgICAg
ICAgaWYgKGkgPiAwICYmIGZvcm1hdFtpIC0gMV0gPT0gY2gpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBTdHJpbmcgdGV4dCA9IGRhdGVGb3JtYXRZZWFyVGV4dCgpOwor
ICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCh0ZXh0LmlzRW1wdHkoKSA/ICJZZWFyIiA6IHRleHQp
OworICAgICAgICB9IGVsc2UgaWYgKGlzTW9udGhTeW1ib2woY2gpKSB7CisgICAgICAgICAgICBp
ZiAoaSA+IDAgJiYgZm9ybWF0W2kgLSAxXSA9PSBjaCkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIFN0cmluZyB0ZXh0ID0gZGF0ZUZvcm1hdE1vbnRoVGV4dCgpOworICAg
ICAgICAgICAgYnVmZmVyLmFwcGVuZCh0ZXh0LmlzRW1wdHkoKSA/ICJNb250aCIgOiB0ZXh0KTsK
KyAgICAgICAgfSBlbHNlIGlmIChpc0RheVN5bWJvbChjaCkpIHsKKyAgICAgICAgICAgIGlmIChp
ID4gMCAmJiBmb3JtYXRbaSAtIDFdID09IGNoKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgU3RyaW5nIHRleHQgPSBkYXRlRm9ybWF0RGF5SW5Nb250aFRleHQoKTsKKyAg
ICAgICAgICAgIGJ1ZmZlci5hcHBlbmQodGV4dC5pc0VtcHR5KCkgPyAiRGF5IiA6IHRleHQpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoY2gpOworICAgIH0KKyAg
ICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBsb2NhbGl6ZWREYXRlRm9y
bWF0VGV4dCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHRleHQsICgpKTsK
KyAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdGV4dDsKKyAgICBSZXRh
aW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBmb3JtYXR0ZXIoQWRvcHROUywgY3JlYXRlU2hvcnREYXRl
Rm9ybWF0dGVyKCkpOworICAgIHRleHQgPSBsb2NhbGl6ZURhdGVGb3JtYXQoU3RyaW5nKFtmb3Jt
YXR0ZXIuZ2V0KCkgZGF0ZUZvcm1hdF0pKTsKKyAgICByZXR1cm4gdGV4dDsKK30KKworY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG1vbnRoTGFiZWxzKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFZlY3RvcjxTdHJpbmc+LCBsYWJlbHMsICgpKTsKKyAgICBpZiAoIWxhYmVscy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBsYWJlbHM7CisgICAgbGFiZWxzLnJlc2VydmVDYXBhY2l0eSgxMik7
CisgICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gZm9ybWF0dGVyKEFkb3B0TlMsIGNyZWF0
ZVNob3J0RGF0ZUZvcm1hdHRlcigpKTsKKyAgICBOU0FycmF5ICphcnJheSA9IFtmb3JtYXR0ZXIu
Z2V0KCkgbW9udGhTeW1ib2xzXTsKKyAgICBpZiAoW2FycmF5IGNvdW50XSA9PSAxMikgeworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTI7ICsraSkKKyAgICAgICAgICAgIGxhYmVs
cy5hcHBlbmQoU3RyaW5nKFthcnJheSBvYmplY3RBdEluZGV4OmldKSk7CisgICAgICAgIHJldHVy
biBsYWJlbHM7CisgICAgfQorICAgIGxhYmVscy5hcHBlbmQoIkphbnVhcnkiKTsKKyAgICBsYWJl
bHMuYXBwZW5kKCJGZWJydWFyeSIpOworICAgIGxhYmVscy5hcHBlbmQoIk1hcmNoIik7CisgICAg
bGFiZWxzLmFwcGVuZCgiQXByaWwiKTsKKyAgICBsYWJlbHMuYXBwZW5kKCJNYXkiKTsKKyAgICBs
YWJlbHMuYXBwZW5kKCJKdW5lIik7CisgICAgbGFiZWxzLmFwcGVuZCgiSnVseSIpOworICAgIGxh
YmVscy5hcHBlbmQoIkF1Z3VzdCIpOworICAgIGxhYmVscy5hcHBlbmQoIlNlcHRlbWJlciIpOwor
ICAgIGxhYmVscy5hcHBlbmQoIk9jdG9iZXIiKTsKKyAgICBsYWJlbHMuYXBwZW5kKCJOb3ZlbWJl
ciIpOworICAgIGxhYmVscy5hcHBlbmQoIkRlY2VtYmVyIik7CisgICAgcmV0dXJuIGxhYmVsczsK
K30KKworY29uc3QgVmVjdG9yPFN0cmluZz4mIHdlZWtEYXlTaG9ydExhYmVscygpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8U3RyaW5nPiwgbGFiZWxzLCAoKSk7CisgICAgaWYg
KCFsYWJlbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbGFiZWxzOworICAgIGxhYmVscy5y
ZXNlcnZlQ2FwYWNpdHkoNyk7CisgICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gZm9ybWF0
dGVyKEFkb3B0TlMsIGNyZWF0ZVNob3J0RGF0ZUZvcm1hdHRlcigpKTsKKyAgICBOU0FycmF5ICph
cnJheSA9IFtmb3JtYXR0ZXIuZ2V0KCkgc2hvcnRXZWVrZGF5U3ltYm9sc107CisgICAgaWYgKFth
cnJheSBjb3VudF0gPT0gNykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgNzsg
KytpKQorICAgICAgICAgICAgbGFiZWxzLmFwcGVuZChTdHJpbmcoW2FycmF5IG9iamVjdEF0SW5k
ZXg6aV0pKTsKKyAgICAgICAgcmV0dXJuIGxhYmVsczsKKyAgICB9CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoV1RGOjp3ZWVrZGF5TmFtZSk7ICsraSkgewor
ICAgICAgICAvLyB3ZWVrZGF5TmFtZSBzdGFydHMgd2l0aCBNb25kYXkuCisgICAgICAgIGxhYmVs
cy5hcHBlbmQoV1RGOjp3ZWVrZGF5TmFtZVsoaSArIDYpICUgN10pOworICAgIH0KKyAgICByZXR1
cm4gbGFiZWxzOworfQorCit1bnNpZ25lZCBmaXJzdERheU9mV2VlaygpCit7CisgICAgUmV0YWlu
UHRyPE5TQ2FsZW5kYXI+IGNhbGVuZGFyKEFkb3B0TlMsIFtbTlNDYWxlbmRhciBhbGxvY10gaW5p
dFdpdGhDYWxlbmRhcklkZW50aWZpZXI6TlNHcmVnb3JpYW5DYWxlbmRhcl0pOworICAgIC8vIFRo
ZSBkb2N1bWVudCBmb3IgTlNDYWxlbmRhciAtIGZpcnN0V2Vla2RheSBkb2Vzbid0IGhhdmUgYW4g
ZXhwbGFuYXRpb24gb2YKKyAgICAvLyBmaXJzdFdlZWtkYXkgdmFsdWUuIFdlIGNhbiBndWVzcyBp
dCBieSB0aGUgZG9jdW1lbnQgb2YgTlNEYXRlQ29tcG9uZW50cyAtCisgICAgLy8gd2Vla0RheSwg
c28gaXQgY2FuIGJlIDEgdGhyb3VnaCA3IGFuZCAxIGlzIFN1bmRheS4KKyAgICByZXR1cm4gW2Nh
bGVuZGFyLmdldCgpIGZpcnN0V2Vla2RheV0gLSAxOworfQorI2VuZGlmCisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139386</attachid>
            <date>2012-04-28 19:11:50 -0700</date>
            <delta_ts>2012-04-29 17:25:14 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-85039-20120429111148.patch</filename>
            <type>text/plain</type>
            <size>13888</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYwZjM0NWM2MjQyMDFjN2Q2ZTI4NzZj
NzNhNzI2NzVkODRkNzdmMDUuLjE0M2VkYmUxYzJjOWM2ZjgxODViZGM4YTgyNjFmMDRlMWUyNWNk
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDQtMjggIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtNYWNdIEFkZCBMb2NhbGl6ZWREYXRlTWFjCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTAzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0RhdGVNYXRo
Lmg6CisgICAgICAgIChXVEYpOiBBZGQgbW9udGhGdWxsTmFtZVtdLiBJdCBpcyB1c2VmdWwgdG8g
bWFrZSBmYWxsYmFjayBtb250aAorICAgICAgICBuYW1lcyBmb3IgY2FsZW5kYXIvZGF0ZSByZWxh
dGVkIGZlYXR1cmVzLgorCiAyMDEyLTA0LTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gQWRkIGEgd2F5IHRvIHJlZ2lzdGVyIGN1
c3RvbSB1cmkgc2NoZW1lcyBpbiBXZWJLaXQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTczMDU4YWFhNWQ4YjRi
MzNkMmQ4ZWUxODcxYjY0Y2RhNGE1ZWVlZS4uNTg4ODY2MThiYWY1MjBhMzMwNWIyNTQ1NWFmOGEx
MWU4NzRjYThiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA0LTI4ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBbTWFjXSBBZGQgTG9jYWxp
emVkRGF0ZU1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODUwMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBIGRhdGUgc2hvd24gPGlucHV0IHR5cGU9ZGF0ZT4gc2hvdWxkIGJlIGZvcm1hdHRlZCBmb3Ig
dXNlcidzIE9TCisgICAgICAgIHNldHRpbmdzLiBDaHJvbWl1bS1NYWMgdXNlZCBMb2NhbGl6ZWRE
YXRlSUNVLmNwcCB0byBmb3JtYXQvcGFyc2UgdmlzaWJsZQorICAgICAgICBkYXRlIHN0cmluZ3Mg
YW5kIGl0IGRpZG4ndCByZWZsZWN0IHVzZXItc2V0dGluZ3MuCisKKyAgICAgICAgVGVzdDogY292
ZXJlZCBieSBmYXN0L2Zvcm1zL2RhdGUvZGF0ZS1hcHBlYXJhbmNlLmh0bWwKKworICAgICAgICAq
IFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICBVc2UgTG9jYWxpemVkRGF0ZU1hYy5t
bSBmb3IgT1MgWCBpbnN0ZWFkIG9mIExvY2FsaXplZERhdGVJQ1UuY3BwLgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaTogQWRkIExvY2FsaXplZERhdGVNYWMubW0KKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L21hYy9Mb2NhbGl6ZWREYXRlTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVNob3J0RGF0ZUZvcm1hdHRlcik6CisgICAgICAgIENyZWF0ZXMgYSBOU0RhdGVGb3JtYXR0
ZXIgd2l0aCBkZXNpcmVkIHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VMb2NhbGl6
ZWREYXRlKTogSW1wZWxtZW50IGZvciB0eWVwPWRhdGUuCisgICAgICAgIChXZWJDb3JlOjpmb3Jt
YXRMb2NhbGl6ZWREYXRlKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc1llYXJTeW1ib2wp
OiBBIHJlYWRhYmlsaXR5IGhlbHBlciBmb3IgZm9ybWF0IHN0cmluZyBwYXJzaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6aXNNb250aFN5bWJvbCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNE
YXlTeW1ib2wpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplRGF0ZUZvcm1hdCk6
CisgICAgICAgIFBhcnNlIGEgZm9ybWF0IHN0cmluZywgYW5kIHJlcGxhY2Ugc3ltYm9scyB3aXRo
IHVzZXItZnJpZW5kbHkgbGFiZWxzLgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkRGF0ZUZv
cm1hdFRleHQpOgorICAgICAgICBHZXRzIGEgZm9ybWF0IHN0cmluZywgYW5kIGFwcGx5IGxvY2Fs
aXplRGF0ZUZvcm1hdCgpLgorICAgICAgICAoV2ViQ29yZTo6bW9udGhMYWJlbHMpOiBPYnRhaW4g
bW9udGggbmFtZXMgZnJvbSB0aGUgc3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6d2Vla0RheVNo
b3J0TGFiZWxzKTogT2J0YWluIHdlZWsgZGF5IHN5bWJvbHMgZnJvbSB0aGUgc3lzdGVtLgorICAg
ICAgICAoV2ViQ29yZTo6Zmlyc3REYXlPZldlZWspOiBPYnRhaW4gZmlyc3QgZGF5IG9mIHdlZWsg
ZnJvbSB0aGUgc3lzdGVtLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvSUNVTG9jYWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMpOiBVc2VzIFdURjo6
bW9udGhGdWxsTmFtZS4KKwogMjAxMi0wNC0yOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFNtb290aCBzY3JvbGxpbmcgbmVlZHMgYSBuZXcga2V5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaApp
bmRleCBmYzFhOGQ4ZTQ0YmY0NTZmYTJiMjM5YTAzNDFiMTkzZTk4OTgyZmJkLi42MmFkZDVlZWVh
MGJiN2UzOGM1NDI5ZmRhYjFkNWJmYjYxYzhkNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9EYXRlTWF0aC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKQEAgLTc1LDYgKzc1
LDcgQEAgaW5saW5lIGRvdWJsZSBqc0N1cnJlbnRUaW1lKCkKIAogY29uc3QgY2hhciogY29uc3Qg
d2Vla2RheU5hbWVbN10gPSB7ICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNh
dCIsICJTdW4iIH07CiBjb25zdCBjaGFyKiBjb25zdCBtb250aE5hbWVbMTJdID0geyAiSmFuIiwg
IkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLCAiSnVsIiwgIkF1ZyIsICJTZXAiLCAi
T2N0IiwgIk5vdiIsICJEZWMiIH07Citjb25zdCBjaGFyKiBjb25zdCBtb250aEZ1bGxOYW1lWzEy
XSA9IHsgIkphbnVhcnkiLCAiRmVicnVhcnkiLCAiTWFyY2giLCAiQXByaWwiLCAiTWF5IiwgIkp1
bmUiLCAiSnVseSIsICJBdWd1c3QiLCAiU2VwdGVtYmVyIiwgIk9jdG9iZXIiLCAiTm92ZW1iZXIi
LCAiRGVjZW1iZXIiIH07CiAKIGNvbnN0IGRvdWJsZSBob3Vyc1BlckRheSA9IDI0LjA7CiBjb25z
dCBkb3VibGUgbWludXRlc1BlckhvdXIgPSA2MC4wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cAppbmRleCBhMWYxMzJmM2E3MWMwNDYyZmY0YWMwYWQ2NTcwNjk1YjA0MTQ1OTI3
Li5jYTNjNzI3MjY0ZDc4MGQzMTNmOTBkNWVjMzViZDYzZWNmZjIwMzJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMTYwMCw2ICsxNjAwLDEwIEBACiAKICAgICAg
ICAgICAgIFsnaW5jbHVkZScsICdXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUlu
dGVyZmFjZVxcLm1tJCddLAogCisgICAgICAgICAgICAjIFdlIHVzZSBMb2NhbGl6ZWREYXRlTWFj
Lm1tIGluc3RlYWQgb2YgTG9jYWxpemVkRGF0ZUlDVS5jcHAuCisgICAgICAgICAgICBbJ2V4Y2x1
ZGUnLCAncGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWREYXRlSUNVXFwuY3BwJCddLAorICAgICAgICAg
ICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsaXplZERhdGVNYWNcXC5tbSQn
XSwKKwogICAgICAgICAgICAgIyBUaGUgTWFjIHVzZXMgcGxhdGZvcm0vbWFjL0tpbGxSaW5nTWFj
Lm1tIGluc3RlYWQgb2YgdGhlIGR1bW15CiAgICAgICAgICAgICAjIGltcGxlbWVudGF0aW9uLgog
ICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL0tpbGxSaW5nTm9uZVxcLmNwcCQnXSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCA5MDQ2YmE5NjQxYzFhZGIxNDViYzZkMzA1OGUwNGEyYzViODFm
ZTFhLi44MjNmNjgyYTMyNWRlYjUxMTc5NmFiY2I1YzhhZWZmNThjMzgyZDU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC00NTIzLDYgKzQ1MjMsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQv
Z3RrL1RleHRDb2RlY0d0ay5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvZ3RrL1Rl
eHRDb2RlY0d0ay5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L21hYy9IeXBoZW5hdGlv
bk1hYy5tbScsCisgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxpemVkRGF0ZU1h
Yy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxpemVkTnVtYmVyTWFj
Lm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L21hYy9TaGFwZUFyYWJpYy5jJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L21hYy9TaGFwZUFyYWJpYy5oJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvSUNVTG9jYWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvSUNVTG9jYWxlLmNwcAppbmRleCA4OGNmMTMwZWY5NGJlZGE5NTRh
YTQ4MzVjNjYzZDFjNTUxZDNmNTEzLi43M2FmYTQ0NDczNGNmZDQzMjA3MjIzNjA2MDRiZjM2NzYz
YTBlNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0lDVUxvY2Fs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9JQ1VMb2NhbGUuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVk
ZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC00MTgs
MTkgKzQxOSw5IEBAIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBJQ1VMb2NhbGU6OmNyZWF0
ZUxhYmVsVmVjdG9yKFVEYXRlRm9ybWF0U3ltYm9sVHlwZSB0CiBzdGF0aWMgUGFzc093blB0cjxW
ZWN0b3I8U3RyaW5nPiA+IGNyZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMoKQogewogICAgIE93blB0
cjxWZWN0b3I8U3RyaW5nPiA+IGxhYmVscyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8U3RyaW5nPigp
KTsKLSAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eSgxMik7Ci0gICAgbGFiZWxzLT5hcHBlbmQo
IkphbnVhcnkiKTsKLSAgICBsYWJlbHMtPmFwcGVuZCgiRmVicnVhcnkiKTsKLSAgICBsYWJlbHMt
PmFwcGVuZCgiTWFyY2giKTsKLSAgICBsYWJlbHMtPmFwcGVuZCgiQXByaWwiKTsKLSAgICBsYWJl
bHMtPmFwcGVuZCgiTWF5Iik7Ci0gICAgbGFiZWxzLT5hcHBlbmQoIkp1bmUiKTsKLSAgICBsYWJl
bHMtPmFwcGVuZCgiSnVseSIpOwotICAgIGxhYmVscy0+YXBwZW5kKCJBdWd1c3QiKTsKLSAgICBs
YWJlbHMtPmFwcGVuZCgiU2VwdGVtYmVyIik7Ci0gICAgbGFiZWxzLT5hcHBlbmQoIk9jdG9iZXIi
KTsKLSAgICBsYWJlbHMtPmFwcGVuZCgiTm92ZW1iZXIiKTsKLSAgICBsYWJlbHMtPmFwcGVuZCgi
RGVjZW1iZXIiKTsKKyAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eShXVEZfQVJSQVlfTEVOR1RI
KFdURjo6bW9udGhGdWxsTmFtZSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZf
QVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSk7ICsraSkKKyAgICAgICAgbGFiZWxzLT5h
cHBlbmQoV1RGOjptb250aEZ1bGxOYW1lW2ldKTsKICAgICByZXR1cm4gbGFiZWxzLnJlbGVhc2Uo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9j
YWxpemVkRGF0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2Fs
aXplZERhdGVNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI3ZGEyZTIzOTY2MTE1NTVhYjNjOTkxN2YzZDRk
OGY5ZDY3NzNlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL0xvY2FsaXplZERhdGVNYWMubW0KQEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTG9jYWxpemVkRGF0ZS5oIgorCisjaW1wb3J0IDxGb3VuZGF0aW9u
L05TRGF0ZUZvcm1hdHRlci5oPgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKKyNpbmNs
dWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKwordXNpbmcg
bmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgTlNEYXRlRm9y
bWF0dGVyICpjcmVhdGVTaG9ydERhdGVGb3JtYXR0ZXIoKQoreworICAgIE5TRGF0ZUZvcm1hdHRl
ciAqZm9ybWF0dGVyID0gW1tOU0RhdGVGb3JtYXR0ZXIgYWxsb2NdIGluaXRdOworICAgIFtmb3Jt
YXR0ZXIgc2V0RGF0ZVN0eWxlOk5TRGF0ZUZvcm1hdHRlclNob3J0U3R5bGVdOworICAgIFtmb3Jt
YXR0ZXIgc2V0VGltZVN0eWxlOk5TRGF0ZUZvcm1hdHRlck5vU3R5bGVdOworICAgIFtmb3JtYXR0
ZXIgc2V0VGltZVpvbmU6W05TVGltZVpvbmUgdGltZVpvbmVXaXRoQWJicmV2aWF0aW9uOkAiVVRD
Il1dOworICAgIFtmb3JtYXR0ZXIgc2V0Q2FsZW5kYXI6W1tOU0NhbGVuZGFyIGFsbG9jXSBpbml0
V2l0aENhbGVuZGFySWRlbnRpZmllcjpOU0dyZWdvcmlhbkNhbGVuZGFyXV07CisgICAgcmV0dXJu
IGZvcm1hdHRlcjsKK30KKworZG91YmxlIHBhcnNlTG9jYWxpemVkRGF0ZShjb25zdCBTdHJpbmcm
IGlucHV0LCBEYXRlQ29tcG9uZW50czo6VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2UgRGF0ZUNvbXBvbmVudHM6OkRhdGU6IHsKKyAgICAgICAgUmV0YWluUHRyPE5T
RGF0ZUZvcm1hdHRlcj4gZm9ybWF0dGVyKEFkb3B0TlMsIGNyZWF0ZVNob3J0RGF0ZUZvcm1hdHRl
cigpKTsKKyAgICAgICAgcmV0dXJuIFtbZm9ybWF0dGVyLmdldCgpIGRhdGVGcm9tU3RyaW5nOmlu
cHV0XSB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdICogbXNQZXJTZWNvbmQ7CisgICAgfQorICAgIGNh
c2UgRGF0ZUNvbXBvbmVudHM6OkRhdGVUaW1lOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHM6OkRh
dGVUaW1lTG9jYWw6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50czo6TW9udGg6CisgICAgY2FzZSBE
YXRlQ29tcG9uZW50czo6VGltZToKKyAgICBjYXNlIERhdGVDb21wb25lbnRzOjpXZWVrOgorICAg
IGNhc2UgRGF0ZUNvbXBvbmVudHM6OkludmFsaWQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICByZXR1cm4gbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7Cit9CisKK1N0cmlu
ZyBmb3JtYXRMb2NhbGl6ZWREYXRlKGNvbnN0IERhdGVDb21wb25lbnRzJiBkYXRlQ29tcG9uZW50
cykKK3sKKyAgICBzd2l0Y2ggKGRhdGVDb21wb25lbnRzLnR5cGUoKSkgeworICAgIGNhc2UgRGF0
ZUNvbXBvbmVudHM6OkRhdGU6IHsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4g
Zm9ybWF0dGVyKEFkb3B0TlMsIGNyZWF0ZVNob3J0RGF0ZUZvcm1hdHRlcigpKTsKKyAgICAgICAg
TlNUaW1lSW50ZXJ2YWwgaW50ZXJ2YWwgPSBkYXRlQ29tcG9uZW50cy5taWxsaXNlY29uZHNTaW5j
ZUVwb2NoKCkgLyBtc1BlclNlY29uZDsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhbZm9ybWF0dGVy
LmdldCgpIHN0cmluZ0Zyb21EYXRlOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5
NzA6aW50ZXJ2YWxdXSk7CisgICAgfQorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHM6OkRhdGVUaW1l
OgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHM6OkRhdGVUaW1lTG9jYWw6CisgICAgY2FzZSBEYXRl
Q29tcG9uZW50czo6TW9udGg6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50czo6VGltZToKKyAgICBj
YXNlIERhdGVDb21wb25lbnRzOjpXZWVrOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHM6OkludmFs
aWQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKyNp
ZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorc3RhdGljIGJvb2wgaXNZZWFyU3ltYm9sKFVDaGFy
IGxldHRlcikgeyByZXR1cm4gbGV0dGVyID09ICd5JyB8fCBsZXR0ZXIgPT0gJ1knIHx8IGxldHRl
ciA9PSAndSc7IH0KK3N0YXRpYyBib29sIGlzTW9udGhTeW1ib2woVUNoYXIgbGV0dGVyKSB7IHJl
dHVybiBsZXR0ZXIgPT0gJ00nIHx8IGxldHRlciA9PSAnTCc7IH0KK3N0YXRpYyBib29sIGlzRGF5
U3ltYm9sKFVDaGFyIGxldHRlcikgeyByZXR1cm4gbGV0dGVyID09ICdkJzsgfQorCisvLyBodHRw
Oi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtNi5odG1sI0RhdGVfRm9ybWF0X1BhdHRl
cm5zCitzdGF0aWMgU3RyaW5nIGxvY2FsaXplRGF0ZUZvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1h
dCkKK3sKKyAgICBTdHJpbmcgeWVhclRleHQgPSBkYXRlRm9ybWF0WWVhclRleHQoKS5pc0VtcHR5
KCkgPyAiWWVhciIgOiBkYXRlRm9ybWF0WWVhclRleHQoKTsKKyAgICBTdHJpbmcgbW9udGhUZXh0
ID0gZGF0ZUZvcm1hdE1vbnRoVGV4dCgpLmlzRW1wdHkoKSA/ICJNb250aCIgOiBkYXRlRm9ybWF0
TW9udGhUZXh0KCk7CisgICAgU3RyaW5nIGRheVRleHQgPSBkYXRlRm9ybWF0RGF5SW5Nb250aFRl
eHQoKS5pc0VtcHR5KCkgPyAiRGF5IiA6IGRhdGVGb3JtYXREYXlJbk1vbnRoVGV4dCgpOworICAg
IFN0cmluZ0J1aWxkZXIgYnVmZmVyOworICAgIGJvb2wgaW5RdW90ZSA9IGZhbHNlOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb3JtYXQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBV
Q2hhciBjaCA9IGZvcm1hdFtpXTsKKyAgICAgICAgaWYgKGluUXVvdGUpIHsKKyAgICAgICAgICAg
IGlmIChjaCA9PSAnXCcnKSB7CisgICAgICAgICAgICAgICAgaW5RdW90ZSA9IGZhbHNlOworICAg
ICAgICAgICAgICAgIEFTU0VSVChpKTsKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0W2kgLSAx
XSA9PSAnXCcnKQorICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCdcJycpOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChjaCk7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjaCA9PSAnXCcnKSB7
CisgICAgICAgICAgICBpblF1b3RlID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChpID4gMCAmJiBm
b3JtYXRbaSAtIDFdID09ICdcJycpCisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChjaCk7
CisgICAgICAgIH0gZWxzZSBpZiAoaXNZZWFyU3ltYm9sKGNoKSkgeworICAgICAgICAgICAgaWYg
KGkgPiAwICYmIGZvcm1hdFtpIC0gMV0gPT0gY2gpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHllYXJUZXh0KTsKKyAgICAgICAgfSBlbHNlIGlm
IChpc01vbnRoU3ltYm9sKGNoKSkgeworICAgICAgICAgICAgaWYgKGkgPiAwICYmIGZvcm1hdFtp
IC0gMV0gPT0gY2gpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBidWZm
ZXIuYXBwZW5kKG1vbnRoVGV4dCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNEYXlTeW1ib2woY2gp
KSB7CisgICAgICAgICAgICBpZiAoaSA+IDAgJiYgZm9ybWF0W2kgLSAxXSA9PSBjaCkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoZGF5VGV4dCk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChjaCk7CisgICAgfQor
ICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIGxvY2FsaXplZERhdGVG
b3JtYXRUZXh0KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdGV4dCwgKCkp
OworICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0ZXh0OworICAgIFJl
dGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGZvcm1hdHRlcihBZG9wdE5TLCBjcmVhdGVTaG9ydERh
dGVGb3JtYXR0ZXIoKSk7CisgICAgdGV4dCA9IGxvY2FsaXplRGF0ZUZvcm1hdChTdHJpbmcoW2Zv
cm1hdHRlci5nZXQoKSBkYXRlRm9ybWF0XSkpOworICAgIHJldHVybiB0ZXh0OworfQorCitjb25z
dCBWZWN0b3I8U3RyaW5nPiYgbW9udGhMYWJlbHMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoVmVjdG9yPFN0cmluZz4sIGxhYmVscywgKCkpOworICAgIGlmICghbGFiZWxzLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIGxhYmVsczsKKyAgICBsYWJlbHMucmVzZXJ2ZUNhcGFjaXR5KDEy
KTsKKyAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBmb3JtYXR0ZXIoQWRvcHROUywgY3Jl
YXRlU2hvcnREYXRlRm9ybWF0dGVyKCkpOworICAgIE5TQXJyYXkgKmFycmF5ID0gW2Zvcm1hdHRl
ci5nZXQoKSBtb250aFN5bWJvbHNdOworICAgIGlmIChbYXJyYXkgY291bnRdID09IDEyKSB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAxMjsgKytpKQorICAgICAgICAgICAgbGFi
ZWxzLmFwcGVuZChTdHJpbmcoW2FycmF5IG9iamVjdEF0SW5kZXg6aV0pKTsKKyAgICAgICAgcmV0
dXJuIGxhYmVsczsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJB
WV9MRU5HVEgoV1RGOjptb250aEZ1bGxOYW1lKTsgKytpKQorICAgICAgICBsYWJlbHMtPmFwcGVu
ZChXVEY6Om1vbnRoRnVsbE5hbWVbaV0pOworICAgIHJldHVybiBsYWJlbHM7Cit9CisKK2NvbnN0
IFZlY3RvcjxTdHJpbmc+JiB3ZWVrRGF5U2hvcnRMYWJlbHMoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoVmVjdG9yPFN0cmluZz4sIGxhYmVscywgKCkpOworICAgIGlmICghbGFiZWxzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGxhYmVsczsKKyAgICBsYWJlbHMucmVzZXJ2ZUNhcGFj
aXR5KDcpOworICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGZvcm1hdHRlcihBZG9wdE5T
LCBjcmVhdGVTaG9ydERhdGVGb3JtYXR0ZXIoKSk7CisgICAgTlNBcnJheSAqYXJyYXkgPSBbZm9y
bWF0dGVyLmdldCgpIHNob3J0V2Vla2RheVN5bWJvbHNdOworICAgIGlmIChbYXJyYXkgY291bnRd
ID09IDcpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDc7ICsraSkKKyAgICAg
ICAgICAgIGxhYmVscy5hcHBlbmQoU3RyaW5nKFthcnJheSBvYmplY3RBdEluZGV4OmldKSk7Cisg
ICAgICAgIHJldHVybiBsYWJlbHM7CisgICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBXVEZfQVJSQVlfTEVOR1RIKFdURjo6d2Vla2RheU5hbWUpOyArK2kpIHsKKyAgICAgICAgLy8g
d2Vla2RheU5hbWUgc3RhcnRzIHdpdGggTW9uZGF5LgorICAgICAgICBsYWJlbHMuYXBwZW5kKFdU
Rjo6d2Vla2RheU5hbWVbKGkgKyA2KSAlIDddKTsKKyAgICB9CisgICAgcmV0dXJuIGxhYmVsczsK
K30KKwordW5zaWduZWQgZmlyc3REYXlPZldlZWsoKQoreworICAgIFJldGFpblB0cjxOU0NhbGVu
ZGFyPiBjYWxlbmRhcihBZG9wdE5TLCBbW05TQ2FsZW5kYXIgYWxsb2NdIGluaXRXaXRoQ2FsZW5k
YXJJZGVudGlmaWVyOk5TR3JlZ29yaWFuQ2FsZW5kYXJdKTsKKyAgICAvLyBUaGUgZG9jdW1lbnQg
Zm9yIE5TQ2FsZW5kYXIgLSBmaXJzdFdlZWtkYXkgZG9lc24ndCBoYXZlIGFuIGV4cGxhbmF0aW9u
IG9mCisgICAgLy8gZmlyc3RXZWVrZGF5IHZhbHVlLiBXZSBjYW4gZ3Vlc3MgaXQgYnkgdGhlIGRv
Y3VtZW50IG9mIE5TRGF0ZUNvbXBvbmVudHMgLQorICAgIC8vIHdlZWtEYXksIHNvIGl0IGNhbiBi
ZSAxIHRocm91Z2ggNyBhbmQgMSBpcyBTdW5kYXkuCisgICAgcmV0dXJuIFtjYWxlbmRhci5nZXQo
KSBmaXJzdFdlZWtkYXldIC0gMTsKK30KKyNlbmRpZgorCit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>