<?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>146121</bug_id>
          
          <creation_ts>2015-06-18 12:57:34 -0700</creation_ts>
          <short_desc>REGRESSION (r172975): navigator.language unable to tell region for Traditional Chinese users</short_desc>
          <delta_ts>2015-06-22 10:24:49 -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>WebCore Misc.</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>InRadar, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>joepeck</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1103009</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-06-18 12:57:34 -0700</bug_when>
    <thetext>navigator.language now returns &quot;zh-hant&quot; when system language is set to Chinese (Traditional, Hong Kong) or to Chinese (Traditional, Taiwan). This breaks iCloud, which now displays a Simplified Chinese UI to users with these primary languages.

We used to return &quot;zh-tw&quot; for both these languages, which was wrong, but didn&apos;t cause any known problems in practice.

rdar://problem/21395180</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103035</commentid>
    <comment_count>1</comment_count>
      <attachid>255135</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-06-18 14:40:02 -0700</bug_when>
    <thetext>Created attachment 255135
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103037</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-18 14:43:17 -0700</bug_when>
    <thetext>Attachment 255135 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/mac/NavigatorLanguage.mm:116:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/mac/NavigatorLanguage.mm:119:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/spi/cf/CFBundleSPI.h:41:  The parameter name &quot;stringEncoding&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/spi/cf/CFBundleSPI.h:42:  The parameter name &quot;stringEncoding&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103189</commentid>
    <comment_count>3</comment_count>
      <attachid>255178</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-06-18 23:31:58 -0700</bug_when>
    <thetext>Created attachment 255178
proposed fix

With a build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103190</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-18 23:34:10 -0700</bug_when>
    <thetext>Attachment 255178 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/mac/NavigatorLanguage.mm:116:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/mac/NavigatorLanguage.mm:119:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/spi/cf/CFBundleSPI.h:41:  The parameter name &quot;stringEncoding&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/spi/cf/CFBundleSPI.h:42:  The parameter name &quot;stringEncoding&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103289</commentid>
    <comment_count>5</comment_count>
      <attachid>255178</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-19 10:46:58 -0700</bug_when>
    <thetext>Comment on attachment 255178
proposed fix

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Revert to previous behavior, which is wring in many ways, but not as wrong as the new one.

Typo here: &quot;wring&quot;.

&gt; Source/WebCore/platform/mac/Language.mm:91
&gt; +    // FIXME: This transformation is very wrong:
&gt; +    // 1. There is no reason why CFBundle localization names would be at all related to language names as used on the Web.
&gt; +    // 2. Script Manager codes cannot represent all languages that are now supported by the platform, so the conversion is lossy.
&gt; +    // 3. This should probably match what is sent by the network layer as Accept-Language, but currently, that&apos;s implemented separately.

A problem with this comment is that it says what’s wrong with the code below, but nothing about what’s right about it. I think it’s useful to say why this is a good choice for now (if it is) in the comment, also, not just what’s wrong.

After all, the whole point of this current patch is to switch back to this! So there must be some value in it.

&gt; Source/WebCore/platform/spi/cf/CFBundleSPI.h:40
&gt; +// FIXME: Stop using these, as Script Manager codes cannot reperesent all supported languages.

Typo in the word represent.

I suggest putting this kind of comment at the call site, not in the SPI.h header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103763</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-06-21 21:30:37 -0700</bug_when>
    <thetext>Committed http://trac.webkit.org/r185816

&gt; A problem with this comment is that it says what’s wrong with the code
&gt; below, but nothing about what’s right about it. I think it’s useful to say
&gt; why this is a good choice for now (if it is) in the comment, also, not just
&gt; what’s wrong.

Unsure what good to say here. I can see how it is surprising to see a comment with so many downsides in a patch, however I don&apos;t see a lasting value for such an explanation in code. We don&apos;t normally have anything like that near FIXMEs.

Instead, the regression test would catch potential future mistakes. I think that adding a way to test navigator.language is the more important part of this patch.

Addressed the other suggestions when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103852</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-22 09:55:54 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Committed http://trac.webkit.org/r185816
&gt; 
&gt; &gt; A problem with this comment is that it says what’s wrong with the code
&gt; &gt; below, but nothing about what’s right about it. I think it’s useful to say
&gt; &gt; why this is a good choice for now (if it is) in the comment, also, not just
&gt; &gt; what’s wrong.
&gt; 
&gt; Unsure what good to say here.

My request here was to add the kind of comment that would prevent a future programmer from repeating the same mistake we just made, again. I think that would be straightforward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103865</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-22 10:24:40 -0700</bug_when>
    <thetext>I suppose it’s the test that prevents the future mistake.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255135</attachid>
            <date>2015-06-18 14:40:02 -0700</date>
            <delta_ts>2015-06-18 23:31:58 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>hant.txt</filename>
            <type>text/plain</type>
            <size>14243</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTcxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA2LTE4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIxNzI5
