<?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>99963</bug_id>
          
          <creation_ts>2012-10-22 00:24:25 -0700</creation_ts>
          <short_desc>Introduce Localizer::standAloneMonthLabels</short_desc>
          <delta_ts>2012-10-22 19:12:58 -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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>100060</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>haraken</cc>
    
    <cc>morrita</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>747268</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-22 00:24:25 -0700</bug_when>
    <thetext>We realized full stand-alone month names were necessary for input[type=month] UI in addition to short stand-alone month names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747279</commentid>
    <comment_count>1</comment_count>
      <attachid>169841</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-22 00:52:05 -0700</bug_when>
    <thetext>Created attachment 169841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747468</commentid>
    <comment_count>2</comment_count>
      <attachid>169841</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-22 05:53:19 -0700</bug_when>
    <thetext>Comment on attachment 169841
Patch

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

&gt; Source/WebCore/platform/text/LocaleICU.cpp:334
&gt; +    if (m_monthLabels)

This should be:

  if (!m_monthLabels.isEmpty())

&gt; Source/WebCore/platform/text/LocaleICU.cpp:343
&gt; +    if (!initializeShortDateFormat()) {
&gt; +        m_monthLabels = createFallbackMonthLabels();
&gt; +        return *m_monthLabels;
&gt; +    }
&gt; +    m_monthLabels = createLabelVector(m_shortDateFormat, UDAT_MONTHS, UCAL_JANUARY, 12);
&gt; +    if (m_monthLabels)
&gt; +        return *m_monthLabels;
&gt; +    m_monthLabels = createFallbackMonthLabels();

Just like LocaleICU::standAloneMonthLabels(), I would prefer:

if (initializeShortDateFormat()) {
  if (OwnPtr&lt;Vector&lt;String&gt; &gt; labels = createLabelVector(m_shortDateFormat, UDAT_MONTHS, UCAL_JANUARY, 12)) {
    m_monthLabels = labels;
    return *m_monthLabels;
  }
}
m_monthLabels = createFallbackMonthLabels();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748155</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-22 18:22:58 -0700</bug_when>
    <thetext>Committed r132170: &lt;http://trac.webkit.org/changeset/132170&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748157</commentid>
    <comment_count>4</comment_count>
      <attachid>169841</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-22 18:24:47 -0700</bug_when>
    <thetext>Comment on attachment 169841
Patch

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

&gt;&gt; Source/WebCore/platform/text/LocaleICU.cpp:343
&gt;&gt; +    m_monthLabels = createFallbackMonthLabels();
&gt; 
&gt; Just like LocaleICU::standAloneMonthLabels(), I would prefer:
&gt; 
&gt; if (initializeShortDateFormat()) {
&gt;   if (OwnPtr&lt;Vector&lt;String&gt; &gt; labels = createLabelVector(m_shortDateFormat, UDAT_MONTHS, UCAL_JANUARY, 12)) {
&gt;     m_monthLabels = labels;
&gt;     return *m_monthLabels;
&gt;   }
&gt; }
&gt; m_monthLabels = createFallbackMonthLabels();

ok.
Because m_monthLabels is OwnPtr and I&apos;d like to minimize the change, I have changed this function as follows:

{
    if (m_monthLabels)
        return *m_monthLabels;
    if (initializeShortDateFormat()) {
        m_monthLabels = createLabelVector(m_shortDateFormat, UDAT_MONTHS, UCAL_JANUARY, 12);
        if (m_monthLabels)
            return *m_monthLabels;
    }
    m_monthLabels = createFallbackMonthLabels();
    return *m_monthLabels;
}</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169841</attachid>
            <date>2012-10-22 00:52:05 -0700</date>
            <delta_ts>2012-10-22 18:24:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99963-20121022165044.patch</filename>
            <type>text/plain</type>
            <size>23462</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRkYmUxYTlkMDIzZDQy
