expo-type-information 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -53,13 +53,22 @@ function isClassStructure(structure) {
53
53
  function isStructStructure(structure) {
54
54
  return structure['key.kind'] === swiftDeclarationKind.struct;
55
55
  }
56
- function isRecordStructure(structure) {
56
+ function containsFieldAnnotation(file, structure) {
57
+ const startIndex = structure['key.offset'];
58
+ const endIndex = startIndex + structure['key.length'];
59
+ const fieldIndex = file.content.substring(startIndex, endIndex).indexOf('@Field');
60
+ return fieldIndex !== -1;
61
+ }
62
+ function isRecordStructure(file, structure) {
57
63
  const isRecordOrClass = structure['key.kind'] === swiftDeclarationKind.struct ||
58
64
  structure['key.kind'] === swiftDeclarationKind.class;
65
+ // To check whether a structure represents a record, check if it has any @Field annotated fields.
66
+ // For the case of empty structs add a check if the struct directly conforms to the Record.
67
+ const hasFields = containsFieldAnnotation(file, structure);
59
68
  const inheritsFromRecord = structure['key.inheritedtypes']?.find((type) => {
60
69
  return type['key.name'] === 'Record';
61
70
  }) !== undefined;
62
- return isRecordOrClass && inheritsFromRecord;
71
+ return isRecordOrClass && (hasFields || inheritsFromRecord);
63
72
  }
64
73
  function isModuleStructure(structure) {
65
74
  return structure['key.typename'] === 'ModuleDefinition';
@@ -513,6 +522,19 @@ async function parseModuleFunctionSubstructure(substructure, file, options, isSt
513
522
  isStatic,
514
523
  };
515
524
  }
525
+ async function parseModuleAsyncFunctionSubstructure(substructure, file, options, isStatic) {
526
+ const functionDeclaration = await parseModuleFunctionSubstructure(substructure, file, options, isStatic);
527
+ const lastArgument = functionDeclaration.arguments[functionDeclaration.arguments.length - 1];
528
+ if (!lastArgument) {
529
+ return functionDeclaration;
530
+ }
531
+ const isPromiseType = lastArgument.type.kind === typeInformation_1.TypeKind.IDENTIFIER &&
532
+ lastArgument.type.type === 'Promise';
533
+ if (isPromiseType) {
534
+ functionDeclaration.arguments.pop();
535
+ }
536
+ return functionDeclaration;
537
+ }
516
538
  async function parseModulePropDeclaration(substructure, file, options) {
517
539
  const definitionParams = substructure['key.substructure'];
518
540
  const nameSubstrucutre = definitionParams[0];
@@ -678,10 +700,10 @@ async function parseModuleStructure(moduleStructure, name, definitionOffset, opt
678
700
  break;
679
701
  }
680
702
  case 'AsyncFunction':
681
- moduleClassDeclaration.asyncFunctions.push(await parseModuleFunctionSubstructure(structure, file, options, false));
703
+ moduleClassDeclaration.asyncFunctions.push(await parseModuleAsyncFunctionSubstructure(structure, file, options, false));
682
704
  break;
683
705
  case 'StaticAsyncFunction':
684
- moduleClassDeclaration.asyncFunctions.push(await parseModuleFunctionSubstructure(structure, file, options, true));
706
+ moduleClassDeclaration.asyncFunctions.push(await parseModuleAsyncFunctionSubstructure(structure, file, options, true));
685
707
  break;
686
708
  case 'StaticFunction':
687
709
  moduleClassDeclaration.functions.push(await parseModuleFunctionSubstructure(structure, file, options, true));
@@ -716,16 +738,19 @@ async function parseModuleStructure(moduleStructure, name, definitionOffset, opt
716
738
  sortModuleClassDeclaration(moduleClassDeclaration);
717
739
  return moduleClassDeclaration;
718
740
  }
719
- function parseStructure(structure, name, modulesStructures, recordsStructures, enumsStructures) {
741
+ function parseStructure({ file, structure, name },
742
+ // Note that instead of returning and merging the enum, record and module arrays, we're just collecting the items in the 3 arrays inside this object.
743
+ parsedStructuresOutput) {
744
+ const { modulesStructures, recordsStructures, enumsStructures } = parsedStructuresOutput;
720
745
  // TODO(@HubertBer): Find out why sometimes the structure is undefined (for example when parsing expo-audio)
721
- if (!structure || !structure['key.substructure']) {
746
+ const substructure = structure['key.substructure'];
747
+ if (!structure || !substructure) {
722
748
  return;
723
749
  }
724
- const substructure = structure['key.substructure'];
725
750
  if (isModuleStructure(structure)) {
726
751
  modulesStructures.push({ structure, name });
727
752
  }
728
- else if (isRecordStructure(structure)) {
753
+ else if (isRecordStructure(file, structure)) {
729
754
  recordsStructures.push(structure);
730
755
  }
731
756
  else if (isEnumStructure(structure)) {
@@ -733,7 +758,11 @@ function parseStructure(structure, name, modulesStructures, recordsStructures, e
733
758
  }
734
759
  else if (Array.isArray(substructure) && substructure.length > 0) {
735
760
  for (const substructure of structure['key.substructure']) {
736
- parseStructure(substructure, structure['key.name'] ?? name, modulesStructures, recordsStructures, enumsStructures);
761
+ parseStructure({
762
+ file,
763
+ structure: substructure,
764
+ name: structure['key.name'] ?? name,
765
+ }, parsedStructuresOutput);
737
766
  }
738
767
  }
739
768
  }
@@ -804,7 +833,7 @@ function collectModuleTypeIdentifiers(moduleClassDeclaration, fileTypeInformatio
804
833
  }
805
834
  function parseNamespaces(structure, namespaces, file, currentNamespace) {
806
835
  if (isModuleStructure(structure) ||
807
- isRecordStructure(structure) ||
836
+ isRecordStructure(file, structure) ||
808
837
  isStructStructure(structure) ||
809
838
  isEnumStructure(structure) ||
810
839
  isClassStructure(structure)) {
@@ -831,7 +860,15 @@ async function getSwiftFileTypeInformation(filePath, options) {
831
860
  const recordsStructures = [];
832
861
  const enumsStructures = [];
833
862
  const fileStructure = getStructureFromFile(file);
834
- parseStructure(fileStructure, '', modulesStructures, recordsStructures, enumsStructures);
863
+ parseStructure({
864
+ file,
865
+ structure: getStructureFromFile(file),
866
+ name: '',
867
+ }, {
868
+ modulesStructures,
869
+ recordsStructures,
870
+ enumsStructures,
871
+ });
835
872
  const namespaces = {};
836
873
  namespaces[''] = {};
837
874
  parseNamespaces(fileStructure, namespaces, file, namespaces['']);
@@ -1 +1 @@
1
- {"version":3,"file":"sourcekittenTypeInformation.js","sourceRoot":"","sources":["../../src/swift/sourcekittenTypeInformation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sourcekittenTypeInformation.js","sourceRoot":"","sources":["../../src/swift/sourcekittenTypeInformation.ts"],"names":[],"mappings":";;;;;AA+oCA,kEA0FC;AAiKD,kDAYC;AAt5CD,iDAA+C;AAC/C,4CAAoB;AACpB,+BAAiC;AACjC,gDAAwB;AAExB,wDAwB4B;AAE5B,oCAAmC;AAEnC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAOlC,MAAM,oBAAoB,GAAG;IAC3B,IAAI,EAAE,6BAA6B;IACnC,MAAM,EAAE,+BAA+B;IACvC,KAAK,EAAE,8BAA8B;IACrC,QAAQ,EAAE,kCAAkC;IAC5C,WAAW,EAAE,qCAAqC;IAClD,YAAY,EAAE,sCAAsC;IACpD,OAAO,EAAE,gCAAgC;IACzC,QAAQ,EAAE,iCAAiC;IAC3C,SAAS,EAAE,mCAAmC;IAC9C,SAAS,EAAE,mCAAmC;CAC/C,CAAC;AAEF,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,CACL,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClB,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CACnE,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,sHAAsH;IACtH,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,sBAAsB,CAAC,cAAsB;IACpD,OAAO,CACL,cAAc,KAAK,QAAQ;QAC3B,cAAc,KAAK,eAAe;QAClC,cAAc,KAAK,cAAc,CAClC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,SAAoB;IAC3C,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,oBAAoB,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAoB;IAC5C,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,oBAAoB,CAAC,KAAK,CAAC;AAC9D,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAoB;IAC7C,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,oBAAoB,CAAC,MAAM,CAAC;AAC/D,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAc,EAAE,SAAoB;IACnE,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClF,OAAO,UAAU,KAAK,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAc,EAAE,SAAoB;IAC7D,MAAM,eAAe,GACnB,SAAS,CAAC,UAAU,CAAC,KAAK,oBAAoB,CAAC,MAAM;QACrD,SAAS,CAAC,UAAU,CAAC,KAAK,oBAAoB,CAAC,KAAK,CAAC;IAEvD,iGAAiG;IACjG,2FAA2F;IAC3F,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3D,MAAM,kBAAkB,GACtB,SAAS,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC;IACvC,CAAC,CAAC,KAAK,SAAS,CAAC;IAEnB,OAAO,eAAe,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAoB;IAC7C,OAAO,SAAS,CAAC,cAAc,CAAC,KAAK,kBAAkB,CAAC;AAC1D,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,oBAAoB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,UAAU,GAAW,EAAE,CAAC;IAC9B,IAAI,IAAI,GAAW,EAAE,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACpB,gBAAgB,IAAI,CAAC,CAAC;YACtB,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC3B,gBAAgB,IAAI,CAAC,CAAC;YACtB,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;gBAC3B,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;YACrD,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACvE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAC3D,OAAO;QACL,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE;QAC7C,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;KACjD,CAAC;AACJ,CAAC;AAED;;;;;EAKE;AACF,SAAS,yBAAyB,CAAC,IAAY;IAC7C,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;IACpB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACpB,iBAAiB,EAAE,CAAC;QACtB,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC3B,iBAAiB,EAAE,CAAC;QACtB,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,iBAAiB,KAAK,CAAC,EAAE,CAAC;YACtD,UAAU,GAAG,CAAC,CAAC;YACf,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAa;IACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,IAAI,EAAE,0BAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,2BAAS,CAAC,UAAU,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,0BAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;IAC3F,CAAC;IAED,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAE9C,OAAO;YACL,IAAI,EAAE,0BAAQ,CAAC,UAAU;YACzB,IAAI,EAAE;gBACJ,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE,SAAS;aACjB;SACF,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,0BAAQ,CAAC,KAAK;YACpB,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;SAC7B,CAAC;IACJ,CAAC;IAED,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,OAAO;gBACL,IAAI,EAAE,0BAAQ,CAAC,GAAG;gBAClB,IAAI,EAAE,gBAA2B;aAClC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,0BAAQ,CAAC,YAAY;YAC3B,IAAI,EAAE,gBAAgB;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAS;QACvB,IAAI,EAAE,0BAAQ,CAAC,KAAK;QACpB,IAAI,EAAE,2BAAS,CAAC,GAAG;KACpB,CAAC;IAEF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS,CAAC;QACf,KAAK,KAAK;YACR,UAAU,CAAC,IAAI,GAAG,2BAAS,CAAC,GAAG,CAAC;YAChC,MAAM;QACR,KAAK,QAAQ;YACX,UAAU,CAAC,IAAI,GAAG,2BAAS,CAAC,MAAM,CAAC;YACnC,MAAM;QACR,KAAK,MAAM;YACT,UAAU,CAAC,IAAI,GAAG,2BAAS,CAAC,OAAO,CAAC;YACpC,MAAM;QACR,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ;YACX,UAAU,CAAC,IAAI,GAAG,2BAAS,CAAC,MAAM,CAAC;YACnC,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI,EAAE,+HAA+H;YACxI,UAAU,CAAC,IAAI,GAAG,2BAAS,CAAC,IAAI,CAAC;YACjC,MAAM;QACR;YACE,UAAU,CAAC,IAAI,GAAG,0BAAQ,CAAC,UAAU,CAAC;YACtC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;IAC3B,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAc;IAC1C,MAAM,OAAO,GAAG,gCAAgC,GAAG,IAAI,CAAC,IAAI,CAAC;IAE7D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,SAAS,6BAA6B,CAAC,YAAuB,EAAE,IAAc;IAC5E,MAAM,UAAU,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,8BAA8B,CAAC,YAAuB,EAAE,GAAiB;IAChF,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACjC,MAAM,UAAU,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IACzE,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEzE,IAAI,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,mBAAmB,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAG,CAAC,OAAkC,EAAE,IAAc,EAAE,EAAE;QACtE,IAAI,OAAO,GAAG,OAAO,CAAC;QACtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACpD,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,GAAG,YAAY,CAAC;QACzB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACvC,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IACjD,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,mBAAmB,CAAC;AACxD,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;AACzE,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAoB,EAAE,IAAc;IAC/D,MAAM,OAAO,GAAG,SAAS,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IACzE,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACvE,MAAM,uBAAuB,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7E,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,SAAoB;IAC3C,OAAO,SAAS,EAAE,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACrF,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,SAAoB,EACpB,IAAc,EACd,OAAwC;IAExC,IACE,SAAS,CAAC,UAAU,CAAC,KAAK,oBAAoB,CAAC,QAAQ;QACvD,SAAS,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,yBAAyB,CAAC;QAC3D,OAAO,CAAC,aAAa,EACrB,CAAC;QACD,gEAAgE;QAChE,OAAO,2BAA2B,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,KAAK,MAAM,YAAY,IAAI,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACzD,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/D,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,IAAI,aAAa,GAAkB,IAAI,CAAC;AACxC,SAAS,UAAU;IACjB,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,aAAa,GAAG,IAAA,wBAAQ,EAAC,sCAAsC,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC;IACrF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,EAAE,IAAI,EAAE,0BAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,2BAAS,CAAC,UAAU,EAAE,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,SAAoB,EACpB,IAAc,EACd,OAAwC;IAExC,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9B,OAAO,oBAAoB,CAAC,SAAS,CAAC,cAAc,CAAW,CAAC,CAAC;IACnE,CAAC;IAED,yDAAyD;IACzD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,MAAM,2BAA2B,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;QACzF,OAAO,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC/E,CAAC;IAED,OAAO,iBAAiB,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,sCAAsC,CAAC,EAC9C,QAAQ,EACR,UAAU,EACV,OAAO,GAKR;IACC,MAAM,OAAO,GAAG;QACd,aAAa,EAAE,2BAA2B;QAC1C,gBAAgB,EAAE,QAAQ;QAC1B,YAAY,EAAE,UAAU;QACxB,kBAAkB,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,CAAC;KAC/E,CAAC;IAEF,MAAM,WAAW,GAAG,cAAI,CAAC,SAAS,CAAC,OAAO,EAAE;QAC1C,iBAAiB,EAAE,cAAc;QACjC,SAAS,EAAE,CAAC;QACZ,cAAc,EAAE,OAAO;KACxB,CAAC;SACC,OAAO,CAAC,6BAA6B,EAAE,2BAA2B,CAAC;SACnE,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAE1B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,oEAAoE;AACpE,oEAAoE;AACpE,yBAAyB;AACzB,KAAK,UAAU,2BAA2B,CACxC,UAAkB,EAClB,IAAc;IAEd,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,WAAW,GAAG,sCAAsC,CAAC;QACzD,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,UAAU;QACV,OAAO;KACR,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,+BAA+B,GAAG,WAAW,GAAG,GAAG,CAAC;IACpE,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QAC5C,IAAI,YAAY,KAAK,gBAAgB,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,8BAA8B,CAAC,SAGvC;IACC,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS;QACjC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,QAAQ,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,4BAA4B,GAAG,4BAA4B,CAAC;AAElE,KAAK,UAAU,iBAAiB,CAC9B,SAAoB,EACpB,IAAc,EACd,OAAwC;IAExC,MAAM,OAAO,GAAG,SAAS,CAAC,kBAAkB,CAAC,EAAE,IAAI,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,oBAAoB,CAAC,OAAO,CACtD,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,wFAAwF;QACxF,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAC5C,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,oBAAoB,CAAC,YAAY,CAAC;SACnE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,SAAS;QAChC,QAAQ,EAAE,CAAC,CAAC,cAAc,CAAC;KAC5B,CAAC,CAAC,CAAC;IAEN,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACjG,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,iCAAiC,CAC9C,YAAuB,EACvB,IAAc,EACd,OAAwC;IAExC,MAAM,gBAAgB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC1D,IAAI,KAAK,GAAG,IAAI,CAAC;IAEjB,+EAA+E;IAC/E,6CAA6C;IAC7C,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,KAAK,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,KAAK,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,qFAAqF;QACrF,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QAChF,gFAAgF;IAClF,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,8BAA8B,CAAC,IAAI,EAAE;QACtE,gBAAgB,EAAE,YAAY,CAAC,YAAY,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,YAAuB,EACvB,IAAc,EACd,OAAwC;IAExC,MAAM,gBAAgB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC1D,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,6BAA6B,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACtE,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,KAAK,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,qFAAqF;QACrF,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QAChF,gFAAgF;IAClF,CAAC;IAED,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,oBAAoB,CAAC,KAAK,EAAE,UAAU,IAAI,SAAS,CAAC;QAC1D,gBAAgB,EAAE,YAAY,CAAC,YAAY,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAoB;IACnD,iDAAiD;IACjD,EAAE;IACF,qBAAqB;IACrB,yBAAyB;IACzB,aAAa;IACb,MAAM;IACN,IAAI;IACJ,EAAE;IACF,4EAA4E;IAC5E,IAAI;IACJ,yBAAyB;IACzB,0BAA0B;IAC1B,QAAQ;IACR,oFAAoF;IACpF,gBAAgB;IAChB,SAAS;IACT,QAAQ;IACR,oFAAoF;IACpF,8BAA8B;IAC9B,YAAY;IACZ,yEAAyE;IACzE,kCAAkC;IAClC,gBAAgB;IAChB,gFAAgF;IAChF,sCAAsC;IACtC,oBAAoB;IACpB,4FAA4F;IAC5F,+CAA+C;IAC/C,4BAA4B;IAC5B,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,WAAW;IACX,IAAI;IACJ,EAAE;IACF,uHAAuH;IACvH,MAAM,+BAA+B,GAAG,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,uBAAuB,GAAG,+BAA+B,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,2BAA2B,GAAG,uBAAuB,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvF,OAAO,2BAA2B,IAAI,IAAI,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,SAAoB,EACpB,OAAwC,EACxC,GAAiB;IAEjB,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACrB,MAAM,wBAAwB,GAAG,uBAAuB,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC;IAC1F,MAAM,gBAAgB,GAAG,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,gBAAgB;QAC3B,CAAC,CAAC,6BAA6B,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5E,CAAC,CAAC,cAAc,CAAC;IAEnB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,mDAAmD,CAAC,CAAC;QACzE,OAAO;YACL,IAAI;YACJ,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,EAAE;YACd,gBAAgB,EAAE,SAAS,CAAC,YAAY,CAAC;SAC1C,CAAC;IACJ,CAAC;IAED,uIAAuI;IACvI,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAC9C,wBAAwB,EACxB,aAAa,EACb,SAAS,CAAC,YAAY,CAAC,EACvB,OAAO,EACP,GAAG,CACJ,CAAC;IACF,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,aAAa,CAAC,SAAS;QAChC,YAAY,EAAE,aAAa,CAAC,cAAc;QAC1C,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,WAAW,EAAE,aAAa,CAAC,WAAW;QACtC,gBAAgB,EAAE,SAAS,CAAC,YAAY,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,+BAA+B,CAC5C,YAAuB,EACvB,IAAc,EACd,OAAwC,EACxC,QAAiB;IAEjB,MAAM,gBAAgB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,gBAAgB;QAC3B,CAAC,CAAC,6BAA6B,CAAC,gBAAgB,EAAE,IAAI,CAAC;QACvD,CAAC,CAAC,iBAAiB,CAAC;IACtB,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,KAAK,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,qFAAqF;QACrF,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QAChF,gFAAgF;IAClF,CAAC;IAED,OAAO;QACL,IAAI;QACJ,UAAU,EAAE,oBAAoB,CAAC,KAAK,EAAE,UAAU,IAAI,SAAS,CAAC,EAAE,6BAA6B;QAC/F,UAAU,EAAE,EAAE,EAAE,yEAAyE;QACzF,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,8BAA8B,CAAC,IAAI,EAAE;QACvE,gBAAgB,EAAE,YAAY,CAAC,YAAY,CAAC;QAC5C,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oCAAoC,CACjD,YAAuB,EACvB,IAAc,EACd,OAAwC,EACxC,QAAiB;IAEjB,MAAM,mBAAmB,GAAG,MAAM,+BAA+B,CAC/D,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,QAAQ,CACT,CAAC;IACF,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7F,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,aAAa,GACjB,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,0BAAQ,CAAC,UAAU;QAC7C,YAAY,CAAC,IAAI,CAAC,IAAuB,KAAK,SAAS,CAAC;IAC3D,IAAI,aAAa,EAAE,CAAC;QAClB,mBAAmB,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,YAAuB,EACvB,IAAc,EACd,OAAwC;IAExC,MAAM,gBAAgB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,gBAAgB;QAC3B,CAAC,CAAC,6BAA6B,CAAC,gBAAgB,EAAE,IAAI,CAAC;QACvD,CAAC,CAAC,YAAY,CAAC;IACjB,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,KAAK,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,qFAAqF;QACrF,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QAChF,gFAAgF;IAClF,CAAC;IAED,OAAO;QACL,IAAI;QACJ,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,8BAA8B,CAAC,IAAI,EAAE;QACvE,gBAAgB,EAAE,YAAY,CAAC,YAAY,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,YAAuB,EACvB,OAAwC,EACxC,GAAiB;IAEjB,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACrB,yDAAyD;IACzD,MAAM,YAAY,GAAG,CAAC,CAAC;IACvB,MAAM,gBAAgB,GAAG,YAAY,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,6BAA6B,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAC3F,MAAM,aAAa,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,aAAa,EAAE,CAAC,kBAAkB,CAAC,CAAC;IAC7D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,MAAM,oBAAoB,CAC/B,gBAAgB,EAChB,IAAI,EACJ,aAAa,CAAC,YAAY,CAAC,EAC3B,OAAO,EACP,GAAG,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,SAAoB,EAAE,MAAgB,EAAE,GAAiB;IAC5F,SAAS,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,8BAA8B,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACpE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,UAA8B,EAAE,IAAc;IACvE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;QACnC,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QACvC,OAAO,CACL,MAAM,KAAK,QAAQ,CAAC,MAAM;YAC1B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC,KAAK,QAAQ,CACrE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,eAA0B,EAC1B,mBAAgC,EAChC,2BAAgD,EAChD,IAAc,EACd,OAAwC;IAExC,MAAM,mBAAmB,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC,MAAM,CACpE,CAAC,YAAY,EAAE,EAAE,CACf,YAAY,CAAC,UAAU,CAAC,KAAK,oBAAoB,CAAC,WAAW;QAC7D,iBAAiB,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAC1D,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,IAAA,eAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE;QACvE,MAAM,IAAI,GAAG,MAAM,sBAAsB,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1B,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,2BAA2B,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC;QACjC,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,aAAwB;IAClD,MAAM,SAAS,GAAa,aAAa,CAAC,kBAAkB,CAAC;SAC1D,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,oBAAoB,CAAC,QAAQ,CAAC;SAClE,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;SACzC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9C,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC,CAAC;IAEhG,OAAO;QACL,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC;QAC/B,KAAK,EAAE,SAAS;QAChB,YAAY;KACb,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,sBAA8C;IAChF,MAAM,GAAG,GAAG,CAAC,IAAsB,EAAE,IAAsB,EAAU,EAAE,CACrE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAEhD,sBAAsB,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACrC,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAAgB,EAChB,gBAAwB;IAExB,MAAM,aAAa,GAAG,+BAA+B,CAAC;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,IAAI,EAAE,0BAAQ,CAAC,KAAK;YACpB,IAAI,EAAE,2BAAS,CAAC,UAAU;SAC3B;QACD,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAWD,KAAK,UAAU,oBAAoB,CACjC,eAA4B,EAC5B,IAAY,EACZ,gBAAwB,EACxB,OAAwC,EACxC,GAAiB;IAEjB,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACrB,MAAM,sBAAsB,GAA2B;QACrD,IAAI;QACJ,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,EAAE;QACb,cAAc,EAAE,EAAE;QAClB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,gBAAgB;KACjB,CAAC;IAEF,MAAM,IAAA,eAAO,EAAC,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;QACjD,qIAAqI;QACrI,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,MAAM,mBAAmB,GAAG,mBAAmB,CAC7C,SAAS,CAAC,UAAU,CAAC,EACrB,SAAS,CAAC,gBAAgB,CAAC,CAC5B,CAAC;YACF,IAAI,mBAAmB,EAAE,CAAC;gBACxB,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO;QACT,CAAC;QAED,QAAQ,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,gBAAgB,GAAG,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,gBAAgB,EAAE,CAAC;oBACrB,sBAAsB,CAAC,IAAI,GAAG,6BAA6B,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;gBACtF,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,sBAAsB,CAAC,SAAS,CAAC,IAAI,CACnC,MAAM,+BAA+B,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CACvE,CAAC;gBACF,MAAM;YACR,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,mBAAmB,GAAG,MAAM,4BAA4B,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBACzF,IAAI,mBAAmB,EAAE,CAAC;oBACxB,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAC7D,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,OAAO;gBACV,sBAAsB,CAAC,OAAO,CAAC,IAAI,CACjC,MAAM,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CACzD,CAAC;gBACF,MAAM;YACR,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,mBAAmB,GAAG,MAAM,4BAA4B,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBACzF,IAAI,mBAAmB,EAAE,CAAC;oBACxB,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAC9D,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,eAAe;gBAClB,sBAAsB,CAAC,cAAc,CAAC,IAAI,CACxC,MAAM,oCAAoC,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAC5E,CAAC;gBACF,MAAM;YACR,KAAK,qBAAqB;gBACxB,sBAAsB,CAAC,cAAc,CAAC,IAAI,CACxC,MAAM,oCAAoC,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAC3E,CAAC;gBACF,MAAM;YACR,KAAK,gBAAgB;gBACnB,sBAAsB,CAAC,SAAS,CAAC,IAAI,CACnC,MAAM,+BAA+B,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CACtE,CAAC;gBACF,MAAM;YACR,KAAK,aAAa;gBAChB,sBAAsB,CAAC,WAAW,GAAG,MAAM,iCAAiC,CAC1E,SAAS,EACT,IAAI,EACJ,OAAO,CACR,CAAC;gBACF,MAAM;YACR,KAAK,MAAM;gBACT,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAC/B,MAAM,0BAA0B,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAC3D,CAAC;gBACF,MAAM;YACR,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,eAAe,GAAG,MAAM,0BAA0B,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;gBAClF,IAAI,eAAe,EAAE,CAAC;oBACpB,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACrD,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,QAAQ;gBACX,2BAA2B,CAAC,SAAS,EAAE,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC3E,MAAM;YACR;gBACE,OAAO,CAAC,IAAI,CAAC,sCAAsC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,wGAAwG;IACxG,oEAAoE;IACpE,EAAE;IACF,+EAA+E;IAC/E,oGAAoG;IACpG,EAAE;IACF,yIAAyI;IACzI,0BAA0B,CAAC,sBAAsB,CAAC,CAAC;IACnD,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAcD,SAAS,cAAc,CACrB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAyB;AAChD,qJAAqJ;AACrJ,sBAA6C;IAE7C,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,sBAAsB,CAAC;IACzF,4GAA4G;IAC5G,MAAM,YAAY,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QAC9C,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;SAAM,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,KAAK,MAAM,YAAY,IAAI,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACzD,cAAc,CACZ;gBACE,IAAI;gBACJ,SAAS,EAAE,YAAY;gBACvB,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI;aACpC,EACD,sBAAsB,CACvB,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CACrC,mBAAwC;IAExC,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAGzC,EAAE,CAAC,CAAC;IAEN,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACxC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,gCAAc,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CACxF,CAAC;IACF,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACtC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,gCAAc,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CACtF,CAAC;IAEF,OAAO,2BAA2B,CAAC;AACrC,CAAC;AAED,SAAS,sBAAsB,CAC7B,IAAU,EACV,aAA0B,EAC1B,2BAAgD;IAEhD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,0BAAQ,CAAC,KAAK,CAAC;QACpB,KAAK,0BAAQ,CAAC,QAAQ;YACpB,sBAAsB,CAAC,IAAI,CAAC,IAAY,EAAE,aAAa,EAAE,2BAA2B,CAAC,CAAC;YACtF,MAAM;QACR,KAAK,0BAAQ,CAAC,UAAU;YACtB,sBAAsB,CACnB,IAAI,CAAC,IAAuB,CAAC,GAAG,EACjC,aAAa,EACb,2BAA2B,CAC5B,CAAC;YACF,sBAAsB,CACnB,IAAI,CAAC,IAAuB,CAAC,KAAK,EACnC,aAAa,EACb,2BAA2B,CAC5B,CAAC;YACF,MAAM;QACR,KAAK,0BAAQ,CAAC,GAAG;YACf,KAAK,MAAM,CAAC,IAAK,IAAI,CAAC,IAAgB,CAAC,KAAK,EAAE,CAAC;gBAC7C,sBAAsB,CAAC,CAAC,EAAE,aAAa,EAAE,2BAA2B,CAAC,CAAC;YACxE,CAAC;YACD,MAAM;QACR,KAAK,0BAAQ,CAAC,KAAK;YACjB,MAAM;QACR,KAAK,0BAAQ,CAAC,UAAU;YACtB,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAsB,CAAC,CAAC;YAC/C,MAAM;QACR,KAAK,0BAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3B,MAAM,gBAAgB,GAAqB,IAAI,CAAC,IAAwB,CAAC;YACzE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC;YACvC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5B,2BAA2B,CAAC,GAAG,CAC7B,QAAQ,EACR,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CACxF,CAAC;YACF,KAAK,MAAM,CAAC,IAAK,IAAI,CAAC,IAAyB,CAAC,KAAK,EAAE,CAAC;gBACtD,sBAAsB,CAAC,CAAC,EAAE,aAAa,EAAE,2BAA2B,CAAC,CAAC;YACxE,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CACnC,sBAA8C,EAC9C,mBAAwC;IAExC,MAAM,OAAO,GAAG,CAAC,IAAU,EAAE,EAAE;QAC7B,sBAAsB,CACpB,IAAI,EACJ,mBAAmB,CAAC,mBAAmB,EACvC,mBAAmB,CAAC,2BAA2B,CAChD,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,GAAa,EAAE,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,mBAAwC,EAAE,EAAE;QACnE,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACxC,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC;IACF,sBAAsB,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/D,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1D,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrD,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,sBAAsB,CAAC,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,4BAA4B,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAClG,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7E,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3C,mBAAmB,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACxC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CACtB,SAAoB,EACpB,UAAwC,EACxC,IAAc,EACd,gBAA2B;IAE3B,IACE,iBAAiB,CAAC,SAAS,CAAC;QAC5B,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC;QAClC,iBAAiB,CAAC,SAAS,CAAC;QAC5B,eAAe,CAAC,SAAS,CAAC;QAC1B,gBAAgB,CAAC,SAAS,CAAC,EAC3B,CAAC;QACD,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QACzC,UAAU,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACtD,MAAM,EAAE,GAAc,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7C,gBAAgB,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QAClC,SAAS,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;YACrD,eAAe,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,IACE,SAAS,CAAC,UAAU,CAAC,KAAK,oBAAoB,CAAC,SAAS;QACxD,SAAS,CAAC,UAAU,CAAC,KAAK,oBAAoB,CAAC,SAAS,EACxD,CAAC;QACD,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/E,OAAO;IACT,CAAC;IACD,MAAM,aAAa,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACpD,aAAa,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,CACtC,eAAe,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAClE,CAAC;AACJ,CAAC;AAMM,KAAK,UAAU,2BAA2B,CAC/C,QAAgB,EAChB,OAAwC;IAExC,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;IAE5E,MAAM,iBAAiB,GAA6C,EAAE,CAAC;IACvE,MAAM,iBAAiB,GAAgB,EAAE,CAAC;IAC1C,MAAM,eAAe,GAAgB,EAAE,CAAC;IACxC,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,cAAc,CACZ;QACE,IAAI;QACJ,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC;QACrC,IAAI,EAAE,EAAE;KACT,EACD;QACE,iBAAiB;QACjB,iBAAiB;QACjB,eAAe;KAChB,CACF,CAAC;IACF,MAAM,UAAU,GAAiC,EAAE,CAAC;IACpD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACpB,eAAe,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjE,MAAM,2BAA2B,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9D,MAAM,aAAa,GAA6B,EAAE,CAAC;IACnD,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;IAChD,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAU,CAAC;IAClD,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;IAChD,MAAM,2BAA2B,GAAgC,IAAI,GAAG,EAAE,CAAC;IAC3E,MAAM,KAAK,GAAe,eAAe,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,CAAC,EAAa,EAAE,EAAE;QAClC,OAAO,oBAAoB,CACzB,EAAE,EACF,qBAAqB,EACrB,2BAA2B,EAC3B,IAAI,EACJ,OAAO,CACR,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,IAAA,eAAO,EAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAC7D,MAAM,8BAA8B,GAAG,IAAA,eAAO,EAC5C,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EACvE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;QACtB,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,oBAAoB,CACzB,SAAS,CAAC,kBAAkB,CAAC,EAC7B,IAAI,EACJ,SAAS,CAAC,YAAY,CAAC,EACvB,OAAO,EACP,EAAE,UAAU,EAAE,IAAI,EAAE,CACrB,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,OAAO,EAAE,uBAAuB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3D,cAAc;QACd,8BAA8B;KAC/B,CAAC,CAAC;IAEH,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QACzB,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAC3B,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG;QAC1B,aAAa;QACb,OAAO;QACP,KAAK;QACL,SAAS,EAAE,EAAE;QACb,mBAAmB,EAAE,qBAAqB,CAAC,KAAK,CAAC,qBAAqB,CAAC;QACvE,uBAAuB;QACvB,2BAA2B;QAC3B,2BAA2B;KAC5B,CAAC;IAEF,KAAK,MAAM,sBAAsB,IAAI,uBAAuB,EAAE,CAAC;QAC7D,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC3C,4BAA4B,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;IAC5E,CAAC;IAED,mBAAmB,CAAC,2BAA2B;QAC7C,8BAA8B,CAAC,mBAAmB,CAAC,CAAC;IAEtD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,SAAS,cAAc,CAAC,WAAmB;IACzC,wGAAwG;IACxG,EAAE;IACF,6BAA6B;IAC7B,0BAA0B;IAC1B,wDAAwD;IACxD,EAAE;IACF,gCAAgC;IAChC,mEAAmE;IAEnE,+GAA+G;IAC/G,6BAA6B;IAC7B,gDAAgD;IAChD,uDAAuD;IACvD,MAAM,YAAY,GAAG,gDAAgD,CAAC;IACtE,OAAO,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;QAC/D,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4JAA4J;AAC5J,wDAAwD;AACxD,SAAS,yBAAyB,CAAC,GAAW;IAC5C,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChE,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;QAC5C,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAGD,SAAS,mBAAmB,CAAC,WAAmB,EAAE,WAAmB;IACnE,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,4HAA4H;IAC5H,2EAA2E;IAC3E,EAAE;IACF,oBAAoB;IACpB,EAAE;IACF,QAAQ;IACR,EAAE;IACF,qCAAqC;IACrC,2BAA2B;IAC3B,EAAE;IACF,qJAAqJ;IACrJ,4FAA4F;IAC5F,IAAI,CAAC,GAAG,WAAW,CAAC;IACpB,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,QAAQ,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAC7B,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,GAAG;gBACN,UAAU,IAAI,CAAC,CAAC;gBAChB,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBACrB,MAAM,EAAE,GAAG,yBAAyB,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC5E,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;gBAClC,CAAC;gBACD,UAAU,IAAI,CAAC,CAAC;gBAChB,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,QAAQ,GAAG,CAAC,QAAQ,CAAC;gBACvB,CAAC;gBACD,MAAM;YACR,KAAK,IAAI;gBACP,UAAU,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,OAAO,GAAG,UAAU,CAAC;QACrB,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AACzC,CAAC;AAOD,SAAS,wBAAwB,CAAC,WAAmB,EAAE,KAAa;IAClE,MAAM,gBAAgB,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAClE,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,CAAC,GAAG,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC;IAC3D,OAAO,CAAC,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3C,UAAU,IAAI,CAAC,CAAC;QAChB,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,+CAA+C;AAC/C,8DAA8D;AAC9D,iDAAiD;AACjD,kEAAkE;AAClE,kCAAkC;AAClC,8CAA8C;AAC9C,SAAS,0BAA0B,CAAC,mBAA2B;IAC7D,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAAC;IACxD,MAAM,eAAe,GAAgE,EAAE,CAAC;IACxF,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,OAAO,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACzD,MAAM;QACR,CAAC;QACD,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,GAAG,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC5E,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,QAAQ,IAAI,CAAC,CAAC;YACd,SAAS;QACX,CAAC;QACD,eAAe,CAAC,IAAI,CAAC;YACnB,KAAK,EAAE,WAAW;YAClB,GAAG,EAAE,aAAa;YAClB,iBAAiB,EAAE,wBAAwB,CAAC,WAAW,EAAE,WAAW,CAAC;SACtE,CAAC,CAAC;QACH,yIAAyI;QACzI,QAAQ,GAAG,aAAa,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,eAAe,EAAE,CAAC;QAChE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3D,wGAAwG;QACxG,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC7C,cAAc,CAAC,IAAI,CACjB,KAAK,MAAM,8BAA8B,KAAK,IAAI,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CACnG,CAAC;QACF,cAAc,CAAC,IAAI,CAAC,KAAK,MAAM,iCAAiC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;QAClF,OAAO,GAAG,GAAG,CAAC;IAChB,CAAC;IACD,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,OAAO,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,SAAS,2BAA2B,CAAC,UAAkB;IACrD,OAAO,UAAU,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE;QAChD,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC;QACjE,OAAO,KAAK,GAAG,GAAG,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,mBAAmB,CACjC,mBAA2B,EAC3B,EAAE,iBAAiB,EAAE,oBAAoB,EAAoC;IAE7E,IAAI,WAAW,GAAG,mBAAmB,CAAC;IACtC,IAAI,iBAAiB,EAAE,CAAC;QACtB,WAAW,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,oBAAoB,EAAE,CAAC;QACzB,WAAW,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-type-information",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "keywords": [
5
5
  "react-native",
6
6
  "expo",
@@ -36,7 +36,7 @@
36
36
  "ts-jest": "^29.1.2",
37
37
  "expo-module-scripts": "56.0.3"
38
38
  },
39
- "gitHead": "0dac79c8469fa00b76fb8f402c47ed61f3d6317e",
39
+ "gitHead": "ff6a677893d78b02c3adf63f67ba159b926395b0",
40
40
  "scripts": {
41
41
  "build": "expo-module build",
42
42
  "clean": "expo-module clean",
@@ -92,17 +92,27 @@ function isStructStructure(structure: Structure): boolean {
92
92
  return structure['key.kind'] === swiftDeclarationKind.struct;
93
93
  }
94
94
 
95
- function isRecordStructure(structure: Structure): boolean {
95
+ function containsFieldAnnotation(file: FileType, structure: Structure): boolean {
96
+ const startIndex = structure['key.offset'];
97
+ const endIndex = startIndex + structure['key.length'];
98
+ const fieldIndex = file.content.substring(startIndex, endIndex).indexOf('@Field');
99
+ return fieldIndex !== -1;
100
+ }
101
+
102
+ function isRecordStructure(file: FileType, structure: Structure): boolean {
96
103
  const isRecordOrClass =
97
104
  structure['key.kind'] === swiftDeclarationKind.struct ||
98
105
  structure['key.kind'] === swiftDeclarationKind.class;
99
106
 
107
+ // To check whether a structure represents a record, check if it has any @Field annotated fields.
108
+ // For the case of empty structs add a check if the struct directly conforms to the Record.
109
+ const hasFields = containsFieldAnnotation(file, structure);
100
110
  const inheritsFromRecord =
101
111
  structure['key.inheritedtypes']?.find((type) => {
102
112
  return type['key.name'] === 'Record';
103
113
  }) !== undefined;
104
114
 
105
- return isRecordOrClass && inheritsFromRecord;
115
+ return isRecordOrClass && (hasFields || inheritsFromRecord);
106
116
  }
107
117
 
108
118
  function isModuleStructure(structure: Structure): boolean {
@@ -658,6 +668,32 @@ async function parseModuleFunctionSubstructure(
658
668
  };
659
669
  }
660
670
 
671
+ async function parseModuleAsyncFunctionSubstructure(
672
+ substructure: Structure,
673
+ file: FileType,
674
+ options: SwiftFileTypeInformationOptions,
675
+ isStatic: boolean
676
+ ): Promise<FunctionDeclaration> {
677
+ const functionDeclaration = await parseModuleFunctionSubstructure(
678
+ substructure,
679
+ file,
680
+ options,
681
+ isStatic
682
+ );
683
+ const lastArgument = functionDeclaration.arguments[functionDeclaration.arguments.length - 1];
684
+ if (!lastArgument) {
685
+ return functionDeclaration;
686
+ }
687
+
688
+ const isPromiseType =
689
+ lastArgument.type.kind === TypeKind.IDENTIFIER &&
690
+ (lastArgument.type.type as TypeIdentifier) === 'Promise';
691
+ if (isPromiseType) {
692
+ functionDeclaration.arguments.pop();
693
+ }
694
+ return functionDeclaration;
695
+ }
696
+
661
697
  async function parseModulePropDeclaration(
662
698
  substructure: Structure,
663
699
  file: FileType,
@@ -894,12 +930,12 @@ async function parseModuleStructure(
894
930
  }
895
931
  case 'AsyncFunction':
896
932
  moduleClassDeclaration.asyncFunctions.push(
897
- await parseModuleFunctionSubstructure(structure, file, options, false)
933
+ await parseModuleAsyncFunctionSubstructure(structure, file, options, false)
898
934
  );
899
935
  break;
900
936
  case 'StaticAsyncFunction':
901
937
  moduleClassDeclaration.asyncFunctions.push(
902
- await parseModuleFunctionSubstructure(structure, file, options, true)
938
+ await parseModuleAsyncFunctionSubstructure(structure, file, options, true)
903
939
  );
904
940
  break;
905
941
  case 'StaticFunction':
@@ -945,33 +981,45 @@ async function parseModuleStructure(
945
981
  return moduleClassDeclaration;
946
982
  }
947
983
 
984
+ type ParseStructuresOutput = {
985
+ modulesStructures: { structure: Structure; name: string }[];
986
+ recordsStructures: Structure[];
987
+ enumsStructures: Structure[];
988
+ };
989
+
990
+ type ParseStructureOptions = {
991
+ file: FileType;
992
+ structure: Structure;
993
+ name: string;
994
+ };
995
+
948
996
  function parseStructure(
949
- structure: Structure,
950
- name: string,
951
- modulesStructures: { structure: Structure; name: string }[],
952
- recordsStructures: Structure[],
953
- enumsStructures: Structure[]
997
+ { file, structure, name }: ParseStructureOptions,
998
+ // Note that instead of returning and merging the enum, record and module arrays, we're just collecting the items in the 3 arrays inside this object.
999
+ parsedStructuresOutput: ParseStructuresOutput
954
1000
  ) {
1001
+ const { modulesStructures, recordsStructures, enumsStructures } = parsedStructuresOutput;
955
1002
  // TODO(@HubertBer): Find out why sometimes the structure is undefined (for example when parsing expo-audio)
956
- if (!structure || !structure['key.substructure']) {
1003
+ const substructure = structure['key.substructure'];
1004
+ if (!structure || !substructure) {
957
1005
  return;
958
1006
  }
959
- const substructure = structure['key.substructure'];
960
1007
 
961
1008
  if (isModuleStructure(structure)) {
962
1009
  modulesStructures.push({ structure, name });
963
- } else if (isRecordStructure(structure)) {
1010
+ } else if (isRecordStructure(file, structure)) {
964
1011
  recordsStructures.push(structure);
965
1012
  } else if (isEnumStructure(structure)) {
966
1013
  enumsStructures.push(structure);
967
1014
  } else if (Array.isArray(substructure) && substructure.length > 0) {
968
1015
  for (const substructure of structure['key.substructure']) {
969
1016
  parseStructure(
970
- substructure,
971
- structure['key.name'] ?? name,
972
- modulesStructures,
973
- recordsStructures,
974
- enumsStructures
1017
+ {
1018
+ file,
1019
+ structure: substructure,
1020
+ name: structure['key.name'] ?? name,
1021
+ },
1022
+ parsedStructuresOutput
975
1023
  );
976
1024
  }
977
1025
  }
@@ -1086,7 +1134,7 @@ function parseNamespaces(
1086
1134
  ) {
1087
1135
  if (
1088
1136
  isModuleStructure(structure) ||
1089
- isRecordStructure(structure) ||
1137
+ isRecordStructure(file, structure) ||
1090
1138
  isStructStructure(structure) ||
1091
1139
  isEnumStructure(structure) ||
1092
1140
  isClassStructure(structure)
@@ -1127,8 +1175,18 @@ export async function getSwiftFileTypeInformation(
1127
1175
  const recordsStructures: Structure[] = [];
1128
1176
  const enumsStructures: Structure[] = [];
1129
1177
  const fileStructure = getStructureFromFile(file);
1130
- parseStructure(fileStructure, '', modulesStructures, recordsStructures, enumsStructures);
1131
-
1178
+ parseStructure(
1179
+ {
1180
+ file,
1181
+ structure: getStructureFromFile(file),
1182
+ name: '',
1183
+ },
1184
+ {
1185
+ modulesStructures,
1186
+ recordsStructures,
1187
+ enumsStructures,
1188
+ }
1189
+ );
1132
1190
  const namespaces: { [key: string]: namespace } = {};
1133
1191
  namespaces[''] = {};
1134
1192
  parseNamespaces(fileStructure, namespaces, file, namespaces['']);
@@ -84,6 +84,17 @@ public class TestModule: Module {
84
84
  return a + b
85
85
  }
86
86
 
87
+ AsyncFunction("TestAsyncFunctionPromiseArgument1") { (promise: Promise) async -> String in
88
+ "some string"
89
+ }
90
+
91
+ AsyncFunction("TestAsyncFunctionPromiseArgument2") { (_: Promise) async -> Void in
92
+ }
93
+
94
+ AsyncFunction("TestAsyncFunctionPromiseArgument3") { (promise: Promise) async in
95
+ return 123
96
+ }
97
+
87
98
  AsyncFunction("TestUnderscore") { (url: URL, _ /* Comment 10 */: [BarcodeType]) in
88
99
  }
89
100
 
@@ -209,6 +220,22 @@ enum IntBackedEnum1: Int {
209
220
  enum IntBackedEnum2: Something, Int, SomethingElse {
210
221
  case simpleCase
211
222
  }
223
+
224
+ protocol SimpleProtocol: Record {
225
+ var id: String { get }
226
+ }
227
+
228
+ struct StructConformingToProtocol: SimpleProtocol {
229
+ @Field
230
+ var id: String { get }
231
+ @Field
232
+ var someInt: Int
233
+ }
234
+
235
+ struct EmptyStruct: Record {
236
+ init(){}
237
+ }
238
+
212
239
  // Global variable names
213
240
  let globalEventName = "onGlobalEvent"
214
241
 
@@ -32,6 +32,11 @@ export type TestRecordClass = {
32
32
  field1: number;
33
33
  field2: string;
34
34
  };
35
+ export type StructConformingToProtocol = {
36
+ id: string;
37
+ someInt: number;
38
+ };
39
+ export type EmptyStruct = {};
35
40
 
36
41
  export enum TestEnum {
37
42
  simpleCase = 'simpleCase',
@@ -71,6 +76,7 @@ export type TestModuleEvents = {
71
76
  event1: (...args: any[]) => void;
72
77
  event2: (...args: any[]) => void;
73
78
  event3: (...args: any[]) => void;
79
+ globalAssignedToGlobal: (...args: any[]) => void;
74
80
  onClassEvent: (...args: any[]) => void;
75
81
  onGlobalEvent: (...args: any[]) => void;
76
82
  onNestedEvent: (...args: any[]) => void;
@@ -122,6 +128,9 @@ export declare class TestModuleNativeModuleType extends NativeModule<TestModuleE
122
128
  TestFunctionReturningRecord(): TestRecord;
123
129
  TestFunctionReturningEnum(): TestEnum;
124
130
  TestSimpleAsyncFunction(a: string, b: string): Promise<string>;
131
+ TestAsyncFunctionPromiseArgument1(): Promise<string>;
132
+ TestAsyncFunctionPromiseArgument2(): Promise<void>;
133
+ TestAsyncFunctionPromiseArgument3(): Promise<unknown /*The type couldn't be resolved automatically.*/>;
125
134
  TestUnderscore(
126
135
  url: URL,
127
136
  _4: BarcodeType[]
@@ -209,6 +218,15 @@ export function TestFunctionReturningEnum() {
209
218
  export async function TestSimpleAsyncFunction(a: string, b: string) {
210
219
  return TestModule.TestSimpleAsyncFunction(a, b);
211
220
  }
221
+ export async function TestAsyncFunctionPromiseArgument1() {
222
+ return TestModule.TestAsyncFunctionPromiseArgument1();
223
+ }
224
+ export async function TestAsyncFunctionPromiseArgument2() {
225
+ return TestModule.TestAsyncFunctionPromiseArgument2();
226
+ }
227
+ export async function TestAsyncFunctionPromiseArgument3() {
228
+ return TestModule.TestAsyncFunctionPromiseArgument3();
229
+ }
212
230
  export async function TestUnderscore(url: URL, _5: BarcodeType[]) {
213
231
  return TestModule.TestUnderscore(url, _5);
214
232
  }
@@ -246,6 +264,8 @@ import {
246
264
  TestRecord,
247
265
  TestRecord2,
248
266
  TestRecordClass,
267
+ StructConformingToProtocol,
268
+ EmptyStruct,
249
269
  TestClassWithConstructor,
250
270
  TestBasicClass,
251
271
  TestEmptyClass,
@@ -287,6 +307,9 @@ export declare class TestModule extends NativeModule<TestModuleEvents> {
287
307
  TestFunctionReturningRecord(): TestRecord;
288
308
  TestFunctionReturningEnum(): TestEnum;
289
309
  TestSimpleAsyncFunction(a: string, b: string): Promise<string>;
310
+ TestAsyncFunctionPromiseArgument1(): Promise<string>;
311
+ TestAsyncFunctionPromiseArgument2(): Promise<void>;
312
+ TestAsyncFunctionPromiseArgument3(): Promise<unknown /*The type couldn't be resolved automatically.*/>;
290
313
  TestUnderscore(
291
314
  url: URL,
292
315
  _6: BarcodeType[]
@@ -333,6 +356,11 @@ export type TestRecordClass = {
333
356
  field1: number;
334
357
  field2: string;
335
358
  };
359
+ export type StructConformingToProtocol = {
360
+ id: string;
361
+ someInt: number;
362
+ };
363
+ export type EmptyStruct = {};
336
364
 
337
365
  export enum TestEnum {
338
366
  simpleCase = 'simpleCase',
@@ -372,6 +400,7 @@ export type TestModuleEvents = {
372
400
  event1: (...args: any[]) => void;
373
401
  event2: (...args: any[]) => void;
374
402
  event3: (...args: any[]) => void;
403
+ globalAssignedToGlobal: (...args: any[]) => void;
375
404
  onClassEvent: (...args: any[]) => void;
376
405
  onGlobalEvent: (...args: any[]) => void;
377
406
  onNestedEvent: (...args: any[]) => void;
@@ -447,6 +476,11 @@ export type TestRecordClass = {
447
476
  field1: number;
448
477
  field2: string;
449
478
  };
479
+ export type StructConformingToProtocol = {
480
+ id: string;
481
+ someInt: number;
482
+ };
483
+ export type EmptyStruct = {};
450
484
 
451
485
 
452
486
  export enum TestEnum {
@@ -492,6 +526,9 @@ export function TestFunctionReturningEnum(): TestEnum { return TestEnum.simpleCa
492
526
 
493
527
 
494
528
  export async function TestSimpleAsyncFunction(a: string, b: string): Promise<string> { return ""; }
529
+ export async function TestAsyncFunctionPromiseArgument1(): Promise<string> { return ""; }
530
+ export async function TestAsyncFunctionPromiseArgument2(): Promise<void> { }
531
+ export async function TestAsyncFunctionPromiseArgument3(): Promise<unknown /*The type couldn't be resolved automatically.*/> { return; }
495
532
  export async function TestUnderscore(url: URL, _2: BarcodeType[]): Promise<unknown /*The type couldn't be resolved automatically.*/> { return; }
496
533
 
497
534
 
@@ -566,6 +603,9 @@ export function TestTypeCombinations(a) { return []; }
566
603
  export function TestFunctionReturningRecord() { return { basicString: "", basicStringInitialized: "", basicIntInferred: 0, basicDoubleInferred: 0, basicStringInferred: "", enumInferred: TestEnum.simpleCase, complexEnumInferred: TestEnum.simpleCase, recordInferred: { field1: 0, field2: "" }, optionalInt: 0, letDoubleBinding: 0 }; }
567
604
  export function TestFunctionReturningEnum() { return TestEnum.simpleCase; }
568
605
  export async function TestSimpleAsyncFunction(a, b) { return ""; }
606
+ export async function TestAsyncFunctionPromiseArgument1() { return ""; }
607
+ export async function TestAsyncFunctionPromiseArgument2() { }
608
+ export async function TestAsyncFunctionPromiseArgument3() { return; }
569
609
  export async function TestUnderscore(url, _3) { return; }
570
610
  export class TestClassWithConstructor {
571
611
  constructor(a) { }
@@ -612,6 +652,11 @@ export type TestRecordClass = {
612
652
  field1: number;
613
653
  field2: string;
614
654
  };
655
+ export type StructConformingToProtocol = {
656
+ id: string;
657
+ someInt: number;
658
+ };
659
+ export type EmptyStruct = {};
615
660
 
616
661
  export enum TestEnum {
617
662
  simpleCase = 'simpleCase',
@@ -651,6 +696,7 @@ export type TestModuleEvents = {
651
696
  event1: (...args: any[]) => void;
652
697
  event2: (...args: any[]) => void;
653
698
  event3: (...args: any[]) => void;
699
+ globalAssignedToGlobal: (...args: any[]) => void;
654
700
  onClassEvent: (...args: any[]) => void;
655
701
  onGlobalEvent: (...args: any[]) => void;
656
702
  onNestedEvent: (...args: any[]) => void;
@@ -692,6 +738,9 @@ export declare class TestModuleNativeModuleType extends NativeModule<TestModuleE
692
738
  TestFunctionReturningRecord(): TestRecord;
693
739
  TestFunctionReturningEnum(): TestEnum;
694
740
  TestSimpleAsyncFunction(a: string, b: string): Promise<string>;
741
+ TestAsyncFunctionPromiseArgument1(): Promise<string>;
742
+ TestAsyncFunctionPromiseArgument2(): Promise<void>;
743
+ TestAsyncFunctionPromiseArgument3(): Promise<unknown /*The type couldn't be resolved automatically.*/>;
695
744
  TestUnderscore(
696
745
  url: URL,
697
746
  _1: BarcodeType[]
@@ -735,10 +784,12 @@ export default _default;
735
784
  exports[`Same type information 1`] = `
736
785
  {
737
786
  "declaredTypeIdentifiersList": [
787
+ "EmptyStruct",
738
788
  "EventNames",
739
789
  "IntBackedEnum1",
740
790
  "IntBackedEnum2",
741
791
  "OuterNamespace",
792
+ "StructConformingToProtocol",
742
793
  "TestBasicClass",
743
794
  "TestClassWithConstructor",
744
795
  "TestEmptyClass",
@@ -820,7 +871,7 @@ exports[`Same type information 1`] = `
820
871
  },
821
872
  },
822
873
  ],
823
- "definitionOffset": 2915,
874
+ "definitionOffset": 2954,
824
875
  "isStatic": false,
825
876
  "name": "TestSimpleAsyncFunction",
826
877
  "parameters": [],
@@ -829,6 +880,39 @@ exports[`Same type information 1`] = `
829
880
  "type": 1,
830
881
  },
831
882
  },
883
+ {
884
+ "arguments": [],
885
+ "definitionOffset": 3157,
886
+ "isStatic": false,
887
+ "name": "TestAsyncFunctionPromiseArgument1",
888
+ "parameters": [],
889
+ "returnType": {
890
+ "kind": 0,
891
+ "type": 1,
892
+ },
893
+ },
894
+ {
895
+ "arguments": [],
896
+ "definitionOffset": 3280,
897
+ "isStatic": false,
898
+ "name": "TestAsyncFunctionPromiseArgument2",
899
+ "parameters": [],
900
+ "returnType": {
901
+ "kind": 0,
902
+ "type": 4,
903
+ },
904
+ },
905
+ {
906
+ "arguments": [],
907
+ "definitionOffset": 3374,
908
+ "isStatic": false,
909
+ "name": "TestAsyncFunctionPromiseArgument3",
910
+ "parameters": [],
911
+ "returnType": {
912
+ "kind": 0,
913
+ "type": 6,
914
+ },
915
+ },
832
916
  {
833
917
  "arguments": [
834
918
  {
@@ -849,7 +933,7 @@ exports[`Same type information 1`] = `
849
933
  },
850
934
  },
851
935
  ],
852
- "definitionOffset": 3118,
936
+ "definitionOffset": 3570,
853
937
  "isStatic": false,
854
938
  "name": "TestUnderscore",
855
939
  "parameters": [],
@@ -872,9 +956,9 @@ exports[`Same type information 1`] = `
872
956
  },
873
957
  },
874
958
  ],
875
- "definitionOffset": 3244,
959
+ "definitionOffset": 3696,
876
960
  },
877
- "definitionOffset": 3198,
961
+ "definitionOffset": 3650,
878
962
  "methods": [],
879
963
  "name": "TestClassWithConstructor",
880
964
  "properties": [],
@@ -891,7 +975,7 @@ exports[`Same type information 1`] = `
891
975
  },
892
976
  },
893
977
  ],
894
- "definitionOffset": 3786,
978
+ "definitionOffset": 4238,
895
979
  "isStatic": false,
896
980
  "name": "TestAsyncFunction",
897
981
  "parameters": [],
@@ -910,7 +994,7 @@ exports[`Same type information 1`] = `
910
994
  },
911
995
  },
912
996
  ],
913
- "definitionOffset": 3884,
997
+ "definitionOffset": 4336,
914
998
  "isStatic": true,
915
999
  "name": "TestStaticAsyncFunction",
916
1000
  "parameters": [],
@@ -956,13 +1040,13 @@ exports[`Same type information 1`] = `
956
1040
  },
957
1041
  },
958
1042
  ],
959
- "definitionOffset": 3346,
1043
+ "definitionOffset": 3798,
960
1044
  },
961
- "definitionOffset": 3310,
1045
+ "definitionOffset": 3762,
962
1046
  "methods": [
963
1047
  {
964
1048
  "arguments": [],
965
- "definitionOffset": 3971,
1049
+ "definitionOffset": 4423,
966
1050
  "isStatic": true,
967
1051
  "name": "TestStaticFunction",
968
1052
  "parameters": [],
@@ -975,7 +1059,7 @@ exports[`Same type information 1`] = `
975
1059
  "name": "TestBasicClass",
976
1060
  "properties": [
977
1061
  {
978
- "definitionOffset": 3450,
1062
+ "definitionOffset": 3902,
979
1063
  "name": "TestIntProperty",
980
1064
  "type": {
981
1065
  "kind": 0,
@@ -983,7 +1067,7 @@ exports[`Same type information 1`] = `
983
1067
  },
984
1068
  },
985
1069
  {
986
- "definitionOffset": 3518,
1070
+ "definitionOffset": 3970,
987
1071
  "name": "TestEitherProperty",
988
1072
  "type": {
989
1073
  "kind": 2,
@@ -1003,7 +1087,7 @@ exports[`Same type information 1`] = `
1003
1087
  },
1004
1088
  },
1005
1089
  {
1006
- "definitionOffset": 3605,
1090
+ "definitionOffset": 4057,
1007
1091
  "name": "TestEnumProperty",
1008
1092
  "type": {
1009
1093
  "kind": 1,
@@ -1011,7 +1095,7 @@ exports[`Same type information 1`] = `
1011
1095
  },
1012
1096
  },
1013
1097
  {
1014
- "definitionOffset": 3689,
1098
+ "definitionOffset": 4141,
1015
1099
  "name": "TestRecordProperty",
1016
1100
  "type": {
1017
1101
  "kind": 1,
@@ -1023,7 +1107,7 @@ exports[`Same type information 1`] = `
1023
1107
  {
1024
1108
  "asyncMethods": [],
1025
1109
  "constructor": null,
1026
- "definitionOffset": 4069,
1110
+ "definitionOffset": 4521,
1027
1111
  "methods": [],
1028
1112
  "name": "TestEmptyClass",
1029
1113
  "properties": [],
@@ -1031,7 +1115,7 @@ exports[`Same type information 1`] = `
1031
1115
  ],
1032
1116
  "constants": [
1033
1117
  {
1034
- "definitionOffset": 437,
1118
+ "definitionOffset": 474,
1035
1119
  "name": "StringConstant",
1036
1120
  "type": {
1037
1121
  "kind": 0,
@@ -1039,7 +1123,7 @@ exports[`Same type information 1`] = `
1039
1123
  },
1040
1124
  },
1041
1125
  {
1042
- "definitionOffset": 608,
1126
+ "definitionOffset": 645,
1043
1127
  "name": "IntConstant",
1044
1128
  "type": {
1045
1129
  "kind": 0,
@@ -1047,7 +1131,7 @@ exports[`Same type information 1`] = `
1047
1131
  },
1048
1132
  },
1049
1133
  {
1050
- "definitionOffset": 758,
1134
+ "definitionOffset": 795,
1051
1135
  "name": "UntypedConstant",
1052
1136
  "type": {
1053
1137
  "kind": 0,
@@ -1061,6 +1145,7 @@ exports[`Same type information 1`] = `
1061
1145
  "event1",
1062
1146
  "event2",
1063
1147
  "event3",
1148
+ "globalAssignedToGlobal",
1064
1149
  "onClassEvent",
1065
1150
  "onGlobalEvent",
1066
1151
  "onNestedEvent",
@@ -1087,7 +1172,7 @@ exports[`Same type information 1`] = `
1087
1172
  },
1088
1173
  },
1089
1174
  ],
1090
- "definitionOffset": 804,
1175
+ "definitionOffset": 841,
1091
1176
  "isStatic": false,
1092
1177
  "name": "SimpleFunction",
1093
1178
  "parameters": [],
@@ -1098,7 +1183,7 @@ exports[`Same type information 1`] = `
1098
1183
  },
1099
1184
  {
1100
1185
  "arguments": [],
1101
- "definitionOffset": 980,
1186
+ "definitionOffset": 1017,
1102
1187
  "isStatic": false,
1103
1188
  "name": "TestUntypedFunction",
1104
1189
  "parameters": [],
@@ -1109,7 +1194,7 @@ exports[`Same type information 1`] = `
1109
1194
  },
1110
1195
  {
1111
1196
  "arguments": [],
1112
- "definitionOffset": 1136,
1197
+ "definitionOffset": 1173,
1113
1198
  "isStatic": false,
1114
1199
  "name": "TestUnicodeCharacters",
1115
1200
  "parameters": [],
@@ -1120,7 +1205,7 @@ exports[`Same type information 1`] = `
1120
1205
  },
1121
1206
  {
1122
1207
  "arguments": [],
1123
- "definitionOffset": 1338,
1208
+ "definitionOffset": 1375,
1124
1209
  "isStatic": false,
1125
1210
  "name": "TestUntypedFunction2",
1126
1211
  "parameters": [],
@@ -1131,7 +1216,7 @@ exports[`Same type information 1`] = `
1131
1216
  },
1132
1217
  {
1133
1218
  "arguments": [],
1134
- "definitionOffset": 1514,
1219
+ "definitionOffset": 1553,
1135
1220
  "isStatic": false,
1136
1221
  "name": "TestUntypedFunction3",
1137
1222
  "parameters": [],
@@ -1153,7 +1238,7 @@ exports[`Same type information 1`] = `
1153
1238
  },
1154
1239
  },
1155
1240
  ],
1156
- "definitionOffset": 1696,
1241
+ "definitionOffset": 1735,
1157
1242
  "isStatic": false,
1158
1243
  "name": "TestArrays",
1159
1244
  "parameters": [],
@@ -1212,7 +1297,7 @@ exports[`Same type information 1`] = `
1212
1297
  },
1213
1298
  },
1214
1299
  ],
1215
- "definitionOffset": 1871,
1300
+ "definitionOffset": 1910,
1216
1301
  "isStatic": false,
1217
1302
  "name": "TestDictionaries",
1218
1303
  "parameters": [],
@@ -1303,7 +1388,7 @@ exports[`Same type information 1`] = `
1303
1388
  },
1304
1389
  },
1305
1390
  ],
1306
- "definitionOffset": 2080,
1391
+ "definitionOffset": 2119,
1307
1392
  "isStatic": false,
1308
1393
  "name": "TestParametrizedTypes",
1309
1394
  "parameters": [],
@@ -1331,7 +1416,7 @@ exports[`Same type information 1`] = `
1331
1416
  },
1332
1417
  },
1333
1418
  ],
1334
- "definitionOffset": 2336,
1419
+ "definitionOffset": 2375,
1335
1420
  "isStatic": false,
1336
1421
  "name": "TestTypeCombinations",
1337
1422
  "parameters": [],
@@ -1369,7 +1454,7 @@ exports[`Same type information 1`] = `
1369
1454
  },
1370
1455
  {
1371
1456
  "arguments": [],
1372
- "definitionOffset": 2549,
1457
+ "definitionOffset": 2588,
1373
1458
  "isStatic": false,
1374
1459
  "name": "TestFunctionReturningRecord",
1375
1460
  "parameters": [],
@@ -1380,7 +1465,7 @@ exports[`Same type information 1`] = `
1380
1465
  },
1381
1466
  {
1382
1467
  "arguments": [],
1383
- "definitionOffset": 2726,
1468
+ "definitionOffset": 2765,
1384
1469
  "isStatic": false,
1385
1470
  "name": "TestFunctionReturningEnum",
1386
1471
  "parameters": [],
@@ -1399,7 +1484,7 @@ exports[`Same type information 1`] = `
1399
1484
  "classes": [],
1400
1485
  "constants": [],
1401
1486
  "constructor": null,
1402
- "definitionOffset": 4132,
1487
+ "definitionOffset": 4584,
1403
1488
  "events": [
1404
1489
  "onEvent1",
1405
1490
  "onEvent2",
@@ -1425,7 +1510,7 @@ exports[`Same type information 1`] = `
1425
1510
  },
1426
1511
  },
1427
1512
  ],
1428
- "definitionOffset": 4178,
1513
+ "definitionOffset": 4630,
1429
1514
  "name": "url",
1430
1515
  },
1431
1516
  {
@@ -1445,7 +1530,7 @@ exports[`Same type information 1`] = `
1445
1530
  },
1446
1531
  },
1447
1532
  ],
1448
- "definitionOffset": 4362,
1533
+ "definitionOffset": 4814,
1449
1534
  "name": "testRecord",
1450
1535
  },
1451
1536
  {
@@ -1465,7 +1550,7 @@ exports[`Same type information 1`] = `
1465
1550
  },
1466
1551
  },
1467
1552
  ],
1468
- "definitionOffset": 4433,
1553
+ "definitionOffset": 4885,
1469
1554
  "name": "testRecord2",
1470
1555
  },
1471
1556
  {
@@ -1485,7 +1570,7 @@ exports[`Same type information 1`] = `
1485
1570
  },
1486
1571
  },
1487
1572
  ],
1488
- "definitionOffset": 4507,
1573
+ "definitionOffset": 4959,
1489
1574
  "name": "testRecordClass",
1490
1575
  },
1491
1576
  {
@@ -1505,7 +1590,7 @@ exports[`Same type information 1`] = `
1505
1590
  },
1506
1591
  },
1507
1592
  ],
1508
- "definitionOffset": 4593,
1593
+ "definitionOffset": 5045,
1509
1594
  "name": "testEnum",
1510
1595
  },
1511
1596
  ],
@@ -1631,8 +1716,41 @@ exports[`Same type information 1`] = `
1631
1716
  ],
1632
1717
  "name": "TestRecordClass",
1633
1718
  },
1719
+ {
1720
+ "fields": [
1721
+ {
1722
+ "name": "id",
1723
+ "type": {
1724
+ "kind": 0,
1725
+ "type": 1,
1726
+ },
1727
+ },
1728
+ {
1729
+ "name": "someInt",
1730
+ "type": {
1731
+ "kind": 0,
1732
+ "type": 2,
1733
+ },
1734
+ },
1735
+ ],
1736
+ "name": "StructConformingToProtocol",
1737
+ },
1738
+ {
1739
+ "fields": [],
1740
+ "name": "EmptyStruct",
1741
+ },
1634
1742
  ],
1635
1743
  "typeIdentifierDefinitionList": [
1744
+ [
1745
+ "EmptyStruct",
1746
+ {
1747
+ "definition": {
1748
+ "fields": [],
1749
+ "name": "EmptyStruct",
1750
+ },
1751
+ "kind": 2,
1752
+ },
1753
+ ],
1636
1754
  [
1637
1755
  "EventNames",
1638
1756
  {
@@ -1683,6 +1801,31 @@ exports[`Same type information 1`] = `
1683
1801
  "kind": 1,
1684
1802
  },
1685
1803
  ],
1804
+ [
1805
+ "StructConformingToProtocol",
1806
+ {
1807
+ "definition": {
1808
+ "fields": [
1809
+ {
1810
+ "name": "id",
1811
+ "type": {
1812
+ "kind": 0,
1813
+ "type": 1,
1814
+ },
1815
+ },
1816
+ {
1817
+ "name": "someInt",
1818
+ "type": {
1819
+ "kind": 0,
1820
+ "type": 2,
1821
+ },
1822
+ },
1823
+ ],
1824
+ "name": "StructConformingToProtocol",
1825
+ },
1826
+ "kind": 2,
1827
+ },
1828
+ ],
1686
1829
  [
1687
1830
  "TestEnum",
1688
1831
  {