NzUpOiBuYXZpZ2F0b3IubGFuZ3VhZ2UgdW5hYmxlIHRvIHRlbGwgcmVnaW9uIGZvciBUcmFkaXRp
b25hbCBDaGluZXNlIHVzZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDYxMjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjEzOTUxODAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXZlcnQgdG8gcHJl
dmlvdXMgYmVoYXZpb3IsIHdoaWNoIGlzIHdyaW5nIGluIG1hbnkgd2F5cywgYnV0IG5vdCBhcyB3
cm9uZyBhcyB0aGUgbmV3IG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9MYW5ndWFnZS5t
bToKKyAgICAgICAgKFdlYkNvcmU6Omh0dHBTdHlsZUxhbmd1YWdlQ29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL3NwaS9jZi9DRkJ1bmRsZVNQSS5oOgorCiAyMDE1LTA2LTE3ICBDb25yYWQgU2h1bHR6ICA8
Y29ucmFkX3NodWx0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjoganMvZG9tL25h
dmlnYXRvci1wbHVnaW5zLWNyYXNoLmh0bWwgYXNzZXJ0cyBhIGxvdApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQkocmV2aXNpb24gMTg1NTkxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW1wb3J0ICJMYW5ndWFnZS5oIgogCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlv
bnMuaCIKKyNpbXBvcnQgIkNGQnVuZGxlU1BJLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNTdHJpbmdF
eHRyYXMuaCIKICNpbXBvcnQgPG11dGV4PgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KQEAg
LTc5LDcgKzgwLDMxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFN0cmluZyBodHRw
U3R5bGVMYW5ndWFnZUNvZGUoTlNTdHJpbmcgKmxhbmd1YWdlKQogewotICAgIHJldHVybiBbW05T
TG9jYWxlIGNhbm9uaWNhbExhbmd1YWdlSWRlbnRpZmllckZyb21TdHJpbmc6Y2Fub25pY2FsTG9j
YWxlTmFtZShsYW5ndWFnZSldIGxvd2VyY2FzZVN0cmluZ107CisgICAgU0ludDMyIGxhbmd1YWdl
Q29kZTsKKyAgICBTSW50MzIgcmVnaW9uQ29kZTsgCisgICAgU0ludDMyIHNjcmlwdENvZGU7IAor
ICAgIENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2Rpbmc7IAorCisgICAgLy8gRklYTUU6IFRo
aXMgdHJhbnNmb3JtYXRpb24gaXMgdmVyeSB3cm9uZzoKKyAgICAvLyAxLiBUaGVyZSBpcyBubyBy
ZWFzb24gd2h5IENGQnVuZGxlIGxvY2FsaXphdGlvbiBuYW1lcyB3b3VsZCBiZSBhdCBhbGwgcmVs
YXRlZCB0byBsYW5ndWFnZSBuYW1lcyBhcyB1c2VkIG9uIHRoZSBXZWIuCisgICAgLy8gMi4gU2Ny
aXB0IE1hbmFnZXIgY29kZXMgY2Fubm90IHJlcHJlc2VudCBhbGwgbGFuZ3VhZ2VzIHRoYXQgYXJl
IG5vdyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtLCBzbyB0aGUgY29udmVyc2lvbiBpcyBsb3Nz
eS4KKyAgICAvLyAzLiBUaGlzIHNob3VsZCBwcm9iYWJseSBtYXRjaCB3aGF0IGlzIHNlbnQgYnkg
dGhlIG5ldHdvcmsgbGF5ZXIgYXMgQWNjZXB0LUxhbmd1YWdlLCBidXQgY3VycmVudGx5LCB0aGF0
J3MgaW1wbGVtZW50ZWQgc2VwYXJhdGVseS4KKyAgICBDRkJ1bmRsZUdldExvY2FsaXphdGlvbklu
Zm9Gb3JMb2NhbGl6YXRpb24oKENGU3RyaW5nUmVmKWxhbmd1YWdlLCAmbGFuZ3VhZ2VDb2RlLCAm
cmVnaW9uQ29kZSwgJnNjcmlwdENvZGUsICZzdHJpbmdFbmNvZGluZyk7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBhZG9wdENGKENGQnVuZGxlQ29w
eUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlvbkluZm8obGFuZ3VhZ2VDb2RlLCByZWdpb25Db2Rl
LCBzY3JpcHRDb2RlLCBzdHJpbmdFbmNvZGluZykpOworICAgIGlmIChwcmVmZXJyZWRMYW5ndWFn
ZUNvZGUpCisgICAgICAgIGxhbmd1YWdlID0gKE5TU3RyaW5nICopcHJlZmVycmVkTGFuZ3VhZ2VD
b2RlLmdldCgpOworCisgICAgLy8gTWFrZSB0aGUgc3RyaW5nIGxvd2VyY2FzZS4KKyAgICBOU1N0
cmluZyAqbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlID0gW2xhbmd1YWdlIGxvd2VyY2FzZVN0cmluZ107
CisKKyAgICAvLyBUdXJuIGEgJ18nIGludG8gYSAnLScgaWYgaXQgYXBwZWFycyBhZnRlciBhIDIt
bGV0dGVyIGxhbmd1YWdlIGNvZGUuCisgICAgaWYgKFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgbGVu
Z3RoXSA+PSAzICYmIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgY2hhcmFjdGVyQXRJbmRleDoyXSA9
PSAnXycpIHsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVN0cmluZz4gbXV0YWJsZUxhbmd1
YWdlQ29kZSA9IGFkb3B0TlMoW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBtdXRhYmxlQ29weV0pOwor
ICAgICAgICBbbXV0YWJsZUxhbmd1YWdlQ29kZS5nZXQoKSByZXBsYWNlQ2hhcmFjdGVyc0luUmFu
Z2U6TlNNYWtlUmFuZ2UoMiwgMSkgd2l0aFN0cmluZzpAIi0iXTsKKyAgICAgICAgcmV0dXJuIG11
dGFibGVMYW5ndWFnZUNvZGUuZ2V0KCk7CisgICAgfQorCisgICAgcmV0dXJuIGxvd2VyY2FzZUxh
bmd1YWdlQ29kZTsKIH0KIAogVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFu
Z3VhZ2VzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRkJ1bmRsZVNQ
SS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRkJ1bmRs
ZVNQSS5oCShyZXZpc2lvbiAxODU1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkv
Y2YvQ0ZCdW5kbGVTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTAgQEAKIAogZXh0
ZXJuICJDIiB7CiB2b2lkIF9DRkJ1bmRsZVNldHVwWFBDQm9vdHN0cmFwKHhwY19vYmplY3RfdCBi
b290c3RyYXApOworCisvLyBGSVhNRTogU3RvcCB1c2luZyB0aGVzZSwgYXMgU2NyaXB0IE1hbmFn
ZXIgY29kZXMgY2Fubm90IHJlcGVyZXNlbnQgYWxsIHN1cHBvcnRlZCBsYW5ndWFnZXMuCitCb29s
ZWFuIENGQnVuZGxlR2V0TG9jYWxpemF0aW9uSW5mb0ZvckxvY2FsaXphdGlvbihDRlN0cmluZ1Jl
ZiBsb2NhbGl6YXRpb25OYW1lLCBTSW50MzIgKmxhbmd1YWdlQ29kZSwgU0ludDMyICpyZWdpb25D
b2RlLCBTSW50MzIgKnNjcmlwdENvZGUsIENGU3RyaW5nRW5jb2RpbmcgKnN0cmluZ0VuY29kaW5n
KTsKK0NGU3RyaW5nUmVmIENGQnVuZGxlQ29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlvbklu
Zm8oU0ludDMyIGxhbmd1YWdlQ29kZSwgU0ludDMyIHJlZ2lvbkNvZGUsIFNJbnQzMiBzY3JpcHRD
b2RlLCBDRlN0cmluZ0VuY29kaW5nIHN0cmluZ0VuY29kaW5nKTsKIH0KIAogI2VuZGlmCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxODU3MTgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxNS0wNi0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSRUdSRVNTSU9OIChyMTcyOTc1KTogbmF2aWdhdG9yLmxhbmd1YWdlIHVuYWJsZSB0
byB0ZWxsIHJlZ2lvbiBmb3IgVHJhZGl0aW9uYWwgQ2hpbmVzZSB1c2VycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTIxCisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzIxMzk1MTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9OYXZpZ2F0b3JM
YW5ndWFnZS5tbTogQWRkZWQuCisgICAgICAgICgtW05hdmlnYXRvckxhbmd1YWdlRGVsZWdhdGUg
d2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpvdmVycmlkZUFwcGxlTGFuZ3VhZ2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Omxhbmd1
YWdlRm9yU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisK
IDIwMTUtMDYtMTggIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuIEFkZCBNYXR0IERhaXRlciBhcyBhIGNvbnRyaWJ1dG9yLgpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NTU5MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTMsNiArMjkzLDcgQEAKIAkJQ0VBNkNGMjgxOUNDRjY5RDAwNjRGNUE3IC8qIG9wZW4tYW5kLWNs
b3NlLXdpbmRvdy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFQTZDRjI3MTlDQ0Y2OUQwMDY0RjVBNyAvKiBvcGVuLWFuZC1jbG9zZS13
aW5kb3cuaHRtbCAqLzsgfTsKIAkJRTEyMjBEQ0ExNTVCMjhBQTAwMTNFMkZDIC8qIE1lbW9yeUNh
Y2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyMjBEQzkxNTVCMjg3RDAw
MTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0
bWwgKi87IH07CiAJCUUxOTRFMUJEMTc3RTUzQzcwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21E
aWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk0RTFCQzE3N0U1MzRBMDA5QzRENEUgLyogU3RvcExvYWRp
bmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgKi87IH07CisJCUUxOURCOTc5MUIzMjEzN0Mw
MERCMzhENCAvKiBOYXZpZ2F0b3JMYW5ndWFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOURCOTc4MUIzMjEzN0MwMERCMzhENCAvKiBOYXZpZ2F0
b3JMYW5ndWFnZS5tbSAqLzsgfTsKIAkJRTQwMDE5MzMxQUNFOUI4ODAwMUIwQTJBIC8qIEJsb29t
RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0MDAxOTMwMUFDRTlCNUMwMDFCMEEyQSAvKiBCbG9vbUZpbHRlci5jcHAgKi87IH07CiAJCUY2
NjBBQTExMTVBNUY2MzEwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGFDYWxsYmFja19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjY2MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8qIEdldEluamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAgKi87IH07CiAJ
CUY2NjBBQTE1MTVBNjFBQkYwMDNBMTI0MyAvKiBJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGFDYWxsYmFja1dpbnNfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2NjBBQTE0MTVBNjFBQkYwMDNBMTI0MyAvKiBJbmplY3Rl
ZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnNfQnVuZGxlLmNwcCAqLzsg
fTsKQEAgLTcxMiw2ICs3MTMsNyBAQAogCQlFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVt
b3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERl
bGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOTRFMUJBMTc3RTUx
NDUwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNl
aXZlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOTRFMUJDMTc3
RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMTlEQjk3ODFCMzIxMzdDMDBEQjM4RDQgLyogTmF2aWdh
dG9yTGFuZ3VhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBO
YXZpZ2F0b3JMYW5ndWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQwMDE5
MzAxQUNFOUI1QzAwMUIwQTJBIC8qIEJsb29tRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEJsb29tRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTQ5MDI5NjcxNEUyRTNBNDAwMkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUeXBpbmdTdHlsZUNyYXNo
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEE3NTdEMzE3OEFFQTVCMDBCNUQ3
QTQgLyogRGVxdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVxdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTIwNiw2ICsxMjA4LDcgQEAKIAkJCQlFMTIyMEQ5RjE1NUIy
NTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW0gKi8sCiAJCQkJNTE3RTdERkIxNTExMEVBNjAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1
bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLywKIAkJCQk3QTk5RDk5MzFBRDRBMjlE
MDAzNzMxNDEgLyogTWVudVR5cGVzRm9yTW91c2VFdmVudHMubW0gKi8sCisJCQkJRTE5REI5Nzgx
QjMyMTM3QzAwREIzOEQ0IC8qIE5hdmlnYXRvckxhbmd1YWdlLm1tICovLAogCQkJCUE1N0EzNEVG
MTZBRjY3NzIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMu
bW0gKi8sCiAJCQkJMDBCQzE2ODUxNjgwRkU4MTAwNjVGMUU1IC8qIFB1YmxpY1N1ZmZpeC5tbSAq
LywKIAkJCQkzN0M3ODRERTE5N0M4RjJFMDAxMEE0OTYgLyogUmVuZGVyZWRJbWFnZUZyb21ET01O
b2RlLm1tICovLApAQCAtMTYwOSw2ICsxNjEyLDcgQEAKIAkJCQkyNkY2RTFGMDFBREM3NDlCMDBE
RTY5NkIgLyogREZBTWluaW1pemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2MEJBNTc5MUIx
RDJFN0IwMDRGQTA3QyAvKiBERkFDb21iaW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTk5
RDk5NDFBRDRBMjlEMDAzNzMxNDEgLyogTWVudVR5cGVzRm9yTW91c2VFdmVudHMubW0gaW4gU291
cmNlcyAqLywKKwkJCQlFMTlEQjk3OTFCMzIxMzdDMDBEQjM4RDQgLyogTmF2aWdhdG9yTGFuZ3Vh
Z2UubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L05hdmlnYXRvckxhbmd1YWdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL05hdmlnYXRvckxhbmd1YWdlLm1tCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvTmF2aWdhdG9yTGFuZ3VhZ2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9ET00uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
QGludGVyZmFjZSBOYXZpZ2F0b3JMYW5ndWFnZURlbGVnYXRlIDogTlNPYmplY3QgPFdlYkZyYW1l
TG9hZERlbGVnYXRlPiB7Cit9CitAZW5kCisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7CisK
K0BpbXBsZW1lbnRhdGlvbiBOYXZpZ2F0b3JMYW5ndWFnZURlbGVnYXRlCisKKy0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW5pc2hMb2FkRm9yRnJhbWU6KFdlYkZyYW1lICop
ZnJhbWUKK3sKKyAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KKworQGVuZAorCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKK3ZvaWQgb3ZlcnJpZGVBcHBsZUxhbmd1YWdlcyhOU1N0cmlu
ZyAqcHJpbWFyeUxhbmd1YWdlKQoreworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5
PiBhcmd1bWVudERvbWFpbiA9IGFkb3B0TlMoW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXSBtdXRhYmxl
Q29weV0pOworICAgIGlmICghYXJndW1lbnREb21haW4pCisgICAgICAgIGFyZ3VtZW50RG9tYWlu
ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICAKKyAg
ICBbYXJndW1lbnREb21haW4gYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OkB7CisgICAgICAgIEAi
QXBwbGVMYW5ndWFnZXMiOiBAW3ByaW1hcnlMYW5ndWFnZV0KKyAgICB9XTsKKyAgICBbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFpbjphcmd1bWVu
dERvbWFpbi5nZXQoKSBmb3JOYW1lOk5TQXJndW1lbnREb21haW5dOworCisgICAgW1tOU0Rpc3Ry
aWJ1dGVkTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25O
YW1lOkAiQXBwbGVMYW5ndWFnZVByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbiIgb2JqZWN0
Om5pbCB1c2VySW5mbzpuaWwgb3B0aW9uczpOU0Rpc3RyaWJ1dGVkTm90aWZpY2F0aW9uRGVsaXZl
ckltbWVkaWF0ZWx5XTsKKworICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBydW5VbnRp
bERhdGU6W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93OjAuMV1dOworfQorCitz
dGF0aWMgTlNTdHJpbmcgKmxhbmd1YWdlRm9yU3lzdGVtTGFuZ3VhZ2UoV2ViVmlldyogd2ViVmll
dywgTlNTdHJpbmcgKnN5c3RlbUxhbmd1YWdlKQoreworICAgIG92ZXJyaWRlQXBwbGVMYW5ndWFn
ZXMoc3lzdGVtTGFuZ3VhZ2UpOworICAgIHJldHVybiBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0RnJvbVN0cmluZzpAIm5hdmlnYXRvci5sYW5ndWFnZSJdOworfQorCisvLyBU
aGVzZSB0ZXN0cyBkb2N1bWVudCBjdXJyZW50IGJlaGF2aW9yLiBTb21lIG9mIHRoZSBjdXJyZW50
IHJlc3VsdHMgbWF5IG5vdCBiZSByaWdodC4KK05TQXJyYXkgKnRlc3RzID0gQFsKKyAgICBAW0Ai
cnUiLCBAInJ1LXJ1Il0sIC8vIFRoaXMgZG9lcyBub3QgbWF0Y2ggb3RoZXIgYnJvd3NlcnMgb3Ig
Q0ZOZXR3b3JrJ3MgQWNjZXB0LUxhbmd1YWdlLCB3aGljaCBhbGwgdXNlICJydSIuCisgICAgQFtA
ImVuIiwgQCJlbi11cyJdLAorICAgIEBbQCJlbi1HQiIsIEAiZW4tZ2IiXSwKKyAgICBAW0AiZW4t
VVMiLCBAImVuLXVzIl0sCisgICAgQFtAImphIiwgQCJqYS1qcCJdLAorICAgIEBbQCJoaSIsIEAi
aGktaW4iXSwKKyAgICBAW0AiemgtVFciLCBAInpoLXR3Il0sIC8vIFRoaXMgc2hvdWxkIG5vdCBt
YXAgdG8gdGhlIGdlbmVyaWMgemgtaGFudCwgc2VlIHJkYXI6Ly9wcm9ibGVtLzIxMzk1MTgwLgor
ICAgIEBbQCJ6aC1ISyIsIEAiemgtdHciXSwKKyAgICBAW0AiZXMiLCBAImVzLWVzIl0sCisgICAg
QFtAImVzLU1YIiwgQCJlcy14bCJdLAorICAgIEBbQCJlcy1FUyIsIEAiZXMtZXMiXSwKKyAgICBA
W0AiZXMtNDE5IiwgQCJlcy14bCJdLAorICAgIEBbQCJ6aC1IYW5zIiwgQCJ6aC1jbiJdLAorICAg
IEBbQCJ6aC1IYW50IiwgQCJ6aC10dyJdLAorICAgIEBbQCJwdC1CUiIsIEAicHQtYnIiXSwKKyAg
ICBAW0AicHQtUFQiLCBAInB0LXB0Il0sCisgICAgQFtAImZyIiwgQCJmci1mciJdLAorICAgIEBb
QCJmci1DQSIsIEAiZnItY2EiXSwKK107CisKK1RFU1QoV2ViS2l0MSwgTmF2aWdhdG9yTGFuZ3Vh
Z2UpCit7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1l
Om5pbF0pOworICAgIFJldGFpblB0cjxOYXZpZ2F0b3JMYW5ndWFnZURlbGVnYXRlPiBmcmFtZUxv
YWREZWxlZ2F0ZSA9IGFkb3B0TlMoW05hdmlnYXRvckxhbmd1YWdlRGVsZWdhdGUgbmV3XSk7CisK
KyAgICB3ZWJWaWV3LmdldCgpLmZyYW1lTG9hZERlbGVnYXRlID0gZnJhbWVMb2FkRGVsZWdhdGUu
Z2V0KCk7CisgICAgW1t3ZWJWaWV3LmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImFib3V0OmJsYW5r
Il1dXTsKKworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisgICAgZm9yIChOU0FycmF5
ICp0ZXN0IGluIHRlc3RzKQorICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3Rlc3Qgb2JqZWN0QXRJ
bmRleDoxXSwgbGFuZ3VhZ2VGb3JTeXN0ZW1MYW5ndWFnZSh3ZWJWaWV3LmdldCgpLCBbdGVzdCBv
YmplY3RBdEluZGV4OjBdKSk7Cit9CisKKyNpZiBXS19BUElfRU5BQkxFRAorCitURVNUKFdLV2Vi
VmlldywgTmF2aWdhdG9yTGFuZ3VhZ2UpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCldKTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFu
ayJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBfX2Jsb2NrIGJv
b2wgaXNEb25lID0gZmFsc2U7CisKKyAgICBfX2Jsb2NrIHZvaWQgKF5ydW5UZXN0KShOU1VJbnRl
Z2VyKSA9IF4oTlNVSW50ZWdlciBpbmRleCkgeworICAgICAgICBOU0FycmF5ICp0ZXN0ID0gW3Rl
c3RzIG9iamVjdEF0SW5kZXg6aW5kZXhdOworICAgICAgICBvdmVycmlkZUFwcGxlTGFuZ3VhZ2Vz
KFt0ZXN0IG9iamVjdEF0SW5kZXg6MF0pOworICAgICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFT
Y3JpcHQ6QCJuYXZpZ2F0b3IubGFuZ3VhZ2UiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0
LCBOU0Vycm9yICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShbdGVzdCBvYmplY3RB
dEluZGV4OjFdLCByZXN1bHQpOworICAgICAgICAgICAgaWYgKGluZGV4ICsgMSA8IFt0ZXN0cyBj
b3VudF0pCisgICAgICAgICAgICAgICAgcnVuVGVzdChpbmRleCArIDEpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgIH07
CisKKyAgICBydW5UZXN0KDApOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255178</attachid>
            <date>2015-06-18 23:31:58 -0700</date>
            <delta_ts>2015-06-22 10:24:49 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>hant.txt</filename>
            <type>text/plain</type>
            <size>14232</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTcxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA2LTE4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIxNzI5