MjA3NmQwNTJjZTIyNGIyMjcwOGM2NTEyMy4uMTI0ZTUwNDc3ZTA5NDc5ODRhM2I4YWMwMzY0NDlk
ZjMxZDI1YjBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTEwLTIyICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgTG9jYWxp
emVyOjpzdGFuZEFsb25lTW9udGhMYWJlbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk5OTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UgcmVhbGl6ZWQgZnVsbCBtb250aCBuYW1lcyBhbmQgZnVsbCBz
dGFuZC1hbG9uZSBtb250aCBuYW1lcyB3ZXJlCisgICAgICAgIG5lY2Vzc2FyeSBmb3IgaW5wdXRb
dHlwZT1tb250aF0gVUkuIFdlIGNoYW5nZSB0aGUgY29tcGlsZS1mbGFnIGZvcgorICAgICAgICBM
b2NhbGl6ZXI6Om1vbnRoTGFiZWxzIGZyb20gIkVOQUJMRShDQUxFTkRBUl9QSUNLRVIpIiB0bwor
ICAgICAgICAiRU5BQkxFKENBTEVOREFSX1BJQ0tFUikgfHwgRU5BQkxFKElOUFVUX01VTFRJUExF
X0ZJRUxEU19VSSksIiBhbmQKKyAgICAgICAgaW50cm9kdWNlIExvY2FsaXplcjo6c3RhbmRBbG9u
ZU1vbnRoTGFiZWxzLgorCisgICAgICAgIFRlc3RzOiBBZGQgc29tZSB0ZXN0IGNhc2VzIHRvIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vTG9jYWxlTWFjVGVzdC5jcHAKKyAgICAgICAgYW5kIExvY2Fs
aXplZERhdGVJQ1VUZXN0LmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxpemVy
Lmg6CisgICAgICAgIChMb2NhbGl6ZXIpOgorICAgICAgICAtIEFkZCBwdXJlIHZpcnR1YWwgc3Rh
bmRBbG9uZU1vbnRoTGFiZWxzLgorICAgICAgICAtIENoYW5nZSB0aGUgY29uZGl0aW9uIGZvciBt
b250aExhYmVscy4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHA6Cisg
ICAgICAgIChMb2NhbGVOb25lKTogRGVjbGFyZSBtb250aExhYmVscywgc3RhbmRBbG9uZU1vbnRo
TGFiZWxzLCBhbmQgbV9tb250aExhYmVscy4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZU5vbmU6
Om1vbnRoTGFiZWxzKToKKyAgICAgICAgQWRkZWQuIEl0IGFsd2F5cyByZXR1cm5zIEVuZ2xpc2gg
bW9udGggbmFtZXMuCisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVOb25lOjpzdGFuZEFsb25lTW9u
dGhMYWJlbHMpOgorICAgICAgICBBZGRlZC4gSnVzdCBjYWxscyBtb250aExhYmVscy4KKworICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlV2luLmg6CisgICAgICAgIChMb2NhbGVXaW4pOgor
ICAgICAgICBEZWNsYXJlIHN0YW5kQWxvbmVNb250aExhYmVscywgYW5kIGNoYW5nZSB0aGUgY29u
ZGl0aW9uIGZvciBtb250aExhYmVscy4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZVdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlKTogQ2hhbmdlIHRoZSBjb25kaXRpb24gZm9yIG1vbnRo
TGFiZWxzLgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlV2luOjpzdGFuZEFsb25lTW9udGhMYWJl
bHMpOgorICAgICAgICBBZGRlZC4gSnVzdCBjYWxscyBtb250aExhYmVscy4KKworICAgICAgICAq
IHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oOgorICAgICAgICAoTG9jYWxlTWFjKToKKyAg
ICAgICAgLSBBZGQgc3RhbmRBbG9uZU1vbnRoTGFiZWxzIGFuZCBtX3N0YW5kQWxvbmVNb250aExh
YmVscworICAgICAgICAtIENoYW5nZSB0aGUgY29uZGl0aW9uIGZvciBtb250aExhYmVscyBhbmQg
bV9tb250aExhYmVscy4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW06
CisgICAgICAgIChXZWJDb3JlKTogQ2hhbmdlIHRoZSBjb25kaXRpb24gZm9yIG1vbnRoTGFiZWxz
LgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlTWFjOjpzdGFuZEFsb25lTW9udGhMYWJlbHMpOgor
ICAgICAgICBBZGRlZC4gR2V0IHRoZSBpbmZvcm1hdGlvbiB3aXRoIE5TRGF0ZUZvcm1hdHRlcjo6
c3RhbmRhbG9uZU1vbnRoU3ltYm9scy4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxl
SUNVLmg6CisgICAgICAgIChMb2NhbGVJQ1UpOgorICAgICAgICAtIEFkZCBzdGFuZEFsb25lTW9u
dGhMYWJlbHMgYW5kIG1fc3RhbmRBbG9uZU1vbnRoTGFiZWxzCisgICAgICAgIC0gQ2hhbmdlIHRo
ZSBjb25kaXRpb24gZm9yIG1vbnRoTGFiZWxzIGFuZCBtX21vbnRoTGFiZWxzLgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlD
VTo6aW5pdGlhbGl6ZUNhbGVuZGFyKToKKyAgICAgICAgUmVtb3ZlIG1fbW9udGhMYWJlbHMgaW5p
dGlhbGl6YXRpb24gaW4gb3JkZXIgdG8gYXZvaWQgZGVwZW5kZWN5IGZyb20gbW9udGhMYWJlbHMu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNrTW9u
dGhMYWJlbHMpOiBDaGFuZ2UgdGhlIGNvbXBpbGUgY29uZGl0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYWxlSUNVOjptb250aExhYmVscyk6CisgICAgICAgIC0gQ2hhbmdlIHRoZSBjb21waWxl
IGNvbmRpdGlvbi4KKyAgICAgICAgLSBEb24ndCBkZXBlbmQgb24gaW5pdGlhbGl6ZUNhbGVuZGFy
IHRvIG1ha2UgdGhlIGNvZGUgZm9yCisgICAgICAgIEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVM
RFNfVUkpICYmICFFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKSBtaW5pbWFsLgorICAgICAgICAoV2Vi
Q29yZTo6TG9jYWxlSUNVOjpzdGFuZEFsb25lTW9udGhMYWJlbHMpOgorICAgICAgICBBZGRlZC4g
VGhlIGNvZGUgaXMgc2ltaWxhciB0byBzaG9ydFN0YW5kQWxvbmVNb250aExhYmVscy4KKwogMjAx
Mi0xMC0yMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUGFn
ZSBwb3B1cDogRml4IGNyYXNoIGJ5IGV2ZW50cyBhZnRlciBjbG9zaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGUxNTc3MTZhZjY2M2U1Mjk1NGMzMjhiOWUwZjE3MjQ2ZDdlMGRjYmQu
LjAxZDkzYzc4MWRmMjM5NzdlZTgwYjY5MzZlZjUxMjhlYTIwYmRjN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAtMjIgIEtlbnQgVGFtdXJhICA8
dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEludHJvZHVjZSBMb2NhbGl6ZXI6OnN0YW5k
QWxvbmVNb250aExhYmVscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTk5NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOb3RlIHRoYXQgd2UgZG9uJ3QgYWRkIHRlc3RzIHRvIExvY2FsZVdpblRlc3QgYmVj
YXVzZSBuZXcgZnVuY3Rpb24KKyAgICAgICAgTG9jYWxlV2luOjpzdGFuZEFsb25lTW9udGhMYWJl
bHMgaXMgZXF1aXZhbGVudCB0byBtb250aExhYmVscy4KKworICAgICAgICAqIHRlc3RzL0xvY2Fs
ZU1hY1Rlc3QuY3BwOgorICAgICAgICAoTG9jYWxlTWFjVGVzdDo6c3RhbmRBbG9uZU1vbnRoTGFi
ZWwpOiBBZGRlZCBhIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFRFU1RfRik6IEFkZCBzb21l
IHRlc3RzLiBXZSBkb24ndCB0ZXN0IHJ1X3J1IGxvY2FsZSBiZWNhdXNlIGl0IGhhcworICAgICAg
ICBkaWZmZXJlbnQgZGF0YSBvbiBPU1ggdmVyc2lvbnMuCisgICAgICAgICogdGVzdHMvTG9jYWxp
emVkRGF0ZUlDVVRlc3QuY3BwOgorICAgICAgICAoTG9jYWxpemVkRGF0ZUlDVVRlc3Q6OnN0YW5k
QWxvbmVNb250aExhYmVsKTogQWRkZWQgYSBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChURVNU
X0YpOiBBZGQgc29tZSB0ZXN0cy4KKwogMjAxMi0xMC0yMSAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUGFnZSBwb3B1cDogRml4IGNyYXNoIGJ5IGV2ZW50cyBh
ZnRlciBjbG9zaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xv
Y2FsZUlDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAK
aW5kZXggZTFhMWViMTdiODk1YzdjYjM0Y2NhZmU5MmJiOGFlNjg5Nzc5MDE3YS4uOTg5ZGFlOWE0
YWY5Y2M0MGI3ZDExNDI1ZThmZGYzNWE1ZjYwZGViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvTG9jYWxlSUNVLmNwcApAQCAtMjg3LDE1ICsyODcsNiBAQCBQYXNzT3duUHRyPFZl
Y3RvcjxTdHJpbmc+ID4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZv
cm1hdCogZGF0ZQogICAgIHJldHVybiBsYWJlbHMucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFz
c093blB0cjxWZWN0b3I8U3RyaW5nPiA+IGNyZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMoKQotewot
ICAgIE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IGxhYmVscyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8
U3RyaW5nPigpKTsKLSAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eShXVEZfQVJSQVlfTEVOR1RI
KFdURjo6bW9udGhGdWxsTmFtZSkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZf
QVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSk7ICsraSkKLSAgICAgICAgbGFiZWxzLT5h
cHBlbmQoV1RGOjptb250aEZ1bGxOYW1lW2ldKTsKLSAgICByZXR1cm4gbGFiZWxzLnJlbGVhc2Uo
KTsKLX0KLQogc3RhdGljIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBjcmVhdGVGYWxsYmFj
a1dlZWtEYXlTaG9ydExhYmVscygpCiB7CiAgICAgT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gbGFi
ZWxzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxTdHJpbmc+KCkpOwpAQCAtMzEyLDMyICszMDMsNDkg
QEAgc3RhdGljIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBjcmVhdGVGYWxsYmFja1dlZWtE
YXlTaG9ydExhYmVscygpCiAKIHZvaWQgTG9jYWxlSUNVOjppbml0aWFsaXplQ2FsZW5kYXIoKQog
ewotICAgIGlmIChtX21vbnRoTGFiZWxzICYmIG1fd2Vla0RheVNob3J0TGFiZWxzKQorICAgIGlm
IChtX3dlZWtEYXlTaG9ydExhYmVscykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFpbml0
aWFsaXplU2hvcnREYXRlRm9ybWF0KCkpIHsKICAgICAgICAgbV9maXJzdERheU9mV2VlayA9IDA7
Ci0gICAgICAgIG1fbW9udGhMYWJlbHMgPSBjcmVhdGVGYWxsYmFja01vbnRoTGFiZWxzKCk7CiAg
ICAgICAgIG1fd2Vla0RheVNob3J0TGFiZWxzID0gY3JlYXRlRmFsbGJhY2tXZWVrRGF5U2hvcnRM
YWJlbHMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2ZpcnN0RGF5T2ZXZWVrID0g
dWNhbF9nZXRBdHRyaWJ1dGUodWRhdF9nZXRDYWxlbmRhcihtX3Nob3J0RGF0ZUZvcm1hdCksIFVD
QUxfRklSU1RfREFZX09GX1dFRUspIC0gVUNBTF9TVU5EQVk7CiAKLSAgICBtX21vbnRoTGFiZWxz
ID0gY3JlYXRlTGFiZWxWZWN0b3IobV9zaG9ydERhdGVGb3JtYXQsIFVEQVRfTU9OVEhTLCBVQ0FM
X0pBTlVBUlksIDEyKTsKLSAgICBpZiAoIW1fbW9udGhMYWJlbHMpCi0gICAgICAgIG1fbW9udGhM
YWJlbHMgPSBjcmVhdGVGYWxsYmFja01vbnRoTGFiZWxzKCk7Ci0KICAgICBtX3dlZWtEYXlTaG9y
dExhYmVscyA9IGNyZWF0ZUxhYmVsVmVjdG9yKG1fc2hvcnREYXRlRm9ybWF0LCBVREFUX1NIT1JU
X1dFRUtEQVlTLCBVQ0FMX1NVTkRBWSwgNyk7CiAgICAgaWYgKCFtX3dlZWtEYXlTaG9ydExhYmVs
cykKICAgICAgICAgbV93ZWVrRGF5U2hvcnRMYWJlbHMgPSBjcmVhdGVGYWxsYmFja1dlZWtEYXlT
aG9ydExhYmVscygpOwogfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKSB8
fCBFTkFCTEUoSU5QVVRfTVVMVElQTEVfRklFTERTX1VJKQorc3RhdGljIFBhc3NPd25QdHI8VmVj
dG9yPFN0cmluZz4gPiBjcmVhdGVGYWxsYmFja01vbnRoTGFiZWxzKCkKK3sKKyAgICBPd25QdHI8
VmVjdG9yPFN0cmluZz4gPiBsYWJlbHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4oKSk7
CisgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoV1RGX0FSUkFZX0xFTkdUSChXVEY6Om1vbnRo
RnVsbE5hbWUpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdU
SChXVEY6Om1vbnRoRnVsbE5hbWUpOyArK2kpCisgICAgICAgIGxhYmVscy0+YXBwZW5kKFdURjo6
bW9udGhGdWxsTmFtZVtpXSk7CisgICAgcmV0dXJuIGxhYmVscy5yZWxlYXNlKCk7Cit9CiAKIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVJQ1U6Om1vbnRoTGFiZWxzKCkKIHsKLSAgICBpbml0
aWFsaXplQ2FsZW5kYXIoKTsKKyAgICBpZiAobV9tb250aExhYmVscykKKyAgICAgICAgcmV0dXJu
ICptX21vbnRoTGFiZWxzOworICAgIGlmICghaW5pdGlhbGl6ZVNob3J0RGF0ZUZvcm1hdCgpKSB7
CisgICAgICAgIG1fbW9udGhMYWJlbHMgPSBjcmVhdGVGYWxsYmFja01vbnRoTGFiZWxzKCk7Cisg
ICAgICAgIHJldHVybiAqbV9tb250aExhYmVsczsKKyAgICB9CisgICAgbV9tb250aExhYmVscyA9
IGNyZWF0ZUxhYmVsVmVjdG9yKG1fc2hvcnREYXRlRm9ybWF0LCBVREFUX01PTlRIUywgVUNBTF9K
QU5VQVJZLCAxMik7CisgICAgaWYgKG1fbW9udGhMYWJlbHMpCisgICAgICAgIHJldHVybiAqbV9t
b250aExhYmVsczsKKyAgICBtX21vbnRoTGFiZWxzID0gY3JlYXRlRmFsbGJhY2tNb250aExhYmVs
cygpOwogICAgIHJldHVybiAqbV9tb250aExhYmVsczsKIH0KKyNlbmRpZgogCisjaWYgRU5BQkxF
KENBTEVOREFSX1BJQ0tFUikKIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVJQ1U6OndlZWtE
YXlTaG9ydExhYmVscygpCiB7CiAgICAgaW5pdGlhbGl6ZUNhbGVuZGFyKCk7CkBAIC00NTcsNiAr
NDY1LDIwIEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVJQ1U6OnNob3J0TW9udGhMYWJl
bHMoKQogICAgIHJldHVybiBtX3Nob3J0TW9udGhMYWJlbHM7CiB9CiAKK2NvbnN0IFZlY3RvcjxT
dHJpbmc+JiBMb2NhbGVJQ1U6OnN0YW5kQWxvbmVNb250aExhYmVscygpCit7CisgICAgaWYgKCFt
X3N0YW5kQWxvbmVNb250aExhYmVscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtX3N0YW5k
QWxvbmVNb250aExhYmVsczsKKyAgICBpZiAoaW5pdGlhbGl6ZVNob3J0RGF0ZUZvcm1hdCgpKSB7
CisgICAgICAgIGlmIChPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBsYWJlbHMgPSBjcmVhdGVMYWJl
bFZlY3RvcihtX3Nob3J0RGF0ZUZvcm1hdCwgVURBVF9TVEFOREFMT05FX01PTlRIUywgVUNBTF9K
QU5VQVJZLCAxMikpIHsKKyAgICAgICAgICAgIG1fc3RhbmRBbG9uZU1vbnRoTGFiZWxzID0gKmxh
YmVsczsKKyAgICAgICAgICAgIHJldHVybiBtX3N0YW5kQWxvbmVNb250aExhYmVsczsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBtX3N0YW5kQWxvbmVNb250aExhYmVscyA9IG1vbnRoTGFiZWxzKCk7
CisgICAgcmV0dXJuIG1fc3RhbmRBbG9uZU1vbnRoTGFiZWxzOworfQorCiBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgTG9jYWxlSUNVOjpzaG9ydFN0YW5kQWxvbmVNb250aExhYmVscygpCiB7CiAgICAg
aWYgKCFtX3Nob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxzLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oCmluZGV4IDZjNjJmOTJmYzQxYzgzMDc4ZDBjMGQx
MTE2NjMxNzk0M2NiY2ZlM2IuLmVlODBjYmZkY2UzMTYwMjBjYTQ4YTAzM2M2MWIzNTYxMTRkNzhk
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaApAQCAtNTQsMTgg
KzU0LDIwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQogICAgIHZpcnR1
YWwgU3RyaW5nIGRhdGVGb3JtYXRUZXh0KCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBtb250aExhYmVscygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHdlZWtEYXlTaG9ydExhYmVscygpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdW5zaWduZWQgZmlyc3REYXlPZldlZWsoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNSVEwoKSBPVkVSUklERTsKICNlbmRpZgotCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tF
UikgfHwgRU5BQkxFKElOUFVUX01VTFRJUExFX0ZJRUxEU19VSSkKKyAgICB2aXJ0dWFsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBtb250aExhYmVscygpIE9WRVJSSURFOworI2VuZGlmCiAjaWYgRU5B
QkxFKElOUFVUX01VTFRJUExFX0ZJRUxEU19VSSkKICAgICB2aXJ0dWFsIFN0cmluZyBkYXRlRm9y
bWF0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgbW9udGhGb3JtYXQoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFN0cmluZyB0aW1lRm9ybWF0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBTdHJpbmcgc2hvcnRUaW1lRm9ybWF0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc2hvcnRNb250aExhYmVscygpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YW5kQWxvbmVNb250aExhYmVscygpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNob3J0U3RhbmRBbG9uZU1vbnRoTGFi
ZWxzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdGltZUFN
UE1MYWJlbHMoKSBPVkVSUklERTsKICNlbmRpZgpAQCAtMTAzLDE3ICsxMDUsMTkgQEAgcHJpdmF0
ZToKIAogI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCiAgICAgU3RyaW5nIG1fbG9jYWxpemVk
RGF0ZUZvcm1hdFRleHQ7Ci0gICAgT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gbV9tb250aExhYmVs
czsKICAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBtX3dlZWtEYXlTaG9ydExhYmVsczsKICAg
ICB1bnNpZ25lZCBtX2ZpcnN0RGF5T2ZXZWVrOwogI2VuZGlmCi0KKyNpZiBFTkFCTEUoQ0FMRU5E
QVJfUElDS0VSKSB8fCBFTkFCTEUoSU5QVVRfTVVMVElQTEVfRklFTERTX1VJKQorICAgIE93blB0
cjxWZWN0b3I8U3RyaW5nPiA+IG1fbW9udGhMYWJlbHM7CisjZW5kaWYKICNpZiBFTkFCTEUoSU5Q
VVRfTVVMVElQTEVfRklFTERTX1VJKQogICAgIFN0cmluZyBtX2RhdGVGb3JtYXQ7CiAgICAgU3Ry
aW5nIG1fbW9udGhGb3JtYXQ7CiAgICAgVURhdGVGb3JtYXQqIG1fbWVkaXVtVGltZUZvcm1hdDsK
ICAgICBVRGF0ZUZvcm1hdCogbV9zaG9ydFRpbWVGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4g
bV9zaG9ydE1vbnRoTGFiZWxzOworICAgIFZlY3RvcjxTdHJpbmc+IG1fc3RhbmRBbG9uZU1vbnRo
TGFiZWxzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fc2hvcnRTdGFuZEFsb25lTW9udGhMYWJlbHM7
CiAgICAgVmVjdG9yPFN0cmluZz4gbV90aW1lQU1QTUxhYmVsczsKICAgICBib29sIG1fZGlkQ3Jl
YXRlVGltZUZvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
TG9jYWxlTm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUu
Y3BwCmluZGV4IDI1MzVkODk2YTIyM2VlN2RmZDk3MTU2ZmUzMmNlN2Y0MjI4MmE4MmMuLjYxMTcz
ODA2ZTkxYWNiNWM4Y2IwM2QzNzdkNmNmMGNlZDgzYTFjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcApAQCAtNDEsMTQgKzQxLDIxIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBTdHJpbmcgZGF0ZUZvcm1hdFRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGJvb2wgaXNSVEwoKSBPVkVSUklERTsKICNlbmRpZgorI2lmIEVOQUJMRShDQUxFTkRBUl9Q
SUNLRVIpIHx8IEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkpCisgICAgdmlydHVhbCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgbW9udGhMYWJlbHMoKSBPVkVSUklERTsKKyNlbmRpZgogI2lm
IEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkpCiAgICAgdmlydHVhbCBTdHJpbmcgZGF0
ZUZvcm1hdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIG1vbnRoRm9ybWF0KCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2hvcnRNb250aExhYmVs
cygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YW5kQWxv
bmVNb250aExhYmVscygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHNob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkgT1ZFUlJJREU7Ci0jZW5kaWYKIAogICAg
IFZlY3RvcjxTdHJpbmc+IG1fc2hvcnRNb250aExhYmVsczsKKyNlbmRpZgorI2lmIEVOQUJMRShD
QUxFTkRBUl9QSUNLRVIpIHx8IEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkpCisgICAg
VmVjdG9yPFN0cmluZz4gbV9tb250aExhYmVsczsKKyNlbmRpZgogfTsKIAogUGFzc093blB0cjxM
b2NhbGl6ZXI+IExvY2FsaXplcjo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYpCkBAIC04MSw2
ICs4OCwxOCBAQCBib29sIExvY2FsZU5vbmU6OmlzUlRMKCkKIH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKENBTEVOREFSX1BJQ0tFUikgfHwgRU5BQkxFKElOUFVUX01VTFRJUExFX0ZJRUxEU19VSSkK
K2NvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVOb25lOjptb250aExhYmVscygpCit7CisgICAg
aWYgKCFtX21vbnRoTGFiZWxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG1fbW9udGhMYWJl
bHM7CisgICAgbV9tb250aExhYmVscy5yZXNlcnZlQ2FwYWNpdHkoV1RGX0FSUkFZX0xFTkdUSChX
VEY6Om1vbnRoRnVsbE5hbWUpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FS
UkFZX0xFTkdUSChXVEY6Om1vbnRoRnVsbE5hbWUpOyArK2kpCisgICAgICAgIG1fbW9udGhMYWJl
bHMuYXBwZW5kKFdURjo6bW9udGhGdWxsTmFtZVtpXSk7CisgICAgcmV0dXJuIG1fbW9udGhMYWJl
bHM7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkpCiBT
dHJpbmcgTG9jYWxlTm9uZTo6ZGF0ZUZvcm1hdCgpCiB7CkBAIC0xMDYsNiArMTI1LDExIEBAIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVOb25lOjpzaG9ydFN0YW5kQWxvbmVNb250aExhYmVs
cygpCiB7CiAgICAgcmV0dXJuIHNob3J0TW9udGhMYWJlbHMoKTsKIH0KKworY29uc3QgVmVjdG9y
PFN0cmluZz4mIExvY2FsZU5vbmU6OnN0YW5kQWxvbmVNb250aExhYmVscygpCit7CisgICAgcmV0
dXJuIG1vbnRoTGFiZWxzKCk7Cit9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uY3BwCmluZGV4IDU4NGE2YTA2
ZjgxMzRjYTgwMTA0M2VkYjIxMTk4ZWNjMGM5MzRlM2QuLmVkZWZkYTI5OTg0NTc4ZjY0MTkwNzc5
ZDc5NThlNDM3MTBiNDBlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2Fs
ZVdpbi5jcHAKQEAgLTU1MSwxMyArNTUxLDE1IEBAIHZvaWQgTG9jYWxlV2luOjplbnN1cmVXZWVr
RGF5U2hvcnRMYWJlbHMoKQogICAgIH0KIH0KIAotI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIp
CisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikgfHwgRU5BQkxFKElOUFVUX01VTFRJUExFX0ZJ
RUxEU19VSSkKIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVXaW46Om1vbnRoTGFiZWxzKCkK
IHsKICAgICBlbnN1cmVNb250aExhYmVscygpOwogICAgIHJldHVybiBtX21vbnRoTGFiZWxzOwog
fQorI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQogY29uc3QgVmVjdG9yPFN0
cmluZz4mIExvY2FsZVdpbjo6d2Vla0RheVNob3J0TGFiZWxzKCkKIHsKICAgICBlbnN1cmVXZWVr
RGF5U2hvcnRMYWJlbHMoKTsKQEAgLTc0MSw2ICs3NDMsMTIgQEAgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIExvY2FsZVdpbjo6c2hvcnRNb250aExhYmVscygpCiAgICAgcmV0dXJuIG1fc2hvcnRNb250
aExhYmVsczsKIH0KIAorY29uc3QgVmVjdG9yPFN0cmluZz4mIExvY2FsZVdpbjo6c3RhbmRBbG9u
ZU1vbnRoTGFiZWxzKCkKK3sKKyAgICAvLyBXaW5kb3dzIGRvZXNuJ3QgcHJvdmlkZSBhIHdheSB0
byBnZXQgc3RhbmQtYWxvbmUgbW9udGggbGFiZWxzLgorICAgIHJldHVybiBtb250aExhYmVscygp
OworfQorCiBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlV2luOjpzaG9ydFN0YW5kQWxvbmVN
b250aExhYmVscygpCiB7CiAgICAgLy8gV2luZG93cyBkb2Vzbid0IHByb3ZpZGUgYSB3YXkgdG8g
Z2V0IHN0YW5kLWFsb25lIG1vbnRoIGxhYmVscy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTG9jYWxlV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xvY2FsZVdpbi5oCmluZGV4IGEyYjE1ZDNmMDE5ZGFmMzYzZDgzOTUxMzRhNjcwOTc0OTkzMjI5
OWEuLjBjMzAwYWJkZTFkOTkxZTdiNDBjZjJmYjg5NWY0YmFjYjY0NmE0YjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlV2luLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uaApAQCAtNDksMTggKzQ5LDIwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZURhdGVUaW1lKGNvbnN0IFN0cmluZyYsIERhdGVD
b21wb25lbnRzOjpUeXBlKSBPVkVSUklERTsKICNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQog
ICAgIHZpcnR1YWwgU3RyaW5nIGRhdGVGb3JtYXRUZXh0KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbW9udGhMYWJlbHMoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3ZWVrRGF5U2hvcnRMYWJlbHMoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHVuc2lnbmVkIGZpcnN0RGF5T2ZXZWVrKCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIGlzUlRMKCkgT1ZFUlJJREU7CiAjZW5kaWYKLQorI2lmIEVOQUJMRShDQUxFTkRB
Ul9QSUNLRVIpIHx8IEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkpCisgICAgdmlydHVh
bCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbW9udGhMYWJlbHMoKSBPVkVSUklERTsKKyNlbmRpZgog
I2lmIEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkpCiAgICAgdmlydHVhbCBTdHJpbmcg
ZGF0ZUZvcm1hdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIG1vbnRoRm9ybWF0KCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgdGltZUZvcm1hdCgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgU3RyaW5nIHNob3J0VGltZUZvcm1hdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHNob3J0TW9udGhMYWJlbHMoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGFuZEFsb25lTW9udGhMYWJlbHMoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaG9ydFN0YW5kQWxvbmVN
b250aExhYmVscygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHRpbWVBTVBNTGFiZWxzKCkgT1ZFUlJJREU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xvY2FsaXplci5oCmluZGV4IDZmNTI3MTk1ZTgxYmZmMjNlMmQ0YTEzZjI5YWMyNzIy
ZWEyM2ZmNTEuLmI0MjJmYWFiNzVlYThkZTE0NzIyYjNjZDA5OGFmNmRlZjE4MjFlN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxpemVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZXIuaApAQCAtODgsNiArODgsMTIgQEAg
cHVibGljOgogICAgIC8vIERlYy4gVGhlc2Ugc3RyaW5ncyBzaG91bGQgYmUgc2hvcnQuCiAgICAg
dmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2hvcnRNb250aExhYmVscygpID0gMDsKIAor
ICAgIC8vIFJldHVybnMgYSB2ZWN0b3Igb2Ygc3RyaW5nIG9mIHdoaWNoIHNpemUgaXMgMTIuIFRo
ZSBmaXJzdCBpdGVtIGlzIGEKKyAgICAvLyBzdGFuZC1hbG9uZSBsb2NhbGl6ZWQgc3RyaW5nIG9m
IEphbnVhcnkgYW5kIHRoZSBsYXN0IGl0ZW0gaXMgYQorICAgIC8vIHN0YW5kLWFsb25lIGxvY2Fs
aXplZCBzdHJpbmcgb2YgRGVjZW1iZXIuIFRoZXNlIHN0cmluZ3Mgc2hvdWxkIG5vdCBiZQorICAg
IC8vIGFiYnJldmlhdGlvbnMuCisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3Rh
bmRBbG9uZU1vbnRoTGFiZWxzKCkgPSAwOworCiAgICAgLy8gU3RhbmQtYWxvbmUgbW9udGggdmVy
c2lvbiBvZiBzaG9ydE1vbnRoTGFiZWxzLgogICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHNob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkgPSAwOwogCkBAIC05NSwxMiArMTAxLDE0
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0aW1lQU1QTUxh
YmVscygpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorI2lmIEVOQUJM
RShDQUxFTkRBUl9QSUNLRVIpIHx8IEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkpCiAg
ICAgLy8gUmV0dXJucyBhIHZlY3RvciBvZiBzdHJpbmcgb2Ygd2hpY2ggc2l6ZSBpcyAxMi4gVGhl
IGZpcnN0IGl0ZW0gaXMgYQogICAgIC8vIGxvY2FsaXplZCBzdHJpbmcgb2YgSmFudWFyeSwgYW5k
IHRoZSBsYXN0IGl0ZW0gaXMgYSBsb2NhbGl6ZWQgc3RyaW5nIG9mCiAgICAgLy8gRGVjZW1iZXIu
IFRoZXNlIHN0cmluZ3Mgc2hvdWxkIG5vdCBiZSBhYmJyZXZpYXRpb25zLgogICAgIHZpcnR1YWwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIG1vbnRoTGFiZWxzKCkgPSAwOworI2VuZGlmCiAKKyNpZiBF
TkFCTEUoQ0FMRU5EQVJfUElDS0VSKQogICAgIC8vIFJldHVybnMgYSB2ZWN0b3Igb2Ygc3RyaW5n
IG9mIHdoaWNoIHNpemUgaXMgNy4gVGhlIGZpcnN0IGl0ZW0gaXMgYQogICAgIC8vIGxvY2FsaXpl
ZCBzaG9ydCBzdHJpbmcgb2YgTW9uZGF5LCBhbmQgdGhlIGxhc3QgaXRlbSBpcyBhIGxvY2FsaXpl
ZAogICAgIC8vIHNob3J0IHN0cmluZyBvZiBTYXR1cmRheS4gVGhlc2Ugc3RyaW5ncyBzaG91bGQg
YmUgc2hvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9M
b2NhbGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5o
CmluZGV4IGEzZjIyYmViMWM5NDAzMjI4MTZiYWE3NzE3ODlhODE3YjM3NTUzMzUuLmE3YTcyZGEy
ZTcwYjM4Yzc0YWJiZmM5ZmY2ZTdjZGE5NTc0OWYwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCkBAIC01NCwxMSArNTQsMTMgQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKICAgICB2aXJ0dWFsIFN0cmluZyBkYXRlRm9y
bWF0VGV4dCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG1v
bnRoTGFiZWxzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
d2Vla0RheVNob3J0TGFiZWxzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBmaXJz
dERheU9mV2VlaygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1JUTCgpIE9WRVJSSURF
OwogI2VuZGlmCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikgfHwgRU5BQkxFKElOUFVUX01V
TFRJUExFX0ZJRUxEU19VSSkKKyAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtb250
aExhYmVscygpIE9WRVJSSURFOworI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfTVVMVElQTEVf
RklFTERTX1VJKQogICAgIHZpcnR1YWwgU3RyaW5nIGRhdGVGb3JtYXQoKSBPVkVSUklERTsKQEAg
LTY2LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHRpbWVGb3JtYXQoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzaG9ydFRpbWVGb3JtYXQoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaG9ydE1vbnRoTGFiZWxzKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhbmRBbG9uZU1vbnRo
TGFiZWxzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2hv
cnRTdGFuZEFsb25lTW9udGhMYWJlbHMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB0aW1lQU1QTUxhYmVscygpIE9WRVJSSURFOwogI2VuZGlmCkBAIC03OSw5
ICs4MiwxMSBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU0NhbGVuZGFyPiBtX2dyZWdvcmlh
bkNhbGVuZGFyOwogI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCiAgICAgU3RyaW5nIG1fbG9j
YWxpemVkRGF0ZUZvcm1hdFRleHQ7Ci0gICAgVmVjdG9yPFN0cmluZz4gbV9tb250aExhYmVsczsK
ICAgICBWZWN0b3I8U3RyaW5nPiBtX3dlZWtEYXlTaG9ydExhYmVsczsKICNlbmRpZgorI2lmIEVO
QUJMRShDQUxFTkRBUl9QSUNLRVIpIHx8IEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkp
CisgICAgVmVjdG9yPFN0cmluZz4gbV9tb250aExhYmVsczsKKyNlbmRpZgogI2lmIEVOQUJMRShJ
TlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkpCiAgICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4g
dGltZUZvcm1hdHRlcigpOwogICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IHNob3J0VGlt
ZUZvcm1hdHRlcigpOwpAQCAtOTEsNiArOTYsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2xv
Y2FsaXplZFRpbWVGb3JtYXRUZXh0OwogICAgIFN0cmluZyBtX2xvY2FsaXplZFNob3J0VGltZUZv
cm1hdFRleHQ7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9zaG9ydE1vbnRoTGFiZWxzOworICAgIFZl
Y3RvcjxTdHJpbmc+IG1fc3RhbmRBbG9uZU1vbnRoTGFiZWxzOwogICAgIFZlY3RvcjxTdHJpbmc+
IG1fc2hvcnRTdGFuZEFsb25lTW9udGhMYWJlbHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbV90aW1l
QU1QTUxhYmVsczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9tYWMvTG9jYWxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
TG9jYWxlTWFjLm1tCmluZGV4IDZjMzY1ZGYyNjc0OTc4NGMxMDNmY2FjZTZjMzBlNmM1NjEwYjlk
NjAuLjhkZGU3NDkyNWU5NGRhZTA2Yjc1MTRlZDhmNDUwYzcxMmVmZDNiNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KQEAgLTE3OCw3ICsxNzgs
OSBAQCBTdHJpbmcgTG9jYWxlTWFjOjpkYXRlRm9ybWF0VGV4dCgpCiAgICAgbV9sb2NhbGl6ZWRE
YXRlRm9ybWF0VGV4dCA9IGxvY2FsaXplRGF0ZUZvcm1hdChbc2hvcnREYXRlRm9ybWF0dGVyKCku
Z2V0KCkgZGF0ZUZvcm1hdF0pOwogICAgIHJldHVybiAgbV9sb2NhbGl6ZWREYXRlRm9ybWF0VGV4
dDsKIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikgfHwgRU5BQkxFKElO
UFVUX01VTFRJUExFX0ZJRUxEU19VSSkKIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVNYWM6
Om1vbnRoTGFiZWxzKCkKIHsKICAgICBpZiAoIW1fbW9udGhMYWJlbHMuaXNFbXB0eSgpKQpAQCAt
MTk0LDcgKzE5Niw5IEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVNYWM6Om1vbnRoTGFi
ZWxzKCkKICAgICAgICAgbV9tb250aExhYmVscy5hcHBlbmQoV1RGOjptb250aEZ1bGxOYW1lW2ld
KTsKICAgICByZXR1cm4gbV9tb250aExhYmVsczsKIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKENB
TEVOREFSX1BJQ0tFUikKIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVNYWM6OndlZWtEYXlT
aG9ydExhYmVscygpCiB7CiAgICAgaWYgKCFtX3dlZWtEYXlTaG9ydExhYmVscy5pc0VtcHR5KCkp
CkBAIC0yODgsNiArMjkyLDIxIEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVNYWM6OnNo
b3J0TW9udGhMYWJlbHMoKQogICAgIHJldHVybiBtX3Nob3J0TW9udGhMYWJlbHM7CiB9CiAKK2Nv
bnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVNYWM6OnN0YW5kQWxvbmVNb250aExhYmVscygpCit7
CisgICAgaWYgKCFtX3N0YW5kQWxvbmVNb250aExhYmVscy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBtX3N0YW5kQWxvbmVNb250aExhYmVsczsKKyAgICBOU0FycmF5ICphcnJheSA9IFtzaG9y
dERhdGVGb3JtYXR0ZXIoKS5nZXQoKSBzdGFuZGFsb25lTW9udGhTeW1ib2xzXTsKKyAgICBpZiAo
W2FycmF5IGNvdW50XSA9PSAxMikgeworICAgICAgICBtX3N0YW5kQWxvbmVNb250aExhYmVscy5y
ZXNlcnZlQ2FwYWNpdHkoMTIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTI7
ICsraSkKKyAgICAgICAgICAgIG1fc3RhbmRBbG9uZU1vbnRoTGFiZWxzLmFwcGVuZChbYXJyYXkg
b2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgIHJldHVybiBtX3N0YW5kQWxvbmVNb250aExhYmVs
czsKKyAgICB9CisgICAgbV9zdGFuZEFsb25lTW9udGhMYWJlbHMgPSBzaG9ydE1vbnRoTGFiZWxz
KCk7CisgICAgcmV0dXJuIG1fc3RhbmRBbG9uZU1vbnRoTGFiZWxzOworfQorCiBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgTG9jYWxlTWFjOjpzaG9ydFN0YW5kQWxvbmVNb250aExhYmVscygpCiB7CiAg
ICAgaWYgKCFtX3Nob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxzLmlzRW1wdHkoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTG9jYWxlTWFjVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xvY2FsZU1hY1Rlc3QuY3BwCmluZGV4IDkxNDgyZDk0
ZDhlMjZjZWNlYjUzZmI1YmFiYmY0ZWZjMjI0YmY1ZmYuLjc3NDM0ZGI0MWI4NzczNjJhNTMwMmE4
ZWRiNGE4N2FiMmQ4MWNiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvTG9jYWxlTWFjVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9M
b2NhbGVNYWNUZXN0LmNwcApAQCAtMTQ0LDYgKzE0NCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IHJldHVybiBsb2NhbGUtPnNob3J0TW9udGhMYWJlbHMoKVtpbmRleF07CiAgICAgfQogCisgICAg
U3RyaW5nIHN0YW5kQWxvbmVNb250aExhYmVsKGNvbnN0IFN0cmluZyYgbG9jYWxlU3RyaW5nLCB1
bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIE93blB0cjxMb2NhbGVNYWM+IGxvY2FsZSA9
IExvY2FsZU1hYzo6Y3JlYXRlKGxvY2FsZVN0cmluZyk7CisgICAgICAgIHJldHVybiBsb2NhbGUt
PnN0YW5kQWxvbmVNb250aExhYmVscygpW2luZGV4XTsKKyAgICB9CisKICAgICBTdHJpbmcgc2hv
cnRTdGFuZEFsb25lTW9udGhMYWJlbChjb25zdCBTdHJpbmcmIGxvY2FsZVN0cmluZywgdW5zaWdu
ZWQgaW5kZXgpCiAgICAgewogICAgICAgICBPd25QdHI8TG9jYWxlTWFjPiBsb2NhbGUgPSBMb2Nh
bGVNYWM6OmNyZWF0ZShsb2NhbGVTdHJpbmcpOwpAQCAtMjc4LDYgKzI4NCwyMSBAQCBURVNUX0Yo
TG9jYWxlTWFjVGVzdCwgc2hvcnRUaW1lRm9ybWF0KQogICAgIEVYUEVDVF9TVFJFUSgiSDptbSIs
IHNob3J0VGltZUZvcm1hdCgiamFfSlAiKS51dGY4KCkuZGF0YSgpKTsKIH0KIAorVEVTVF9GKExv
Y2FsZU1hY1Rlc3QsIHN0YW5kQWxvbmVNb250aExhYmVscykKK3sKKyAgICBFWFBFQ1RfU1RSRVEo
IkphbnVhcnkiLCBzdGFuZEFsb25lTW9udGhMYWJlbCgiZW5fVVMiLCBKYW51YXJ5KS51dGY4KCku
ZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIkp1bmUiLCBzdGFuZEFsb25lTW9udGhMYWJlbCgi
ZW5fVVMiLCBKdW5lKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIkRlY2VtYmVy
Iiwgc3RhbmRBbG9uZU1vbnRoTGFiZWwoImVuX1VTIiwgRGVjZW1iZXIpLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgRVhQRUNUX1NUUkVRKCJqYW52aWVyIiwgc3RhbmRBbG9uZU1vbnRoTGFiZWwoImZy
X0ZSIiwgSmFudWFyeSkudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJqdWluIiwg
c3RhbmRBbG9uZU1vbnRoTGFiZWwoImZyX0ZSIiwgSnVuZSkudXRmOCgpLmRhdGEoKSk7CisgICAg
RVhQRUNUX1NUUkVRKCJkXHhDM1x4QTkiICJjZW1icmUiLCBzdGFuZEFsb25lTW9udGhMYWJlbCgi
ZnJfRlIiLCBEZWNlbWJlcikudXRmOCgpLmRhdGEoKSk7CisKKyAgICBFWFBFQ1RfU1RSRVEoIjFc
eEU2XHg5Q1x4ODgiLCBzdGFuZEFsb25lTW9udGhMYWJlbCgiamFfSlAiLCBKYW51YXJ5KS51dGY4
KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIjZceEU2XHg5Q1x4ODgiLCBzdGFuZEFsb25l
TW9udGhMYWJlbCgiamFfSlAiLCBKdW5lKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RS
RVEoIjEyXHhFNlx4OUNceDg4Iiwgc3RhbmRBbG9uZU1vbnRoTGFiZWwoImphX0pQIiwgRGVjZW1i
ZXIpLnV0ZjgoKS5kYXRhKCkpOworfQorCiBURVNUX0YoTG9jYWxlTWFjVGVzdCwgc2hvcnRNb250
aExhYmVscykKIHsKICAgICBFWFBFQ1RfU1RSRVEoIkphbiIsIHNob3J0TW9udGhMYWJlbCgiZW5f
VVMiLCAwKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvTG9jYWxpemVkRGF0ZUlDVVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9Mb2NhbGl6ZWREYXRlSUNVVGVzdC5jcHAKaW5kZXggODg5NDZlODRkYmQwYjMxZjNk
YzAyMmI5OTk0ZjFhMWExMGVkZDgwNy4uNzcwM2JjYzg5YjcxYTRhMjJlOTEwNzVhOWU4NGJjNDU3
YTBlYjJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Mb2NhbGl6
ZWREYXRlSUNVVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Mb2Nh
bGl6ZWREYXRlSUNVVGVzdC5jcHAKQEAgLTExOCw2ICsxMTgsMTIgQEAgcHJvdGVjdGVkOgogICAg
ICAgICByZXR1cm4gbG9jYWxlLT5zaG9ydFN0YW5kQWxvbmVNb250aExhYmVscygpW2luZGV4XTsK
ICAgICB9CiAKKyAgICBTdHJpbmcgc3RhbmRBbG9uZU1vbnRoTGFiZWwoY29uc3QgY2hhciogbG9j
YWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIE93blB0cjxMb2NhbGVJ
Q1U+IGxvY2FsZSA9IExvY2FsZUlDVTo6Y3JlYXRlKGxvY2FsZVN0cmluZyk7CisgICAgICAgIHJl
dHVybiBsb2NhbGUtPnN0YW5kQWxvbmVNb250aExhYmVscygpW2luZGV4XTsKKyAgICB9CisKICAg
ICBMYWJlbHMgdGltZUFNUE1MYWJlbHMoY29uc3QgY2hhciogbG9jYWxlU3RyaW5nKQogICAgIHsK
ICAgICAgICAgT3duUHRyPExvY2FsZUlDVT4gbG9jYWxlID0gTG9jYWxlSUNVOjpjcmVhdGUobG9j
YWxlU3RyaW5nKTsKQEAgLTE2Niw2ICsxNzIsMjQgQEAgVEVTVF9GKExvY2FsaXplZERhdGVJQ1VU
ZXN0LCBsb2NhbGl6ZWRTaG9ydERhdGVGb3JtYXRUZXh0KQogICAgIEVYUEVDVF9TVFJFUSgiSDpt
bSIsIGxvY2FsaXplZFNob3J0RGF0ZUZvcm1hdFRleHQoImphIikudXRmOCgpLmRhdGEoKSk7CiB9
CiAKK1RFU1RfRihMb2NhbGl6ZWREYXRlSUNVVGVzdCwgc3RhbmRBbG9uZU1vbnRoTGFiZWxzKQor
eworICAgIEVYUEVDVF9TVFJFUSgiSmFudWFyeSIsIHN0YW5kQWxvbmVNb250aExhYmVsKCJlbl9V
UyIsIDApLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiSnVuZSIsIHN0YW5kQWxv
bmVNb250aExhYmVsKCJlbl9VUyIsIDUpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJF
USgiRGVjZW1iZXIiLCBzdGFuZEFsb25lTW9udGhMYWJlbCgiZW5fVVMiLCAxMSkudXRmOCgpLmRh
dGEoKSk7CisKKyAgICBFWFBFQ1RfU1RSRVEoImphbnZpZXIiLCBzdGFuZEFsb25lTW9udGhMYWJl
bCgiZnJfRlIiLCAwKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImp1aW4iLCBz
dGFuZEFsb25lTW9udGhMYWJlbCgiZnJfRlIiLCA1KS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBF
Q1RfU1RSRVEoImRceEMzXHhBOSIgImNlbWJyZSIsIHN0YW5kQWxvbmVNb250aExhYmVsKCJmcl9G
UiIsIDExKS51dGY4KCkuZGF0YSgpKTsKKworICAgIEVYUEVDVF9TVFJFUSgiMVx4RTZceDlDXHg4
OCIsIHN0YW5kQWxvbmVNb250aExhYmVsKCJqYV9KUCIsIDApLnV0ZjgoKS5kYXRhKCkpOworICAg
IEVYUEVDVF9TVFJFUSgiNlx4RTZceDlDXHg4OCIsIHN0YW5kQWxvbmVNb250aExhYmVsKCJqYV9K
UCIsIDUpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiMTJceEU2XHg5Q1x4ODgi
LCBzdGFuZEFsb25lTW9udGhMYWJlbCgiamFfSlAiLCAxMSkudXRmOCgpLmRhdGEoKSk7CisKKyAg
ICBFWFBFQ1RfU1RSRVEoIlx4RDBceDlDXHhEMFx4QjBceEQxXHg4MFx4RDFceDgyIiwgc3RhbmRB
bG9uZU1vbnRoTGFiZWwoInJ1X1JVIiwgMikudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NU
UkVRKCJceEQwXHg5Q1x4RDBceEIwXHhEMFx4QjkiLCBzdGFuZEFsb25lTW9udGhMYWJlbCgicnVf
UlUiLCA0KS51dGY4KCkuZGF0YSgpKTsKK30KKwogVEVTVF9GKExvY2FsaXplZERhdGVJQ1VUZXN0
LCBzaG9ydE1vbnRoTGFiZWxzKQogewogICAgIEVYUEVDVF9TVFJFUSgiSmFuIiwgc2hvcnRNb250
aExhYmVsKCJlbl9VUyIsIDApLnV0ZjgoKS5kYXRhKCkpOwo=
</data>
<flag name="review"
          id="183259"
          type_id="1"
          status="+"
          setter="haraken"
    />
          </attachment>
      

    </bug>

</bugzilla>