• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2017 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #include <memory>
8 
9 #include "third_party/base/ptr_util.h"
10 #include "xfa/fxfa/parser/cxfa_accessiblecontent.h"
11 #include "xfa/fxfa/parser/cxfa_acrobat.h"
12 #include "xfa/fxfa/parser/cxfa_acrobat7.h"
13 #include "xfa/fxfa/parser/cxfa_adbe_jsconsole.h"
14 #include "xfa/fxfa/parser/cxfa_adbe_jsdebugger.h"
15 #include "xfa/fxfa/parser/cxfa_addsilentprint.h"
16 #include "xfa/fxfa/parser/cxfa_addviewerpreferences.h"
17 #include "xfa/fxfa/parser/cxfa_adjustdata.h"
18 #include "xfa/fxfa/parser/cxfa_adobeextensionlevel.h"
19 #include "xfa/fxfa/parser/cxfa_agent.h"
20 #include "xfa/fxfa/parser/cxfa_alwaysembed.h"
21 #include "xfa/fxfa/parser/cxfa_amd.h"
22 #include "xfa/fxfa/parser/cxfa_appearancefilter.h"
23 #include "xfa/fxfa/parser/cxfa_arc.h"
24 #include "xfa/fxfa/parser/cxfa_area.h"
25 #include "xfa/fxfa/parser/cxfa_assist.h"
26 #include "xfa/fxfa/parser/cxfa_attributes.h"
27 #include "xfa/fxfa/parser/cxfa_autosave.h"
28 #include "xfa/fxfa/parser/cxfa_barcode.h"
29 #include "xfa/fxfa/parser/cxfa_base.h"
30 #include "xfa/fxfa/parser/cxfa_batchoutput.h"
31 #include "xfa/fxfa/parser/cxfa_behavioroverride.h"
32 #include "xfa/fxfa/parser/cxfa_bind.h"
33 #include "xfa/fxfa/parser/cxfa_binditems.h"
34 #include "xfa/fxfa/parser/cxfa_bookend.h"
35 #include "xfa/fxfa/parser/cxfa_boolean.h"
36 #include "xfa/fxfa/parser/cxfa_border.h"
37 #include "xfa/fxfa/parser/cxfa_break.h"
38 #include "xfa/fxfa/parser/cxfa_breakafter.h"
39 #include "xfa/fxfa/parser/cxfa_breakbefore.h"
40 #include "xfa/fxfa/parser/cxfa_button.h"
41 #include "xfa/fxfa/parser/cxfa_cache.h"
42 #include "xfa/fxfa/parser/cxfa_calculate.h"
43 #include "xfa/fxfa/parser/cxfa_calendarsymbols.h"
44 #include "xfa/fxfa/parser/cxfa_caption.h"
45 #include "xfa/fxfa/parser/cxfa_certificate.h"
46 #include "xfa/fxfa/parser/cxfa_certificates.h"
47 #include "xfa/fxfa/parser/cxfa_change.h"
48 #include "xfa/fxfa/parser/cxfa_checkbutton.h"
49 #include "xfa/fxfa/parser/cxfa_choicelist.h"
50 #include "xfa/fxfa/parser/cxfa_color.h"
51 #include "xfa/fxfa/parser/cxfa_comb.h"
52 #include "xfa/fxfa/parser/cxfa_command.h"
53 #include "xfa/fxfa/parser/cxfa_common.h"
54 #include "xfa/fxfa/parser/cxfa_compress.h"
55 #include "xfa/fxfa/parser/cxfa_compression.h"
56 #include "xfa/fxfa/parser/cxfa_compresslogicalstructure.h"
57 #include "xfa/fxfa/parser/cxfa_compressobjectstream.h"
58 #include "xfa/fxfa/parser/cxfa_config.h"
59 #include "xfa/fxfa/parser/cxfa_conformance.h"
60 #include "xfa/fxfa/parser/cxfa_connect.h"
61 #include "xfa/fxfa/parser/cxfa_connectionset.h"
62 #include "xfa/fxfa/parser/cxfa_connectstring.h"
63 #include "xfa/fxfa/parser/cxfa_contentarea.h"
64 #include "xfa/fxfa/parser/cxfa_contentcopy.h"
65 #include "xfa/fxfa/parser/cxfa_copies.h"
66 #include "xfa/fxfa/parser/cxfa_corner.h"
67 #include "xfa/fxfa/parser/cxfa_creator.h"
68 #include "xfa/fxfa/parser/cxfa_currencysymbol.h"
69 #include "xfa/fxfa/parser/cxfa_currencysymbols.h"
70 #include "xfa/fxfa/parser/cxfa_currentpage.h"
71 #include "xfa/fxfa/parser/cxfa_data.h"
72 #include "xfa/fxfa/parser/cxfa_datagroup.h"
73 #include "xfa/fxfa/parser/cxfa_datamodel.h"
74 #include "xfa/fxfa/parser/cxfa_datavalue.h"
75 #include "xfa/fxfa/parser/cxfa_date.h"
76 #include "xfa/fxfa/parser/cxfa_datepattern.h"
77 #include "xfa/fxfa/parser/cxfa_datepatterns.h"
78 #include "xfa/fxfa/parser/cxfa_datetime.h"
79 #include "xfa/fxfa/parser/cxfa_datetimeedit.h"
80 #include "xfa/fxfa/parser/cxfa_datetimesymbols.h"
81 #include "xfa/fxfa/parser/cxfa_day.h"
82 #include "xfa/fxfa/parser/cxfa_daynames.h"
83 #include "xfa/fxfa/parser/cxfa_debug.h"
84 #include "xfa/fxfa/parser/cxfa_decimal.h"
85 #include "xfa/fxfa/parser/cxfa_defaulttypeface.h"
86 #include "xfa/fxfa/parser/cxfa_defaultui.h"
87 #include "xfa/fxfa/parser/cxfa_delete.h"
88 #include "xfa/fxfa/parser/cxfa_delta.h"
89 #include "xfa/fxfa/parser/cxfa_deltas.h"
90 #include "xfa/fxfa/parser/cxfa_desc.h"
91 #include "xfa/fxfa/parser/cxfa_destination.h"
92 #include "xfa/fxfa/parser/cxfa_digestmethod.h"
93 #include "xfa/fxfa/parser/cxfa_digestmethods.h"
94 #include "xfa/fxfa/parser/cxfa_documentassembly.h"
95 #include "xfa/fxfa/parser/cxfa_draw.h"
96 #include "xfa/fxfa/parser/cxfa_driver.h"
97 #include "xfa/fxfa/parser/cxfa_dsigdata.h"
98 #include "xfa/fxfa/parser/cxfa_duplexoption.h"
99 #include "xfa/fxfa/parser/cxfa_dynamicrender.h"
100 #include "xfa/fxfa/parser/cxfa_edge.h"
101 #include "xfa/fxfa/parser/cxfa_effectiveinputpolicy.h"
102 #include "xfa/fxfa/parser/cxfa_effectiveoutputpolicy.h"
103 #include "xfa/fxfa/parser/cxfa_embed.h"
104 #include "xfa/fxfa/parser/cxfa_encoding.h"
105 #include "xfa/fxfa/parser/cxfa_encodings.h"
106 #include "xfa/fxfa/parser/cxfa_encrypt.h"
107 #include "xfa/fxfa/parser/cxfa_encryption.h"
108 #include "xfa/fxfa/parser/cxfa_encryptionlevel.h"
109 #include "xfa/fxfa/parser/cxfa_encryptionmethod.h"
110 #include "xfa/fxfa/parser/cxfa_encryptionmethods.h"
111 #include "xfa/fxfa/parser/cxfa_enforce.h"
112 #include "xfa/fxfa/parser/cxfa_equate.h"
113 #include "xfa/fxfa/parser/cxfa_equaterange.h"
114 #include "xfa/fxfa/parser/cxfa_era.h"
115 #include "xfa/fxfa/parser/cxfa_eranames.h"
116 #include "xfa/fxfa/parser/cxfa_event.h"
117 #include "xfa/fxfa/parser/cxfa_exclgroup.h"
118 #include "xfa/fxfa/parser/cxfa_exclude.h"
119 #include "xfa/fxfa/parser/cxfa_excludens.h"
120 #include "xfa/fxfa/parser/cxfa_exdata.h"
121 #include "xfa/fxfa/parser/cxfa_execute.h"
122 #include "xfa/fxfa/parser/cxfa_exobject.h"
123 #include "xfa/fxfa/parser/cxfa_extras.h"
124 #include "xfa/fxfa/parser/cxfa_field.h"
125 #include "xfa/fxfa/parser/cxfa_fill.h"
126 #include "xfa/fxfa/parser/cxfa_filter.h"
127 #include "xfa/fxfa/parser/cxfa_fliplabel.h"
128 #include "xfa/fxfa/parser/cxfa_float.h"
129 #include "xfa/fxfa/parser/cxfa_font.h"
130 #include "xfa/fxfa/parser/cxfa_fontinfo.h"
131 #include "xfa/fxfa/parser/cxfa_form.h"
132 #include "xfa/fxfa/parser/cxfa_format.h"
133 #include "xfa/fxfa/parser/cxfa_formfieldfilling.h"
134 #include "xfa/fxfa/parser/cxfa_groupparent.h"
135 #include "xfa/fxfa/parser/cxfa_handler.h"
136 #include "xfa/fxfa/parser/cxfa_hyphenation.h"
137 #include "xfa/fxfa/parser/cxfa_ifempty.h"
138 #include "xfa/fxfa/parser/cxfa_image.h"
139 #include "xfa/fxfa/parser/cxfa_imageedit.h"
140 #include "xfa/fxfa/parser/cxfa_includexdpcontent.h"
141 #include "xfa/fxfa/parser/cxfa_incrementalload.h"
142 #include "xfa/fxfa/parser/cxfa_incrementalmerge.h"
143 #include "xfa/fxfa/parser/cxfa_insert.h"
144 #include "xfa/fxfa/parser/cxfa_instancemanager.h"
145 #include "xfa/fxfa/parser/cxfa_integer.h"
146 #include "xfa/fxfa/parser/cxfa_interactive.h"
147 #include "xfa/fxfa/parser/cxfa_issuers.h"
148 #include "xfa/fxfa/parser/cxfa_items.h"
149 #include "xfa/fxfa/parser/cxfa_jog.h"
150 #include "xfa/fxfa/parser/cxfa_keep.h"
151 #include "xfa/fxfa/parser/cxfa_keyusage.h"
152 #include "xfa/fxfa/parser/cxfa_labelprinter.h"
153 #include "xfa/fxfa/parser/cxfa_layout.h"
154 #include "xfa/fxfa/parser/cxfa_level.h"
155 #include "xfa/fxfa/parser/cxfa_line.h"
156 #include "xfa/fxfa/parser/cxfa_linear.h"
157 #include "xfa/fxfa/parser/cxfa_linearized.h"
158 #include "xfa/fxfa/parser/cxfa_locale.h"
159 #include "xfa/fxfa/parser/cxfa_localeset.h"
160 #include "xfa/fxfa/parser/cxfa_lockdocument.h"
161 #include "xfa/fxfa/parser/cxfa_log.h"
162 #include "xfa/fxfa/parser/cxfa_manifest.h"
163 #include "xfa/fxfa/parser/cxfa_map.h"
164 #include "xfa/fxfa/parser/cxfa_margin.h"
165 #include "xfa/fxfa/parser/cxfa_mdp.h"
166 #include "xfa/fxfa/parser/cxfa_medium.h"
167 #include "xfa/fxfa/parser/cxfa_mediuminfo.h"
168 #include "xfa/fxfa/parser/cxfa_meridiem.h"
169 #include "xfa/fxfa/parser/cxfa_meridiemnames.h"
170 #include "xfa/fxfa/parser/cxfa_message.h"
171 #include "xfa/fxfa/parser/cxfa_messaging.h"
172 #include "xfa/fxfa/parser/cxfa_mode.h"
173 #include "xfa/fxfa/parser/cxfa_modifyannots.h"
174 #include "xfa/fxfa/parser/cxfa_month.h"
175 #include "xfa/fxfa/parser/cxfa_monthnames.h"
176 #include "xfa/fxfa/parser/cxfa_msgid.h"
177 #include "xfa/fxfa/parser/cxfa_nameattr.h"
178 #include "xfa/fxfa/parser/cxfa_neverembed.h"
179 #include "xfa/fxfa/parser/cxfa_node.h"
180 #include "xfa/fxfa/parser/cxfa_numberofcopies.h"
181 #include "xfa/fxfa/parser/cxfa_numberpattern.h"
182 #include "xfa/fxfa/parser/cxfa_numberpatterns.h"
183 #include "xfa/fxfa/parser/cxfa_numbersymbol.h"
184 #include "xfa/fxfa/parser/cxfa_numbersymbols.h"
185 #include "xfa/fxfa/parser/cxfa_numericedit.h"
186 #include "xfa/fxfa/parser/cxfa_occur.h"
187 #include "xfa/fxfa/parser/cxfa_oid.h"
188 #include "xfa/fxfa/parser/cxfa_oids.h"
189 #include "xfa/fxfa/parser/cxfa_openaction.h"
190 #include "xfa/fxfa/parser/cxfa_operation.h"
191 #include "xfa/fxfa/parser/cxfa_output.h"
192 #include "xfa/fxfa/parser/cxfa_outputbin.h"
193 #include "xfa/fxfa/parser/cxfa_outputxsl.h"
194 #include "xfa/fxfa/parser/cxfa_overflow.h"
195 #include "xfa/fxfa/parser/cxfa_overprint.h"
196 #include "xfa/fxfa/parser/cxfa_packet.h"
197 #include "xfa/fxfa/parser/cxfa_packets.h"
198 #include "xfa/fxfa/parser/cxfa_pagearea.h"
199 #include "xfa/fxfa/parser/cxfa_pageoffset.h"
200 #include "xfa/fxfa/parser/cxfa_pagerange.h"
201 #include "xfa/fxfa/parser/cxfa_pageset.h"
202 #include "xfa/fxfa/parser/cxfa_pagination.h"
203 #include "xfa/fxfa/parser/cxfa_paginationoverride.h"
204 #include "xfa/fxfa/parser/cxfa_para.h"
205 #include "xfa/fxfa/parser/cxfa_part.h"
206 #include "xfa/fxfa/parser/cxfa_password.h"
207 #include "xfa/fxfa/parser/cxfa_passwordedit.h"
208 #include "xfa/fxfa/parser/cxfa_pattern.h"
209 #include "xfa/fxfa/parser/cxfa_pcl.h"
210 #include "xfa/fxfa/parser/cxfa_pdf.h"
211 #include "xfa/fxfa/parser/cxfa_pdfa.h"
212 #include "xfa/fxfa/parser/cxfa_permissions.h"
213 #include "xfa/fxfa/parser/cxfa_picktraybypdfsize.h"
214 #include "xfa/fxfa/parser/cxfa_picture.h"
215 #include "xfa/fxfa/parser/cxfa_plaintextmetadata.h"
216 #include "xfa/fxfa/parser/cxfa_presence.h"
217 #include "xfa/fxfa/parser/cxfa_present.h"
218 #include "xfa/fxfa/parser/cxfa_print.h"
219 #include "xfa/fxfa/parser/cxfa_printername.h"
220 #include "xfa/fxfa/parser/cxfa_printhighquality.h"
221 #include "xfa/fxfa/parser/cxfa_printscaling.h"
222 #include "xfa/fxfa/parser/cxfa_producer.h"
223 #include "xfa/fxfa/parser/cxfa_proto.h"
224 #include "xfa/fxfa/parser/cxfa_ps.h"
225 #include "xfa/fxfa/parser/cxfa_psmap.h"
226 #include "xfa/fxfa/parser/cxfa_query.h"
227 #include "xfa/fxfa/parser/cxfa_radial.h"
228 #include "xfa/fxfa/parser/cxfa_range.h"
229 #include "xfa/fxfa/parser/cxfa_reason.h"
230 #include "xfa/fxfa/parser/cxfa_reasons.h"
231 #include "xfa/fxfa/parser/cxfa_record.h"
232 #include "xfa/fxfa/parser/cxfa_recordset.h"
233 #include "xfa/fxfa/parser/cxfa_rectangle.h"
234 #include "xfa/fxfa/parser/cxfa_ref.h"
235 #include "xfa/fxfa/parser/cxfa_relevant.h"
236 #include "xfa/fxfa/parser/cxfa_rename.h"
237 #include "xfa/fxfa/parser/cxfa_renderpolicy.h"
238 #include "xfa/fxfa/parser/cxfa_rootelement.h"
239 #include "xfa/fxfa/parser/cxfa_runscripts.h"
240 #include "xfa/fxfa/parser/cxfa_script.h"
241 #include "xfa/fxfa/parser/cxfa_scriptmodel.h"
242 #include "xfa/fxfa/parser/cxfa_select.h"
243 #include "xfa/fxfa/parser/cxfa_setproperty.h"
244 #include "xfa/fxfa/parser/cxfa_severity.h"
245 #include "xfa/fxfa/parser/cxfa_sharptext.h"
246 #include "xfa/fxfa/parser/cxfa_sharpxhtml.h"
247 #include "xfa/fxfa/parser/cxfa_sharpxml.h"
248 #include "xfa/fxfa/parser/cxfa_signature.h"
249 #include "xfa/fxfa/parser/cxfa_signatureproperties.h"
250 #include "xfa/fxfa/parser/cxfa_signdata.h"
251 #include "xfa/fxfa/parser/cxfa_signing.h"
252 #include "xfa/fxfa/parser/cxfa_silentprint.h"
253 #include "xfa/fxfa/parser/cxfa_soapaction.h"
254 #include "xfa/fxfa/parser/cxfa_soapaddress.h"
255 #include "xfa/fxfa/parser/cxfa_solid.h"
256 #include "xfa/fxfa/parser/cxfa_source.h"
257 #include "xfa/fxfa/parser/cxfa_sourceset.h"
258 #include "xfa/fxfa/parser/cxfa_speak.h"
259 #include "xfa/fxfa/parser/cxfa_staple.h"
260 #include "xfa/fxfa/parser/cxfa_startnode.h"
261 #include "xfa/fxfa/parser/cxfa_startpage.h"
262 #include "xfa/fxfa/parser/cxfa_stipple.h"
263 #include "xfa/fxfa/parser/cxfa_subform.h"
264 #include "xfa/fxfa/parser/cxfa_subformset.h"
265 #include "xfa/fxfa/parser/cxfa_subjectdn.h"
266 #include "xfa/fxfa/parser/cxfa_subjectdns.h"
267 #include "xfa/fxfa/parser/cxfa_submit.h"
268 #include "xfa/fxfa/parser/cxfa_submitformat.h"
269 #include "xfa/fxfa/parser/cxfa_submiturl.h"
270 #include "xfa/fxfa/parser/cxfa_subsetbelow.h"
271 #include "xfa/fxfa/parser/cxfa_suppressbanner.h"
272 #include "xfa/fxfa/parser/cxfa_tagged.h"
273 #include "xfa/fxfa/parser/cxfa_template.h"
274 #include "xfa/fxfa/parser/cxfa_templatecache.h"
275 #include "xfa/fxfa/parser/cxfa_text.h"
276 #include "xfa/fxfa/parser/cxfa_textedit.h"
277 #include "xfa/fxfa/parser/cxfa_threshold.h"
278 #include "xfa/fxfa/parser/cxfa_time.h"
279 #include "xfa/fxfa/parser/cxfa_timepattern.h"
280 #include "xfa/fxfa/parser/cxfa_timepatterns.h"
281 #include "xfa/fxfa/parser/cxfa_timestamp.h"
282 #include "xfa/fxfa/parser/cxfa_to.h"
283 #include "xfa/fxfa/parser/cxfa_tooltip.h"
284 #include "xfa/fxfa/parser/cxfa_trace.h"
285 #include "xfa/fxfa/parser/cxfa_transform.h"
286 #include "xfa/fxfa/parser/cxfa_traversal.h"
287 #include "xfa/fxfa/parser/cxfa_traverse.h"
288 #include "xfa/fxfa/parser/cxfa_type.h"
289 #include "xfa/fxfa/parser/cxfa_typeface.h"
290 #include "xfa/fxfa/parser/cxfa_typefaces.h"
291 #include "xfa/fxfa/parser/cxfa_ui.h"
292 #include "xfa/fxfa/parser/cxfa_update.h"
293 #include "xfa/fxfa/parser/cxfa_uri.h"
294 #include "xfa/fxfa/parser/cxfa_user.h"
295 #include "xfa/fxfa/parser/cxfa_validate.h"
296 #include "xfa/fxfa/parser/cxfa_validateapprovalsignatures.h"
297 #include "xfa/fxfa/parser/cxfa_validationmessaging.h"
298 #include "xfa/fxfa/parser/cxfa_value.h"
299 #include "xfa/fxfa/parser/cxfa_variables.h"
300 #include "xfa/fxfa/parser/cxfa_version.h"
301 #include "xfa/fxfa/parser/cxfa_versioncontrol.h"
302 #include "xfa/fxfa/parser/cxfa_viewerpreferences.h"
303 #include "xfa/fxfa/parser/cxfa_webclient.h"
304 #include "xfa/fxfa/parser/cxfa_whitespace.h"
305 #include "xfa/fxfa/parser/cxfa_window.h"
306 #include "xfa/fxfa/parser/cxfa_wsdladdress.h"
307 #include "xfa/fxfa/parser/cxfa_wsdlconnection.h"
308 #include "xfa/fxfa/parser/cxfa_xdc.h"
309 #include "xfa/fxfa/parser/cxfa_xdp.h"
310 #include "xfa/fxfa/parser/cxfa_xfa.h"
311 #include "xfa/fxfa/parser/cxfa_xmlconnection.h"
312 #include "xfa/fxfa/parser/cxfa_xsdconnection.h"
313 #include "xfa/fxfa/parser/cxfa_xsl.h"
314 #include "xfa/fxfa/parser/cxfa_zpl.h"
315 
316 namespace {
317 
318 struct ElementNameInfo {
319   uint32_t hash;
320   XFA_Element element;
321 } ElementNameToEnum[] = {
322     {0x23ee3 /* ps */, XFA_Element::Ps},
323     {0x25363 /* to */, XFA_Element::To},
324     {0x2587e /* ui */, XFA_Element::Ui},
325     {0x1c648b /* recordSet */, XFA_Element::RecordSet},
326     {0x171428f /* subsetBelow */, XFA_Element::SubsetBelow},
327     {0x1a0776a /* subformSet */, XFA_Element::SubformSet},
328     {0x2340d70 /* adobeExtensionLevel */, XFA_Element::AdobeExtensionLevel},
329     {0x2c1c7f1 /* typeface */, XFA_Element::Typeface},
330     {0x5518c25 /* break */, XFA_Element::Break},
331     {0x5fff523 /* fontInfo */, XFA_Element::FontInfo},
332     {0x653a227 /* numberPattern */, XFA_Element::NumberPattern},
333     {0x65b4a05 /* dynamicRender */, XFA_Element::DynamicRender},
334     {0x7e4362e /* printScaling */, XFA_Element::PrintScaling},
335     {0x7fe6d3a /* checkButton */, XFA_Element::CheckButton},
336     {0x80cf58f /* datePatterns */, XFA_Element::DatePatterns},
337     {0x811929d /* sourceSet */, XFA_Element::SourceSet},
338     {0x9f9d612 /* amd */, XFA_Element::Amd},
339     {0x9f9efb6 /* arc */, XFA_Element::Arc},
340     {0xa48835e /* day */, XFA_Element::Day},
341     {0xa6328b8 /* era */, XFA_Element::Era},
342     {0xae6a0a0 /* jog */, XFA_Element::Jog},
343     {0xb1b3d22 /* log */, XFA_Element::Log},
344     {0xb35439e /* map */, XFA_Element::Map},
345     {0xb355301 /* mdp */, XFA_Element::Mdp},
346     {0xb420438 /* breakBefore */, XFA_Element::BreakBefore},
347     {0xb6a091c /* oid */, XFA_Element::Oid},
348     {0xb84389f /* pcl */, XFA_Element::Pcl},
349     {0xb843dba /* pdf */, XFA_Element::Pdf},
350     {0xbb8df5d /* ref */, XFA_Element::Ref},
351     {0xc080cd0 /* uri */, XFA_Element::Uri},
352     {0xc56afbf /* xdc */, XFA_Element::Xdc},
353     {0xc56afcc /* xdp */, XFA_Element::Xdp},
354     {0xc56b9ff /* xfa */, XFA_Element::Xfa},
355     {0xc56fcb7 /* xsl */, XFA_Element::Xsl},
356     {0xc8b89d6 /* zpl */, XFA_Element::Zpl},
357     {0xc9bae94 /* cache */, XFA_Element::Cache},
358     {0xcb016be /* margin */, XFA_Element::Margin},
359     {0xe1378fe /* keyUsage */, XFA_Element::KeyUsage},
360     {0xfe3596a /* exclude */, XFA_Element::Exclude},
361     {0x10395ac7 /* choiceList */, XFA_Element::ChoiceList},
362     {0x1059ec18 /* level */, XFA_Element::Level},
363     {0x10874804 /* labelPrinter */, XFA_Element::LabelPrinter},
364     {0x10c40e03 /* calendarSymbols */, XFA_Element::CalendarSymbols},
365     {0x10f1ea24 /* para */, XFA_Element::Para},
366     {0x10f1ea37 /* part */, XFA_Element::Part},
367     {0x1140975b /* pdfa */, XFA_Element::Pdfa},
368     {0x1154efe6 /* filter */, XFA_Element::Filter},
369     {0x13f41de1 /* present */, XFA_Element::Present},
370     {0x1827e6ea /* pagination */, XFA_Element::Pagination},
371     {0x18463707 /* encoding */, XFA_Element::Encoding},
372     {0x185e41e2 /* event */, XFA_Element::Event},
373     {0x1adb142d /* whitespace */, XFA_Element::Whitespace},
374     {0x1f3f64c3 /* defaultUi */, XFA_Element::DefaultUi},
375     {0x204e87cb /* dataModel */, XFA_Element::DataModel},
376     {0x2057b350 /* barcode */, XFA_Element::Barcode},
377     {0x20596bad /* timePattern */, XFA_Element::TimePattern},
378     {0x210b74d3 /* batchOutput */, XFA_Element::BatchOutput},
379     {0x212ff0e2 /* enforce */, XFA_Element::Enforce},
380     {0x21d351b4 /* currencySymbols */, XFA_Element::CurrencySymbols},
381     {0x21db83c5 /* addSilentPrint */, XFA_Element::AddSilentPrint},
382     {0x22266258 /* rename */, XFA_Element::Rename},
383     {0x226ca8f1 /* operation */, XFA_Element::Operation},
384     {0x23e27b84 /* typefaces */, XFA_Element::Typefaces},
385     {0x23f4aa75 /* subjectDNs */, XFA_Element::SubjectDNs},
386     {0x240d5e8e /* issuers */, XFA_Element::Issuers},
387     {0x24a52f8a /* wsdlConnection */, XFA_Element::WsdlConnection},
388     {0x254ebd07 /* debug */, XFA_Element::Debug},
389     {0x2655c66a /* delta */, XFA_Element::Delta},
390     {0x26c0daec /* eraNames */, XFA_Element::EraNames},
391     {0x273ab03b /* modifyAnnots */, XFA_Element::ModifyAnnots},
392     {0x27875bb4 /* startNode */, XFA_Element::StartNode},
393     {0x285d0dbc /* button */, XFA_Element::Button},
394     {0x28dee6e9 /* format */, XFA_Element::Format},
395     {0x2a23349e /* border */, XFA_Element::Border},
396     {0x2ae67f19 /* area */, XFA_Element::Area},
397     {0x2c3c4c67 /* hyphenation */, XFA_Element::Hyphenation},
398     {0x2d08af85 /* text */, XFA_Element::Text},
399     {0x2d71b00f /* time */, XFA_Element::Time},
400     {0x2f16a382 /* type */, XFA_Element::Type},
401     {0x2fe057e9 /* overprint */, XFA_Element::Overprint},
402     {0x302aee16 /* certificates */, XFA_Element::Certificates},
403     {0x30b227df /* encryptionMethods */, XFA_Element::EncryptionMethods},
404     {0x32b900d1 /* setProperty */, XFA_Element::SetProperty},
405     {0x337d9e45 /* printerName */, XFA_Element::PrinterName},
406     {0x33edda4b /* startPage */, XFA_Element::StartPage},
407     {0x381943e4 /* pageOffset */, XFA_Element::PageOffset},
408     {0x382106cd /* dateTime */, XFA_Element::DateTime},
409     {0x386e7421 /* comb */, XFA_Element::Comb},
410     {0x390acd9e /* pattern */, XFA_Element::Pattern},
411     {0x3942163e /* ifEmpty */, XFA_Element::IfEmpty},
412     {0x39944a7b /* suppressBanner */, XFA_Element::SuppressBanner},
413     {0x3b3c3dca /* outputBin */, XFA_Element::OutputBin},
414     {0x3b8a4024 /* field */, XFA_Element::Field},
415     {0x3c15352f /* agent */, XFA_Element::Agent},
416     {0x3d7e8668 /* outputXSL */, XFA_Element::OutputXSL},
417     {0x3e1c91c5 /* adjustData */, XFA_Element::AdjustData},
418     {0x3e7a9408 /* autoSave */, XFA_Element::AutoSave},
419     {0x3ecead94 /* contentArea */, XFA_Element::ContentArea},
420     {0x3fadaec0 /* wsdlAddress */, XFA_Element::WsdlAddress},
421     {0x40623b5b /* solid */, XFA_Element::Solid},
422     {0x41f0bd76 /* dateTimeSymbols */, XFA_Element::DateTimeSymbols},
423     {0x444e7523 /* encryptionLevel */, XFA_Element::EncryptionLevel},
424     {0x4523af55 /* edge */, XFA_Element::Edge},
425     {0x45d5e3c1 /* stipple */, XFA_Element::Stipple},
426     {0x475e4e87 /* attributes */, XFA_Element::Attributes},
427     {0x487a8c87 /* versionControl */, XFA_Element::VersionControl},
428     {0x48e5248c /* meridiem */, XFA_Element::Meridiem},
429     {0x48f36719 /* exclGroup */, XFA_Element::ExclGroup},
430     {0x4977356b /* toolTip */, XFA_Element::ToolTip},
431     {0x499afecc /* compress */, XFA_Element::Compress},
432     {0x4a0c4948 /* reason */, XFA_Element::Reason},
433     {0x4bdcce13 /* execute */, XFA_Element::Execute},
434     {0x4c56b216 /* contentCopy */, XFA_Element::ContentCopy},
435     {0x4cc176d3 /* dateTimeEdit */, XFA_Element::DateTimeEdit},
436     {0x4e1e39b6 /* config */, XFA_Element::Config},
437     {0x4e2d6083 /* image */, XFA_Element::Image},
438     {0x4e814150 /* #xHTML */, XFA_Element::SharpxHTML},
439     {0x4f2388c1 /* numberOfCopies */, XFA_Element::NumberOfCopies},
440     {0x4f512e30 /* behaviorOverride */, XFA_Element::BehaviorOverride},
441     {0x4fdc3454 /* timeStamp */, XFA_Element::TimeStamp},
442     {0x51d90546 /* month */, XFA_Element::Month},
443     {0x523437e4 /* viewerPreferences */, XFA_Element::ViewerPreferences},
444     {0x53abc1c6 /* scriptModel */, XFA_Element::ScriptModel},
445     {0x54034c2f /* decimal */, XFA_Element::Decimal},
446     {0x54202c9e /* subform */, XFA_Element::Subform},
447     {0x542c7300 /* select */, XFA_Element::Select},
448     {0x5436d198 /* window */, XFA_Element::Window},
449     {0x5473b6dc /* localeSet */, XFA_Element::LocaleSet},
450     {0x56ae179e /* handler */, XFA_Element::Handler},
451     {0x570ce835 /* presence */, XFA_Element::Presence},
452     {0x5779d65f /* record */, XFA_Element::Record},
453     {0x59c8f27d /* embed */, XFA_Element::Embed},
454     {0x5a50e9e6 /* version */, XFA_Element::Version},
455     {0x5b8383df /* command */, XFA_Element::Command},
456     {0x5c43c6c3 /* copies */, XFA_Element::Copies},
457     {0x5e0c2c49 /* staple */, XFA_Element::Staple},
458     {0x5e5083dd /* submitFormat */, XFA_Element::SubmitFormat},
459     {0x5e8c5d20 /* boolean */, XFA_Element::Boolean},
460     {0x60490a85 /* message */, XFA_Element::Message},
461     {0x60d4c8b1 /* output */, XFA_Element::Output},
462     {0x61810081 /* psMap */, XFA_Element::PsMap},
463     {0x62bd904b /* excludeNS */, XFA_Element::ExcludeNS},
464     {0x669d4f77 /* assist */, XFA_Element::Assist},
465     {0x67334a1c /* picture */, XFA_Element::Picture},
466     {0x67fe7334 /* traversal */, XFA_Element::Traversal},
467     {0x6894589c /* silentPrint */, XFA_Element::SilentPrint},
468     {0x68a16bbd /* webClient */, XFA_Element::WebClient},
469     {0x6a4bc084 /* producer */, XFA_Element::Producer},
470     {0x6a9e04c9 /* corner */, XFA_Element::Corner},
471     {0x6ccd7274 /* msgId */, XFA_Element::MsgId},
472     {0x6e67921f /* color */, XFA_Element::Color},
473     {0x6ec217a5 /* keep */, XFA_Element::Keep},
474     {0x6eef1116 /* query */, XFA_Element::Query},
475     {0x7033bfd5 /* insert */, XFA_Element::Insert},
476     {0x704af389 /* imageEdit */, XFA_Element::ImageEdit},
477     {0x7233018a /* validate */, XFA_Element::Validate},
478     {0x72ba47b4 /* digestMethods */, XFA_Element::DigestMethods},
479     {0x72f2aa7a /* numberPatterns */, XFA_Element::NumberPatterns},
480     {0x74caed29 /* pageSet */, XFA_Element::PageSet},
481     {0x7568e6ae /* integer */, XFA_Element::Integer},
482     {0x76182db9 /* soapAddress */, XFA_Element::SoapAddress},
483     {0x773146c5 /* equate */, XFA_Element::Equate},
484     {0x77d449dd /* formFieldFilling */, XFA_Element::FormFieldFilling},
485     {0x7889d68a /* pageRange */, XFA_Element::PageRange},
486     {0x7baca2e3 /* update */, XFA_Element::Update},
487     {0x7ce89001 /* connectString */, XFA_Element::ConnectString},
488     {0x7d9fd7c5 /* mode */, XFA_Element::Mode},
489     {0x7e7e845e /* layout */, XFA_Element::Layout},
490     {0x7e845c34 /* #xml */, XFA_Element::Sharpxml},
491     {0x7fb341df /* xsdConnection */, XFA_Element::XsdConnection},
492     {0x7ffb51cc /* traverse */, XFA_Element::Traverse},
493     {0x80203b5a /* encodings */, XFA_Element::Encodings},
494     {0x803550fc /* template */, XFA_Element::Template},
495     {0x803d5bbc /* acrobat */, XFA_Element::Acrobat},
496     {0x821d6569 /* validationMessaging */, XFA_Element::ValidationMessaging},
497     {0x830e688f /* signing */, XFA_Element::Signing},
498     {0x83dab9f5 /* script */, XFA_Element::Script},
499     {0x8411ebcd /* addViewerPreferences */, XFA_Element::AddViewerPreferences},
500     {0x8777642e /* alwaysEmbed */, XFA_Element::AlwaysEmbed},
501     {0x877a6b39 /* passwordEdit */, XFA_Element::PasswordEdit},
502     {0x87e84c99 /* numericEdit */, XFA_Element::NumericEdit},
503     {0x8852cdec /* encryptionMethod */, XFA_Element::EncryptionMethod},
504     {0x891f4606 /* change */, XFA_Element::Change},
505     {0x89939f36 /* pageArea */, XFA_Element::PageArea},
506     {0x8a9d6247 /* submitUrl */, XFA_Element::SubmitUrl},
507     {0x8ad8b90f /* oids */, XFA_Element::Oids},
508     {0x8b036f32 /* signature */, XFA_Element::Signature},
509     {0x8b128efb /* ADBE_JSConsole */, XFA_Element::ADBE_JSConsole},
510     {0x8bcfe96e /* caption */, XFA_Element::Caption},
511     {0x8e1c2921 /* relevant */, XFA_Element::Relevant},
512     {0x8e3f0a4b /* flipLabel */, XFA_Element::FlipLabel},
513     {0x900280b7 /* exData */, XFA_Element::ExData},
514     {0x91e80352 /* dayNames */, XFA_Element::DayNames},
515     {0x93113b11 /* soapAction */, XFA_Element::SoapAction},
516     {0x938b09f6 /* defaultTypeface */, XFA_Element::DefaultTypeface},
517     {0x95b37897 /* manifest */, XFA_Element::Manifest},
518     {0x97b76b54 /* overflow */, XFA_Element::Overflow},
519     {0x9a57861b /* linear */, XFA_Element::Linear},
520     {0x9ad5a821 /* currencySymbol */, XFA_Element::CurrencySymbol},
521     {0x9c6471b3 /* delete */, XFA_Element::Delete},
522     {0x9deea61d /* deltas */, XFA_Element::Deltas},
523     {0x9e67de21 /* digestMethod */, XFA_Element::DigestMethod},
524     {0x9f3e9510 /* instanceManager */, XFA_Element::InstanceManager},
525     {0xa0799892 /* equateRange */, XFA_Element::EquateRange},
526     {0xa084a381 /* medium */, XFA_Element::Medium},
527     {0xa1211b8b /* textEdit */, XFA_Element::TextEdit},
528     {0xa17008f0 /* templateCache */, XFA_Element::TemplateCache},
529     {0xa4f7b88f /* compressObjectStream */, XFA_Element::CompressObjectStream},
530     {0xa65f5d17 /* dataValue */, XFA_Element::DataValue},
531     {0xa6caaa89 /* accessibleContent */, XFA_Element::AccessibleContent},
532     {0xa94cc00b /* includeXDPContent */, XFA_Element::IncludeXDPContent},
533     {0xa9b081a1 /* xmlConnection */, XFA_Element::XmlConnection},
534     {0xab2a3b74 /* validateApprovalSignatures */,
535      XFA_Element::ValidateApprovalSignatures},
536     {0xab8c5a2b /* signData */, XFA_Element::SignData},
537     {0xabaa2ceb /* packets */, XFA_Element::Packets},
538     {0xadba359c /* datePattern */, XFA_Element::DatePattern},
539     {0xae222b2b /* duplexOption */, XFA_Element::DuplexOption},
540     {0xb012effb /* base */, XFA_Element::Base},
541     {0xb0e5485d /* bind */, XFA_Element::Bind},
542     {0xb45d61b2 /* compression */, XFA_Element::Compression},
543     {0xb563f0ff /* user */, XFA_Element::User},
544     {0xb5848ad5 /* rectangle */, XFA_Element::Rectangle},
545     {0xb6dacb72 /* effectiveOutputPolicy */,
546      XFA_Element::EffectiveOutputPolicy},
547     {0xb7d7654d /* ADBE_JSDebugger */, XFA_Element::ADBE_JSDebugger},
548     {0xbab37f73 /* acrobat7 */, XFA_Element::Acrobat7},
549     {0xbc70081e /* interactive */, XFA_Element::Interactive},
550     {0xbc8fa350 /* locale */, XFA_Element::Locale},
551     {0xbcd44940 /* currentPage */, XFA_Element::CurrentPage},
552     {0xbde9abda /* data */, XFA_Element::Data},
553     {0xbde9abde /* date */, XFA_Element::Date},
554     {0xbe52dfbf /* desc */, XFA_Element::Desc},
555     {0xbf4b6405 /* encrypt */, XFA_Element::Encrypt},
556     {0xbfa87cce /* draw */, XFA_Element::Draw},
557     {0xc181ff4b /* encryption */, XFA_Element::Encryption},
558     {0xc1970f40 /* meridiemNames */, XFA_Element::MeridiemNames},
559     {0xc5ad9f5e /* messaging */, XFA_Element::Messaging},
560     {0xc69549f4 /* speak */, XFA_Element::Speak},
561     {0xc7743dc7 /* dataGroup */, XFA_Element::DataGroup},
562     {0xc7eb20e9 /* common */, XFA_Element::Common},
563     {0xc85d4528 /* #text */, XFA_Element::Sharptext},
564     {0xc861556a /* paginationOverride */, XFA_Element::PaginationOverride},
565     {0xc903dabb /* reasons */, XFA_Element::Reasons},
566     {0xc9a8127f /* signatureProperties */, XFA_Element::SignatureProperties},
567     {0xca010c2d /* threshold */, XFA_Element::Threshold},
568     {0xcb4c5e96 /* appearanceFilter */, XFA_Element::AppearanceFilter},
569     {0xcc92aba7 /* fill */, XFA_Element::Fill},
570     {0xcd308b77 /* font */, XFA_Element::Font},
571     {0xcd309ff4 /* form */, XFA_Element::Form},
572     {0xcebcca2d /* mediumInfo */, XFA_Element::MediumInfo},
573     {0xcfe0d643 /* certificate */, XFA_Element::Certificate},
574     {0xd012c033 /* password */, XFA_Element::Password},
575     {0xd01604bd /* runScripts */, XFA_Element::RunScripts},
576     {0xd1227e6f /* trace */, XFA_Element::Trace},
577     {0xd1532876 /* float */, XFA_Element::Float},
578     {0xd17a6c30 /* renderPolicy */, XFA_Element::RenderPolicy},
579     {0xd58aa962 /* destination */, XFA_Element::Destination},
580     {0xd6e27f1d /* value */, XFA_Element::Value},
581     {0xd7a14462 /* bookend */, XFA_Element::Bookend},
582     {0xd8c31254 /* exObject */, XFA_Element::ExObject},
583     {0xda6a8590 /* openAction */, XFA_Element::OpenAction},
584     {0xdab4fb7d /* neverEmbed */, XFA_Element::NeverEmbed},
585     {0xdb98475f /* bindItems */, XFA_Element::BindItems},
586     {0xdbfbe02e /* calculate */, XFA_Element::Calculate},
587     {0xdd7676ed /* print */, XFA_Element::Print},
588     {0xdde273d7 /* extras */, XFA_Element::Extras},
589     {0xde146b34 /* proto */, XFA_Element::Proto},
590     {0xdf059321 /* dSigData */, XFA_Element::DSigData},
591     {0xdfccf030 /* creator */, XFA_Element::Creator},
592     {0xdff78c6a /* connect */, XFA_Element::Connect},
593     {0xe11a2cbc /* permissions */, XFA_Element::Permissions},
594     {0xe14c801c /* connectionSet */, XFA_Element::ConnectionSet},
595     {0xe1c83a14 /* submit */, XFA_Element::Submit},
596     {0xe29821cd /* range */, XFA_Element::Range},
597     {0xe38d83c7 /* linearized */, XFA_Element::Linearized},
598     {0xe3aa2578 /* packet */, XFA_Element::Packet},
599     {0xe3aa860e /* rootElement */, XFA_Element::RootElement},
600     {0xe3e553fa /* plaintextMetadata */, XFA_Element::PlaintextMetadata},
601     {0xe3e6e4f2 /* numberSymbols */, XFA_Element::NumberSymbols},
602     {0xe3f067f6 /* printHighQuality */, XFA_Element::PrintHighQuality},
603     {0xe3fd078c /* driver */, XFA_Element::Driver},
604     {0xe48b34f2 /* incrementalLoad */, XFA_Element::IncrementalLoad},
605     {0xe550e7c2 /* subjectDN */, XFA_Element::SubjectDN},
606     {0xe6669a78 /* compressLogicalStructure */,
607      XFA_Element::CompressLogicalStructure},
608     {0xe7a7ea02 /* incrementalMerge */, XFA_Element::IncrementalMerge},
609     {0xe948530d /* radial */, XFA_Element::Radial},
610     {0xea8d6999 /* variables */, XFA_Element::Variables},
611     {0xeaa142c0 /* timePatterns */, XFA_Element::TimePatterns},
612     {0xeb943a71 /* effectiveInputPolicy */, XFA_Element::EffectiveInputPolicy},
613     {0xef04a2bc /* nameAttr */, XFA_Element::NameAttr},
614     {0xf07222ab /* conformance */, XFA_Element::Conformance},
615     {0xf0aaaadc /* transform */, XFA_Element::Transform},
616     {0xf1433e88 /* lockDocument */, XFA_Element::LockDocument},
617     {0xf54eb997 /* breakAfter */, XFA_Element::BreakAfter},
618     {0xf616da28 /* line */, XFA_Element::Line},
619     {0xf7055fb1 /* source */, XFA_Element::Source},
620     {0xf7eebe1c /* occur */, XFA_Element::Occur},
621     {0xf8d10d97 /* pickTrayByPDFSize */, XFA_Element::PickTrayByPDFSize},
622     {0xf8f19e3a /* monthNames */, XFA_Element::MonthNames},
623     {0xf984149b /* severity */, XFA_Element::Severity},
624     {0xf9bcb037 /* groupParent */, XFA_Element::GroupParent},
625     {0xfbc42fff /* documentAssembly */, XFA_Element::DocumentAssembly},
626     {0xfc78159f /* numberSymbol */, XFA_Element::NumberSymbol},
627     {0xfcbd606c /* tagged */, XFA_Element::Tagged},
628     {0xff063802 /* items */, XFA_Element::Items},
629 };
630 
631 struct AttributeNameInfo {
632   uint32_t hash;
633   XFA_Attribute attribute;
634 } AttributeNameInfoToEnum[] = {
635     {0x68 /* h */, XFA_Attribute::H},
636     {0x77 /* w */, XFA_Attribute::W},
637     {0x78 /* x */, XFA_Attribute::X},
638     {0x79 /* y */, XFA_Attribute::Y},
639     {0x21aed /* id */, XFA_Attribute::Id},
640     {0x25363 /* to */, XFA_Attribute::To},
641     {0xcb0ac9 /* lineThrough */, XFA_Attribute::LineThrough},
642     {0x2282c73 /* hAlign */, XFA_Attribute::HAlign},
643     {0x2c1c7f1 /* typeface */, XFA_Attribute::Typeface},
644     {0x3106c3a /* beforeTarget */, XFA_Attribute::BeforeTarget},
645     {0x31b19c1 /* name */, XFA_Attribute::Name},
646     {0x3848b3f /* next */, XFA_Attribute::Next},
647     {0x43e349b /* dataRowCount */, XFA_Attribute::DataRowCount},
648     {0x5518c25 /* break */, XFA_Attribute::Break},
649     {0x5ce6195 /* vScrollPolicy */, XFA_Attribute::VScrollPolicy},
650     {0x8c74ae9 /* fontHorizontalScale */, XFA_Attribute::FontHorizontalScale},
651     {0x8d4f1c7 /* textIndent */, XFA_Attribute::TextIndent},
652     {0x97c1c65 /* context */, XFA_Attribute::Context},
653     {0x9876578 /* trayOut */, XFA_Attribute::TrayOut},
654     {0xa2e3514 /* cap */, XFA_Attribute::Cap},
655     {0xb3543a6 /* max */, XFA_Attribute::Max},
656     {0xb356ca4 /* min */, XFA_Attribute::Min},
657     {0xbb8df5d /* ref */, XFA_Attribute::Ref},
658     {0xbb8f3df /* rid */, XFA_Attribute::Rid},
659     {0xc080cd3 /* url */, XFA_Attribute::Url},
660     {0xc0811ed /* use */, XFA_Attribute::Use},
661     {0xcfea02e /* leftInset */, XFA_Attribute::LeftInset},
662     {0x1026c59d /* widows */, XFA_Attribute::Widows},
663     {0x1059ec18 /* level */, XFA_Attribute::Level},
664     {0x1356caf8 /* bottomInset */, XFA_Attribute::BottomInset},
665     {0x13a08bdb /* overflowTarget */, XFA_Attribute::OverflowTarget},
666     {0x1414d431 /* allowMacro */, XFA_Attribute::AllowMacro},
667     {0x14a32d52 /* pagePosition */, XFA_Attribute::PagePosition},
668     {0x1517dfa1 /* columnWidths */, XFA_Attribute::ColumnWidths},
669     {0x169134a1 /* overflowLeader */, XFA_Attribute::OverflowLeader},
670     {0x1b8dce3e /* action */, XFA_Attribute::Action},
671     {0x1e459b8f /* nonRepudiation */, XFA_Attribute::NonRepudiation},
672     {0x1ec8ab2c /* rate */, XFA_Attribute::Rate},
673     {0x1ef3a64a /* allowRichText */, XFA_Attribute::AllowRichText},
674     {0x2038c9b2 /* role */, XFA_Attribute::Role},
675     {0x20914367 /* overflowTrailer */, XFA_Attribute::OverflowTrailer},
676     {0x226ca8f1 /* operation */, XFA_Attribute::Operation},
677     {0x24d85167 /* timeout */, XFA_Attribute::Timeout},
678     {0x25764436 /* topInset */, XFA_Attribute::TopInset},
679     {0x25839852 /* access */, XFA_Attribute::Access},
680     {0x268b7ec1 /* commandType */, XFA_Attribute::CommandType},
681     {0x28dee6e9 /* format */, XFA_Attribute::Format},
682     {0x28e17e91 /* dataPrep */, XFA_Attribute::DataPrep},
683     {0x292b88fe /* widgetData */, XFA_Attribute::WidgetData},
684     {0x29418bb7 /* abbr */, XFA_Attribute::Abbr},
685     {0x2a82d99c /* marginRight */, XFA_Attribute::MarginRight},
686     {0x2b5df51e /* dataDescription */, XFA_Attribute::DataDescription},
687     {0x2bb3f470 /* encipherOnly */, XFA_Attribute::EncipherOnly},
688     {0x2cd79033 /* kerningMode */, XFA_Attribute::KerningMode},
689     {0x2ee7678f /* rotate */, XFA_Attribute::Rotate},
690     {0x2f105f72 /* wordCharacterCount */, XFA_Attribute::WordCharacterCount},
691     {0x2f16a382 /* type */, XFA_Attribute::Type},
692     {0x34ae103c /* reserve */, XFA_Attribute::Reserve},
693     {0x3650557e /* textLocation */, XFA_Attribute::TextLocation},
694     {0x39cdb0a2 /* priority */, XFA_Attribute::Priority},
695     {0x3a0273a6 /* underline */, XFA_Attribute::Underline},
696     {0x3b582286 /* moduleWidth */, XFA_Attribute::ModuleWidth},
697     {0x3d123c26 /* hyphenate */, XFA_Attribute::Hyphenate},
698     {0x3e7af94f /* listen */, XFA_Attribute::Listen},
699     {0x4156ee3f /* delimiter */, XFA_Attribute::Delimiter},
700     {0x42fed1fd /* contentType */, XFA_Attribute::ContentType},
701     {0x453eaf38 /* startNew */, XFA_Attribute::StartNew},
702     {0x45a6daf8 /* eofAction */, XFA_Attribute::EofAction},
703     {0x47cfa43a /* allowNeutral */, XFA_Attribute::AllowNeutral},
704     {0x47d03490 /* connection */, XFA_Attribute::Connection},
705     {0x4873c601 /* baselineShift */, XFA_Attribute::BaselineShift},
706     {0x4b319767 /* overlinePeriod */, XFA_Attribute::OverlinePeriod},
707     {0x4b8bc840 /* fracDigits */, XFA_Attribute::FracDigits},
708     {0x4ef3d02c /* orientation */, XFA_Attribute::Orientation},
709     {0x4fdc3454 /* timeStamp */, XFA_Attribute::TimeStamp},
710     {0x52666f1c /* printCheckDigit */, XFA_Attribute::PrintCheckDigit},
711     {0x534729c9 /* marginLeft */, XFA_Attribute::MarginLeft},
712     {0x5392ea58 /* stroke */, XFA_Attribute::Stroke},
713     {0x5404d6df /* moduleHeight */, XFA_Attribute::ModuleHeight},
714     {0x54fa722c /* transferEncoding */, XFA_Attribute::TransferEncoding},
715     {0x552d9ad5 /* usage */, XFA_Attribute::Usage},
716     {0x570ce835 /* presence */, XFA_Attribute::Presence},
717     {0x5739d1ff /* radixOffset */, XFA_Attribute::RadixOffset},
718     {0x577682ac /* preserve */, XFA_Attribute::Preserve},
719     {0x58be2870 /* aliasNode */, XFA_Attribute::AliasNode},
720     {0x5a32e493 /* multiLine */, XFA_Attribute::MultiLine},
721     {0x5a50e9e6 /* version */, XFA_Attribute::Version},
722     {0x5ab23b6c /* startChar */, XFA_Attribute::StartChar},
723     {0x5b707a35 /* scriptTest */, XFA_Attribute::ScriptTest},
724     {0x5c054755 /* startAngle */, XFA_Attribute::StartAngle},
725     {0x5ec958c0 /* cursorType */, XFA_Attribute::CursorType},
726     {0x5f760b50 /* digitalSignature */, XFA_Attribute::DigitalSignature},
727     {0x60a61edd /* codeType */, XFA_Attribute::CodeType},
728     {0x60d4c8b1 /* output */, XFA_Attribute::Output},
729     {0x64110ab5 /* bookendTrailer */, XFA_Attribute::BookendTrailer},
730     {0x65e30c67 /* imagingBBox */, XFA_Attribute::ImagingBBox},
731     {0x66539c48 /* excludeInitialCap */, XFA_Attribute::ExcludeInitialCap},
732     {0x66642f8f /* force */, XFA_Attribute::Force},
733     {0x69aa2292 /* crlSign */, XFA_Attribute::CrlSign},
734     {0x6a3405dd /* previous */, XFA_Attribute::Previous},
735     {0x6a95c976 /* pushCharacterCount */, XFA_Attribute::PushCharacterCount},
736     {0x6b6ddcfb /* nullTest */, XFA_Attribute::NullTest},
737     {0x6cfa828a /* runAt */, XFA_Attribute::RunAt},
738     {0x731e0665 /* spaceBelow */, XFA_Attribute::SpaceBelow},
739     {0x74788f8b /* sweepAngle */, XFA_Attribute::SweepAngle},
740     {0x78bff531 /* numberOfCells */, XFA_Attribute::NumberOfCells},
741     {0x79543055 /* letterSpacing */, XFA_Attribute::LetterSpacing},
742     {0x79975f2b /* lockType */, XFA_Attribute::LockType},
743     {0x7a0cc471 /* passwordChar */, XFA_Attribute::PasswordChar},
744     {0x7a7cc341 /* vAlign */, XFA_Attribute::VAlign},
745     {0x7b29630a /* sourceBelow */, XFA_Attribute::SourceBelow},
746     {0x7b95e661 /* inverted */, XFA_Attribute::Inverted},
747     {0x7c2fd80b /* mark */, XFA_Attribute::Mark},
748     {0x7c2ff6ae /* maxH */, XFA_Attribute::MaxH},
749     {0x7c2ff6bd /* maxW */, XFA_Attribute::MaxW},
750     {0x7c732a66 /* truncate */, XFA_Attribute::Truncate},
751     {0x7d02356c /* minH */, XFA_Attribute::MinH},
752     {0x7d02357b /* minW */, XFA_Attribute::MinW},
753     {0x7d0b5fca /* initial */, XFA_Attribute::Initial},
754     {0x7d9fd7c5 /* mode */, XFA_Attribute::Mode},
755     {0x7e7e845e /* layout */, XFA_Attribute::Layout},
756     {0x7f6fd3d7 /* server */, XFA_Attribute::Server},
757     {0x824f21b7 /* embedPDF */, XFA_Attribute::EmbedPDF},
758     {0x8340ea66 /* oddOrEven */, XFA_Attribute::OddOrEven},
759     {0x836d4d7c /* tabDefault */, XFA_Attribute::TabDefault},
760     {0x8855805f /* contains */, XFA_Attribute::Contains},
761     {0x8a692521 /* rightInset */, XFA_Attribute::RightInset},
762     {0x8af2e657 /* maxChars */, XFA_Attribute::MaxChars},
763     {0x8b90e1f2 /* open */, XFA_Attribute::Open},
764     {0x8c99377e /* relation */, XFA_Attribute::Relation},
765     {0x8d181d61 /* wideNarrowRatio */, XFA_Attribute::WideNarrowRatio},
766     {0x8e1c2921 /* relevant */, XFA_Attribute::Relevant},
767     {0x8e29d794 /* signatureType */, XFA_Attribute::SignatureType},
768     {0x8ec6204c /* lineThroughPeriod */, XFA_Attribute::LineThroughPeriod},
769     {0x8ed182d1 /* shape */, XFA_Attribute::Shape},
770     {0x8fa01790 /* tabStops */, XFA_Attribute::TabStops},
771     {0x8fc36c0a /* outputBelow */, XFA_Attribute::OutputBelow},
772     {0x9041d4b0 /* short */, XFA_Attribute::Short},
773     {0x907c7719 /* fontVerticalScale */, XFA_Attribute::FontVerticalScale},
774     {0x94446dcc /* thickness */, XFA_Attribute::Thickness},
775     {0x957fa006 /* commitOn */, XFA_Attribute::CommitOn},
776     {0x982bd892 /* remainCharacterCount */,
777      XFA_Attribute::RemainCharacterCount},
778     {0x98fd4d81 /* keyAgreement */, XFA_Attribute::KeyAgreement},
779     {0x99800d7a /* errorCorrectionLevel */,
780      XFA_Attribute::ErrorCorrectionLevel},
781     {0x9a63da3d /* upsMode */, XFA_Attribute::UpsMode},
782     {0x9cc17d75 /* mergeMode */, XFA_Attribute::MergeMode},
783     {0x9d833d75 /* circular */, XFA_Attribute::Circular},
784     {0x9d8ee204 /* psName */, XFA_Attribute::PsName},
785     {0x9dcc3ab3 /* trailer */, XFA_Attribute::Trailer},
786     {0xa0933954 /* unicodeRange */, XFA_Attribute::UnicodeRange},
787     {0xa1b0d2f5 /* executeType */, XFA_Attribute::ExecuteType},
788     {0xa25a883d /* duplexImposition */, XFA_Attribute::DuplexImposition},
789     {0xa42ca1b7 /* trayIn */, XFA_Attribute::TrayIn},
790     {0xa433f001 /* bindingNode */, XFA_Attribute::BindingNode},
791     {0xa5340ff5 /* bofAction */, XFA_Attribute::BofAction},
792     {0xa5b410cf /* save */, XFA_Attribute::Save},
793     {0xa6118c89 /* targetType */, XFA_Attribute::TargetType},
794     {0xa66404cb /* keyEncipherment */, XFA_Attribute::KeyEncipherment},
795     {0xa6710262 /* credentialServerPolicy */,
796      XFA_Attribute::CredentialServerPolicy},
797     {0xa686975b /* size */, XFA_Attribute::Size},
798     {0xa85e74f3 /* initialNumber */, XFA_Attribute::InitialNumber},
799     {0xabef37e3 /* slope */, XFA_Attribute::Slope},
800     {0xabfa6c4f /* cSpace */, XFA_Attribute::CSpace},
801     {0xac06e2b0 /* colSpan */, XFA_Attribute::ColSpan},
802     {0xadc4c77b /* binding */, XFA_Attribute::Binding},
803     {0xaf754613 /* checksum */, XFA_Attribute::Checksum},
804     {0xb045fbc5 /* charEncoding */, XFA_Attribute::CharEncoding},
805     {0xb0e5485d /* bind */, XFA_Attribute::Bind},
806     {0xb12128b7 /* textEntry */, XFA_Attribute::TextEntry},
807     {0xb373a862 /* archive */, XFA_Attribute::Archive},
808     {0xb598a1f7 /* uuid */, XFA_Attribute::Uuid},
809     {0xb5e49bf2 /* posture */, XFA_Attribute::Posture},
810     {0xb6b44172 /* after */, XFA_Attribute::After},
811     {0xb716467b /* orphans */, XFA_Attribute::Orphans},
812     {0xbc0c4695 /* qualifiedName */, XFA_Attribute::QualifiedName},
813     {0xbc254332 /* usehref */, XFA_Attribute::Usehref},
814     {0xbc8fa350 /* locale */, XFA_Attribute::Locale},
815     {0xbd6e1d88 /* weight */, XFA_Attribute::Weight},
816     {0xbd96a0e9 /* underlinePeriod */, XFA_Attribute::UnderlinePeriod},
817     {0xbde9abda /* data */, XFA_Attribute::Data},
818     {0xbe52dfbf /* desc */, XFA_Attribute::Desc},
819     {0xbe9ba472 /* numbered */, XFA_Attribute::Numbered},
820     {0xc035c6b1 /* dataColumnCount */, XFA_Attribute::DataColumnCount},
821     {0xc0ec9fa4 /* overline */, XFA_Attribute::Overline},
822     {0xc2ba0923 /* urlPolicy */, XFA_Attribute::UrlPolicy},
823     {0xc2bd40fd /* anchorType */, XFA_Attribute::AnchorType},
824     {0xc39a88bd /* labelRef */, XFA_Attribute::LabelRef},
825     {0xc3c1442f /* bookendLeader */, XFA_Attribute::BookendLeader},
826     {0xc4547a08 /* maxLength */, XFA_Attribute::MaxLength},
827     {0xc4fed09b /* accessKey */, XFA_Attribute::AccessKey},
828     {0xc5762157 /* cursorLocation */, XFA_Attribute::CursorLocation},
829     {0xc860f30a /* delayedOpen */, XFA_Attribute::DelayedOpen},
830     {0xc8da4da7 /* target */, XFA_Attribute::Target},
831     {0xca5dc27c /* dataEncipherment */, XFA_Attribute::DataEncipherment},
832     {0xcb150479 /* afterTarget */, XFA_Attribute::AfterTarget},
833     {0xcbcaf66d /* leader */, XFA_Attribute::Leader},
834     {0xcca7897e /* picker */, XFA_Attribute::Picker},
835     {0xcd7f7b54 /* from */, XFA_Attribute::From},
836     {0xcea5e62c /* baseProfile */, XFA_Attribute::BaseProfile},
837     {0xd171b240 /* aspect */, XFA_Attribute::Aspect},
838     {0xd3c84d25 /* rowColumnRatio */, XFA_Attribute::RowColumnRatio},
839     {0xd4b01921 /* lineHeight */, XFA_Attribute::LineHeight},
840     {0xd4cc53f8 /* highlight */, XFA_Attribute::Highlight},
841     {0xd50f903a /* valueRef */, XFA_Attribute::ValueRef},
842     {0xd52482e0 /* maxEntries */, XFA_Attribute::MaxEntries},
843     {0xd57c513c /* dataLength */, XFA_Attribute::DataLength},
844     {0xd6128d8d /* activity */, XFA_Attribute::Activity},
845     {0xd6a39990 /* input */, XFA_Attribute::Input},
846     {0xd6e27f1d /* value */, XFA_Attribute::Value},
847     {0xd70798c2 /* blankOrNotBlank */, XFA_Attribute::BlankOrNotBlank},
848     {0xd861f8af /* addRevocationInfo */, XFA_Attribute::AddRevocationInfo},
849     {0xd8f982bf /* genericFamily */, XFA_Attribute::GenericFamily},
850     {0xd996fa9b /* hand */, XFA_Attribute::Hand},
851     {0xdb55fec5 /* href */, XFA_Attribute::Href},
852     {0xdc75676c /* textEncoding */, XFA_Attribute::TextEncoding},
853     {0xde7f92ba /* leadDigits */, XFA_Attribute::LeadDigits},
854     {0xe11a2cbc /* permissions */, XFA_Attribute::Permissions},
855     {0xe18b5659 /* spaceAbove */, XFA_Attribute::SpaceAbove},
856     {0xe1a26b56 /* codeBase */, XFA_Attribute::CodeBase},
857     {0xe349d044 /* stock */, XFA_Attribute::Stock},
858     {0xe372ae97 /* isNull */, XFA_Attribute::IsNull},
859     {0xe4c3a5e5 /* restoreState */, XFA_Attribute::RestoreState},
860     {0xe5c96d6a /* excludeAllCaps */, XFA_Attribute::ExcludeAllCaps},
861     {0xe64b1129 /* formatTest */, XFA_Attribute::FormatTest},
862     {0xe6f99487 /* hScrollPolicy */, XFA_Attribute::HScrollPolicy},
863     {0xe8dddf50 /* join */, XFA_Attribute::Join},
864     {0xe8f118a8 /* keyCertSign */, XFA_Attribute::KeyCertSign},
865     {0xe948b9a8 /* radius */, XFA_Attribute::Radius},
866     {0xe996b2fe /* sourceAbove */, XFA_Attribute::SourceAbove},
867     {0xea7090a0 /* override */, XFA_Attribute::Override},
868     {0xeb091003 /* classId */, XFA_Attribute::ClassId},
869     {0xeb511b54 /* disable */, XFA_Attribute::Disable},
870     {0xeda9017a /* scope */, XFA_Attribute::Scope},
871     {0xf197844d /* match */, XFA_Attribute::Match},
872     {0xf2009339 /* placement */, XFA_Attribute::Placement},
873     {0xf4ffce73 /* before */, XFA_Attribute::Before},
874     {0xf531b059 /* writingScript */, XFA_Attribute::WritingScript},
875     {0xf575ca75 /* endChar */, XFA_Attribute::EndChar},
876     {0xf6b47749 /* lock */, XFA_Attribute::Lock},
877     {0xf6b4afb0 /* long */, XFA_Attribute::Long},
878     {0xf6b59543 /* intact */, XFA_Attribute::Intact},
879     {0xf889e747 /* xdpContent */, XFA_Attribute::XdpContent},
880     {0xfea53ec6 /* decipherOnly */, XFA_Attribute::DecipherOnly},
881 };
882 
883 }  // namespace
884 
885 // static
NameToElement(const WideString & name)886 XFA_Element CXFA_Node::NameToElement(const WideString& name) {
887   uint32_t hash = FX_HashCode_GetW(name.AsStringView(), false);
888   auto* elem = std::lower_bound(
889       std::begin(ElementNameToEnum), std::end(ElementNameToEnum), hash,
890       [](const ElementNameInfo& a, uint32_t hash) { return a.hash < hash; });
891   if (elem != std::end(ElementNameToEnum) && elem->hash == hash)
892     return elem->element;
893   return XFA_Element::Unknown;
894 }
895 
896 // static
NameToAttribute(const WideStringView & name)897 XFA_Attribute CXFA_Node::NameToAttribute(const WideStringView& name) {
898   uint32_t hash = FX_HashCode_GetW(name, false);
899   auto* elem = std::lower_bound(
900       std::begin(AttributeNameInfoToEnum), std::end(AttributeNameInfoToEnum),
901       hash,
902       [](const AttributeNameInfo& a, uint32_t hash) { return a.hash < hash; });
903   if (elem != std::end(AttributeNameInfoToEnum) && elem->hash == hash)
904     return elem->attribute;
905   return XFA_Attribute::Unknown;
906 }
907 
908 // static
Create(CXFA_Document * doc,XFA_Element element,XFA_PacketType packet)909 std::unique_ptr<CXFA_Node> CXFA_Node::Create(CXFA_Document* doc,
910                                              XFA_Element element,
911                                              XFA_PacketType packet) {
912   std::unique_ptr<CXFA_Node> node;
913   switch (element) {
914     case XFA_Element::Ps:
915       node = pdfium::MakeUnique<CXFA_Ps>(doc, packet);
916       break;
917     case XFA_Element::To:
918       node = pdfium::MakeUnique<CXFA_To>(doc, packet);
919       break;
920     case XFA_Element::Ui:
921       node = pdfium::MakeUnique<CXFA_Ui>(doc, packet);
922       break;
923     case XFA_Element::RecordSet:
924       node = pdfium::MakeUnique<CXFA_RecordSet>(doc, packet);
925       break;
926     case XFA_Element::SubsetBelow:
927       node = pdfium::MakeUnique<CXFA_SubsetBelow>(doc, packet);
928       break;
929     case XFA_Element::SubformSet:
930       node = pdfium::MakeUnique<CXFA_SubformSet>(doc, packet);
931       break;
932     case XFA_Element::AdobeExtensionLevel:
933       node = pdfium::MakeUnique<CXFA_AdobeExtensionLevel>(doc, packet);
934       break;
935     case XFA_Element::Typeface:
936       node = pdfium::MakeUnique<CXFA_Typeface>(doc, packet);
937       break;
938     case XFA_Element::Break:
939       node = pdfium::MakeUnique<CXFA_Break>(doc, packet);
940       break;
941     case XFA_Element::FontInfo:
942       node = pdfium::MakeUnique<CXFA_FontInfo>(doc, packet);
943       break;
944     case XFA_Element::NumberPattern:
945       node = pdfium::MakeUnique<CXFA_NumberPattern>(doc, packet);
946       break;
947     case XFA_Element::DynamicRender:
948       node = pdfium::MakeUnique<CXFA_DynamicRender>(doc, packet);
949       break;
950     case XFA_Element::PrintScaling:
951       node = pdfium::MakeUnique<CXFA_PrintScaling>(doc, packet);
952       break;
953     case XFA_Element::CheckButton:
954       node = pdfium::MakeUnique<CXFA_CheckButton>(doc, packet);
955       break;
956     case XFA_Element::DatePatterns:
957       node = pdfium::MakeUnique<CXFA_DatePatterns>(doc, packet);
958       break;
959     case XFA_Element::SourceSet:
960       node = pdfium::MakeUnique<CXFA_SourceSet>(doc, packet);
961       break;
962     case XFA_Element::Amd:
963       node = pdfium::MakeUnique<CXFA_Amd>(doc, packet);
964       break;
965     case XFA_Element::Arc:
966       node = pdfium::MakeUnique<CXFA_Arc>(doc, packet);
967       break;
968     case XFA_Element::Day:
969       node = pdfium::MakeUnique<CXFA_Day>(doc, packet);
970       break;
971     case XFA_Element::Era:
972       node = pdfium::MakeUnique<CXFA_Era>(doc, packet);
973       break;
974     case XFA_Element::Jog:
975       node = pdfium::MakeUnique<CXFA_Jog>(doc, packet);
976       break;
977     case XFA_Element::Log:
978       node = pdfium::MakeUnique<CXFA_Log>(doc, packet);
979       break;
980     case XFA_Element::Map:
981       node = pdfium::MakeUnique<CXFA_Map>(doc, packet);
982       break;
983     case XFA_Element::Mdp:
984       node = pdfium::MakeUnique<CXFA_Mdp>(doc, packet);
985       break;
986     case XFA_Element::BreakBefore:
987       node = pdfium::MakeUnique<CXFA_BreakBefore>(doc, packet);
988       break;
989     case XFA_Element::Oid:
990       node = pdfium::MakeUnique<CXFA_Oid>(doc, packet);
991       break;
992     case XFA_Element::Pcl:
993       node = pdfium::MakeUnique<CXFA_Pcl>(doc, packet);
994       break;
995     case XFA_Element::Pdf:
996       node = pdfium::MakeUnique<CXFA_Pdf>(doc, packet);
997       break;
998     case XFA_Element::Ref:
999       node = pdfium::MakeUnique<CXFA_Ref>(doc, packet);
1000       break;
1001     case XFA_Element::Uri:
1002       node = pdfium::MakeUnique<CXFA_Uri>(doc, packet);
1003       break;
1004     case XFA_Element::Xdc:
1005       node = pdfium::MakeUnique<CXFA_Xdc>(doc, packet);
1006       break;
1007     case XFA_Element::Xdp:
1008       node = pdfium::MakeUnique<CXFA_Xdp>(doc, packet);
1009       break;
1010     case XFA_Element::Xfa:
1011       node = pdfium::MakeUnique<CXFA_Xfa>(doc, packet);
1012       break;
1013     case XFA_Element::Xsl:
1014       node = pdfium::MakeUnique<CXFA_Xsl>(doc, packet);
1015       break;
1016     case XFA_Element::Zpl:
1017       node = pdfium::MakeUnique<CXFA_Zpl>(doc, packet);
1018       break;
1019     case XFA_Element::Cache:
1020       node = pdfium::MakeUnique<CXFA_Cache>(doc, packet);
1021       break;
1022     case XFA_Element::Margin:
1023       node = pdfium::MakeUnique<CXFA_Margin>(doc, packet);
1024       break;
1025     case XFA_Element::KeyUsage:
1026       node = pdfium::MakeUnique<CXFA_KeyUsage>(doc, packet);
1027       break;
1028     case XFA_Element::Exclude:
1029       node = pdfium::MakeUnique<CXFA_Exclude>(doc, packet);
1030       break;
1031     case XFA_Element::ChoiceList:
1032       node = pdfium::MakeUnique<CXFA_ChoiceList>(doc, packet);
1033       break;
1034     case XFA_Element::Level:
1035       node = pdfium::MakeUnique<CXFA_Level>(doc, packet);
1036       break;
1037     case XFA_Element::LabelPrinter:
1038       node = pdfium::MakeUnique<CXFA_LabelPrinter>(doc, packet);
1039       break;
1040     case XFA_Element::CalendarSymbols:
1041       node = pdfium::MakeUnique<CXFA_CalendarSymbols>(doc, packet);
1042       break;
1043     case XFA_Element::Para:
1044       node = pdfium::MakeUnique<CXFA_Para>(doc, packet);
1045       break;
1046     case XFA_Element::Part:
1047       node = pdfium::MakeUnique<CXFA_Part>(doc, packet);
1048       break;
1049     case XFA_Element::Pdfa:
1050       node = pdfium::MakeUnique<CXFA_Pdfa>(doc, packet);
1051       break;
1052     case XFA_Element::Filter:
1053       node = pdfium::MakeUnique<CXFA_Filter>(doc, packet);
1054       break;
1055     case XFA_Element::Present:
1056       node = pdfium::MakeUnique<CXFA_Present>(doc, packet);
1057       break;
1058     case XFA_Element::Pagination:
1059       node = pdfium::MakeUnique<CXFA_Pagination>(doc, packet);
1060       break;
1061     case XFA_Element::Encoding:
1062       node = pdfium::MakeUnique<CXFA_Encoding>(doc, packet);
1063       break;
1064     case XFA_Element::Event:
1065       node = pdfium::MakeUnique<CXFA_Event>(doc, packet);
1066       break;
1067     case XFA_Element::Whitespace:
1068       node = pdfium::MakeUnique<CXFA_Whitespace>(doc, packet);
1069       break;
1070     case XFA_Element::DefaultUi:
1071       node = pdfium::MakeUnique<CXFA_DefaultUi>(doc, packet);
1072       break;
1073     case XFA_Element::DataModel:
1074       node = pdfium::MakeUnique<CXFA_DataModel>(doc, packet);
1075       break;
1076     case XFA_Element::Barcode:
1077       node = pdfium::MakeUnique<CXFA_Barcode>(doc, packet);
1078       break;
1079     case XFA_Element::TimePattern:
1080       node = pdfium::MakeUnique<CXFA_TimePattern>(doc, packet);
1081       break;
1082     case XFA_Element::BatchOutput:
1083       node = pdfium::MakeUnique<CXFA_BatchOutput>(doc, packet);
1084       break;
1085     case XFA_Element::Enforce:
1086       node = pdfium::MakeUnique<CXFA_Enforce>(doc, packet);
1087       break;
1088     case XFA_Element::CurrencySymbols:
1089       node = pdfium::MakeUnique<CXFA_CurrencySymbols>(doc, packet);
1090       break;
1091     case XFA_Element::AddSilentPrint:
1092       node = pdfium::MakeUnique<CXFA_AddSilentPrint>(doc, packet);
1093       break;
1094     case XFA_Element::Rename:
1095       node = pdfium::MakeUnique<CXFA_Rename>(doc, packet);
1096       break;
1097     case XFA_Element::Operation:
1098       node = pdfium::MakeUnique<CXFA_Operation>(doc, packet);
1099       break;
1100     case XFA_Element::Typefaces:
1101       node = pdfium::MakeUnique<CXFA_Typefaces>(doc, packet);
1102       break;
1103     case XFA_Element::SubjectDNs:
1104       node = pdfium::MakeUnique<CXFA_SubjectDNs>(doc, packet);
1105       break;
1106     case XFA_Element::Issuers:
1107       node = pdfium::MakeUnique<CXFA_Issuers>(doc, packet);
1108       break;
1109     case XFA_Element::WsdlConnection:
1110       node = pdfium::MakeUnique<CXFA_WsdlConnection>(doc, packet);
1111       break;
1112     case XFA_Element::Debug:
1113       node = pdfium::MakeUnique<CXFA_Debug>(doc, packet);
1114       break;
1115     case XFA_Element::Delta:
1116       node = pdfium::MakeUnique<CXFA_Delta>(doc, packet);
1117       break;
1118     case XFA_Element::EraNames:
1119       node = pdfium::MakeUnique<CXFA_EraNames>(doc, packet);
1120       break;
1121     case XFA_Element::ModifyAnnots:
1122       node = pdfium::MakeUnique<CXFA_ModifyAnnots>(doc, packet);
1123       break;
1124     case XFA_Element::StartNode:
1125       node = pdfium::MakeUnique<CXFA_StartNode>(doc, packet);
1126       break;
1127     case XFA_Element::Button:
1128       node = pdfium::MakeUnique<CXFA_Button>(doc, packet);
1129       break;
1130     case XFA_Element::Format:
1131       node = pdfium::MakeUnique<CXFA_Format>(doc, packet);
1132       break;
1133     case XFA_Element::Border:
1134       node = pdfium::MakeUnique<CXFA_Border>(doc, packet);
1135       break;
1136     case XFA_Element::Area:
1137       node = pdfium::MakeUnique<CXFA_Area>(doc, packet);
1138       break;
1139     case XFA_Element::Hyphenation:
1140       node = pdfium::MakeUnique<CXFA_Hyphenation>(doc, packet);
1141       break;
1142     case XFA_Element::Text:
1143       node = pdfium::MakeUnique<CXFA_Text>(doc, packet);
1144       break;
1145     case XFA_Element::Time:
1146       node = pdfium::MakeUnique<CXFA_Time>(doc, packet);
1147       break;
1148     case XFA_Element::Type:
1149       node = pdfium::MakeUnique<CXFA_Type>(doc, packet);
1150       break;
1151     case XFA_Element::Overprint:
1152       node = pdfium::MakeUnique<CXFA_Overprint>(doc, packet);
1153       break;
1154     case XFA_Element::Certificates:
1155       node = pdfium::MakeUnique<CXFA_Certificates>(doc, packet);
1156       break;
1157     case XFA_Element::EncryptionMethods:
1158       node = pdfium::MakeUnique<CXFA_EncryptionMethods>(doc, packet);
1159       break;
1160     case XFA_Element::SetProperty:
1161       node = pdfium::MakeUnique<CXFA_SetProperty>(doc, packet);
1162       break;
1163     case XFA_Element::PrinterName:
1164       node = pdfium::MakeUnique<CXFA_PrinterName>(doc, packet);
1165       break;
1166     case XFA_Element::StartPage:
1167       node = pdfium::MakeUnique<CXFA_StartPage>(doc, packet);
1168       break;
1169     case XFA_Element::PageOffset:
1170       node = pdfium::MakeUnique<CXFA_PageOffset>(doc, packet);
1171       break;
1172     case XFA_Element::DateTime:
1173       node = pdfium::MakeUnique<CXFA_DateTime>(doc, packet);
1174       break;
1175     case XFA_Element::Comb:
1176       node = pdfium::MakeUnique<CXFA_Comb>(doc, packet);
1177       break;
1178     case XFA_Element::Pattern:
1179       node = pdfium::MakeUnique<CXFA_Pattern>(doc, packet);
1180       break;
1181     case XFA_Element::IfEmpty:
1182       node = pdfium::MakeUnique<CXFA_IfEmpty>(doc, packet);
1183       break;
1184     case XFA_Element::SuppressBanner:
1185       node = pdfium::MakeUnique<CXFA_SuppressBanner>(doc, packet);
1186       break;
1187     case XFA_Element::OutputBin:
1188       node = pdfium::MakeUnique<CXFA_OutputBin>(doc, packet);
1189       break;
1190     case XFA_Element::Field:
1191       node = pdfium::MakeUnique<CXFA_Field>(doc, packet);
1192       break;
1193     case XFA_Element::Agent:
1194       node = pdfium::MakeUnique<CXFA_Agent>(doc, packet);
1195       break;
1196     case XFA_Element::OutputXSL:
1197       node = pdfium::MakeUnique<CXFA_OutputXSL>(doc, packet);
1198       break;
1199     case XFA_Element::AdjustData:
1200       node = pdfium::MakeUnique<CXFA_AdjustData>(doc, packet);
1201       break;
1202     case XFA_Element::AutoSave:
1203       node = pdfium::MakeUnique<CXFA_AutoSave>(doc, packet);
1204       break;
1205     case XFA_Element::ContentArea:
1206       node = pdfium::MakeUnique<CXFA_ContentArea>(doc, packet);
1207       break;
1208     case XFA_Element::WsdlAddress:
1209       node = pdfium::MakeUnique<CXFA_WsdlAddress>(doc, packet);
1210       break;
1211     case XFA_Element::Solid:
1212       node = pdfium::MakeUnique<CXFA_Solid>(doc, packet);
1213       break;
1214     case XFA_Element::DateTimeSymbols:
1215       node = pdfium::MakeUnique<CXFA_DateTimeSymbols>(doc, packet);
1216       break;
1217     case XFA_Element::EncryptionLevel:
1218       node = pdfium::MakeUnique<CXFA_EncryptionLevel>(doc, packet);
1219       break;
1220     case XFA_Element::Edge:
1221       node = pdfium::MakeUnique<CXFA_Edge>(doc, packet);
1222       break;
1223     case XFA_Element::Stipple:
1224       node = pdfium::MakeUnique<CXFA_Stipple>(doc, packet);
1225       break;
1226     case XFA_Element::Attributes:
1227       node = pdfium::MakeUnique<CXFA_Attributes>(doc, packet);
1228       break;
1229     case XFA_Element::VersionControl:
1230       node = pdfium::MakeUnique<CXFA_VersionControl>(doc, packet);
1231       break;
1232     case XFA_Element::Meridiem:
1233       node = pdfium::MakeUnique<CXFA_Meridiem>(doc, packet);
1234       break;
1235     case XFA_Element::ExclGroup:
1236       node = pdfium::MakeUnique<CXFA_ExclGroup>(doc, packet);
1237       break;
1238     case XFA_Element::ToolTip:
1239       node = pdfium::MakeUnique<CXFA_ToolTip>(doc, packet);
1240       break;
1241     case XFA_Element::Compress:
1242       node = pdfium::MakeUnique<CXFA_Compress>(doc, packet);
1243       break;
1244     case XFA_Element::Reason:
1245       node = pdfium::MakeUnique<CXFA_Reason>(doc, packet);
1246       break;
1247     case XFA_Element::Execute:
1248       node = pdfium::MakeUnique<CXFA_Execute>(doc, packet);
1249       break;
1250     case XFA_Element::ContentCopy:
1251       node = pdfium::MakeUnique<CXFA_ContentCopy>(doc, packet);
1252       break;
1253     case XFA_Element::DateTimeEdit:
1254       node = pdfium::MakeUnique<CXFA_DateTimeEdit>(doc, packet);
1255       break;
1256     case XFA_Element::Config:
1257       node = pdfium::MakeUnique<CXFA_Config>(doc, packet);
1258       break;
1259     case XFA_Element::Image:
1260       node = pdfium::MakeUnique<CXFA_Image>(doc, packet);
1261       break;
1262     case XFA_Element::SharpxHTML:
1263       node = pdfium::MakeUnique<CXFA_SharpxHTML>(doc, packet);
1264       break;
1265     case XFA_Element::NumberOfCopies:
1266       node = pdfium::MakeUnique<CXFA_NumberOfCopies>(doc, packet);
1267       break;
1268     case XFA_Element::BehaviorOverride:
1269       node = pdfium::MakeUnique<CXFA_BehaviorOverride>(doc, packet);
1270       break;
1271     case XFA_Element::TimeStamp:
1272       node = pdfium::MakeUnique<CXFA_TimeStamp>(doc, packet);
1273       break;
1274     case XFA_Element::Month:
1275       node = pdfium::MakeUnique<CXFA_Month>(doc, packet);
1276       break;
1277     case XFA_Element::ViewerPreferences:
1278       node = pdfium::MakeUnique<CXFA_ViewerPreferences>(doc, packet);
1279       break;
1280     case XFA_Element::ScriptModel:
1281       node = pdfium::MakeUnique<CXFA_ScriptModel>(doc, packet);
1282       break;
1283     case XFA_Element::Decimal:
1284       node = pdfium::MakeUnique<CXFA_Decimal>(doc, packet);
1285       break;
1286     case XFA_Element::Subform:
1287       node = pdfium::MakeUnique<CXFA_Subform>(doc, packet);
1288       break;
1289     case XFA_Element::Select:
1290       node = pdfium::MakeUnique<CXFA_Select>(doc, packet);
1291       break;
1292     case XFA_Element::Window:
1293       node = pdfium::MakeUnique<CXFA_Window>(doc, packet);
1294       break;
1295     case XFA_Element::LocaleSet:
1296       node = pdfium::MakeUnique<CXFA_LocaleSet>(doc, packet);
1297       break;
1298     case XFA_Element::Handler:
1299       node = pdfium::MakeUnique<CXFA_Handler>(doc, packet);
1300       break;
1301     case XFA_Element::Presence:
1302       node = pdfium::MakeUnique<CXFA_Presence>(doc, packet);
1303       break;
1304     case XFA_Element::Record:
1305       node = pdfium::MakeUnique<CXFA_Record>(doc, packet);
1306       break;
1307     case XFA_Element::Embed:
1308       node = pdfium::MakeUnique<CXFA_Embed>(doc, packet);
1309       break;
1310     case XFA_Element::Version:
1311       node = pdfium::MakeUnique<CXFA_Version>(doc, packet);
1312       break;
1313     case XFA_Element::Command:
1314       node = pdfium::MakeUnique<CXFA_Command>(doc, packet);
1315       break;
1316     case XFA_Element::Copies:
1317       node = pdfium::MakeUnique<CXFA_Copies>(doc, packet);
1318       break;
1319     case XFA_Element::Staple:
1320       node = pdfium::MakeUnique<CXFA_Staple>(doc, packet);
1321       break;
1322     case XFA_Element::SubmitFormat:
1323       node = pdfium::MakeUnique<CXFA_SubmitFormat>(doc, packet);
1324       break;
1325     case XFA_Element::Boolean:
1326       node = pdfium::MakeUnique<CXFA_Boolean>(doc, packet);
1327       break;
1328     case XFA_Element::Message:
1329       node = pdfium::MakeUnique<CXFA_Message>(doc, packet);
1330       break;
1331     case XFA_Element::Output:
1332       node = pdfium::MakeUnique<CXFA_Output>(doc, packet);
1333       break;
1334     case XFA_Element::PsMap:
1335       node = pdfium::MakeUnique<CXFA_PsMap>(doc, packet);
1336       break;
1337     case XFA_Element::ExcludeNS:
1338       node = pdfium::MakeUnique<CXFA_ExcludeNS>(doc, packet);
1339       break;
1340     case XFA_Element::Assist:
1341       node = pdfium::MakeUnique<CXFA_Assist>(doc, packet);
1342       break;
1343     case XFA_Element::Picture:
1344       node = pdfium::MakeUnique<CXFA_Picture>(doc, packet);
1345       break;
1346     case XFA_Element::Traversal:
1347       node = pdfium::MakeUnique<CXFA_Traversal>(doc, packet);
1348       break;
1349     case XFA_Element::SilentPrint:
1350       node = pdfium::MakeUnique<CXFA_SilentPrint>(doc, packet);
1351       break;
1352     case XFA_Element::WebClient:
1353       node = pdfium::MakeUnique<CXFA_WebClient>(doc, packet);
1354       break;
1355     case XFA_Element::Producer:
1356       node = pdfium::MakeUnique<CXFA_Producer>(doc, packet);
1357       break;
1358     case XFA_Element::Corner:
1359       node = pdfium::MakeUnique<CXFA_Corner>(doc, packet);
1360       break;
1361     case XFA_Element::MsgId:
1362       node = pdfium::MakeUnique<CXFA_MsgId>(doc, packet);
1363       break;
1364     case XFA_Element::Color:
1365       node = pdfium::MakeUnique<CXFA_Color>(doc, packet);
1366       break;
1367     case XFA_Element::Keep:
1368       node = pdfium::MakeUnique<CXFA_Keep>(doc, packet);
1369       break;
1370     case XFA_Element::Query:
1371       node = pdfium::MakeUnique<CXFA_Query>(doc, packet);
1372       break;
1373     case XFA_Element::Insert:
1374       node = pdfium::MakeUnique<CXFA_Insert>(doc, packet);
1375       break;
1376     case XFA_Element::ImageEdit:
1377       node = pdfium::MakeUnique<CXFA_ImageEdit>(doc, packet);
1378       break;
1379     case XFA_Element::Validate:
1380       node = pdfium::MakeUnique<CXFA_Validate>(doc, packet);
1381       break;
1382     case XFA_Element::DigestMethods:
1383       node = pdfium::MakeUnique<CXFA_DigestMethods>(doc, packet);
1384       break;
1385     case XFA_Element::NumberPatterns:
1386       node = pdfium::MakeUnique<CXFA_NumberPatterns>(doc, packet);
1387       break;
1388     case XFA_Element::PageSet:
1389       node = pdfium::MakeUnique<CXFA_PageSet>(doc, packet);
1390       break;
1391     case XFA_Element::Integer:
1392       node = pdfium::MakeUnique<CXFA_Integer>(doc, packet);
1393       break;
1394     case XFA_Element::SoapAddress:
1395       node = pdfium::MakeUnique<CXFA_SoapAddress>(doc, packet);
1396       break;
1397     case XFA_Element::Equate:
1398       node = pdfium::MakeUnique<CXFA_Equate>(doc, packet);
1399       break;
1400     case XFA_Element::FormFieldFilling:
1401       node = pdfium::MakeUnique<CXFA_FormFieldFilling>(doc, packet);
1402       break;
1403     case XFA_Element::PageRange:
1404       node = pdfium::MakeUnique<CXFA_PageRange>(doc, packet);
1405       break;
1406     case XFA_Element::Update:
1407       node = pdfium::MakeUnique<CXFA_Update>(doc, packet);
1408       break;
1409     case XFA_Element::ConnectString:
1410       node = pdfium::MakeUnique<CXFA_ConnectString>(doc, packet);
1411       break;
1412     case XFA_Element::Mode:
1413       node = pdfium::MakeUnique<CXFA_Mode>(doc, packet);
1414       break;
1415     case XFA_Element::Layout:
1416       node = pdfium::MakeUnique<CXFA_Layout>(doc, packet);
1417       break;
1418     case XFA_Element::Sharpxml:
1419       node = pdfium::MakeUnique<CXFA_Sharpxml>(doc, packet);
1420       break;
1421     case XFA_Element::XsdConnection:
1422       node = pdfium::MakeUnique<CXFA_XsdConnection>(doc, packet);
1423       break;
1424     case XFA_Element::Traverse:
1425       node = pdfium::MakeUnique<CXFA_Traverse>(doc, packet);
1426       break;
1427     case XFA_Element::Encodings:
1428       node = pdfium::MakeUnique<CXFA_Encodings>(doc, packet);
1429       break;
1430     case XFA_Element::Template:
1431       node = pdfium::MakeUnique<CXFA_Template>(doc, packet);
1432       break;
1433     case XFA_Element::Acrobat:
1434       node = pdfium::MakeUnique<CXFA_Acrobat>(doc, packet);
1435       break;
1436     case XFA_Element::ValidationMessaging:
1437       node = pdfium::MakeUnique<CXFA_ValidationMessaging>(doc, packet);
1438       break;
1439     case XFA_Element::Signing:
1440       node = pdfium::MakeUnique<CXFA_Signing>(doc, packet);
1441       break;
1442     case XFA_Element::Script:
1443       node = pdfium::MakeUnique<CXFA_Script>(doc, packet);
1444       break;
1445     case XFA_Element::AddViewerPreferences:
1446       node = pdfium::MakeUnique<CXFA_AddViewerPreferences>(doc, packet);
1447       break;
1448     case XFA_Element::AlwaysEmbed:
1449       node = pdfium::MakeUnique<CXFA_AlwaysEmbed>(doc, packet);
1450       break;
1451     case XFA_Element::PasswordEdit:
1452       node = pdfium::MakeUnique<CXFA_PasswordEdit>(doc, packet);
1453       break;
1454     case XFA_Element::NumericEdit:
1455       node = pdfium::MakeUnique<CXFA_NumericEdit>(doc, packet);
1456       break;
1457     case XFA_Element::EncryptionMethod:
1458       node = pdfium::MakeUnique<CXFA_EncryptionMethod>(doc, packet);
1459       break;
1460     case XFA_Element::Change:
1461       node = pdfium::MakeUnique<CXFA_Change>(doc, packet);
1462       break;
1463     case XFA_Element::PageArea:
1464       node = pdfium::MakeUnique<CXFA_PageArea>(doc, packet);
1465       break;
1466     case XFA_Element::SubmitUrl:
1467       node = pdfium::MakeUnique<CXFA_SubmitUrl>(doc, packet);
1468       break;
1469     case XFA_Element::Oids:
1470       node = pdfium::MakeUnique<CXFA_Oids>(doc, packet);
1471       break;
1472     case XFA_Element::Signature:
1473       node = pdfium::MakeUnique<CXFA_Signature>(doc, packet);
1474       break;
1475     case XFA_Element::ADBE_JSConsole:
1476       node = pdfium::MakeUnique<CXFA_aDBE_JSConsole>(doc, packet);
1477       break;
1478     case XFA_Element::Caption:
1479       node = pdfium::MakeUnique<CXFA_Caption>(doc, packet);
1480       break;
1481     case XFA_Element::Relevant:
1482       node = pdfium::MakeUnique<CXFA_Relevant>(doc, packet);
1483       break;
1484     case XFA_Element::FlipLabel:
1485       node = pdfium::MakeUnique<CXFA_FlipLabel>(doc, packet);
1486       break;
1487     case XFA_Element::ExData:
1488       node = pdfium::MakeUnique<CXFA_ExData>(doc, packet);
1489       break;
1490     case XFA_Element::DayNames:
1491       node = pdfium::MakeUnique<CXFA_DayNames>(doc, packet);
1492       break;
1493     case XFA_Element::SoapAction:
1494       node = pdfium::MakeUnique<CXFA_SoapAction>(doc, packet);
1495       break;
1496     case XFA_Element::DefaultTypeface:
1497       node = pdfium::MakeUnique<CXFA_DefaultTypeface>(doc, packet);
1498       break;
1499     case XFA_Element::Manifest:
1500       node = pdfium::MakeUnique<CXFA_Manifest>(doc, packet);
1501       break;
1502     case XFA_Element::Overflow:
1503       node = pdfium::MakeUnique<CXFA_Overflow>(doc, packet);
1504       break;
1505     case XFA_Element::Linear:
1506       node = pdfium::MakeUnique<CXFA_Linear>(doc, packet);
1507       break;
1508     case XFA_Element::CurrencySymbol:
1509       node = pdfium::MakeUnique<CXFA_CurrencySymbol>(doc, packet);
1510       break;
1511     case XFA_Element::Delete:
1512       node = pdfium::MakeUnique<CXFA_Delete>(doc, packet);
1513       break;
1514     case XFA_Element::DigestMethod:
1515       node = pdfium::MakeUnique<CXFA_DigestMethod>(doc, packet);
1516       break;
1517     case XFA_Element::InstanceManager:
1518       node = pdfium::MakeUnique<CXFA_InstanceManager>(doc, packet);
1519       break;
1520     case XFA_Element::EquateRange:
1521       node = pdfium::MakeUnique<CXFA_EquateRange>(doc, packet);
1522       break;
1523     case XFA_Element::Medium:
1524       node = pdfium::MakeUnique<CXFA_Medium>(doc, packet);
1525       break;
1526     case XFA_Element::TextEdit:
1527       node = pdfium::MakeUnique<CXFA_TextEdit>(doc, packet);
1528       break;
1529     case XFA_Element::TemplateCache:
1530       node = pdfium::MakeUnique<CXFA_TemplateCache>(doc, packet);
1531       break;
1532     case XFA_Element::CompressObjectStream:
1533       node = pdfium::MakeUnique<CXFA_CompressObjectStream>(doc, packet);
1534       break;
1535     case XFA_Element::DataValue:
1536       node = pdfium::MakeUnique<CXFA_DataValue>(doc, packet);
1537       break;
1538     case XFA_Element::AccessibleContent:
1539       node = pdfium::MakeUnique<CXFA_AccessibleContent>(doc, packet);
1540       break;
1541     case XFA_Element::IncludeXDPContent:
1542       node = pdfium::MakeUnique<CXFA_IncludeXDPContent>(doc, packet);
1543       break;
1544     case XFA_Element::XmlConnection:
1545       node = pdfium::MakeUnique<CXFA_XmlConnection>(doc, packet);
1546       break;
1547     case XFA_Element::ValidateApprovalSignatures:
1548       node = pdfium::MakeUnique<CXFA_ValidateApprovalSignatures>(doc, packet);
1549       break;
1550     case XFA_Element::SignData:
1551       node = pdfium::MakeUnique<CXFA_SignData>(doc, packet);
1552       break;
1553     case XFA_Element::Packets:
1554       node = pdfium::MakeUnique<CXFA_Packets>(doc, packet);
1555       break;
1556     case XFA_Element::DatePattern:
1557       node = pdfium::MakeUnique<CXFA_DatePattern>(doc, packet);
1558       break;
1559     case XFA_Element::DuplexOption:
1560       node = pdfium::MakeUnique<CXFA_DuplexOption>(doc, packet);
1561       break;
1562     case XFA_Element::Base:
1563       node = pdfium::MakeUnique<CXFA_Base>(doc, packet);
1564       break;
1565     case XFA_Element::Bind:
1566       node = pdfium::MakeUnique<CXFA_Bind>(doc, packet);
1567       break;
1568     case XFA_Element::Compression:
1569       node = pdfium::MakeUnique<CXFA_Compression>(doc, packet);
1570       break;
1571     case XFA_Element::User:
1572       node = pdfium::MakeUnique<CXFA_User>(doc, packet);
1573       break;
1574     case XFA_Element::Rectangle:
1575       node = pdfium::MakeUnique<CXFA_Rectangle>(doc, packet);
1576       break;
1577     case XFA_Element::EffectiveOutputPolicy:
1578       node = pdfium::MakeUnique<CXFA_EffectiveOutputPolicy>(doc, packet);
1579       break;
1580     case XFA_Element::ADBE_JSDebugger:
1581       node = pdfium::MakeUnique<CXFA_aDBE_JSDebugger>(doc, packet);
1582       break;
1583     case XFA_Element::Acrobat7:
1584       node = pdfium::MakeUnique<CXFA_Acrobat7>(doc, packet);
1585       break;
1586     case XFA_Element::Interactive:
1587       node = pdfium::MakeUnique<CXFA_Interactive>(doc, packet);
1588       break;
1589     case XFA_Element::Locale:
1590       node = pdfium::MakeUnique<CXFA_Locale>(doc, packet);
1591       break;
1592     case XFA_Element::CurrentPage:
1593       node = pdfium::MakeUnique<CXFA_CurrentPage>(doc, packet);
1594       break;
1595     case XFA_Element::Data:
1596       node = pdfium::MakeUnique<CXFA_Data>(doc, packet);
1597       break;
1598     case XFA_Element::Date:
1599       node = pdfium::MakeUnique<CXFA_Date>(doc, packet);
1600       break;
1601     case XFA_Element::Desc:
1602       node = pdfium::MakeUnique<CXFA_Desc>(doc, packet);
1603       break;
1604     case XFA_Element::Encrypt:
1605       node = pdfium::MakeUnique<CXFA_Encrypt>(doc, packet);
1606       break;
1607     case XFA_Element::Draw:
1608       node = pdfium::MakeUnique<CXFA_Draw>(doc, packet);
1609       break;
1610     case XFA_Element::Encryption:
1611       node = pdfium::MakeUnique<CXFA_Encryption>(doc, packet);
1612       break;
1613     case XFA_Element::MeridiemNames:
1614       node = pdfium::MakeUnique<CXFA_MeridiemNames>(doc, packet);
1615       break;
1616     case XFA_Element::Messaging:
1617       node = pdfium::MakeUnique<CXFA_Messaging>(doc, packet);
1618       break;
1619     case XFA_Element::Speak:
1620       node = pdfium::MakeUnique<CXFA_Speak>(doc, packet);
1621       break;
1622     case XFA_Element::DataGroup:
1623       node = pdfium::MakeUnique<CXFA_DataGroup>(doc, packet);
1624       break;
1625     case XFA_Element::Common:
1626       node = pdfium::MakeUnique<CXFA_Common>(doc, packet);
1627       break;
1628     case XFA_Element::Sharptext:
1629       node = pdfium::MakeUnique<CXFA_Sharptext>(doc, packet);
1630       break;
1631     case XFA_Element::PaginationOverride:
1632       node = pdfium::MakeUnique<CXFA_PaginationOverride>(doc, packet);
1633       break;
1634     case XFA_Element::Reasons:
1635       node = pdfium::MakeUnique<CXFA_Reasons>(doc, packet);
1636       break;
1637     case XFA_Element::SignatureProperties:
1638       node = pdfium::MakeUnique<CXFA_SignatureProperties>(doc, packet);
1639       break;
1640     case XFA_Element::Threshold:
1641       node = pdfium::MakeUnique<CXFA_Threshold>(doc, packet);
1642       break;
1643     case XFA_Element::AppearanceFilter:
1644       node = pdfium::MakeUnique<CXFA_AppearanceFilter>(doc, packet);
1645       break;
1646     case XFA_Element::Fill:
1647       node = pdfium::MakeUnique<CXFA_Fill>(doc, packet);
1648       break;
1649     case XFA_Element::Font:
1650       node = pdfium::MakeUnique<CXFA_Font>(doc, packet);
1651       break;
1652     case XFA_Element::Form:
1653       node = pdfium::MakeUnique<CXFA_Form>(doc, packet);
1654       break;
1655     case XFA_Element::MediumInfo:
1656       node = pdfium::MakeUnique<CXFA_MediumInfo>(doc, packet);
1657       break;
1658     case XFA_Element::Certificate:
1659       node = pdfium::MakeUnique<CXFA_Certificate>(doc, packet);
1660       break;
1661     case XFA_Element::Password:
1662       node = pdfium::MakeUnique<CXFA_Password>(doc, packet);
1663       break;
1664     case XFA_Element::RunScripts:
1665       node = pdfium::MakeUnique<CXFA_RunScripts>(doc, packet);
1666       break;
1667     case XFA_Element::Trace:
1668       node = pdfium::MakeUnique<CXFA_Trace>(doc, packet);
1669       break;
1670     case XFA_Element::Float:
1671       node = pdfium::MakeUnique<CXFA_Float>(doc, packet);
1672       break;
1673     case XFA_Element::RenderPolicy:
1674       node = pdfium::MakeUnique<CXFA_RenderPolicy>(doc, packet);
1675       break;
1676     case XFA_Element::Destination:
1677       node = pdfium::MakeUnique<CXFA_Destination>(doc, packet);
1678       break;
1679     case XFA_Element::Value:
1680       node = pdfium::MakeUnique<CXFA_Value>(doc, packet);
1681       break;
1682     case XFA_Element::Bookend:
1683       node = pdfium::MakeUnique<CXFA_Bookend>(doc, packet);
1684       break;
1685     case XFA_Element::ExObject:
1686       node = pdfium::MakeUnique<CXFA_ExObject>(doc, packet);
1687       break;
1688     case XFA_Element::OpenAction:
1689       node = pdfium::MakeUnique<CXFA_OpenAction>(doc, packet);
1690       break;
1691     case XFA_Element::NeverEmbed:
1692       node = pdfium::MakeUnique<CXFA_NeverEmbed>(doc, packet);
1693       break;
1694     case XFA_Element::BindItems:
1695       node = pdfium::MakeUnique<CXFA_BindItems>(doc, packet);
1696       break;
1697     case XFA_Element::Calculate:
1698       node = pdfium::MakeUnique<CXFA_Calculate>(doc, packet);
1699       break;
1700     case XFA_Element::Print:
1701       node = pdfium::MakeUnique<CXFA_Print>(doc, packet);
1702       break;
1703     case XFA_Element::Extras:
1704       node = pdfium::MakeUnique<CXFA_Extras>(doc, packet);
1705       break;
1706     case XFA_Element::Proto:
1707       node = pdfium::MakeUnique<CXFA_Proto>(doc, packet);
1708       break;
1709     case XFA_Element::DSigData:
1710       node = pdfium::MakeUnique<CXFA_DSigData>(doc, packet);
1711       break;
1712     case XFA_Element::Creator:
1713       node = pdfium::MakeUnique<CXFA_Creator>(doc, packet);
1714       break;
1715     case XFA_Element::Connect:
1716       node = pdfium::MakeUnique<CXFA_Connect>(doc, packet);
1717       break;
1718     case XFA_Element::Permissions:
1719       node = pdfium::MakeUnique<CXFA_Permissions>(doc, packet);
1720       break;
1721     case XFA_Element::ConnectionSet:
1722       node = pdfium::MakeUnique<CXFA_ConnectionSet>(doc, packet);
1723       break;
1724     case XFA_Element::Submit:
1725       node = pdfium::MakeUnique<CXFA_Submit>(doc, packet);
1726       break;
1727     case XFA_Element::Range:
1728       node = pdfium::MakeUnique<CXFA_Range>(doc, packet);
1729       break;
1730     case XFA_Element::Linearized:
1731       node = pdfium::MakeUnique<CXFA_Linearized>(doc, packet);
1732       break;
1733     case XFA_Element::Packet:
1734       node = pdfium::MakeUnique<CXFA_Packet>(doc, packet);
1735       break;
1736     case XFA_Element::RootElement:
1737       node = pdfium::MakeUnique<CXFA_RootElement>(doc, packet);
1738       break;
1739     case XFA_Element::PlaintextMetadata:
1740       node = pdfium::MakeUnique<CXFA_PlaintextMetadata>(doc, packet);
1741       break;
1742     case XFA_Element::NumberSymbols:
1743       node = pdfium::MakeUnique<CXFA_NumberSymbols>(doc, packet);
1744       break;
1745     case XFA_Element::PrintHighQuality:
1746       node = pdfium::MakeUnique<CXFA_PrintHighQuality>(doc, packet);
1747       break;
1748     case XFA_Element::Driver:
1749       node = pdfium::MakeUnique<CXFA_Driver>(doc, packet);
1750       break;
1751     case XFA_Element::IncrementalLoad:
1752       node = pdfium::MakeUnique<CXFA_IncrementalLoad>(doc, packet);
1753       break;
1754     case XFA_Element::SubjectDN:
1755       node = pdfium::MakeUnique<CXFA_SubjectDN>(doc, packet);
1756       break;
1757     case XFA_Element::CompressLogicalStructure:
1758       node = pdfium::MakeUnique<CXFA_CompressLogicalStructure>(doc, packet);
1759       break;
1760     case XFA_Element::IncrementalMerge:
1761       node = pdfium::MakeUnique<CXFA_IncrementalMerge>(doc, packet);
1762       break;
1763     case XFA_Element::Radial:
1764       node = pdfium::MakeUnique<CXFA_Radial>(doc, packet);
1765       break;
1766     case XFA_Element::Variables:
1767       node = pdfium::MakeUnique<CXFA_Variables>(doc, packet);
1768       break;
1769     case XFA_Element::TimePatterns:
1770       node = pdfium::MakeUnique<CXFA_TimePatterns>(doc, packet);
1771       break;
1772     case XFA_Element::EffectiveInputPolicy:
1773       node = pdfium::MakeUnique<CXFA_EffectiveInputPolicy>(doc, packet);
1774       break;
1775     case XFA_Element::NameAttr:
1776       node = pdfium::MakeUnique<CXFA_NameAttr>(doc, packet);
1777       break;
1778     case XFA_Element::Conformance:
1779       node = pdfium::MakeUnique<CXFA_Conformance>(doc, packet);
1780       break;
1781     case XFA_Element::Transform:
1782       node = pdfium::MakeUnique<CXFA_Transform>(doc, packet);
1783       break;
1784     case XFA_Element::LockDocument:
1785       node = pdfium::MakeUnique<CXFA_LockDocument>(doc, packet);
1786       break;
1787     case XFA_Element::BreakAfter:
1788       node = pdfium::MakeUnique<CXFA_BreakAfter>(doc, packet);
1789       break;
1790     case XFA_Element::Line:
1791       node = pdfium::MakeUnique<CXFA_Line>(doc, packet);
1792       break;
1793     case XFA_Element::Source:
1794       node = pdfium::MakeUnique<CXFA_Source>(doc, packet);
1795       break;
1796     case XFA_Element::Occur:
1797       node = pdfium::MakeUnique<CXFA_Occur>(doc, packet);
1798       break;
1799     case XFA_Element::PickTrayByPDFSize:
1800       node = pdfium::MakeUnique<CXFA_PickTrayByPDFSize>(doc, packet);
1801       break;
1802     case XFA_Element::MonthNames:
1803       node = pdfium::MakeUnique<CXFA_MonthNames>(doc, packet);
1804       break;
1805     case XFA_Element::Severity:
1806       node = pdfium::MakeUnique<CXFA_Severity>(doc, packet);
1807       break;
1808     case XFA_Element::GroupParent:
1809       node = pdfium::MakeUnique<CXFA_GroupParent>(doc, packet);
1810       break;
1811     case XFA_Element::DocumentAssembly:
1812       node = pdfium::MakeUnique<CXFA_DocumentAssembly>(doc, packet);
1813       break;
1814     case XFA_Element::NumberSymbol:
1815       node = pdfium::MakeUnique<CXFA_NumberSymbol>(doc, packet);
1816       break;
1817     case XFA_Element::Tagged:
1818       node = pdfium::MakeUnique<CXFA_Tagged>(doc, packet);
1819       break;
1820     case XFA_Element::Items:
1821       node = pdfium::MakeUnique<CXFA_Items>(doc, packet);
1822       break;
1823     default:
1824       NOTREACHED();
1825       return nullptr;
1826   }
1827   if (!node || !node->IsValidInPacket(packet))
1828     return nullptr;
1829   return node;
1830 }
1831 
1832 // static
AttributeToName(XFA_Attribute attr)1833 WideString CXFA_Node::AttributeToName(XFA_Attribute attr) {
1834   switch (attr) {
1835     case XFA_Attribute::H:
1836       return L"h";
1837     case XFA_Attribute::W:
1838       return L"w";
1839     case XFA_Attribute::X:
1840       return L"x";
1841     case XFA_Attribute::Y:
1842       return L"y";
1843     case XFA_Attribute::Id:
1844       return L"id";
1845     case XFA_Attribute::To:
1846       return L"to";
1847     case XFA_Attribute::LineThrough:
1848       return L"lineThrough";
1849     case XFA_Attribute::HAlign:
1850       return L"hAlign";
1851     case XFA_Attribute::Typeface:
1852       return L"typeface";
1853     case XFA_Attribute::BeforeTarget:
1854       return L"beforeTarget";
1855     case XFA_Attribute::Name:
1856       return L"name";
1857     case XFA_Attribute::Next:
1858       return L"next";
1859     case XFA_Attribute::DataRowCount:
1860       return L"dataRowCount";
1861     case XFA_Attribute::Break:
1862       return L"break";
1863     case XFA_Attribute::VScrollPolicy:
1864       return L"vScrollPolicy";
1865     case XFA_Attribute::FontHorizontalScale:
1866       return L"fontHorizontalScale";
1867     case XFA_Attribute::TextIndent:
1868       return L"textIndent";
1869     case XFA_Attribute::Context:
1870       return L"context";
1871     case XFA_Attribute::TrayOut:
1872       return L"trayOut";
1873     case XFA_Attribute::Cap:
1874       return L"cap";
1875     case XFA_Attribute::Max:
1876       return L"max";
1877     case XFA_Attribute::Min:
1878       return L"min";
1879     case XFA_Attribute::Ref:
1880       return L"ref";
1881     case XFA_Attribute::Rid:
1882       return L"rid";
1883     case XFA_Attribute::Url:
1884       return L"url";
1885     case XFA_Attribute::Use:
1886       return L"use";
1887     case XFA_Attribute::LeftInset:
1888       return L"leftInset";
1889     case XFA_Attribute::Widows:
1890       return L"widows";
1891     case XFA_Attribute::Level:
1892       return L"level";
1893     case XFA_Attribute::BottomInset:
1894       return L"bottomInset";
1895     case XFA_Attribute::OverflowTarget:
1896       return L"overflowTarget";
1897     case XFA_Attribute::AllowMacro:
1898       return L"allowMacro";
1899     case XFA_Attribute::PagePosition:
1900       return L"pagePosition";
1901     case XFA_Attribute::ColumnWidths:
1902       return L"columnWidths";
1903     case XFA_Attribute::OverflowLeader:
1904       return L"overflowLeader";
1905     case XFA_Attribute::Action:
1906       return L"action";
1907     case XFA_Attribute::NonRepudiation:
1908       return L"nonRepudiation";
1909     case XFA_Attribute::Rate:
1910       return L"rate";
1911     case XFA_Attribute::AllowRichText:
1912       return L"allowRichText";
1913     case XFA_Attribute::Role:
1914       return L"role";
1915     case XFA_Attribute::OverflowTrailer:
1916       return L"overflowTrailer";
1917     case XFA_Attribute::Operation:
1918       return L"operation";
1919     case XFA_Attribute::Timeout:
1920       return L"timeout";
1921     case XFA_Attribute::TopInset:
1922       return L"topInset";
1923     case XFA_Attribute::Access:
1924       return L"access";
1925     case XFA_Attribute::CommandType:
1926       return L"commandType";
1927     case XFA_Attribute::Format:
1928       return L"format";
1929     case XFA_Attribute::DataPrep:
1930       return L"dataPrep";
1931     case XFA_Attribute::WidgetData:
1932       return L"widgetData";
1933     case XFA_Attribute::Abbr:
1934       return L"abbr";
1935     case XFA_Attribute::MarginRight:
1936       return L"marginRight";
1937     case XFA_Attribute::DataDescription:
1938       return L"dataDescription";
1939     case XFA_Attribute::EncipherOnly:
1940       return L"encipherOnly";
1941     case XFA_Attribute::KerningMode:
1942       return L"kerningMode";
1943     case XFA_Attribute::Rotate:
1944       return L"rotate";
1945     case XFA_Attribute::WordCharacterCount:
1946       return L"wordCharacterCount";
1947     case XFA_Attribute::Type:
1948       return L"type";
1949     case XFA_Attribute::Reserve:
1950       return L"reserve";
1951     case XFA_Attribute::TextLocation:
1952       return L"textLocation";
1953     case XFA_Attribute::Priority:
1954       return L"priority";
1955     case XFA_Attribute::Underline:
1956       return L"underline";
1957     case XFA_Attribute::ModuleWidth:
1958       return L"moduleWidth";
1959     case XFA_Attribute::Hyphenate:
1960       return L"hyphenate";
1961     case XFA_Attribute::Listen:
1962       return L"listen";
1963     case XFA_Attribute::Delimiter:
1964       return L"delimiter";
1965     case XFA_Attribute::ContentType:
1966       return L"contentType";
1967     case XFA_Attribute::StartNew:
1968       return L"startNew";
1969     case XFA_Attribute::EofAction:
1970       return L"eofAction";
1971     case XFA_Attribute::AllowNeutral:
1972       return L"allowNeutral";
1973     case XFA_Attribute::Connection:
1974       return L"connection";
1975     case XFA_Attribute::BaselineShift:
1976       return L"baselineShift";
1977     case XFA_Attribute::OverlinePeriod:
1978       return L"overlinePeriod";
1979     case XFA_Attribute::FracDigits:
1980       return L"fracDigits";
1981     case XFA_Attribute::Orientation:
1982       return L"orientation";
1983     case XFA_Attribute::TimeStamp:
1984       return L"timeStamp";
1985     case XFA_Attribute::PrintCheckDigit:
1986       return L"printCheckDigit";
1987     case XFA_Attribute::MarginLeft:
1988       return L"marginLeft";
1989     case XFA_Attribute::Stroke:
1990       return L"stroke";
1991     case XFA_Attribute::ModuleHeight:
1992       return L"moduleHeight";
1993     case XFA_Attribute::TransferEncoding:
1994       return L"transferEncoding";
1995     case XFA_Attribute::Usage:
1996       return L"usage";
1997     case XFA_Attribute::Presence:
1998       return L"presence";
1999     case XFA_Attribute::RadixOffset:
2000       return L"radixOffset";
2001     case XFA_Attribute::Preserve:
2002       return L"preserve";
2003     case XFA_Attribute::AliasNode:
2004       return L"aliasNode";
2005     case XFA_Attribute::MultiLine:
2006       return L"multiLine";
2007     case XFA_Attribute::Version:
2008       return L"version";
2009     case XFA_Attribute::StartChar:
2010       return L"startChar";
2011     case XFA_Attribute::ScriptTest:
2012       return L"scriptTest";
2013     case XFA_Attribute::StartAngle:
2014       return L"startAngle";
2015     case XFA_Attribute::CursorType:
2016       return L"cursorType";
2017     case XFA_Attribute::DigitalSignature:
2018       return L"digitalSignature";
2019     case XFA_Attribute::CodeType:
2020       return L"codeType";
2021     case XFA_Attribute::Output:
2022       return L"output";
2023     case XFA_Attribute::BookendTrailer:
2024       return L"bookendTrailer";
2025     case XFA_Attribute::ImagingBBox:
2026       return L"imagingBBox";
2027     case XFA_Attribute::ExcludeInitialCap:
2028       return L"excludeInitialCap";
2029     case XFA_Attribute::Force:
2030       return L"force";
2031     case XFA_Attribute::CrlSign:
2032       return L"crlSign";
2033     case XFA_Attribute::Previous:
2034       return L"previous";
2035     case XFA_Attribute::PushCharacterCount:
2036       return L"pushCharacterCount";
2037     case XFA_Attribute::NullTest:
2038       return L"nullTest";
2039     case XFA_Attribute::RunAt:
2040       return L"runAt";
2041     case XFA_Attribute::SpaceBelow:
2042       return L"spaceBelow";
2043     case XFA_Attribute::SweepAngle:
2044       return L"sweepAngle";
2045     case XFA_Attribute::NumberOfCells:
2046       return L"numberOfCells";
2047     case XFA_Attribute::LetterSpacing:
2048       return L"letterSpacing";
2049     case XFA_Attribute::LockType:
2050       return L"lockType";
2051     case XFA_Attribute::PasswordChar:
2052       return L"passwordChar";
2053     case XFA_Attribute::VAlign:
2054       return L"vAlign";
2055     case XFA_Attribute::SourceBelow:
2056       return L"sourceBelow";
2057     case XFA_Attribute::Inverted:
2058       return L"inverted";
2059     case XFA_Attribute::Mark:
2060       return L"mark";
2061     case XFA_Attribute::MaxH:
2062       return L"maxH";
2063     case XFA_Attribute::MaxW:
2064       return L"maxW";
2065     case XFA_Attribute::Truncate:
2066       return L"truncate";
2067     case XFA_Attribute::MinH:
2068       return L"minH";
2069     case XFA_Attribute::MinW:
2070       return L"minW";
2071     case XFA_Attribute::Initial:
2072       return L"initial";
2073     case XFA_Attribute::Mode:
2074       return L"mode";
2075     case XFA_Attribute::Layout:
2076       return L"layout";
2077     case XFA_Attribute::Server:
2078       return L"server";
2079     case XFA_Attribute::EmbedPDF:
2080       return L"embedPDF";
2081     case XFA_Attribute::OddOrEven:
2082       return L"oddOrEven";
2083     case XFA_Attribute::TabDefault:
2084       return L"tabDefault";
2085     case XFA_Attribute::Contains:
2086       return L"contains";
2087     case XFA_Attribute::RightInset:
2088       return L"rightInset";
2089     case XFA_Attribute::MaxChars:
2090       return L"maxChars";
2091     case XFA_Attribute::Open:
2092       return L"open";
2093     case XFA_Attribute::Relation:
2094       return L"relation";
2095     case XFA_Attribute::WideNarrowRatio:
2096       return L"wideNarrowRatio";
2097     case XFA_Attribute::Relevant:
2098       return L"relevant";
2099     case XFA_Attribute::SignatureType:
2100       return L"signatureType";
2101     case XFA_Attribute::LineThroughPeriod:
2102       return L"lineThroughPeriod";
2103     case XFA_Attribute::Shape:
2104       return L"shape";
2105     case XFA_Attribute::TabStops:
2106       return L"tabStops";
2107     case XFA_Attribute::OutputBelow:
2108       return L"outputBelow";
2109     case XFA_Attribute::Short:
2110       return L"short";
2111     case XFA_Attribute::FontVerticalScale:
2112       return L"fontVerticalScale";
2113     case XFA_Attribute::Thickness:
2114       return L"thickness";
2115     case XFA_Attribute::CommitOn:
2116       return L"commitOn";
2117     case XFA_Attribute::RemainCharacterCount:
2118       return L"remainCharacterCount";
2119     case XFA_Attribute::KeyAgreement:
2120       return L"keyAgreement";
2121     case XFA_Attribute::ErrorCorrectionLevel:
2122       return L"errorCorrectionLevel";
2123     case XFA_Attribute::UpsMode:
2124       return L"upsMode";
2125     case XFA_Attribute::MergeMode:
2126       return L"mergeMode";
2127     case XFA_Attribute::Circular:
2128       return L"circular";
2129     case XFA_Attribute::PsName:
2130       return L"psName";
2131     case XFA_Attribute::Trailer:
2132       return L"trailer";
2133     case XFA_Attribute::UnicodeRange:
2134       return L"unicodeRange";
2135     case XFA_Attribute::ExecuteType:
2136       return L"executeType";
2137     case XFA_Attribute::DuplexImposition:
2138       return L"duplexImposition";
2139     case XFA_Attribute::TrayIn:
2140       return L"trayIn";
2141     case XFA_Attribute::BindingNode:
2142       return L"bindingNode";
2143     case XFA_Attribute::BofAction:
2144       return L"bofAction";
2145     case XFA_Attribute::Save:
2146       return L"save";
2147     case XFA_Attribute::TargetType:
2148       return L"targetType";
2149     case XFA_Attribute::KeyEncipherment:
2150       return L"keyEncipherment";
2151     case XFA_Attribute::CredentialServerPolicy:
2152       return L"credentialServerPolicy";
2153     case XFA_Attribute::Size:
2154       return L"size";
2155     case XFA_Attribute::InitialNumber:
2156       return L"initialNumber";
2157     case XFA_Attribute::Slope:
2158       return L"slope";
2159     case XFA_Attribute::CSpace:
2160       return L"cSpace";
2161     case XFA_Attribute::ColSpan:
2162       return L"colSpan";
2163     case XFA_Attribute::Binding:
2164       return L"binding";
2165     case XFA_Attribute::Checksum:
2166       return L"checksum";
2167     case XFA_Attribute::CharEncoding:
2168       return L"charEncoding";
2169     case XFA_Attribute::Bind:
2170       return L"bind";
2171     case XFA_Attribute::TextEntry:
2172       return L"textEntry";
2173     case XFA_Attribute::Archive:
2174       return L"archive";
2175     case XFA_Attribute::Uuid:
2176       return L"uuid";
2177     case XFA_Attribute::Posture:
2178       return L"posture";
2179     case XFA_Attribute::After:
2180       return L"after";
2181     case XFA_Attribute::Orphans:
2182       return L"orphans";
2183     case XFA_Attribute::QualifiedName:
2184       return L"qualifiedName";
2185     case XFA_Attribute::Usehref:
2186       return L"usehref";
2187     case XFA_Attribute::Locale:
2188       return L"locale";
2189     case XFA_Attribute::Weight:
2190       return L"weight";
2191     case XFA_Attribute::UnderlinePeriod:
2192       return L"underlinePeriod";
2193     case XFA_Attribute::Data:
2194       return L"data";
2195     case XFA_Attribute::Desc:
2196       return L"desc";
2197     case XFA_Attribute::Numbered:
2198       return L"numbered";
2199     case XFA_Attribute::DataColumnCount:
2200       return L"dataColumnCount";
2201     case XFA_Attribute::Overline:
2202       return L"overline";
2203     case XFA_Attribute::UrlPolicy:
2204       return L"urlPolicy";
2205     case XFA_Attribute::AnchorType:
2206       return L"anchorType";
2207     case XFA_Attribute::LabelRef:
2208       return L"labelRef";
2209     case XFA_Attribute::BookendLeader:
2210       return L"bookendLeader";
2211     case XFA_Attribute::MaxLength:
2212       return L"maxLength";
2213     case XFA_Attribute::AccessKey:
2214       return L"accessKey";
2215     case XFA_Attribute::CursorLocation:
2216       return L"cursorLocation";
2217     case XFA_Attribute::DelayedOpen:
2218       return L"delayedOpen";
2219     case XFA_Attribute::Target:
2220       return L"target";
2221     case XFA_Attribute::DataEncipherment:
2222       return L"dataEncipherment";
2223     case XFA_Attribute::AfterTarget:
2224       return L"afterTarget";
2225     case XFA_Attribute::Leader:
2226       return L"leader";
2227     case XFA_Attribute::Picker:
2228       return L"picker";
2229     case XFA_Attribute::From:
2230       return L"from";
2231     case XFA_Attribute::BaseProfile:
2232       return L"baseProfile";
2233     case XFA_Attribute::Aspect:
2234       return L"aspect";
2235     case XFA_Attribute::RowColumnRatio:
2236       return L"rowColumnRatio";
2237     case XFA_Attribute::LineHeight:
2238       return L"lineHeight";
2239     case XFA_Attribute::Highlight:
2240       return L"highlight";
2241     case XFA_Attribute::ValueRef:
2242       return L"valueRef";
2243     case XFA_Attribute::MaxEntries:
2244       return L"maxEntries";
2245     case XFA_Attribute::DataLength:
2246       return L"dataLength";
2247     case XFA_Attribute::Activity:
2248       return L"activity";
2249     case XFA_Attribute::Input:
2250       return L"input";
2251     case XFA_Attribute::Value:
2252       return L"value";
2253     case XFA_Attribute::BlankOrNotBlank:
2254       return L"blankOrNotBlank";
2255     case XFA_Attribute::AddRevocationInfo:
2256       return L"addRevocationInfo";
2257     case XFA_Attribute::GenericFamily:
2258       return L"genericFamily";
2259     case XFA_Attribute::Hand:
2260       return L"hand";
2261     case XFA_Attribute::Href:
2262       return L"href";
2263     case XFA_Attribute::TextEncoding:
2264       return L"textEncoding";
2265     case XFA_Attribute::LeadDigits:
2266       return L"leadDigits";
2267     case XFA_Attribute::Permissions:
2268       return L"permissions";
2269     case XFA_Attribute::SpaceAbove:
2270       return L"spaceAbove";
2271     case XFA_Attribute::CodeBase:
2272       return L"codeBase";
2273     case XFA_Attribute::Stock:
2274       return L"stock";
2275     case XFA_Attribute::IsNull:
2276       return L"isNull";
2277     case XFA_Attribute::RestoreState:
2278       return L"restoreState";
2279     case XFA_Attribute::ExcludeAllCaps:
2280       return L"excludeAllCaps";
2281     case XFA_Attribute::FormatTest:
2282       return L"formatTest";
2283     case XFA_Attribute::HScrollPolicy:
2284       return L"hScrollPolicy";
2285     case XFA_Attribute::Join:
2286       return L"join";
2287     case XFA_Attribute::KeyCertSign:
2288       return L"keyCertSign";
2289     case XFA_Attribute::Radius:
2290       return L"radius";
2291     case XFA_Attribute::SourceAbove:
2292       return L"sourceAbove";
2293     case XFA_Attribute::Override:
2294       return L"override";
2295     case XFA_Attribute::ClassId:
2296       return L"classId";
2297     case XFA_Attribute::Disable:
2298       return L"disable";
2299     case XFA_Attribute::Scope:
2300       return L"scope";
2301     case XFA_Attribute::Match:
2302       return L"match";
2303     case XFA_Attribute::Placement:
2304       return L"placement";
2305     case XFA_Attribute::Before:
2306       return L"before";
2307     case XFA_Attribute::WritingScript:
2308       return L"writingScript";
2309     case XFA_Attribute::EndChar:
2310       return L"endChar";
2311     case XFA_Attribute::Lock:
2312       return L"lock";
2313     case XFA_Attribute::Long:
2314       return L"long";
2315     case XFA_Attribute::Intact:
2316       return L"intact";
2317     case XFA_Attribute::XdpContent:
2318       return L"xdpContent";
2319     case XFA_Attribute::DecipherOnly:
2320       return L"decipherOnly";
2321 
2322     default:
2323       NOTREACHED();
2324       break;
2325   }
2326   return L"";
2327 }
2328 
2329 #ifndef NDEBUG
2330 // static
ElementToName(XFA_Element attr)2331 WideString CXFA_Node::ElementToName(XFA_Element attr) {
2332   switch (attr) {
2333     case XFA_Element::Ps:
2334       return L"ps";
2335     case XFA_Element::To:
2336       return L"to";
2337     case XFA_Element::Ui:
2338       return L"ui";
2339     case XFA_Element::RecordSet:
2340       return L"recordSet";
2341     case XFA_Element::SubsetBelow:
2342       return L"subsetBelow";
2343     case XFA_Element::SubformSet:
2344       return L"subformSet";
2345     case XFA_Element::AdobeExtensionLevel:
2346       return L"adobeExtensionLevel";
2347     case XFA_Element::Typeface:
2348       return L"typeface";
2349     case XFA_Element::Break:
2350       return L"break";
2351     case XFA_Element::FontInfo:
2352       return L"fontInfo";
2353     case XFA_Element::NumberPattern:
2354       return L"numberPattern";
2355     case XFA_Element::DynamicRender:
2356       return L"dynamicRender";
2357     case XFA_Element::PrintScaling:
2358       return L"printScaling";
2359     case XFA_Element::CheckButton:
2360       return L"checkButton";
2361     case XFA_Element::DatePatterns:
2362       return L"datePatterns";
2363     case XFA_Element::SourceSet:
2364       return L"sourceSet";
2365     case XFA_Element::Amd:
2366       return L"amd";
2367     case XFA_Element::Arc:
2368       return L"arc";
2369     case XFA_Element::Day:
2370       return L"day";
2371     case XFA_Element::Era:
2372       return L"era";
2373     case XFA_Element::Jog:
2374       return L"jog";
2375     case XFA_Element::Log:
2376       return L"log";
2377     case XFA_Element::Map:
2378       return L"map";
2379     case XFA_Element::Mdp:
2380       return L"mdp";
2381     case XFA_Element::BreakBefore:
2382       return L"breakBefore";
2383     case XFA_Element::Oid:
2384       return L"oid";
2385     case XFA_Element::Pcl:
2386       return L"pcl";
2387     case XFA_Element::Pdf:
2388       return L"pdf";
2389     case XFA_Element::Ref:
2390       return L"ref";
2391     case XFA_Element::Uri:
2392       return L"uri";
2393     case XFA_Element::Xdc:
2394       return L"xdc";
2395     case XFA_Element::Xdp:
2396       return L"xdp";
2397     case XFA_Element::Xfa:
2398       return L"xfa";
2399     case XFA_Element::Xsl:
2400       return L"xsl";
2401     case XFA_Element::Zpl:
2402       return L"zpl";
2403     case XFA_Element::Cache:
2404       return L"cache";
2405     case XFA_Element::Margin:
2406       return L"margin";
2407     case XFA_Element::KeyUsage:
2408       return L"keyUsage";
2409     case XFA_Element::Exclude:
2410       return L"exclude";
2411     case XFA_Element::ChoiceList:
2412       return L"choiceList";
2413     case XFA_Element::Level:
2414       return L"level";
2415     case XFA_Element::LabelPrinter:
2416       return L"labelPrinter";
2417     case XFA_Element::CalendarSymbols:
2418       return L"calendarSymbols";
2419     case XFA_Element::Para:
2420       return L"para";
2421     case XFA_Element::Part:
2422       return L"part";
2423     case XFA_Element::Pdfa:
2424       return L"pdfa";
2425     case XFA_Element::Filter:
2426       return L"filter";
2427     case XFA_Element::Present:
2428       return L"present";
2429     case XFA_Element::Pagination:
2430       return L"pagination";
2431     case XFA_Element::Encoding:
2432       return L"encoding";
2433     case XFA_Element::Event:
2434       return L"event";
2435     case XFA_Element::Whitespace:
2436       return L"whitespace";
2437     case XFA_Element::DefaultUi:
2438       return L"defaultUi";
2439     case XFA_Element::DataModel:
2440       return L"dataModel";
2441     case XFA_Element::Barcode:
2442       return L"barcode";
2443     case XFA_Element::TimePattern:
2444       return L"timePattern";
2445     case XFA_Element::BatchOutput:
2446       return L"batchOutput";
2447     case XFA_Element::Enforce:
2448       return L"enforce";
2449     case XFA_Element::CurrencySymbols:
2450       return L"currencySymbols";
2451     case XFA_Element::AddSilentPrint:
2452       return L"addSilentPrint";
2453     case XFA_Element::Rename:
2454       return L"rename";
2455     case XFA_Element::Operation:
2456       return L"operation";
2457     case XFA_Element::Typefaces:
2458       return L"typefaces";
2459     case XFA_Element::SubjectDNs:
2460       return L"subjectDNs";
2461     case XFA_Element::Issuers:
2462       return L"issuers";
2463     case XFA_Element::WsdlConnection:
2464       return L"wsdlConnection";
2465     case XFA_Element::Debug:
2466       return L"debug";
2467     case XFA_Element::Delta:
2468       return L"delta";
2469     case XFA_Element::EraNames:
2470       return L"eraNames";
2471     case XFA_Element::ModifyAnnots:
2472       return L"modifyAnnots";
2473     case XFA_Element::StartNode:
2474       return L"startNode";
2475     case XFA_Element::Button:
2476       return L"button";
2477     case XFA_Element::Format:
2478       return L"format";
2479     case XFA_Element::Border:
2480       return L"border";
2481     case XFA_Element::Area:
2482       return L"area";
2483     case XFA_Element::Hyphenation:
2484       return L"hyphenation";
2485     case XFA_Element::Text:
2486       return L"text";
2487     case XFA_Element::Time:
2488       return L"time";
2489     case XFA_Element::Type:
2490       return L"type";
2491     case XFA_Element::Overprint:
2492       return L"overprint";
2493     case XFA_Element::Certificates:
2494       return L"certificates";
2495     case XFA_Element::EncryptionMethods:
2496       return L"encryptionMethods";
2497     case XFA_Element::SetProperty:
2498       return L"setProperty";
2499     case XFA_Element::PrinterName:
2500       return L"printerName";
2501     case XFA_Element::StartPage:
2502       return L"startPage";
2503     case XFA_Element::PageOffset:
2504       return L"pageOffset";
2505     case XFA_Element::DateTime:
2506       return L"dateTime";
2507     case XFA_Element::Comb:
2508       return L"comb";
2509     case XFA_Element::Pattern:
2510       return L"pattern";
2511     case XFA_Element::IfEmpty:
2512       return L"ifEmpty";
2513     case XFA_Element::SuppressBanner:
2514       return L"suppressBanner";
2515     case XFA_Element::OutputBin:
2516       return L"outputBin";
2517     case XFA_Element::Field:
2518       return L"field";
2519     case XFA_Element::Agent:
2520       return L"agent";
2521     case XFA_Element::OutputXSL:
2522       return L"outputXSL";
2523     case XFA_Element::AdjustData:
2524       return L"adjustData";
2525     case XFA_Element::AutoSave:
2526       return L"autoSave";
2527     case XFA_Element::ContentArea:
2528       return L"contentArea";
2529     case XFA_Element::WsdlAddress:
2530       return L"wsdlAddress";
2531     case XFA_Element::Solid:
2532       return L"solid";
2533     case XFA_Element::DateTimeSymbols:
2534       return L"dateTimeSymbols";
2535     case XFA_Element::EncryptionLevel:
2536       return L"encryptionLevel";
2537     case XFA_Element::Edge:
2538       return L"edge";
2539     case XFA_Element::Stipple:
2540       return L"stipple";
2541     case XFA_Element::Attributes:
2542       return L"attributes";
2543     case XFA_Element::VersionControl:
2544       return L"versionControl";
2545     case XFA_Element::Meridiem:
2546       return L"meridiem";
2547     case XFA_Element::ExclGroup:
2548       return L"exclGroup";
2549     case XFA_Element::ToolTip:
2550       return L"toolTip";
2551     case XFA_Element::Compress:
2552       return L"compress";
2553     case XFA_Element::Reason:
2554       return L"reason";
2555     case XFA_Element::Execute:
2556       return L"execute";
2557     case XFA_Element::ContentCopy:
2558       return L"contentCopy";
2559     case XFA_Element::DateTimeEdit:
2560       return L"dateTimeEdit";
2561     case XFA_Element::Config:
2562       return L"config";
2563     case XFA_Element::Image:
2564       return L"image";
2565     case XFA_Element::SharpxHTML:
2566       return L"#xHTML";
2567     case XFA_Element::NumberOfCopies:
2568       return L"numberOfCopies";
2569     case XFA_Element::BehaviorOverride:
2570       return L"behaviorOverride";
2571     case XFA_Element::TimeStamp:
2572       return L"timeStamp";
2573     case XFA_Element::Month:
2574       return L"month";
2575     case XFA_Element::ViewerPreferences:
2576       return L"viewerPreferences";
2577     case XFA_Element::ScriptModel:
2578       return L"scriptModel";
2579     case XFA_Element::Decimal:
2580       return L"decimal";
2581     case XFA_Element::Subform:
2582       return L"subform";
2583     case XFA_Element::Select:
2584       return L"select";
2585     case XFA_Element::Window:
2586       return L"window";
2587     case XFA_Element::LocaleSet:
2588       return L"localeSet";
2589     case XFA_Element::Handler:
2590       return L"handler";
2591     case XFA_Element::Presence:
2592       return L"presence";
2593     case XFA_Element::Record:
2594       return L"record";
2595     case XFA_Element::Embed:
2596       return L"embed";
2597     case XFA_Element::Version:
2598       return L"version";
2599     case XFA_Element::Command:
2600       return L"command";
2601     case XFA_Element::Copies:
2602       return L"copies";
2603     case XFA_Element::Staple:
2604       return L"staple";
2605     case XFA_Element::SubmitFormat:
2606       return L"submitFormat";
2607     case XFA_Element::Boolean:
2608       return L"boolean";
2609     case XFA_Element::Message:
2610       return L"message";
2611     case XFA_Element::Output:
2612       return L"output";
2613     case XFA_Element::PsMap:
2614       return L"psMap";
2615     case XFA_Element::ExcludeNS:
2616       return L"excludeNS";
2617     case XFA_Element::Assist:
2618       return L"assist";
2619     case XFA_Element::Picture:
2620       return L"picture";
2621     case XFA_Element::Traversal:
2622       return L"traversal";
2623     case XFA_Element::SilentPrint:
2624       return L"silentPrint";
2625     case XFA_Element::WebClient:
2626       return L"webClient";
2627     case XFA_Element::Producer:
2628       return L"producer";
2629     case XFA_Element::Corner:
2630       return L"corner";
2631     case XFA_Element::MsgId:
2632       return L"msgId";
2633     case XFA_Element::Color:
2634       return L"color";
2635     case XFA_Element::Keep:
2636       return L"keep";
2637     case XFA_Element::Query:
2638       return L"query";
2639     case XFA_Element::Insert:
2640       return L"insert";
2641     case XFA_Element::ImageEdit:
2642       return L"imageEdit";
2643     case XFA_Element::Validate:
2644       return L"validate";
2645     case XFA_Element::DigestMethods:
2646       return L"digestMethods";
2647     case XFA_Element::NumberPatterns:
2648       return L"numberPatterns";
2649     case XFA_Element::PageSet:
2650       return L"pageSet";
2651     case XFA_Element::Integer:
2652       return L"integer";
2653     case XFA_Element::SoapAddress:
2654       return L"soapAddress";
2655     case XFA_Element::Equate:
2656       return L"equate";
2657     case XFA_Element::FormFieldFilling:
2658       return L"formFieldFilling";
2659     case XFA_Element::PageRange:
2660       return L"pageRange";
2661     case XFA_Element::Update:
2662       return L"update";
2663     case XFA_Element::ConnectString:
2664       return L"connectString";
2665     case XFA_Element::Mode:
2666       return L"mode";
2667     case XFA_Element::Layout:
2668       return L"layout";
2669     case XFA_Element::Sharpxml:
2670       return L"#xml";
2671     case XFA_Element::XsdConnection:
2672       return L"xsdConnection";
2673     case XFA_Element::Traverse:
2674       return L"traverse";
2675     case XFA_Element::Encodings:
2676       return L"encodings";
2677     case XFA_Element::Template:
2678       return L"template";
2679     case XFA_Element::Acrobat:
2680       return L"acrobat";
2681     case XFA_Element::ValidationMessaging:
2682       return L"validationMessaging";
2683     case XFA_Element::Signing:
2684       return L"signing";
2685     case XFA_Element::Script:
2686       return L"script";
2687     case XFA_Element::AddViewerPreferences:
2688       return L"addViewerPreferences";
2689     case XFA_Element::AlwaysEmbed:
2690       return L"alwaysEmbed";
2691     case XFA_Element::PasswordEdit:
2692       return L"passwordEdit";
2693     case XFA_Element::NumericEdit:
2694       return L"numericEdit";
2695     case XFA_Element::EncryptionMethod:
2696       return L"encryptionMethod";
2697     case XFA_Element::Change:
2698       return L"change";
2699     case XFA_Element::PageArea:
2700       return L"pageArea";
2701     case XFA_Element::SubmitUrl:
2702       return L"submitUrl";
2703     case XFA_Element::Oids:
2704       return L"oids";
2705     case XFA_Element::Signature:
2706       return L"signature";
2707     case XFA_Element::ADBE_JSConsole:
2708       return L"ADBE_JSConsole";
2709     case XFA_Element::Caption:
2710       return L"caption";
2711     case XFA_Element::Relevant:
2712       return L"relevant";
2713     case XFA_Element::FlipLabel:
2714       return L"flipLabel";
2715     case XFA_Element::ExData:
2716       return L"exData";
2717     case XFA_Element::DayNames:
2718       return L"dayNames";
2719     case XFA_Element::SoapAction:
2720       return L"soapAction";
2721     case XFA_Element::DefaultTypeface:
2722       return L"defaultTypeface";
2723     case XFA_Element::Manifest:
2724       return L"manifest";
2725     case XFA_Element::Overflow:
2726       return L"overflow";
2727     case XFA_Element::Linear:
2728       return L"linear";
2729     case XFA_Element::CurrencySymbol:
2730       return L"currencySymbol";
2731     case XFA_Element::Delete:
2732       return L"delete";
2733     case XFA_Element::Deltas:
2734       return L"deltas";
2735     case XFA_Element::DigestMethod:
2736       return L"digestMethod";
2737     case XFA_Element::InstanceManager:
2738       return L"instanceManager";
2739     case XFA_Element::EquateRange:
2740       return L"equateRange";
2741     case XFA_Element::Medium:
2742       return L"medium";
2743     case XFA_Element::TextEdit:
2744       return L"textEdit";
2745     case XFA_Element::TemplateCache:
2746       return L"templateCache";
2747     case XFA_Element::CompressObjectStream:
2748       return L"compressObjectStream";
2749     case XFA_Element::DataValue:
2750       return L"dataValue";
2751     case XFA_Element::AccessibleContent:
2752       return L"accessibleContent";
2753     case XFA_Element::IncludeXDPContent:
2754       return L"includeXDPContent";
2755     case XFA_Element::XmlConnection:
2756       return L"xmlConnection";
2757     case XFA_Element::ValidateApprovalSignatures:
2758       return L"validateApprovalSignatures";
2759     case XFA_Element::SignData:
2760       return L"signData";
2761     case XFA_Element::Packets:
2762       return L"packets";
2763     case XFA_Element::DatePattern:
2764       return L"datePattern";
2765     case XFA_Element::DuplexOption:
2766       return L"duplexOption";
2767     case XFA_Element::Base:
2768       return L"base";
2769     case XFA_Element::Bind:
2770       return L"bind";
2771     case XFA_Element::Compression:
2772       return L"compression";
2773     case XFA_Element::User:
2774       return L"user";
2775     case XFA_Element::Rectangle:
2776       return L"rectangle";
2777     case XFA_Element::EffectiveOutputPolicy:
2778       return L"effectiveOutputPolicy";
2779     case XFA_Element::ADBE_JSDebugger:
2780       return L"ADBE_JSDebugger";
2781     case XFA_Element::Acrobat7:
2782       return L"acrobat7";
2783     case XFA_Element::Interactive:
2784       return L"interactive";
2785     case XFA_Element::Locale:
2786       return L"locale";
2787     case XFA_Element::CurrentPage:
2788       return L"currentPage";
2789     case XFA_Element::Data:
2790       return L"data";
2791     case XFA_Element::Date:
2792       return L"date";
2793     case XFA_Element::Desc:
2794       return L"desc";
2795     case XFA_Element::Encrypt:
2796       return L"encrypt";
2797     case XFA_Element::Draw:
2798       return L"draw";
2799     case XFA_Element::Encryption:
2800       return L"encryption";
2801     case XFA_Element::MeridiemNames:
2802       return L"meridiemNames";
2803     case XFA_Element::Messaging:
2804       return L"messaging";
2805     case XFA_Element::Speak:
2806       return L"speak";
2807     case XFA_Element::DataGroup:
2808       return L"dataGroup";
2809     case XFA_Element::Common:
2810       return L"common";
2811     case XFA_Element::Sharptext:
2812       return L"#text";
2813     case XFA_Element::PaginationOverride:
2814       return L"paginationOverride";
2815     case XFA_Element::Reasons:
2816       return L"reasons";
2817     case XFA_Element::SignatureProperties:
2818       return L"signatureProperties";
2819     case XFA_Element::Threshold:
2820       return L"threshold";
2821     case XFA_Element::AppearanceFilter:
2822       return L"appearanceFilter";
2823     case XFA_Element::Fill:
2824       return L"fill";
2825     case XFA_Element::Font:
2826       return L"font";
2827     case XFA_Element::Form:
2828       return L"form";
2829     case XFA_Element::MediumInfo:
2830       return L"mediumInfo";
2831     case XFA_Element::Certificate:
2832       return L"certificate";
2833     case XFA_Element::Password:
2834       return L"password";
2835     case XFA_Element::RunScripts:
2836       return L"runScripts";
2837     case XFA_Element::Trace:
2838       return L"trace";
2839     case XFA_Element::Float:
2840       return L"float";
2841     case XFA_Element::RenderPolicy:
2842       return L"renderPolicy";
2843     case XFA_Element::Destination:
2844       return L"destination";
2845     case XFA_Element::Value:
2846       return L"value";
2847     case XFA_Element::Bookend:
2848       return L"bookend";
2849     case XFA_Element::ExObject:
2850       return L"exObject";
2851     case XFA_Element::OpenAction:
2852       return L"openAction";
2853     case XFA_Element::NeverEmbed:
2854       return L"neverEmbed";
2855     case XFA_Element::BindItems:
2856       return L"bindItems";
2857     case XFA_Element::Calculate:
2858       return L"calculate";
2859     case XFA_Element::Print:
2860       return L"print";
2861     case XFA_Element::Extras:
2862       return L"extras";
2863     case XFA_Element::Proto:
2864       return L"proto";
2865     case XFA_Element::DSigData:
2866       return L"dSigData";
2867     case XFA_Element::Creator:
2868       return L"creator";
2869     case XFA_Element::Connect:
2870       return L"connect";
2871     case XFA_Element::Permissions:
2872       return L"permissions";
2873     case XFA_Element::ConnectionSet:
2874       return L"connectionSet";
2875     case XFA_Element::Submit:
2876       return L"submit";
2877     case XFA_Element::Range:
2878       return L"range";
2879     case XFA_Element::Linearized:
2880       return L"linearized";
2881     case XFA_Element::Packet:
2882       return L"packet";
2883     case XFA_Element::RootElement:
2884       return L"rootElement";
2885     case XFA_Element::PlaintextMetadata:
2886       return L"plaintextMetadata";
2887     case XFA_Element::NumberSymbols:
2888       return L"numberSymbols";
2889     case XFA_Element::PrintHighQuality:
2890       return L"printHighQuality";
2891     case XFA_Element::Driver:
2892       return L"driver";
2893     case XFA_Element::IncrementalLoad:
2894       return L"incrementalLoad";
2895     case XFA_Element::SubjectDN:
2896       return L"subjectDN";
2897     case XFA_Element::CompressLogicalStructure:
2898       return L"compressLogicalStructure";
2899     case XFA_Element::IncrementalMerge:
2900       return L"incrementalMerge";
2901     case XFA_Element::Radial:
2902       return L"radial";
2903     case XFA_Element::Variables:
2904       return L"variables";
2905     case XFA_Element::TimePatterns:
2906       return L"timePatterns";
2907     case XFA_Element::EffectiveInputPolicy:
2908       return L"effectiveInputPolicy";
2909     case XFA_Element::NameAttr:
2910       return L"nameAttr";
2911     case XFA_Element::Conformance:
2912       return L"conformance";
2913     case XFA_Element::Transform:
2914       return L"transform";
2915     case XFA_Element::LockDocument:
2916       return L"lockDocument";
2917     case XFA_Element::BreakAfter:
2918       return L"breakAfter";
2919     case XFA_Element::Line:
2920       return L"line";
2921     case XFA_Element::Source:
2922       return L"source";
2923     case XFA_Element::Occur:
2924       return L"occur";
2925     case XFA_Element::PickTrayByPDFSize:
2926       return L"pickTrayByPDFSize";
2927     case XFA_Element::MonthNames:
2928       return L"monthNames";
2929     case XFA_Element::Severity:
2930       return L"severity";
2931     case XFA_Element::GroupParent:
2932       return L"groupParent";
2933     case XFA_Element::DocumentAssembly:
2934       return L"documentAssembly";
2935     case XFA_Element::NumberSymbol:
2936       return L"numberSymbol";
2937     case XFA_Element::Tagged:
2938       return L"tagged";
2939     case XFA_Element::Items:
2940       return L"items";
2941 
2942     default:
2943       NOTREACHED();
2944       break;
2945   }
2946   return L"";
2947 }
2948 #endif  // NDEBUG
2949