NzUpOiBuYXZpZ2F0b3IubGFuZ3VhZ2UgdW5hYmxlIHRvIHRlbGwgcmVnaW9uIGZvciBUcmFkaXRp
b25hbCBDaGluZXNlIHVzZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDYxMjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjEzOTUxODAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXZlcnQgdG8gcHJl
dmlvdXMgYmVoYXZpb3IsIHdoaWNoIGlzIHdyaW5nIGluIG1hbnkgd2F5cywgYnV0IG5vdCBhcyB3
cm9uZyBhcyB0aGUgbmV3IG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9MYW5ndWFnZS5t
bToKKyAgICAgICAgKFdlYkNvcmU6Omh0dHBTdHlsZUxhbmd1YWdlQ29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL3NwaS9jZi9DRkJ1bmRsZVNQSS5oOgorCiAyMDE1LTA2LTE3ICBDb25yYWQgU2h1bHR6ICA8
Y29ucmFkX3NodWx0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjoganMvZG9tL25h
dmlnYXRvci1wbHVnaW5zLWNyYXNoLmh0bWwgYXNzZXJ0cyBhIGxvdApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQkocmV2aXNpb24gMTg1NTkxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW1wb3J0ICJMYW5ndWFnZS5oIgogCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlv
bnMuaCIKKyNpbXBvcnQgIkNGQnVuZGxlU1BJLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNTdHJpbmdF
eHRyYXMuaCIKICNpbXBvcnQgPG11dGV4PgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KQEAg
LTc5LDcgKzgwLDMxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFN0cmluZyBodHRw
U3R5bGVMYW5ndWFnZUNvZGUoTlNTdHJpbmcgKmxhbmd1YWdlKQogewotICAgIHJldHVybiBbW05T
TG9jYWxlIGNhbm9uaWNhbExhbmd1YWdlSWRlbnRpZmllckZyb21TdHJpbmc6Y2Fub25pY2FsTG9j
YWxlTmFtZShsYW5ndWFnZSldIGxvd2VyY2FzZVN0cmluZ107CisgICAgU0ludDMyIGxhbmd1YWdl
Q29kZTsKKyAgICBTSW50MzIgcmVnaW9uQ29kZTsgCisgICAgU0ludDMyIHNjcmlwdENvZGU7IAor
ICAgIENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2Rpbmc7IAorCisgICAgLy8gRklYTUU6IFRo
aXMgdHJhbnNmb3JtYXRpb24gaXMgdmVyeSB3cm9uZzoKKyAgICAvLyAxLiBUaGVyZSBpcyBubyBy
ZWFzb24gd2h5IENGQnVuZGxlIGxvY2FsaXphdGlvbiBuYW1lcyB3b3VsZCBiZSBhdCBhbGwgcmVs
YXRlZCB0byBsYW5ndWFnZSBuYW1lcyBhcyB1c2VkIG9uIHRoZSBXZWIuCisgICAgLy8gMi4gU2Ny
aXB0IE1hbmFnZXIgY29kZXMgY2Fubm90IHJlcHJlc2VudCBhbGwgbGFuZ3VhZ2VzIHRoYXQgYXJl
IG5vdyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtLCBzbyB0aGUgY29udmVyc2lvbiBpcyBsb3Nz
eS4KKyAgICAvLyAzLiBUaGlzIHNob3VsZCBwcm9iYWJseSBtYXRjaCB3aGF0IGlzIHNlbnQgYnkg
dGhlIG5ldHdvcmsgbGF5ZXIgYXMgQWNjZXB0LUxhbmd1YWdlLCBidXQgY3VycmVudGx5LCB0aGF0
J3MgaW1wbGVtZW50ZWQgc2VwYXJhdGVseS4KKyAgICBDRkJ1bmRsZUdldExvY2FsaXphdGlvbklu
Zm9Gb3JMb2NhbGl6YXRpb24oKENGU3RyaW5nUmVmKWxhbmd1YWdlLCAmbGFuZ3VhZ2VDb2RlLCAm
cmVnaW9uQ29kZSwgJnNjcmlwdENvZGUsICZzdHJpbmdFbmNvZGluZyk7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBhZG9wdENGKENGQnVuZGxlQ29w
eUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlvbkluZm8obGFuZ3VhZ2VDb2RlLCByZWdpb25Db2Rl
LCBzY3JpcHRDb2RlLCBzdHJpbmdFbmNvZGluZykpOworICAgIGlmIChwcmVmZXJyZWRMYW5ndWFn
ZUNvZGUpCisgICAgICAgIGxhbmd1YWdlID0gKE5TU3RyaW5nICopcHJlZmVycmVkTGFuZ3VhZ2VD
b2RlLmdldCgpOworCisgICAgLy8gTWFrZSB0aGUgc3RyaW5nIGxvd2VyY2FzZS4KKyAgICBOU1N0
cmluZyAqbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlID0gW2xhbmd1YWdlIGxvd2VyY2FzZVN0cmluZ107
CisKKyAgICAvLyBUdXJuIGEgJ18nIGludG8gYSAnLScgaWYgaXQgYXBwZWFycyBhZnRlciBhIDIt
bGV0dGVyIGxhbmd1YWdlIGNvZGUuCisgICAgaWYgKFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgbGVu
Z3RoXSA+PSAzICYmIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgY2hhcmFjdGVyQXRJbmRleDoyXSA9
PSAnXycpIHsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVN0cmluZz4gbXV0YWJsZUxhbmd1
YWdlQ29kZSA9IGFkb3B0TlMoW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBtdXRhYmxlQ29weV0pOwor
ICAgICAgICBbbXV0YWJsZUxhbmd1YWdlQ29kZS5nZXQoKSByZXBsYWNlQ2hhcmFjdGVyc0luUmFu
Z2U6TlNNYWtlUmFuZ2UoMiwgMSkgd2l0aFN0cmluZzpAIi0iXTsKKyAgICAgICAgcmV0dXJuIG11
dGFibGVMYW5ndWFnZUNvZGUuZ2V0KCk7CisgICAgfQorCisgICAgcmV0dXJuIGxvd2VyY2FzZUxh
bmd1YWdlQ29kZTsKIH0KIAogVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFu
Z3VhZ2VzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRkJ1bmRsZVNQ
SS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRkJ1bmRs
ZVNQSS5oCShyZXZpc2lvbiAxODU1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkv
Y2YvQ0ZCdW5kbGVTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTAgQEAKIAogZXh0
ZXJuICJDIiB7CiB2b2lkIF9DRkJ1bmRsZVNldHVwWFBDQm9vdHN0cmFwKHhwY19vYmplY3RfdCBi
b290c3RyYXApOworCisvLyBGSVhNRTogU3RvcCB1c2luZyB0aGVzZSwgYXMgU2NyaXB0IE1hbmFn
ZXIgY29kZXMgY2Fubm90IHJlcGVyZXNlbnQgYWxsIHN1cHBvcnRlZCBsYW5ndWFnZXMuCitCb29s
ZWFuIENGQnVuZGxlR2V0TG9jYWxpemF0aW9uSW5mb0ZvckxvY2FsaXphdGlvbihDRlN0cmluZ1Jl
ZiBsb2NhbGl6YXRpb25OYW1lLCBTSW50MzIgKmxhbmd1YWdlQ29kZSwgU0ludDMyICpyZWdpb25D
b2RlLCBTSW50MzIgKnNjcmlwdENvZGUsIENGU3RyaW5nRW5jb2RpbmcgKnN0cmluZ0VuY29kaW5n
KTsKK0NGU3RyaW5nUmVmIENGQnVuZGxlQ29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlvbklu
Zm8oU0ludDMyIGxhbmd1YWdlQ29kZSwgU0ludDMyIHJlZ2lvbkNvZGUsIFNJbnQzMiBzY3JpcHRD
b2RlLCBDRlN0cmluZ0VuY29kaW5nIHN0cmluZ0VuY29kaW5nKTsKIH0KIAogI2VuZGlmCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxODU3MTgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxNS0wNi0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSRUdSRVNTSU9OIChyMTcyOTc1KTogbmF2aWdhdG9yLmxhbmd1YWdlIHVuYWJsZSB0
byB0ZWxsIHJlZ2lvbiBmb3IgVHJhZGl0aW9uYWwgQ2hpbmVzZSB1c2VycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTIxCisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzIxMzk1MTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9OYXZpZ2F0b3JM
YW5ndWFnZS5tbTogQWRkZWQuCisgICAgICAgICgtW05hdmlnYXRvckxhbmd1YWdlRGVsZWdhdGUg
d2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpvdmVycmlkZUFwcGxlTGFuZ3VhZ2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Omxhbmd1
YWdlRm9yU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisK
IDIwMTUtMDYtMTggIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuIEFkZCBNYXR0IERhaXRlciBhcyBhIGNvbnRyaWJ1dG9yLgpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NTU5MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTMsNiArMjkzLDcgQEAKIAkJQ0VBNkNGMjgxOUNDRjY5RDAwNjRGNUE3IC8qIG9wZW4tYW5kLWNs
b3NlLXdpbmRvdy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFQTZDRjI3MTlDQ0Y2OUQwMDY0RjVBNyAvKiBvcGVuLWFuZC1jbG9zZS13
aW5kb3cuaHRtbCAqLzsgfTsKIAkJRTEyMjBEQ0ExNTVCMjhBQTAwMTNFMkZDIC8qIE1lbW9yeUNh
Y2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyMjBEQzkxNTVCMjg3RDAw
MTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0
bWwgKi87IH07CiAJCUUxOTRFMUJEMTc3RTUzQzcwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21E
aWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk0RTFCQzE3N0U1MzRBMDA5QzRENEUgLyogU3RvcExvYWRp
bmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgKi87IH07CisJCUUxOURCOTc5MUIzMjEzN0Mw
MERCMzhENCAvKiBOYXZpZ2F0b3JMYW5ndWFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOURCOTc4MUIzMjEzN0MwMERCMzhENCAvKiBOYXZpZ2F0
b3JMYW5ndWFnZS5tbSAqLzsgfTsKIAkJRTQwMDE5MzMxQUNFOUI4ODAwMUIwQTJBIC8qIEJsb29t
RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0MDAxOTMwMUFDRTlCNUMwMDFCMEEyQSAvKiBCbG9vbUZpbHRlci5jcHAgKi87IH07CiAJCUY2
NjBBQTExMTVBNUY2MzEwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGFDYWxsYmFja19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjY2MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8qIEdldEluamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAgKi87IH07CiAJ
CUY2NjBBQTE1MTVBNjFBQkYwMDNBMTI0MyAvKiBJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGFDYWxsYmFja1dpbnNfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2NjBBQTE0MTVBNjFBQkYwMDNBMTI0MyAvKiBJbmplY3Rl
ZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnNfQnVuZGxlLmNwcCAqLzsg
fTsKQEAgLTcxMiw2ICs3MTMsNyBAQAogCQlFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVt
b3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERl
bGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOTRFMUJBMTc3RTUx
NDUwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNl
aXZlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOTRFMUJDMTc3
RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMTlEQjk3ODFCMzIxMzdDMDBEQjM4RDQgLyogTmF2aWdh
dG9yTGFuZ3VhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBO
YXZpZ2F0b3JMYW5ndWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQwMDE5
MzAxQUNFOUI1QzAwMUIwQTJBIC8qIEJsb29tRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEJsb29tRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTQ5MDI5NjcxNEUyRTNBNDAwMkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUeXBpbmdTdHlsZUNyYXNo
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEE3NTdEMzE3OEFFQTVCMDBCNUQ3
QTQgLyogRGVxdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVxdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTIwNiw2ICsxMjA4LDcgQEAKIAkJCQlFMTIyMEQ5RjE1NUIy
NTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW0gKi8sCiAJCQkJNTE3RTdERkIxNTExMEVBNjAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1
bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLywKIAkJCQk3QTk5RDk5MzFBRDRBMjlE
MDAzNzMxNDEgLyogTWVudVR5cGVzRm9yTW91c2VFdmVudHMubW0gKi8sCisJCQkJRTE5REI5Nzgx
QjMyMTM3QzAwREIzOEQ0IC8qIE5hdmlnYXRvckxhbmd1YWdlLm1tICovLAogCQkJCUE1N0EzNEVG
MTZBRjY3NzIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMu
bW0gKi8sCiAJCQkJMDBCQzE2ODUxNjgwRkU4MTAwNjVGMUU1IC8qIFB1YmxpY1N1ZmZpeC5tbSAq
LywKIAkJCQkzN0M3ODRERTE5N0M4RjJFMDAxMEE0OTYgLyogUmVuZGVyZWRJbWFnZUZyb21ET01O
b2RlLm1tICovLApAQCAtMTYwOSw2ICsxNjEyLDcgQEAKIAkJCQkyNkY2RTFGMDFBREM3NDlCMDBE
RTY5NkIgLyogREZBTWluaW1pemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2MEJBNTc5MUIx
RDJFN0IwMDRGQTA3QyAvKiBERkFDb21iaW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTk5
RDk5NDFBRDRBMjlEMDAzNzMxNDEgLyogTWVudVR5cGVzRm9yTW91c2VFdmVudHMubW0gaW4gU291
cmNlcyAqLywKKwkJCQlFMTlEQjk3OTFCMzIxMzdDMDBEQjM4RDQgLyogTmF2aWdhdG9yTGFuZ3Vh
Z2UubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L05hdmlnYXRvckxhbmd1YWdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL05hdmlnYXRvckxhbmd1YWdlLm1tCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvTmF2aWdhdG9yTGFuZ3VhZ2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9ET00uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
QGludGVyZmFjZSBOYXZpZ2F0b3JMYW5ndWFnZURlbGVnYXRlIDogTlNPYmplY3QgPFdlYkZyYW1l
TG9hZERlbGVnYXRlPiB7Cit9CitAZW5kCisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7CisK
K0BpbXBsZW1lbnRhdGlvbiBOYXZpZ2F0b3JMYW5ndWFnZURlbGVnYXRlCisKKy0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaW5pc2hMb2FkRm9yRnJhbWU6KFdlYkZyYW1lICop
ZnJhbWUKK3sKKyAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KKworQGVuZAorCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKK3ZvaWQgb3ZlcnJpZGVBcHBsZUxhbmd1YWdlcyhOU1N0cmlu
ZyAqcHJpbWFyeUxhbmd1YWdlKQoreworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5
PiBhcmd1bWVudERvbWFpbiA9IGFkb3B0TlMoW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXSBtdXRhYmxl
Q29weV0pOworICAgIGlmICghYXJndW1lbnREb21haW4pCisgICAgICAgIGFyZ3VtZW50RG9tYWlu
ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICAKKyAg
ICBbYXJndW1lbnREb21haW4gYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OkB7CisgICAgICAgIEAi
QXBwbGVMYW5ndWFnZXMiOiBAW3ByaW1hcnlMYW5ndWFnZV0KKyAgICB9XTsKKyAgICBbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFpbjphcmd1bWVu
dERvbWFpbi5nZXQoKSBmb3JOYW1lOk5TQXJndW1lbnREb21haW5dOworCisgICAgW1tOU0Rpc3Ry
aWJ1dGVkTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25O
YW1lOkAiQXBwbGVMYW5ndWFnZVByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbiIgb2JqZWN0
Om5pbCB1c2VySW5mbzpuaWwgb3B0aW9uczpOU05vdGlmaWNhdGlvbkRlbGl2ZXJJbW1lZGlhdGVs
eV07CisKKyAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVuVW50aWxEYXRlOltOU0Rh
dGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdzowLjFdXTsKK30KKworc3RhdGljIE5TU3Ry
aW5nICpsYW5ndWFnZUZvclN5c3RlbUxhbmd1YWdlKFdlYlZpZXcqIHdlYlZpZXcsIE5TU3RyaW5n
ICpzeXN0ZW1MYW5ndWFnZSkKK3sKKyAgICBvdmVycmlkZUFwcGxlTGFuZ3VhZ2VzKHN5c3RlbUxh
bmd1YWdlKTsKKyAgICByZXR1cm4gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmc6QCJuYXZpZ2F0b3IubGFuZ3VhZ2UiXTsKK30KKworLy8gVGhlc2UgdGVzdHMg
ZG9jdW1lbnQgY3VycmVudCBiZWhhdmlvci4gU29tZSBvZiB0aGUgY3VycmVudCByZXN1bHRzIG1h
eSBub3QgYmUgcmlnaHQuCitOU0FycmF5ICp0ZXN0cyA9IEBbCisgICAgQFtAInJ1IiwgQCJydS1y
dSJdLCAvLyBUaGlzIGRvZXMgbm90IG1hdGNoIG90aGVyIGJyb3dzZXJzIG9yIENGTmV0d29yaydz
IEFjY2VwdC1MYW5ndWFnZSwgd2hpY2ggYWxsIHVzZSAicnUiLgorICAgIEBbQCJlbiIsIEAiZW4t
dXMiXSwKKyAgICBAW0AiZW4tR0IiLCBAImVuLWdiIl0sCisgICAgQFtAImVuLVVTIiwgQCJlbi11
cyJdLAorICAgIEBbQCJqYSIsIEAiamEtanAiXSwKKyAgICBAW0AiaGkiLCBAImhpLWluIl0sCisg
ICAgQFtAInpoLVRXIiwgQCJ6aC10dyJdLCAvLyBUaGlzIHNob3VsZCBub3QgbWFwIHRvIHRoZSBn
ZW5lcmljIHpoLWhhbnQsIHNlZSByZGFyOi8vcHJvYmxlbS8yMTM5NTE4MC4KKyAgICBAW0Aiemgt
SEsiLCBAInpoLXR3Il0sCisgICAgQFtAImVzIiwgQCJlcy1lcyJdLAorICAgIEBbQCJlcy1NWCIs
IEAiZXMteGwiXSwKKyAgICBAW0AiZXMtRVMiLCBAImVzLWVzIl0sCisgICAgQFtAImVzLTQxOSIs
IEAiZXMteGwiXSwKKyAgICBAW0AiemgtSGFucyIsIEAiemgtY24iXSwKKyAgICBAW0AiemgtSGFu
dCIsIEAiemgtdHciXSwKKyAgICBAW0AicHQtQlIiLCBAInB0LWJyIl0sCisgICAgQFtAInB0LVBU
IiwgQCJwdC1wdCJdLAorICAgIEBbQCJmciIsIEAiZnItZnIiXSwKKyAgICBAW0AiZnItQ0EiLCBA
ImZyLWNhIl0sCitdOworCitURVNUKFdlYktpdDEsIE5hdmlnYXRvckxhbmd1YWdlKQoreworICAg
IFJldGFpblB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAg
ICBSZXRhaW5QdHI8TmF2aWdhdG9yTGFuZ3VhZ2VEZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGUg
PSBhZG9wdE5TKFtOYXZpZ2F0b3JMYW5ndWFnZURlbGVnYXRlIG5ld10pOworCisgICAgd2ViVmll
dy5nZXQoKS5mcmFtZUxvYWREZWxlZ2F0ZSA9IGZyYW1lTG9hZERlbGVnYXRlLmdldCgpOworICAg
IFtbd2ViVmlldy5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFuayJdXV07CisKKyAg
ICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOworICAgIGZvciAoTlNBcnJheSAqdGVzdCBpbiB0
ZXN0cykKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFt0ZXN0IG9iamVjdEF0SW5kZXg6MV0sIGxh
bmd1YWdlRm9yU3lzdGVtTGFuZ3VhZ2Uod2ViVmlldy5nZXQoKSwgW3Rlc3Qgb2JqZWN0QXRJbmRl
eDowXSkpOworfQorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworVEVTVChXS1dlYlZpZXcsIE5hdmln
YXRvckxhbmd1YWdlKQoreworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApXSk7CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV07CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgX19ibG9jayBib29sIGlzRG9uZSA9
IGZhbHNlOworCisgICAgX19ibG9jayB2b2lkIChecnVuVGVzdCkoTlNVSW50ZWdlcikgPSBeKE5T
VUludGVnZXIgaW5kZXgpIHsKKyAgICAgICAgTlNBcnJheSAqdGVzdCA9IFt0ZXN0cyBvYmplY3RB
dEluZGV4OmluZGV4XTsKKyAgICAgICAgb3ZlcnJpZGVBcHBsZUxhbmd1YWdlcyhbdGVzdCBvYmpl
Y3RBdEluZGV4OjBdKTsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAibmF2
aWdhdG9yLmxhbmd1YWdlIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAq
KSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3Rlc3Qgb2JqZWN0QXRJbmRleDoxXSwg
cmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChpbmRleCArIDEgPCBbdGVzdHMgY291bnRdKQorICAg
ICAgICAgICAgICAgIHJ1blRlc3QoaW5kZXggKyAxKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICB9OworCisgICAgcnVu
VGVzdCgwKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKwor
I2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="280225"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>