@angular/compiler 18.1.0-next.4 → 18.1.0-rc.0

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.
@@ -24,7 +24,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
24
24
  export function compileDeclareClassMetadata(metadata) {
25
25
  const definitionMap = new DefinitionMap();
26
26
  definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_VERSION));
27
- definitionMap.set('version', o.literal('18.1.0-next.4'));
27
+ definitionMap.set('version', o.literal('18.1.0-rc.0'));
28
28
  definitionMap.set('ngImport', o.importExpr(R3.core));
29
29
  definitionMap.set('type', metadata.type);
30
30
  definitionMap.set('decorators', metadata.decorators);
@@ -42,7 +42,7 @@ export function compileComponentDeclareClassMetadata(metadata, dependencies) {
42
42
  callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? o.literal(null));
43
43
  callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? o.literal(null));
44
44
  definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
45
- definitionMap.set('version', o.literal('18.1.0-next.4'));
45
+ definitionMap.set('version', o.literal('18.1.0-rc.0'));
46
46
  definitionMap.set('ngImport', o.importExpr(R3.core));
47
47
  definitionMap.set('type', metadata.type);
48
48
  definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
@@ -28,7 +28,7 @@ export function createDirectiveDefinitionMap(meta) {
28
28
  const definitionMap = new DefinitionMap();
29
29
  const minVersion = getMinimumVersionForPartialOutput(meta);
30
30
  definitionMap.set('minVersion', o.literal(minVersion));
31
- definitionMap.set('version', o.literal('18.1.0-next.4'));
31
+ definitionMap.set('version', o.literal('18.1.0-rc.0'));
32
32
  // e.g. `type: MyDirective`
33
33
  definitionMap.set('type', meta.type.value);
34
34
  if (meta.isStandalone) {
@@ -21,7 +21,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION = '12.0.0';
21
21
  export function compileDeclareFactoryFunction(meta) {
22
22
  const definitionMap = new DefinitionMap();
23
23
  definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_VERSION));
24
- definitionMap.set('version', o.literal('18.1.0-next.4'));
24
+ definitionMap.set('version', o.literal('18.1.0-rc.0'));
25
25
  definitionMap.set('ngImport', o.importExpr(R3.core));
26
26
  definitionMap.set('type', meta.type.value);
27
27
  definitionMap.set('deps', compileDependencies(meta.deps));
@@ -34,7 +34,7 @@ export function compileDeclareInjectableFromMetadata(meta) {
34
34
  export function createInjectableDefinitionMap(meta) {
35
35
  const definitionMap = new DefinitionMap();
36
36
  definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_VERSION));
37
- definitionMap.set('version', o.literal('18.1.0-next.4'));
37
+ definitionMap.set('version', o.literal('18.1.0-rc.0'));
38
38
  definitionMap.set('ngImport', o.importExpr(R3.core));
39
39
  definitionMap.set('type', meta.type.value);
40
40
  // Only generate providedIn property if it has a non-null value
@@ -29,7 +29,7 @@ export function compileDeclareInjectorFromMetadata(meta) {
29
29
  function createInjectorDefinitionMap(meta) {
30
30
  const definitionMap = new DefinitionMap();
31
31
  definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_VERSION));
32
- definitionMap.set('version', o.literal('18.1.0-next.4'));
32
+ definitionMap.set('version', o.literal('18.1.0-rc.0'));
33
33
  definitionMap.set('ngImport', o.importExpr(R3.core));
34
34
  definitionMap.set('type', meta.type.value);
35
35
  definitionMap.set('providers', meta.providers);
@@ -33,7 +33,7 @@ function createNgModuleDefinitionMap(meta) {
33
33
  throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
34
34
  }
35
35
  definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_VERSION));
36
- definitionMap.set('version', o.literal('18.1.0-next.4'));
36
+ definitionMap.set('version', o.literal('18.1.0-rc.0'));
37
37
  definitionMap.set('ngImport', o.importExpr(R3.core));
38
38
  definitionMap.set('type', meta.type.value);
39
39
  // We only generate the keys in the metadata if the arrays contain values.
@@ -32,7 +32,7 @@ export function compileDeclarePipeFromMetadata(meta) {
32
32
  export function createPipeDefinitionMap(meta) {
33
33
  const definitionMap = new DefinitionMap();
34
34
  definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_VERSION));
35
- definitionMap.set('version', o.literal('18.1.0-next.4'));
35
+ definitionMap.set('version', o.literal('18.1.0-rc.0'));
36
36
  definitionMap.set('ngImport', o.importExpr(R3.core));
37
37
  // e.g. `type: MyPipe`
38
38
  definitionMap.set('type', meta.type.value);
@@ -10,4 +10,4 @@
10
10
  * context object, rather than a specific parameter.
11
11
  */
12
12
  export const CTX_REF = 'CTX_REF_MARKER';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvaXIvc3JjL3ZhcmlhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQXdCSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgdHlwZSB7U2VtYW50aWNWYXJpYWJsZUtpbmR9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHR5cGUge1hyZWZJZH0gZnJvbSAnLi9vcGVyYXRpb25zJztcblxuLyoqXG4gKiBVbmlvbiB0eXBlIGZvciB0aGUgZGlmZmVyZW50IGtpbmRzIG9mIHZhcmlhYmxlcy5cbiAqL1xuZXhwb3J0IHR5cGUgU2VtYW50aWNWYXJpYWJsZSA9XG4gIHwgQ29udGV4dFZhcmlhYmxlXG4gIHwgSWRlbnRpZmllclZhcmlhYmxlXG4gIHwgU2F2ZWRWaWV3VmFyaWFibGVcbiAgfCBBbGlhc1ZhcmlhYmxlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljVmFyaWFibGVCYXNlIHtcbiAga2luZDogU2VtYW50aWNWYXJpYWJsZUtpbmQ7XG5cbiAgLyoqXG4gICAqIE5hbWUgYXNzaWduZWQgdG8gdGhpcyB2YXJpYWJsZSBpbiBnZW5lcmF0ZWQgY29kZSwgb3IgYG51bGxgIGlmIG5vdCB5ZXQgYXNzaWduZWQuXG4gICAqL1xuICBuYW1lOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKipcbiAqIFdoZW4gcmVmZXJlbmNlZCBpbiB0aGUgdGVtcGxhdGUncyBjb250ZXh0IHBhcmFtZXRlcnMsIHRoaXMgaW5kaWNhdGVzIGEgcmVmZXJlbmNlIHRvIHRoZSBlbnRpcmVcbiAqIGNvbnRleHQgb2JqZWN0LCByYXRoZXIgdGhhbiBhIHNwZWNpZmljIHBhcmFtZXRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IENUWF9SRUYgPSAnQ1RYX1JFRl9NQVJLRVInO1xuXG4vKipcbiAqIEEgdmFyaWFibGUgdGhhdCByZXByZXNlbnRzIHRoZSBjb250ZXh0IG9mIGEgcGFydGljdWxhciB2aWV3LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRWYXJpYWJsZSBleHRlbmRzIFNlbWFudGljVmFyaWFibGVCYXNlIHtcbiAga2luZDogU2VtYW50aWNWYXJpYWJsZUtpbmQuQ29udGV4dDtcblxuICAvKipcbiAgICogYFhyZWZJZGAgb2YgdGhlIHZpZXcgdGhhdCB0aGlzIHZhcmlhYmxlIHJlcHJlc2VudHMuXG4gICAqL1xuICB2aWV3OiBYcmVmSWQ7XG59XG5cbi8qKlxuICogQSB2YXJpYWJsZSB0aGF0IHJlcHJlc2VudHMgYSBzcGVjaWZpYyBpZGVudGlmaWVyIHdpdGhpbiBhIHRlbXBsYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aWZpZXJWYXJpYWJsZSBleHRlbmRzIFNlbWFudGljVmFyaWFibGVCYXNlIHtcbiAga2luZDogU2VtYW50aWNWYXJpYWJsZUtpbmQuSWRlbnRpZmllcjtcblxuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgd2hvc2UgdmFsdWUgaW4gdGhlIHRlbXBsYXRlIGlzIHRyYWNrZWQgaW4gdGhpcyB2YXJpYWJsZS5cbiAgICovXG4gIGlkZW50aWZpZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHZhcmlhYmxlIHRoYXQgcmVwcmVzZW50cyBhIHNhdmVkIHZpZXcgY29udGV4dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYXZlZFZpZXdWYXJpYWJsZSBleHRlbmRzIFNlbWFudGljVmFyaWFibGVCYXNlIHtcbiAga2luZDogU2VtYW50aWNWYXJpYWJsZUtpbmQuU2F2ZWRWaWV3O1xuXG4gIC8qKlxuICAgKiBUaGUgdmlldyBjb250ZXh0IHNhdmVkIGluIHRoaXMgdmFyaWFibGUuXG4gICAqL1xuICB2aWV3OiBYcmVmSWQ7XG59XG5cbi8qKlxuICogQSB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgaW5saW5lZCBhdCBldmVyeSBsb2NhdGlvbiBpdCBpcyB1c2VkLiBBbiBhbGlhcyBpcyBhbHNvIGFsbG93ZWQgdG8gZGVwZW5kXG4gKiBvbiB0aGUgdmFsdWUgb2YgYSBzZW1hbnRpYyB2YXJpYWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGlhc1ZhcmlhYmxlIGV4dGVuZHMgU2VtYW50aWNWYXJpYWJsZUJhc2Uge1xuICBraW5kOiBTZW1hbnRpY1ZhcmlhYmxlS2luZC5BbGlhcztcbiAgaWRlbnRpZmllcjogc3RyaW5nO1xuICBleHByZXNzaW9uOiBvLkV4cHJlc3Npb247XG59XG4iXX0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvaXIvc3JjL3ZhcmlhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQXdCSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgdHlwZSB7U2VtYW50aWNWYXJpYWJsZUtpbmR9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHR5cGUge1hyZWZJZH0gZnJvbSAnLi9vcGVyYXRpb25zJztcblxuLyoqXG4gKiBVbmlvbiB0eXBlIGZvciB0aGUgZGlmZmVyZW50IGtpbmRzIG9mIHZhcmlhYmxlcy5cbiAqL1xuZXhwb3J0IHR5cGUgU2VtYW50aWNWYXJpYWJsZSA9XG4gIHwgQ29udGV4dFZhcmlhYmxlXG4gIHwgSWRlbnRpZmllclZhcmlhYmxlXG4gIHwgU2F2ZWRWaWV3VmFyaWFibGVcbiAgfCBBbGlhc1ZhcmlhYmxlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljVmFyaWFibGVCYXNlIHtcbiAga2luZDogU2VtYW50aWNWYXJpYWJsZUtpbmQ7XG5cbiAgLyoqXG4gICAqIE5hbWUgYXNzaWduZWQgdG8gdGhpcyB2YXJpYWJsZSBpbiBnZW5lcmF0ZWQgY29kZSwgb3IgYG51bGxgIGlmIG5vdCB5ZXQgYXNzaWduZWQuXG4gICAqL1xuICBuYW1lOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKipcbiAqIFdoZW4gcmVmZXJlbmNlZCBpbiB0aGUgdGVtcGxhdGUncyBjb250ZXh0IHBhcmFtZXRlcnMsIHRoaXMgaW5kaWNhdGVzIGEgcmVmZXJlbmNlIHRvIHRoZSBlbnRpcmVcbiAqIGNvbnRleHQgb2JqZWN0LCByYXRoZXIgdGhhbiBhIHNwZWNpZmljIHBhcmFtZXRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IENUWF9SRUYgPSAnQ1RYX1JFRl9NQVJLRVInO1xuXG4vKipcbiAqIEEgdmFyaWFibGUgdGhhdCByZXByZXNlbnRzIHRoZSBjb250ZXh0IG9mIGEgcGFydGljdWxhciB2aWV3LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRWYXJpYWJsZSBleHRlbmRzIFNlbWFudGljVmFyaWFibGVCYXNlIHtcbiAga2luZDogU2VtYW50aWNWYXJpYWJsZUtpbmQuQ29udGV4dDtcblxuICAvKipcbiAgICogYFhyZWZJZGAgb2YgdGhlIHZpZXcgdGhhdCB0aGlzIHZhcmlhYmxlIHJlcHJlc2VudHMuXG4gICAqL1xuICB2aWV3OiBYcmVmSWQ7XG59XG5cbi8qKlxuICogQSB2YXJpYWJsZSB0aGF0IHJlcHJlc2VudHMgYSBzcGVjaWZpYyBpZGVudGlmaWVyIHdpdGhpbiBhIHRlbXBsYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aWZpZXJWYXJpYWJsZSBleHRlbmRzIFNlbWFudGljVmFyaWFibGVCYXNlIHtcbiAga2luZDogU2VtYW50aWNWYXJpYWJsZUtpbmQuSWRlbnRpZmllcjtcblxuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgd2hvc2UgdmFsdWUgaW4gdGhlIHRlbXBsYXRlIGlzIHRyYWNrZWQgaW4gdGhpcyB2YXJpYWJsZS5cbiAgICovXG4gIGlkZW50aWZpZXI6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdmFyaWFibGUgd2FzIGRlY2xhcmVkIGxvY2FsbHkgd2l0aGluIHRoZSBzYW1lIHZpZXcgb3Igc29tZXdoZXJlIGVsc2UuXG4gICAqL1xuICBsb2NhbDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIHZhcmlhYmxlIHRoYXQgcmVwcmVzZW50cyBhIHNhdmVkIHZpZXcgY29udGV4dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYXZlZFZpZXdWYXJpYWJsZSBleHRlbmRzIFNlbWFudGljVmFyaWFibGVCYXNlIHtcbiAga2luZDogU2VtYW50aWNWYXJpYWJsZUtpbmQuU2F2ZWRWaWV3O1xuXG4gIC8qKlxuICAgKiBUaGUgdmlldyBjb250ZXh0IHNhdmVkIGluIHRoaXMgdmFyaWFibGUuXG4gICAqL1xuICB2aWV3OiBYcmVmSWQ7XG59XG5cbi8qKlxuICogQSB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgaW5saW5lZCBhdCBldmVyeSBsb2NhdGlvbiBpdCBpcyB1c2VkLiBBbiBhbGlhcyBpcyBhbHNvIGFsbG93ZWQgdG8gZGVwZW5kXG4gKiBvbiB0aGUgdmFsdWUgb2YgYSBzZW1hbnRpYyB2YXJpYWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGlhc1ZhcmlhYmxlIGV4dGVuZHMgU2VtYW50aWNWYXJpYWJsZUJhc2Uge1xuICBraW5kOiBTZW1hbnRpY1ZhcmlhYmxlS2luZC5BbGlhcztcbiAgaWRlbnRpZmllcjogc3RyaW5nO1xuICBleHByZXNzaW9uOiBvLkV4cHJlc3Npb247XG59XG4iXX0=
@@ -20,9 +20,10 @@ export function generateLocalLetReferences(job) {
20
20
  kind: ir.SemanticVariableKind.Identifier,
21
21
  name: null,
22
22
  identifier: op.declaredName,
23
+ local: true,
23
24
  };
24
25
  ir.OpList.replace(op, ir.createVariableOp(job.allocateXrefId(), variable, new ir.StoreLetExpr(op.target, op.value, op.sourceSpan), ir.VariableFlags.None));
25
26
  }
26
27
  }
27
28
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfbG9jYWxfbGV0X3JlZmVyZW5jZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9nZW5lcmF0ZV9sb2NhbF9sZXRfcmVmZXJlbmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUkvQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsR0FBNEI7SUFDckUsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ25DLFNBQVM7WUFDWCxDQUFDO1lBRUQsTUFBTSxRQUFRLEdBQTBCO2dCQUN0QyxJQUFJLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLFVBQVU7Z0JBQ3hDLElBQUksRUFBRSxJQUFJO2dCQUNWLFVBQVUsRUFBRSxFQUFFLENBQUMsWUFBWTthQUM1QixDQUFDO1lBRUYsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ2YsRUFBRSxFQUNGLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FDakIsR0FBRyxDQUFDLGNBQWMsRUFBRSxFQUNwQixRQUFRLEVBQ1IsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQ3ZELEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUN0QixDQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuXG5pbXBvcnQgdHlwZSB7Q29tcG9uZW50Q29tcGlsYXRpb25Kb2J9IGZyb20gJy4uL2NvbXBpbGF0aW9uJztcblxuLyoqXG4gKiBSZXBsYWNlcyB0aGUgYHN0b3JlTGV0YCBvcHMgd2l0aCB2YXJpYWJsZXMgdGhhdCBjYW4gYmVcbiAqIHVzZWQgdG8gcmVmZXJlbmNlIHRoZSB2YWx1ZSB3aXRoaW4gdGhlIHNhbWUgdmlldy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlTG9jYWxMZXRSZWZlcmVuY2VzKGpvYjogQ29tcG9uZW50Q29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC51cGRhdGUpIHtcbiAgICAgIGlmIChvcC5raW5kICE9PSBpci5PcEtpbmQuU3RvcmVMZXQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhcmlhYmxlOiBpci5JZGVudGlmaWVyVmFyaWFibGUgPSB7XG4gICAgICAgIGtpbmQ6IGlyLlNlbWFudGljVmFyaWFibGVLaW5kLklkZW50aWZpZXIsXG4gICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgIGlkZW50aWZpZXI6IG9wLmRlY2xhcmVkTmFtZSxcbiAgICAgIH07XG5cbiAgICAgIGlyLk9wTGlzdC5yZXBsYWNlPGlyLlVwZGF0ZU9wPihcbiAgICAgICAgb3AsXG4gICAgICAgIGlyLmNyZWF0ZVZhcmlhYmxlT3A8aXIuVXBkYXRlT3A+KFxuICAgICAgICAgIGpvYi5hbGxvY2F0ZVhyZWZJZCgpLFxuICAgICAgICAgIHZhcmlhYmxlLFxuICAgICAgICAgIG5ldyBpci5TdG9yZUxldEV4cHIob3AudGFyZ2V0LCBvcC52YWx1ZSwgb3Auc291cmNlU3BhbiksXG4gICAgICAgICAgaXIuVmFyaWFibGVGbGFncy5Ob25lLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfbG9jYWxfbGV0X3JlZmVyZW5jZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9nZW5lcmF0ZV9sb2NhbF9sZXRfcmVmZXJlbmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUkvQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsR0FBNEI7SUFDckUsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ25DLFNBQVM7WUFDWCxDQUFDO1lBRUQsTUFBTSxRQUFRLEdBQTBCO2dCQUN0QyxJQUFJLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLFVBQVU7Z0JBQ3hDLElBQUksRUFBRSxJQUFJO2dCQUNWLFVBQVUsRUFBRSxFQUFFLENBQUMsWUFBWTtnQkFDM0IsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDO1lBRUYsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ2YsRUFBRSxFQUNGLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FDakIsR0FBRyxDQUFDLGNBQWMsRUFBRSxFQUNwQixRQUFRLEVBQ1IsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQ3ZELEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUN0QixDQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuXG5pbXBvcnQgdHlwZSB7Q29tcG9uZW50Q29tcGlsYXRpb25Kb2J9IGZyb20gJy4uL2NvbXBpbGF0aW9uJztcblxuLyoqXG4gKiBSZXBsYWNlcyB0aGUgYHN0b3JlTGV0YCBvcHMgd2l0aCB2YXJpYWJsZXMgdGhhdCBjYW4gYmVcbiAqIHVzZWQgdG8gcmVmZXJlbmNlIHRoZSB2YWx1ZSB3aXRoaW4gdGhlIHNhbWUgdmlldy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlTG9jYWxMZXRSZWZlcmVuY2VzKGpvYjogQ29tcG9uZW50Q29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC51cGRhdGUpIHtcbiAgICAgIGlmIChvcC5raW5kICE9PSBpci5PcEtpbmQuU3RvcmVMZXQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhcmlhYmxlOiBpci5JZGVudGlmaWVyVmFyaWFibGUgPSB7XG4gICAgICAgIGtpbmQ6IGlyLlNlbWFudGljVmFyaWFibGVLaW5kLklkZW50aWZpZXIsXG4gICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgIGlkZW50aWZpZXI6IG9wLmRlY2xhcmVkTmFtZSxcbiAgICAgICAgbG9jYWw6IHRydWUsXG4gICAgICB9O1xuXG4gICAgICBpci5PcExpc3QucmVwbGFjZTxpci5VcGRhdGVPcD4oXG4gICAgICAgIG9wLFxuICAgICAgICBpci5jcmVhdGVWYXJpYWJsZU9wPGlyLlVwZGF0ZU9wPihcbiAgICAgICAgICBqb2IuYWxsb2NhdGVYcmVmSWQoKSxcbiAgICAgICAgICB2YXJpYWJsZSxcbiAgICAgICAgICBuZXcgaXIuU3RvcmVMZXRFeHByKG9wLnRhcmdldCwgb3AudmFsdWUsIG9wLnNvdXJjZVNwYW4pLFxuICAgICAgICAgIGlyLlZhcmlhYmxlRmxhZ3MuTm9uZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -84,6 +84,7 @@ function getScopeForView(view, parent) {
84
84
  kind: ir.SemanticVariableKind.Identifier,
85
85
  name: null,
86
86
  identifier,
87
+ local: false,
87
88
  });
88
89
  }
89
90
  for (const op of view.create) {
@@ -104,6 +105,7 @@ function getScopeForView(view, parent) {
104
105
  kind: ir.SemanticVariableKind.Identifier,
105
106
  name: null,
106
107
  identifier: op.localRefs[offset].name,
108
+ local: false,
107
109
  },
108
110
  });
109
111
  }
@@ -116,6 +118,7 @@ function getScopeForView(view, parent) {
116
118
  kind: ir.SemanticVariableKind.Identifier,
117
119
  name: null,
118
120
  identifier: op.declaredName,
121
+ local: false,
119
122
  },
120
123
  });
121
124
  break;
@@ -164,4 +167,4 @@ function generateVariablesInScopeForView(view, scope, isListener) {
164
167
  }
165
168
  return newOps;
166
169
  }
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfdmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvZ2VuZXJhdGVfdmFyaWFibGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxDQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJL0I7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUE0QjtJQUM1RCxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGdEQUFnRCxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLHNCQUFzQixDQUFDLElBQXlCLEVBQUUsV0FBeUI7SUFDbEYsb0NBQW9DO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFakQsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVE7Z0JBQ3JCLHFDQUFxQztnQkFDckMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDNUQsTUFBTTtZQUNSLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVO2dCQUN2QixJQUFJLEVBQUUsQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQzdCLHNCQUFzQixDQUFDLElBQUksQ0FB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LENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkMsTUFBTSxDQUFDLElBQUksQ0FDVCxFQUFFLENBQUMsZ0JBQWdCLENBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEVBQ3pCLEdBQUcsQ0FBQyxRQUFRLEVBQ1osSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQzlELEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUN0QixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7UUFDM0MsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekMsTUFBTSxDQUFDLElBQUksQ0FDVCxFQUFFLENBQUMsZ0JBQWdCLENBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEVBQ3pCLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxFQUFFLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQzlELEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUN0QixDQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUMxQixtREFBbUQ7UUFDbkQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLCtCQUErQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5cbmltcG9ydCB0eXBlIHtDb21wb25lbnRDb21waWxhdGlvbkpvYiwgVmlld0NvbXBpbGF0aW9uVW5pdH0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgcHJlYW1ibGUgc2VxdWVuY2UgZm9yIGVhY2ggdmlldyBjcmVhdGlvbiBibG9jayBhbmQgbGlzdGVuZXIgZnVuY3Rpb24gd2hpY2ggZGVjbGFyZXNcbiAqIGFueSB2YXJpYWJsZXMgdGhhdCBiZSByZWZlcmVuY2VkIGluIG90aGVyIG9wZXJhdGlvbnMgaW4gdGhlIGJsb2NrLlxuICpcbiAqIFZhcmlhYmxlcyBnZW5lcmF0ZWQgaW5jbHVkZTpcbiAqICAgKiBhIHNhdmVkIHZpZXcgY29udGV4dCB0byBiZSB1c2VkIHRvIHJlc3RvcmUgdGhlIGN1cnJlbnQgdmlldyBpbiBldmVudCBsaXN0ZW5lcnMuXG4gKiAgICogdGhlIGNvbnRleHQgb2YgdGhlIHJlc3RvcmVkIHZpZXcgd2l0aGluIGV2ZW50IGxpc3RlbmVyIGhhbmRsZXJzLlxuICogICAqIGNvbnRleHQgdmFyaWFibGVzIGZyb20gdGhlIGN1cnJlbnQgdmlldyBhcyB3ZWxsIGFzIGFsbCBwYXJlbnQgdmlld3MgKGluY2x1ZGluZyB0aGUgcm9vdFxuICogICAgIGNvbnRleHQgaWYgbmVlZGVkKS5cbiAqICAgKiBsb2NhbCByZWZlcmVuY2VzIGZyb20gZWxlbWVudHMgd2l0aGluIHRoZSBjdXJyZW50IHZpZXcgYW5kIGFueSBsZXhpY2FsIHBhcmVudHMuXG4gKlxuICogVmFyaWFibGVzIGFyZSBnZW5lcmF0ZWQgaGVyZSB1bmNvbmRpdGlvbmFsbHksIGFuZCBtYXkgb3B0aW1pemVkIGF3YXkgaW4gZnV0dXJlIG9wZXJhdGlvbnMgaWYgaXRcbiAqIHR1cm5zIG91dCB0aGVpciB2YWx1ZXMgKGFuZCBhbnkgc2lkZSBlZmZlY3RzKSBhcmUgdW51c2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVWYXJpYWJsZXMoam9iOiBDb21wb25lbnRDb21waWxhdGlvbkpvYik6IHZvaWQge1xuICByZWN1cnNpdmVseVByb2Nlc3NWaWV3KGpvYi5yb290LCAvKiB0aGVyZSBpcyBubyBwYXJlbnQgc2NvcGUgZm9yIHRoZSByb290IHZpZXcgKi8gbnVsbCk7XG59XG5cbi8qKlxuICogUHJvY2VzcyB0aGUgZ2l2ZW4gYFZpZXdDb21waWxhdGlvbmAgYW5kIGdlbmVyYXRlIHByZWFtYmxlcyBmb3IgaXQgYW5kIGFueSBsaXN0ZW5lcnMgdGhhdCBpdFxuICogZGVjbGFyZXMuXG4gKlxuICogQHBhcmFtIGBwYXJlbnRTY29wZWAgYSBzY29wZSBleHRyYWN0ZWQgZnJvbSB0aGUgcGFyZW50IHZpZXcgd2hpY2ggY2FwdHVyZXMgYW55IHZhcmlhYmxlcyB3aGljaFxuICogICAgIHNob3VsZCBiZSBpbmhlcml0ZWQgYnkgdGhpcyB2aWV3LiBgbnVsbGAgaWYgdGhlIGN1cnJlbnQgdmlldyBpcyB0aGUgcm9vdCB2aWV3LlxuICovXG5mdW5jdGlvbiByZWN1cnNpdmVseVByb2Nlc3NWaWV3KHZpZXc6IFZpZXdDb21waWxhdGlvblVuaXQsIHBhcmVudFNjb3BlOiBTY29wZSB8IG51bGwpOiB2b2lkIHtcbiAgLy8gRXh0cmFjdCBhIGBTY29wZWAgZnJvbSB0aGlzIHZpZXcuXG4gIGNvbnN0IHNjb3BlID0gZ2V0U2NvcGVGb3JWaWV3KHZpZXcsIHBhcmVudFNjb3BlKTtcblxuICBmb3IgKGNvbnN0IG9wIG9mIHZpZXcuY3JlYXRlKSB7XG4gICAgc3dpdGNoIChvcC5raW5kKSB7XG4gICAgICBjYXNlIGlyLk9wS2luZC5UZW1wbGF0ZTpcbiAgICAgICAgLy8gRGVzY2VuZCBpbnRvIGNoaWxkIGVtYmVkZGVkIHZpZXdzLlxuICAgICAgICByZWN1cnNpdmVseVByb2Nlc3NWaWV3KHZpZXcuam9iLnZpZXdzLmdldChvcC54cmVmKSEsIHNjb3BlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGlyLk9wS2luZC5Qcm9qZWN0aW9uOlxuICAgICAgICBpZiAob3AuZmFsbGJhY2tWaWV3ICE9PSBudWxsKSB7XG4gICAgICAgICAgcmVjdXJzaXZlbHlQcm9jZXNzVmlldyh2aWV3LmpvYi52aWV3cy5nZXQob3AuZmFsbGJhY2tWaWV3KSEsIHNjb3BlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgaXIuT3BLaW5kLlJlcGVhdGVyQ3JlYXRlOlxuICAgICAgICAvLyBEZXNjZW5kIGludG8gY2hpbGQgZW1iZWRkZWQgdmlld3MuXG4gICAgICAgIHJlY3Vyc2l2ZWx5UHJvY2Vzc1ZpZXcodmlldy5qb2Iudmlld3MuZ2V0KG9wLnhyZWYpISwgc2NvcGUpO1xuICAgICAgICBpZiAob3AuZW1wdHlWaWV3KSB7XG4gICAgICAgICAgcmVjdXJzaXZlbHlQcm9jZXNzVmlldyh2aWV3LmpvYi52aWV3cy5nZXQob3AuZW1wdHlWaWV3KSEsIHNjb3BlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgaXIuT3BLaW5kLkxpc3RlbmVyOlxuICAgICAgY2FzZSBpci5PcEtpbmQuVHdvV2F5TGlzdGVuZXI6XG4gICAgICAgIC8vIFByZXBlbmQgdmFyaWFibGVzIHRvIGxpc3RlbmVyIGhhbmRsZXIgZnVuY3Rpb25zLlxuICAgICAgICBvcC5oYW5kbGVyT3BzLnByZXBlbmQoZ2VuZXJhdGVWYXJpYWJsZXNJblNjb3BlRm9yVmlldyh2aWV3LCBzY29wZSwgdHJ1ZSkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2aWV3LnVwZGF0ZS5wcmVwZW5kKGdlbmVyYXRlVmFyaWFibGVzSW5TY29wZUZvclZpZXcodmlldywgc2NvcGUsIGZhbHNlKSk7XG59XG5cbi8qKlxuICogTGV4aWNhbCBzY29wZSBvZiBhIHZpZXcsIGluY2x1ZGluZyBhIHJlZmVyZW5jZSB0byBpdHMgcGFyZW50IHZpZXcncyBzY29wZSwgaWYgYW55LlxuICovXG5pbnRlcmZhY2UgU2NvcGUge1xuICAvKipcbiAgICogYFhyZWZJZGAgb2YgdGhlIHZpZXcgdG8gd2hpY2ggdGhpcyBzY29wZSBjb3JyZXNwb25kcy5cbiAgICovXG4gIHZpZXc6IGlyLlhyZWZJZDtcblxuICB2aWV3Q29udGV4dFZhcmlhYmxlOiBpci5TZW1hbnRpY1ZhcmlhYmxlO1xuXG4gIGNvbnRleHRWYXJpYWJsZXM6IE1hcDxzdHJpbmcsIGlyLlNlbWFudGljVmFyaWFibGU+O1xuXG4gIGFsaWFzZXM6IFNldDxpci5BbGlhc1ZhcmlhYmxlPjtcblxuICAvKipcbiAgICogTG9jYWwgcmVmZXJlbmNlcyBjb2xsZWN0ZWQgZnJvbSBlbGVtZW50cyB3aXRoaW4gdGhlIHZpZXcuXG4gICAqL1xuICByZWZlcmVuY2VzOiBSZWZlcmVuY2VbXTtcblxuICAvKipcbiAgICogYEBsZXRgIGRlY2xhcmF0aW9ucyBjb2xsZWN0ZWQgZnJvbSB0aGUgdmlldy5cbiAgICovXG4gIGxldERlY2xhcmF0aW9uczogTGV0RGVjbGFyYXRpb25bXTtcblxuICAvKipcbiAgICogYFNjb3BlYCBvZiB0aGUgcGFyZW50IHZpZXcsIGlmIGFueS5cbiAgICovXG4gIHBhcmVudDogU2NvcGUgfCBudWxsO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCBhYm91dCBhIGxvY2FsIHJlZmVyZW5jZSBjb2xsZWN0ZWQgZnJvbSBhbiBlbGVtZW50IHdpdGhpbiBhIHZpZXcuXG4gKi9cbmludGVyZmFjZSBSZWZlcmVuY2Uge1xuICAvKipcbiAgICogTmFtZSBnaXZlbiB0byB0aGUgbG9jYWwgcmVmZXJlbmNlIHZhcmlhYmxlIHdpdGhpbiB0aGUgdGVtcGxhdGUuXG4gICAqXG4gICAqIFRoaXMgaXMgbm90IHRoZSBuYW1lIHdoaWNoIHdpbGwgYmUgdXNlZCBmb3IgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGluIHRoZSBnZW5lcmF0ZWRcbiAgICogdGVtcGxhdGUgY29kZS5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogYFhyZWZJZGAgb2YgdGhlIGVsZW1lbnQtbGlrZSBub2RlIHdoaWNoIHRoaXMgcmVmZXJlbmNlIHRhcmdldHMuXG4gICAqXG4gICAqIFRoZSByZWZlcmVuY2UgbWF5IGJlIGVpdGhlciB0byB0aGUgZWxlbWVudCAob3IgdGVtcGxhdGUpIGl0c2VsZiwgb3IgdG8gYSBkaXJlY3RpdmUgb24gaXQuXG4gICAqL1xuICB0YXJnZXRJZDogaXIuWHJlZklkO1xuXG4gIHRhcmdldFNsb3Q6IGlyLlNsb3RIYW5kbGU7XG5cbiAgLyoqXG4gICAqIEEgZ2VuZXJhdGVkIG9mZnNldCBvZiB0aGlzIHJlZmVyZW5jZSBhbW9uZyBhbGwgdGhlIHJlZmVyZW5jZXMgb24gYSBzcGVjaWZpYyBlbGVtZW50LlxuICAgKi9cbiAgb2Zmc2V0OiBudW1iZXI7XG5cbiAgdmFyaWFibGU6IGlyLlNlbWFudGljVmFyaWFibGU7XG59XG5cbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgYEBsZXRgIGRlY2xhcmF0aW9uIGNvbGxlY3RlZCBmcm9tIGEgdmlldy5cbiAqL1xuaW50ZXJmYWNlIExldERlY2xhcmF0aW9uIHtcbiAgLyoqIGBYcmVmSWRgIG9mIHRoZSBgQGxldGAgZGVjbGFyYXRpb24gdGhhdCB0aGUgcmVmZXJlbmNlIGlzIHBvaW50aW5nIHRvLiAqL1xuICB0YXJnZXRJZDogaXIuWHJlZklkO1xuXG4gIC8qKiBTbG90IGluIHdoaWNoIHRoZSBkZWNsYXJhdGlvbiBpcyBzdG9yZWQuICovXG4gIHRhcmdldFNsb3Q6IGlyLlNsb3RIYW5kbGU7XG5cbiAgLyoqIFZhcmlhYmxlIHJlZmVycmluZyB0byB0aGUgZGVjbGFyYXRpb24uICovXG4gIHZhcmlhYmxlOiBpci5JZGVudGlmaWVyVmFyaWFibGU7XG59XG5cbi8qKlxuICogUHJvY2VzcyBhIHZpZXcgYW5kIGdlbmVyYXRlIGEgYFNjb3BlYCByZXByZXNlbnRpbmcgdGhlIHZhcmlhYmxlcyBhdmFpbGFibGUgZm9yIHJlZmVyZW5jZSB3aXRoaW5cbiAqIHRoYXQgdmlldy5cbiAqL1xuZnVuY3Rpb24gZ2V0U2NvcGVGb3JWaWV3KHZpZXc6IFZpZXdDb21waWxhdGlvblVuaXQsIHBhcmVudDogU2NvcGUgfCBudWxsKTogU2NvcGUge1xuICBjb25zdCBzY29wZTogU2NvcGUgPSB7XG4gICAgdmlldzogdmlldy54cmVmLFxuICAgIHZpZXdDb250ZXh0VmFyaWFibGU6IHtcbiAgICAgIGtpbmQ6IGlyLlNlbWFudGljVmFyaWFibGVLaW5kLkNvbnRleHQsXG4gICAgICBuYW1lOiBudWxsLFxuICAgICAgdmlldzogdmlldy54cmVmLFxuICAgIH0sXG4gICAgY29udGV4dFZhcmlhYmxlczogbmV3IE1hcDxzdHJpbmcsIGlyLlNlbWFudGljVmFyaWFibGU+KCksXG4gICAgYWxpYXNlczogdmlldy5hbGlhc2VzLFxuICAgIHJlZmVyZW5jZXM6IFtdLFxuICAgIGxldERlY2xhcmF0aW9uczogW10sXG4gICAgcGFyZW50LFxuICB9O1xuXG4gIGZvciAoY29uc3QgaWRlbnRpZmllciBvZiB2aWV3LmNvbnRleHRWYXJpYWJsZXMua2V5cygpKSB7XG4gICAgc2NvcGUuY29udGV4dFZhcmlhYmxlcy5zZXQoaWRlbnRpZmllciwge1xuICAgICAga2luZDogaXIuU2VtYW50aWNWYXJpYWJsZUtpbmQuSWRlbnRpZmllcixcbiAgICAgIG5hbWU6IG51bGwsXG4gICAgICBpZGVudGlmaWVyLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBvcCBvZiB2aWV3LmNyZWF0ZSkge1xuICAgIHN3aXRjaCAob3Aua2luZCkge1xuICAgICAgY2FzZSBpci5PcEtpbmQuRWxlbWVudFN0YXJ0OlxuICAgICAgY2FzZSBpci5PcEtpbmQuVGVtcGxhdGU6XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcC5sb2NhbFJlZnMpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb25FcnJvcjogZXhwZWN0ZWQgbG9jYWxSZWZzIHRvIGJlIGFuIGFycmF5YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZWNvcmQgYXZhaWxhYmxlIGxvY2FsIHJlZmVyZW5jZXMgZnJvbSB0aGlzIGVsZW1lbnQuXG4gICAgICAgIGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IG9wLmxvY2FsUmVmcy5sZW5ndGg7IG9mZnNldCsrKSB7XG4gICAgICAgICAgc2NvcGUucmVmZXJlbmNlcy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IG9wLmxvY2FsUmVmc1tvZmZzZXRdLm5hbWUsXG4gICAgICAgICAgICB0YXJnZXRJZDogb3AueHJlZixcbiAgICAgICAgICAgIHRhcmdldFNsb3Q6IG9wLmhhbmRsZSxcbiAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgIHZhcmlhYmxlOiB7XG4gICAgICAgICAgICAgIGtpbmQ6IGlyLlNlbWFudGljVmFyaWFibGVLaW5kLklkZW50aWZpZXIsXG4gICAgICAgICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgICAgICAgIGlkZW50aWZpZXI6IG9wLmxvY2FsUmVmc1tvZmZzZXRdLm5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIGlyLk9wS2luZC5EZWNsYXJlTGV0OlxuICAgICAgICBzY29wZS5sZXREZWNsYXJhdGlvbnMucHVzaCh7XG4gICAgICAgICAgdGFyZ2V0SWQ6IG9wLnhyZWYsXG4gICAgICAgICAgdGFyZ2V0U2xvdDogb3AuaGFuZGxlLFxuICAgICAgICAgIHZhcmlhYmxlOiB7XG4gICAgICAgICAgICBraW5kOiBpci5TZW1hbnRpY1ZhcmlhYmxlS2luZC5JZGVudGlmaWVyLFxuICAgICAgICAgICAgbmFtZTogbnVsbCxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IG9wLmRlY2xhcmVkTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNjb3BlO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGRlY2xhcmF0aW9ucyBmb3IgYWxsIHZhcmlhYmxlcyB0aGF0IGFyZSBpbiBzY29wZSBmb3IgYSBnaXZlbiB2aWV3LlxuICpcbiAqIFRoaXMgaXMgYSByZWN1cnNpdmUgcHJvY2VzcywgYXMgdmlld3MgaW5oZXJpdCB2YXJpYWJsZXMgYXZhaWxhYmxlIGZyb20gdGhlaXIgcGFyZW50IHZpZXcsIHdoaWNoXG4gKiBpdHNlbGYgbWF5IGhhdmUgaW5oZXJpdGVkIHZhcmlhYmxlcywgZXRjLlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZVZhcmlhYmxlc0luU2NvcGVGb3JWaWV3KFxuICB2aWV3OiBWaWV3Q29tcGlsYXRpb25Vbml0LFxuICBzY29wZTogU2NvcGUsXG4gIGlzTGlzdGVuZXI6IGJvb2xlYW4sXG4pOiBpci5WYXJpYWJsZU9wPGlyLlVwZGF0ZU9wPltdIHtcbiAgY29uc3QgbmV3T3BzOiBpci5WYXJpYWJsZU9wPGlyLlVwZGF0ZU9wPltdID0gW107XG5cbiAgaWYgKHNjb3BlLnZpZXcgIT09IHZpZXcueHJlZikge1xuICAgIC8vIEJlZm9yZSBnZW5lcmF0aW5nIHZhcmlhYmxlcyBmb3IgYSBwYXJlbnQgdmlldywgd2UgbmVlZCB0byBzd2l0Y2ggdG8gdGhlIGNvbnRleHQgb2YgdGhlIHBhcmVudFxuICAgIC8vIHZpZXcgd2l0aCBhIGBuZXh0Q29udGV4dGAgZXhwcmVzc2lvbi4gVGhpcyBjb250ZXh0IHN3aXRjaGluZyBvcGVyYXRpb24gaXRzZWxmIGRlY2xhcmVzIGFcbiAgICAvLyB2YXJpYWJsZSwgYmVjYXVzZSB0aGUgY29udGV4dCBvZiB0aGUgdmlldyBtYXkgYmUgcmVmZXJlbmNlZCBkaXJlY3RseS5cbiAgICBuZXdPcHMucHVzaChcbiAgICAgIGlyLmNyZWF0ZVZhcmlhYmxlT3AoXG4gICAgICAgIHZpZXcuam9iLmFsbG9jYXRlWHJlZklkKCksXG4gICAgICAgIHNjb3BlLnZpZXdDb250ZXh0VmFyaWFibGUsXG4gICAgICAgIG5ldyBpci5OZXh0Q29udGV4dEV4cHIoKSxcbiAgICAgICAgaXIuVmFyaWFibGVGbGFncy5Ob25lLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLy8gQWRkIHZhcmlhYmxlcyBmb3IgYWxsIGNvbnRleHQgdmFyaWFibGVzIGF2YWlsYWJsZSBpbiB0aGlzIHNjb3BlJ3Mgdmlldy5cbiAgY29uc3Qgc2NvcGVWaWV3ID0gdmlldy5qb2Iudmlld3MuZ2V0KHNjb3BlLnZpZXcpITtcbiAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIHNjb3BlVmlldy5jb250ZXh0VmFyaWFibGVzKSB7XG4gICAgY29uc3QgY29udGV4dCA9IG5ldyBpci5Db250ZXh0RXhwcihzY29wZS52aWV3KTtcbiAgICAvLyBXZSBlaXRoZXIgcmVhZCB0aGUgY29udGV4dCwgb3IsIGlmIHRoZSB2YXJpYWJsZSBpcyBDVFhfUkVGLCB1c2UgdGhlIGNvbnRleHQgZGlyZWN0bHkuXG4gICAgY29uc3QgdmFyaWFibGUgPSB2YWx1ZSA9PT0gaXIuQ1RYX1JFRiA/IGNvbnRleHQgOiBuZXcgby5SZWFkUHJvcEV4cHIoY29udGV4dCwgdmFsdWUpO1xuICAgIC8vIEFkZCB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb24uXG4gICAgbmV3T3BzLnB1c2goXG4gICAgICBpci5jcmVhdGVWYXJpYWJsZU9wKFxuICAgICAgICB2aWV3LmpvYi5hbGxvY2F0ZVhyZWZJZCgpLFxuICAgICAgICBzY29wZS5jb250ZXh0VmFyaWFibGVzLmdldChuYW1lKSEsXG4gICAgICAgIHZhcmlhYmxlLFxuICAgICAgICBpci5WYXJpYWJsZUZsYWdzLk5vbmUsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGFsaWFzIG9mIHNjb3BlVmlldy5hbGlhc2VzKSB7XG4gICAgbmV3T3BzLnB1c2goXG4gICAgICBpci5jcmVhdGVWYXJpYWJsZU9wKFxuICAgICAgICB2aWV3LmpvYi5hbGxvY2F0ZVhyZWZJZCgpLFxuICAgICAgICBhbGlhcyxcbiAgICAgICAgYWxpYXMuZXhwcmVzc2lvbi5jbG9uZSgpLFxuICAgICAgICBpci5WYXJpYWJsZUZsYWdzLkFsd2F5c0lubGluZSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIC8vIEFkZCB2YXJpYWJsZXMgZm9yIGFsbCBsb2NhbCByZWZlcmVuY2VzIGRlY2xhcmVkIGZvciBlbGVtZW50cyBpbiB0aGlzIHNjb3BlLlxuICBmb3IgKGNvbnN0IHJlZiBvZiBzY29wZS5yZWZlcmVuY2VzKSB7XG4gICAgbmV3T3BzLnB1c2goXG4gICAgICBpci5jcmVhdGVWYXJpYWJsZU9wKFxuICAgICAgICB2aWV3LmpvYi5hbGxvY2F0ZVhyZWZJZCgpLFxuICAgICAgICByZWYudmFyaWFibGUsXG4gICAgICAgIG5ldyBpci5SZWZlcmVuY2VFeHByKHJlZi50YXJnZXRJZCwgcmVmLnRhcmdldFNsb3QsIHJlZi5vZmZzZXQpLFxuICAgICAgICBpci5WYXJpYWJsZUZsYWdzLk5vbmUsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBpZiAoc2NvcGUudmlldyAhPT0gdmlldy54cmVmIHx8IGlzTGlzdGVuZXIpIHtcbiAgICBmb3IgKGNvbnN0IGRlY2wgb2Ygc2NvcGUubGV0RGVjbGFyYXRpb25zKSB7XG4gICAgICBuZXdPcHMucHVzaChcbiAgICAgICAgaXIuY3JlYXRlVmFyaWFibGVPcDxpci5VcGRhdGVPcD4oXG4gICAgICAgICAgdmlldy5qb2IuYWxsb2NhdGVYcmVmSWQoKSxcbiAgICAgICAgICBkZWNsLnZhcmlhYmxlLFxuICAgICAgICAgIG5ldyBpci5Db250ZXh0TGV0UmVmZXJlbmNlRXhwcihkZWNsLnRhcmdldElkLCBkZWNsLnRhcmdldFNsb3QpLFxuICAgICAgICAgIGlyLlZhcmlhYmxlRmxhZ3MuTm9uZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHNjb3BlLnBhcmVudCAhPT0gbnVsbCkge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IGFkZCB2YXJpYWJsZXMgZnJvbSB0aGUgcGFyZW50IHNjb3BlLlxuICAgIG5ld09wcy5wdXNoKC4uLmdlbmVyYXRlVmFyaWFibGVzSW5TY29wZUZvclZpZXcodmlldywgc2NvcGUucGFyZW50LCBmYWxzZSkpO1xuICB9XG4gIHJldHVybiBuZXdPcHM7XG59XG4iXX0=
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfdmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvZ2VuZXJhdGVfdmFyaWFibGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxDQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJL0I7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUE0QjtJQUM1RCxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGdEQUFnRCxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLHNCQUFzQixDQUFDLElBQXlCLEVBQUUsV0FBeUI7SUFDbEYsb0NBQW9DO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFakQsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVE7Z0JBQ3JCLHFDQUFxQztnQkFDckMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDNUQsTUFBTTtZQUNSLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVO2dCQUN2QixJQUFJLEVBQUUsQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQzdCLHNCQUFzQixDQUFDLElBQUksQ0FB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KlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBvIGZyb20gJy4uLy4uLy4uLy4uL291dHB1dC9vdXRwdXRfYXN0JztcbmltcG9ydCAqIGFzIGlyIGZyb20gJy4uLy4uL2lyJztcblxuaW1wb3J0IHR5cGUge0NvbXBvbmVudENvbXBpbGF0aW9uSm9iLCBWaWV3Q29tcGlsYXRpb25Vbml0fSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBwcmVhbWJsZSBzZXF1ZW5jZSBmb3IgZWFjaCB2aWV3IGNyZWF0aW9uIGJsb2NrIGFuZCBsaXN0ZW5lciBmdW5jdGlvbiB3aGljaCBkZWNsYXJlc1xuICogYW55IHZhcmlhYmxlcyB0aGF0IGJlIHJlZmVyZW5jZWQgaW4gb3RoZXIgb3BlcmF0aW9ucyBpbiB0aGUgYmxvY2suXG4gKlxuICogVmFyaWFibGVzIGdlbmVyYXRlZCBpbmNsdWRlOlxuICogICAqIGEgc2F2ZWQgdmlldyBjb250ZXh0IHRvIGJlIHVzZWQgdG8gcmVzdG9yZSB0aGUgY3VycmVudCB2aWV3IGluIGV2ZW50IGxpc3RlbmVycy5cbiAqICAgKiB0aGUgY29udGV4dCBvZiB0aGUgcmVzdG9yZWQgdmlldyB3aXRoaW4gZXZlbnQgbGlzdGVuZXIgaGFuZGxlcnMuXG4gKiAgICogY29udGV4dCB2YXJpYWJsZXMgZnJvbSB0aGUgY3VycmVudCB2aWV3IGFzIHdlbGwgYXMgYWxsIHBhcmVudCB2aWV3cyAoaW5jbHVkaW5nIHRoZSByb290XG4gKiAgICAgY29udGV4dCBpZiBuZWVkZWQpLlxuICogICAqIGxvY2FsIHJlZmVyZW5jZXMgZnJvbSBlbGVtZW50cyB3aXRoaW4gdGhlIGN1cnJlbnQgdmlldyBhbmQgYW55IGxleGljYWwgcGFyZW50cy5cbiAqXG4gKiBWYXJpYWJsZXMgYXJlIGdlbmVyYXRlZCBoZXJlIHVuY29uZGl0aW9uYWxseSwgYW5kIG1heSBvcHRpbWl6ZWQgYXdheSBpbiBmdXR1cmUgb3BlcmF0aW9ucyBpZiBpdFxuICogdHVybnMgb3V0IHRoZWlyIHZhbHVlcyAoYW5kIGFueSBzaWRlIGVmZmVjdHMpIGFyZSB1bnVzZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVZhcmlhYmxlcyhqb2I6IENvbXBvbmVudENvbXBpbGF0aW9uSm9iKTogdm9pZCB7XG4gIHJlY3Vyc2l2ZWx5UHJvY2Vzc1ZpZXcoam9iLnJvb3QsIC8qIHRoZXJlIGlzIG5vIHBhcmVudCBzY29wZSBmb3IgdGhlIHJvb3QgdmlldyAqLyBudWxsKTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzIHRoZSBnaXZlbiBgVmlld0NvbXBpbGF0aW9uYCBhbmQgZ2VuZXJhdGUgcHJlYW1ibGVzIGZvciBpdCBhbmQgYW55IGxpc3RlbmVycyB0aGF0IGl0XG4gKiBkZWNsYXJlcy5cbiAqXG4gKiBAcGFyYW0gYHBhcmVudFNjb3BlYCBhIHNjb3BlIGV4dHJhY3RlZCBmcm9tIHRoZSBwYXJlbnQgdmlldyB3aGljaCBjYXB0dXJlcyBhbnkgdmFyaWFibGVzIHdoaWNoXG4gKiAgICAgc2hvdWxkIGJlIGluaGVyaXRlZCBieSB0aGlzIHZpZXcuIGBudWxsYCBpZiB0aGUgY3VycmVudCB2aWV3IGlzIHRoZSByb290IHZpZXcuXG4gKi9cbmZ1bmN0aW9uIHJlY3Vyc2l2ZWx5UHJvY2Vzc1ZpZXcodmlldzogVmlld0NvbXBpbGF0aW9uVW5pdCwgcGFyZW50U2NvcGU6IFNjb3BlIHwgbnVsbCk6IHZvaWQge1xuICAvLyBFeHRyYWN0IGEgYFNjb3BlYCBmcm9tIHRoaXMgdmlldy5cbiAgY29uc3Qgc2NvcGUgPSBnZXRTY29wZUZvclZpZXcodmlldywgcGFyZW50U2NvcGUpO1xuXG4gIGZvciAoY29uc3Qgb3Agb2Ygdmlldy5jcmVhdGUpIHtcbiAgICBzd2l0Y2ggKG9wLmtpbmQpIHtcbiAgICAgIGNhc2UgaXIuT3BLaW5kLlRlbXBsYXRlOlxuICAgICAgICAvLyBEZXNjZW5kIGludG8gY2hpbGQgZW1iZWRkZWQgdmlld3MuXG4gICAgICAgIHJlY3Vyc2l2ZWx5UHJvY2Vzc1ZpZXcodmlldy5qb2Iudmlld3MuZ2V0KG9wLnhyZWYpISwgc2NvcGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgaXIuT3BLaW5kLlByb2plY3Rpb246XG4gICAgICAgIGlmIChvcC5mYWxsYmFja1ZpZXcgIT09IG51bGwpIHtcbiAgICAgICAgICByZWN1cnNpdmVseVByb2Nlc3NWaWV3KHZpZXcuam9iLnZpZXdzLmdldChvcC5mYWxsYmFja1ZpZXcpISwgc2NvcGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBpci5PcEtpbmQuUmVwZWF0ZXJDcmVhdGU6XG4gICAgICAgIC8vIERlc2NlbmQgaW50byBjaGlsZCBlbWJlZGRlZCB2aWV3cy5cbiAgICAgICAgcmVjdXJzaXZlbHlQcm9jZXNzVmlldyh2aWV3LmpvYi52aWV3cy5nZXQob3AueHJlZikhLCBzY29wZSk7XG4gICAgICAgIGlmIChvcC5lbXB0eVZpZXcpIHtcbiAgICAgICAgICByZWN1cnNpdmVseVByb2Nlc3NWaWV3KHZpZXcuam9iLnZpZXdzLmdldChvcC5lbXB0eVZpZXcpISwgc2NvcGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBpci5PcEtpbmQuTGlzdGVuZXI6XG4gICAgICBjYXNlIGlyLk9wS2luZC5Ud29XYXlMaXN0ZW5lcjpcbiAgICAgICAgLy8gUHJlcGVuZCB2YXJpYWJsZXMgdG8gbGlzdGVuZXIgaGFuZGxlciBmdW5jdGlvbnMuXG4gICAgICAgIG9wLmhhbmRsZXJPcHMucHJlcGVuZChnZW5lcmF0ZVZhcmlhYmxlc0luU2NvcGVGb3JWaWV3KHZpZXcsIHNjb3BlLCB0cnVlKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHZpZXcudXBkYXRlLnByZXBlbmQoZ2VuZXJhdGVWYXJpYWJsZXNJblNjb3BlRm9yVmlldyh2aWV3LCBzY29wZSwgZmFsc2UpKTtcbn1cblxuLyoqXG4gKiBMZXhpY2FsIHNjb3BlIG9mIGEgdmlldywgaW5jbHVkaW5nIGEgcmVmZXJlbmNlIHRvIGl0cyBwYXJlbnQgdmlldydzIHNjb3BlLCBpZiBhbnkuXG4gKi9cbmludGVyZmFjZSBTY29wZSB7XG4gIC8qKlxuICAgKiBgWHJlZklkYCBvZiB0aGUgdmlldyB0byB3aGljaCB0aGlzIHNjb3BlIGNvcnJlc3BvbmRzLlxuICAgKi9cbiAgdmlldzogaXIuWHJlZklkO1xuXG4gIHZpZXdDb250ZXh0VmFyaWFibGU6IGlyLlNlbWFudGljVmFyaWFibGU7XG5cbiAgY29udGV4dFZhcmlhYmxlczogTWFwPHN0cmluZywgaXIuU2VtYW50aWNWYXJpYWJsZT47XG5cbiAgYWxpYXNlczogU2V0PGlyLkFsaWFzVmFyaWFibGU+O1xuXG4gIC8qKlxuICAgKiBMb2NhbCByZWZlcmVuY2VzIGNvbGxlY3RlZCBmcm9tIGVsZW1lbnRzIHdpdGhpbiB0aGUgdmlldy5cbiAgICovXG4gIHJlZmVyZW5jZXM6IFJlZmVyZW5jZVtdO1xuXG4gIC8qKlxuICAgKiBgQGxldGAgZGVjbGFyYXRpb25zIGNvbGxlY3RlZCBmcm9tIHRoZSB2aWV3LlxuICAgKi9cbiAgbGV0RGVjbGFyYXRpb25zOiBMZXREZWNsYXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBgU2NvcGVgIG9mIHRoZSBwYXJlbnQgdmlldywgaWYgYW55LlxuICAgKi9cbiAgcGFyZW50OiBTY29wZSB8IG51bGw7XG59XG5cbi8qKlxuICogSW5mb3JtYXRpb24gbmVlZGVkIGFib3V0IGEgbG9jYWwgcmVmZXJlbmNlIGNvbGxlY3RlZCBmcm9tIGFuIGVsZW1lbnQgd2l0aGluIGEgdmlldy5cbiAqL1xuaW50ZXJmYWNlIFJlZmVyZW5jZSB7XG4gIC8qKlxuICAgKiBOYW1lIGdpdmVuIHRvIHRoZSBsb2NhbCByZWZlcmVuY2UgdmFyaWFibGUgd2l0aGluIHRoZSB0ZW1wbGF0ZS5cbiAgICpcbiAgICogVGhpcyBpcyBub3QgdGhlIG5hbWUgd2hpY2ggd2lsbCBiZSB1c2VkIGZvciB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb24gaW4gdGhlIGdlbmVyYXRlZFxuICAgKiB0ZW1wbGF0ZSBjb2RlLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBgWHJlZklkYCBvZiB0aGUgZWxlbWVudC1saWtlIG5vZGUgd2hpY2ggdGhpcyByZWZlcmVuY2UgdGFyZ2V0cy5cbiAgICpcbiAgICogVGhlIHJlZmVyZW5jZSBtYXkgYmUgZWl0aGVyIHRvIHRoZSBlbGVtZW50IChvciB0ZW1wbGF0ZSkgaXRzZWxmLCBvciB0byBhIGRpcmVjdGl2ZSBvbiBpdC5cbiAgICovXG4gIHRhcmdldElkOiBpci5YcmVmSWQ7XG5cbiAgdGFyZ2V0U2xvdDogaXIuU2xvdEhhbmRsZTtcblxuICAvKipcbiAgICogQSBnZW5lcmF0ZWQgb2Zmc2V0IG9mIHRoaXMgcmVmZXJlbmNlIGFtb25nIGFsbCB0aGUgcmVmZXJlbmNlcyBvbiBhIHNwZWNpZmljIGVsZW1lbnQuXG4gICAqL1xuICBvZmZzZXQ6IG51bWJlcjtcblxuICB2YXJpYWJsZTogaXIuU2VtYW50aWNWYXJpYWJsZTtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBgQGxldGAgZGVjbGFyYXRpb24gY29sbGVjdGVkIGZyb20gYSB2aWV3LlxuICovXG5pbnRlcmZhY2UgTGV0RGVjbGFyYXRpb24ge1xuICAvKiogYFhyZWZJZGAgb2YgdGhlIGBAbGV0YCBkZWNsYXJhdGlvbiB0aGF0IHRoZSByZWZlcmVuY2UgaXMgcG9pbnRpbmcgdG8uICovXG4gIHRhcmdldElkOiBpci5YcmVmSWQ7XG5cbiAgLyoqIFNsb3QgaW4gd2hpY2ggdGhlIGRlY2xhcmF0aW9uIGlzIHN0b3JlZC4gKi9cbiAgdGFyZ2V0U2xvdDogaXIuU2xvdEhhbmRsZTtcblxuICAvKiogVmFyaWFibGUgcmVmZXJyaW5nIHRvIHRoZSBkZWNsYXJhdGlvbi4gKi9cbiAgdmFyaWFibGU6IGlyLklkZW50aWZpZXJWYXJpYWJsZTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzIGEgdmlldyBhbmQgZ2VuZXJhdGUgYSBgU2NvcGVgIHJlcHJlc2VudGluZyB0aGUgdmFyaWFibGVzIGF2YWlsYWJsZSBmb3IgcmVmZXJlbmNlIHdpdGhpblxuICogdGhhdCB2aWV3LlxuICovXG5mdW5jdGlvbiBnZXRTY29wZUZvclZpZXcodmlldzogVmlld0NvbXBpbGF0aW9uVW5pdCwgcGFyZW50OiBTY29wZSB8IG51bGwpOiBTY29wZSB7XG4gIGNvbnN0IHNjb3BlOiBTY29wZSA9IHtcbiAgICB2aWV3OiB2aWV3LnhyZWYsXG4gICAgdmlld0NvbnRleHRWYXJpYWJsZToge1xuICAgICAga2luZDogaXIuU2VtYW50aWNWYXJpYWJsZUtpbmQuQ29udGV4dCxcbiAgICAgIG5hbWU6IG51bGwsXG4gICAgICB2aWV3OiB2aWV3LnhyZWYsXG4gICAgfSxcbiAgICBjb250ZXh0VmFyaWFibGVzOiBuZXcgTWFwPHN0cmluZywgaXIuU2VtYW50aWNWYXJpYWJsZT4oKSxcbiAgICBhbGlhc2VzOiB2aWV3LmFsaWFzZXMsXG4gICAgcmVmZXJlbmNlczogW10sXG4gICAgbGV0RGVjbGFyYXRpb25zOiBbXSxcbiAgICBwYXJlbnQsXG4gIH07XG5cbiAgZm9yIChjb25zdCBpZGVudGlmaWVyIG9mIHZpZXcuY29udGV4dFZhcmlhYmxlcy5rZXlzKCkpIHtcbiAgICBzY29wZS5jb250ZXh0VmFyaWFibGVzLnNldChpZGVudGlmaWVyLCB7XG4gICAgICBraW5kOiBpci5TZW1hbnRpY1ZhcmlhYmxlS2luZC5JZGVudGlmaWVyLFxuICAgICAgbmFtZTogbnVsbCxcbiAgICAgIGlkZW50aWZpZXIsXG4gICAgICBsb2NhbDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IG9wIG9mIHZpZXcuY3JlYXRlKSB7XG4gICAgc3dpdGNoIChvcC5raW5kKSB7XG4gICAgICBjYXNlIGlyLk9wS2luZC5FbGVtZW50U3RhcnQ6XG4gICAgICBjYXNlIGlyLk9wS2luZC5UZW1wbGF0ZTpcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wLmxvY2FsUmVmcykpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbkVycm9yOiBleHBlY3RlZCBsb2NhbFJlZnMgdG8gYmUgYW4gYXJyYXlgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlY29yZCBhdmFpbGFibGUgbG9jYWwgcmVmZXJlbmNlcyBmcm9tIHRoaXMgZWxlbWVudC5cbiAgICAgICAgZm9yIChsZXQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgb3AubG9jYWxSZWZzLmxlbmd0aDsgb2Zmc2V0KyspIHtcbiAgICAgICAgICBzY29wZS5yZWZlcmVuY2VzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogb3AubG9jYWxSZWZzW29mZnNldF0ubmFtZSxcbiAgICAgICAgICAgIHRhcmdldElkOiBvcC54cmVmLFxuICAgICAgICAgICAgdGFyZ2V0U2xvdDogb3AuaGFuZGxlLFxuICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgdmFyaWFibGU6IHtcbiAgICAgICAgICAgICAga2luZDogaXIuU2VtYW50aWNWYXJpYWJsZUtpbmQuSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgbmFtZTogbnVsbCxcbiAgICAgICAgICAgICAgaWRlbnRpZmllcjogb3AubG9jYWxSZWZzW29mZnNldF0ubmFtZSxcbiAgICAgICAgICAgICAgbG9jYWw6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBpci5PcEtpbmQuRGVjbGFyZUxldDpcbiAgICAgICAgc2NvcGUubGV0RGVjbGFyYXRpb25zLnB1c2goe1xuICAgICAgICAgIHRhcmdldElkOiBvcC54cmVmLFxuICAgICAgICAgIHRhcmdldFNsb3Q6IG9wLmhhbmRsZSxcbiAgICAgICAgICB2YXJpYWJsZToge1xuICAgICAgICAgICAga2luZDogaXIuU2VtYW50aWNWYXJpYWJsZUtpbmQuSWRlbnRpZmllcixcbiAgICAgICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgICAgICBpZGVudGlmaWVyOiBvcC5kZWNsYXJlZE5hbWUsXG4gICAgICAgICAgICBsb2NhbDogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzY29wZTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBkZWNsYXJhdGlvbnMgZm9yIGFsbCB2YXJpYWJsZXMgdGhhdCBhcmUgaW4gc2NvcGUgZm9yIGEgZ2l2ZW4gdmlldy5cbiAqXG4gKiBUaGlzIGlzIGEgcmVjdXJzaXZlIHByb2Nlc3MsIGFzIHZpZXdzIGluaGVyaXQgdmFyaWFibGVzIGF2YWlsYWJsZSBmcm9tIHRoZWlyIHBhcmVudCB2aWV3LCB3aGljaFxuICogaXRzZWxmIG1heSBoYXZlIGluaGVyaXRlZCB2YXJpYWJsZXMsIGV0Yy5cbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVWYXJpYWJsZXNJblNjb3BlRm9yVmlldyhcbiAgdmlldzogVmlld0NvbXBpbGF0aW9uVW5pdCxcbiAgc2NvcGU6IFNjb3BlLFxuICBpc0xpc3RlbmVyOiBib29sZWFuLFxuKTogaXIuVmFyaWFibGVPcDxpci5VcGRhdGVPcD5bXSB7XG4gIGNvbnN0IG5ld09wczogaXIuVmFyaWFibGVPcDxpci5VcGRhdGVPcD5bXSA9IFtdO1xuXG4gIGlmIChzY29wZS52aWV3ICE9PSB2aWV3LnhyZWYpIHtcbiAgICAvLyBCZWZvcmUgZ2VuZXJhdGluZyB2YXJpYWJsZXMgZm9yIGEgcGFyZW50IHZpZXcsIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHRoZSBjb250ZXh0IG9mIHRoZSBwYXJlbnRcbiAgICAvLyB2aWV3IHdpdGggYSBgbmV4dENvbnRleHRgIGV4cHJlc3Npb24uIFRoaXMgY29udGV4dCBzd2l0Y2hpbmcgb3BlcmF0aW9uIGl0c2VsZiBkZWNsYXJlcyBhXG4gICAgLy8gdmFyaWFibGUsIGJlY2F1c2UgdGhlIGNvbnRleHQgb2YgdGhlIHZpZXcgbWF5IGJlIHJlZmVyZW5jZWQgZGlyZWN0bHkuXG4gICAgbmV3T3BzLnB1c2goXG4gICAgICBpci5jcmVhdGVWYXJpYWJsZU9wKFxuICAgICAgICB2aWV3LmpvYi5hbGxvY2F0ZVhyZWZJZCgpLFxuICAgICAgICBzY29wZS52aWV3Q29udGV4dFZhcmlhYmxlLFxuICAgICAgICBuZXcgaXIuTmV4dENvbnRleHRFeHByKCksXG4gICAgICAgIGlyLlZhcmlhYmxlRmxhZ3MuTm9uZSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIC8vIEFkZCB2YXJpYWJsZXMgZm9yIGFsbCBjb250ZXh0IHZhcmlhYmxlcyBhdmFpbGFibGUgaW4gdGhpcyBzY29wZSdzIHZpZXcuXG4gIGNvbnN0IHNjb3BlVmlldyA9IHZpZXcuam9iLnZpZXdzLmdldChzY29wZS52aWV3KSE7XG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBzY29wZVZpZXcuY29udGV4dFZhcmlhYmxlcykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgaXIuQ29udGV4dEV4cHIoc2NvcGUudmlldyk7XG4gICAgLy8gV2UgZWl0aGVyIHJlYWQgdGhlIGNvbnRleHQsIG9yLCBpZiB0aGUgdmFyaWFibGUgaXMgQ1RYX1JFRiwgdXNlIHRoZSBjb250ZXh0IGRpcmVjdGx5LlxuICAgIGNvbnN0IHZhcmlhYmxlID0gdmFsdWUgPT09IGlyLkNUWF9SRUYgPyBjb250ZXh0IDogbmV3IG8uUmVhZFByb3BFeHByKGNvbnRleHQsIHZhbHVlKTtcbiAgICAvLyBBZGQgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uLlxuICAgIG5ld09wcy5wdXNoKFxuICAgICAgaXIuY3JlYXRlVmFyaWFibGVPcChcbiAgICAgICAgdmlldy5qb2IuYWxsb2NhdGVYcmVmSWQoKSxcbiAgICAgICAgc2NvcGUuY29udGV4dFZhcmlhYmxlcy5nZXQobmFtZSkhLFxuICAgICAgICB2YXJpYWJsZSxcbiAgICAgICAgaXIuVmFyaWFibGVGbGFncy5Ob25lLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgZm9yIChjb25zdCBhbGlhcyBvZiBzY29wZVZpZXcuYWxpYXNlcykge1xuICAgIG5ld09wcy5wdXNoKFxuICAgICAgaXIuY3JlYXRlVmFyaWFibGVPcChcbiAgICAgICAgdmlldy5qb2IuYWxsb2NhdGVYcmVmSWQoKSxcbiAgICAgICAgYWxpYXMsXG4gICAgICAgIGFsaWFzLmV4cHJlc3Npb24uY2xvbmUoKSxcbiAgICAgICAgaXIuVmFyaWFibGVGbGFncy5BbHdheXNJbmxpbmUsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAvLyBBZGQgdmFyaWFibGVzIGZvciBhbGwgbG9jYWwgcmVmZXJlbmNlcyBkZWNsYXJlZCBmb3IgZWxlbWVudHMgaW4gdGhpcyBzY29wZS5cbiAgZm9yIChjb25zdCByZWYgb2Ygc2NvcGUucmVmZXJlbmNlcykge1xuICAgIG5ld09wcy5wdXNoKFxuICAgICAgaXIuY3JlYXRlVmFyaWFibGVPcChcbiAgICAgICAgdmlldy5qb2IuYWxsb2NhdGVYcmVmSWQoKSxcbiAgICAgICAgcmVmLnZhcmlhYmxlLFxuICAgICAgICBuZXcgaXIuUmVmZXJlbmNlRXhwcihyZWYudGFyZ2V0SWQsIHJlZi50YXJnZXRTbG90LCByZWYub2Zmc2V0KSxcbiAgICAgICAgaXIuVmFyaWFibGVGbGFncy5Ob25lLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgaWYgKHNjb3BlLnZpZXcgIT09IHZpZXcueHJlZiB8fCBpc0xpc3RlbmVyKSB7XG4gICAgZm9yIChjb25zdCBkZWNsIG9mIHNjb3BlLmxldERlY2xhcmF0aW9ucykge1xuICAgICAgbmV3T3BzLnB1c2goXG4gICAgICAgIGlyLmNyZWF0ZVZhcmlhYmxlT3A8aXIuVXBkYXRlT3A+KFxuICAgICAgICAgIHZpZXcuam9iLmFsbG9jYXRlWHJlZklkKCksXG4gICAgICAgICAgZGVjbC52YXJpYWJsZSxcbiAgICAgICAgICBuZXcgaXIuQ29udGV4dExldFJlZmVyZW5jZUV4cHIoZGVjbC50YXJnZXRJZCwgZGVjbC50YXJnZXRTbG90KSxcbiAgICAgICAgICBpci5WYXJpYWJsZUZsYWdzLk5vbmUsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY29wZS5wYXJlbnQgIT09IG51bGwpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBhZGQgdmFyaWFibGVzIGZyb20gdGhlIHBhcmVudCBzY29wZS5cbiAgICBuZXdPcHMucHVzaCguLi5nZW5lcmF0ZVZhcmlhYmxlc0luU2NvcGVGb3JWaWV3KHZpZXcsIHNjb3BlLnBhcmVudCwgZmFsc2UpKTtcbiAgfVxuICByZXR1cm4gbmV3T3BzO1xufVxuIl19
@@ -27,6 +27,8 @@ function processLexicalScope(unit, ops, savedView) {
27
27
  // Since variables are generated in each view for the entire lexical scope (including any
28
28
  // identifiers from parent templates) only local variables need be considered here.
29
29
  const scope = new Map();
30
+ // Symbols defined within the current scope. They take precedence over ones defined outside.
31
+ const localDefinitions = new Map();
30
32
  // First, step through the operations list and:
31
33
  // 1) build up the `scope` mapping
32
34
  // 2) recurse into any listener functions
@@ -35,6 +37,17 @@ function processLexicalScope(unit, ops, savedView) {
35
37
  case ir.OpKind.Variable:
36
38
  switch (op.variable.kind) {
37
39
  case ir.SemanticVariableKind.Identifier:
40
+ if (op.variable.local) {
41
+ if (localDefinitions.has(op.variable.identifier)) {
42
+ continue;
43
+ }
44
+ localDefinitions.set(op.variable.identifier, op.xref);
45
+ }
46
+ else if (scope.has(op.variable.identifier)) {
47
+ continue;
48
+ }
49
+ scope.set(op.variable.identifier, op.xref);
50
+ break;
38
51
  case ir.SemanticVariableKind.Alias:
39
52
  // This variable represents some kind of identifier which can be used in the template.
40
53
  if (scope.has(op.variable.identifier)) {
@@ -73,7 +86,10 @@ function processLexicalScope(unit, ops, savedView) {
73
86
  // `expr` is a read of a name within the lexical scope of this view.
74
87
  // Either that name is defined within the current view, or it represents a property from the
75
88
  // main component context.
76
- if (scope.has(expr.name)) {
89
+ if (localDefinitions.has(expr.name)) {
90
+ return new ir.ReadVariableExpr(localDefinitions.get(expr.name));
91
+ }
92
+ else if (scope.has(expr.name)) {
77
93
  // This was a defined variable in the current scope.
78
94
  return new ir.ReadVariableExpr(scope.get(expr.name));
79
95
  }
@@ -105,4 +121,4 @@ function processLexicalScope(unit, ops, savedView) {
105
121
  });
106
122
  }
107
123
  }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZV9uYW1lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvcGhhc2VzL3Jlc29sdmVfbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLENBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRCxPQUFPLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUcvQjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQW1CO0lBQzlDLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FDMUIsSUFBcUIsRUFDckIsR0FBb0QsRUFDcEQsU0FBMkI7SUFFM0IsK0ZBQStGO0lBQy9GLDZDQUE2QztJQUM3QyxFQUFFO0lBQ0YseUZBQXlGO0lBQ3pGLG1GQUFtRjtJQUNuRixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztJQUUzQywrQ0FBK0M7SUFDL0Msa0NBQWtDO0lBQ2xDLHlDQUF5QztJQUN6QyxLQUFLLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hCLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRO2dCQUNyQixRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3pCLEtBQUssRUFBRSxDQUFD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QU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDLEVBQ0QsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuQyxJQUFJLElBQUksWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQ2IscUVBQXFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FDakYsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vLi4vLi4vLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHtDb21waWxhdGlvbkpvYiwgQ29tcGlsYXRpb25Vbml0fSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogUmVzb2x2ZXMgbGV4aWNhbCByZWZlcmVuY2VzIGluIHZpZXdzIChgaXIuTGV4aWNhbFJlYWRFeHByYCkgdG8gZWl0aGVyIGEgdGFyZ2V0IHZhcmlhYmxlIG9yIHRvXG4gKiBwcm9wZXJ0eSByZWFkcyBvbiB0aGUgdG9wLWxldmVsIGNvbXBvbmVudCBjb250ZXh0LlxuICpcbiAqIEFsc28gbWF0Y2hlcyBgaXIuUmVzdG9yZVZpZXdFeHByYCBleHByZXNzaW9ucyB3aXRoIHRoZSB2YXJpYWJsZXMgb2YgdGhlaXIgY29ycmVzcG9uZGluZyBzYXZlZFxuICogdmlld3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTmFtZXMoam9iOiBDb21waWxhdGlvbkpvYik6IHZvaWQge1xuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgcHJvY2Vzc0xleGljYWxTY29wZSh1bml0LCB1bml0LmNyZWF0ZSwgbnVsbCk7XG4gICAgcHJvY2Vzc0xleGljYWxTY29wZSh1bml0LCB1bml0LnVwZGF0ZSwgbnVsbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0xleGljYWxTY29wZShcbiAgdW5pdDogQ29tcGlsYXRpb25Vbml0LFxuICBvcHM6IGlyLk9wTGlzdDxpci5DcmVhdGVPcD4gfCBpci5PcExpc3Q8aXIuVXBkYXRlT3A+LFxuICBzYXZlZFZpZXc6IFNhdmVkVmlldyB8IG51bGwsXG4pOiB2b2lkIHtcbiAgLy8gTWFwcyBuYW1lcyBkZWZpbmVkIGluIHRoZSBsZXhpY2FsIHNjb3BlIG9mIHRoaXMgdGVtcGxhdGUgdG8gdGhlIGBpci5YcmVmSWRgcyBvZiB0aGUgdmFyaWFibGVcbiAgLy8gZGVjbGFyYXRpb25zIHdoaWNoIHJlcHJlc2VudCB0aG9zZSB2YWx1ZXMuXG4gIC8vXG4gIC8vIFNpbmNlIHZhcmlhYmxlcyBhcmUgZ2VuZXJhdGVkIGluIGVhY2ggdmlldyBmb3IgdGhlIGVudGlyZSBsZXhpY2FsIHNjb3BlIChpbmNsdWRpbmcgYW55XG4gIC8vIGlkZW50aWZpZXJzIGZyb20gcGFyZW50IHRlbXBsYXRlcykgb25seSBsb2NhbCB2YXJpYWJsZXMgbmVlZCBiZSBjb25zaWRlcmVkIGhlcmUuXG4gIGNvbnN0IHNjb3BlID0gbmV3IE1hcDxzdHJpbmcsIGlyLlhyZWZJZD4oKTtcblxuICAvLyBGaXJzdCwgc3RlcCB0aHJvdWdoIHRoZSBvcGVyYXRpb25zIGxpc3QgYW5kOlxuICAvLyAxKSBidWlsZCB1cCB0aGUgYHNjb3BlYCBtYXBwaW5nXG4gIC8vIDIpIHJlY3Vyc2UgaW50byBhbnkgbGlzdGVuZXIgZnVuY3Rpb25zXG4gIGZvciAoY29uc3Qgb3Agb2Ygb3BzKSB7XG4gICAgc3dpdGNoIChvcC5raW5kKSB7XG4gICAgICBjYXNlIGlyLk9wS2luZC5WYXJpYWJsZTpcbiAgICAgICAgc3dpdGNoIChvcC52YXJpYWJsZS5raW5kKSB7XG4gICAgICAgICAgY2FzZSBpci5TZW1hbnRpY1ZhcmlhYmxlS2luZC5JZGVudGlmaWVyOlxuICAgICAgICAgIGNhc2UgaXIuU2VtYW50aWNWYXJpYWJsZUtpbmQuQWxpYXM6XG4gICAgICAgICAgICAvLyBUaGlzIHZhcmlhYmxlIHJlcHJlc2VudHMgc29tZSBraW5kIG9mIGlkZW50aWZpZXIgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHRlbXBsYXRlLlxuICAgICAgICAgICAgaWYgKHNjb3BlLmhhcyhvcC52YXJpYWJsZS5pZGVudGlmaWVyKSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNjb3BlLnNldChvcC52YXJpYWJsZS5pZGVudGlmaWVyLCBvcC54cmVmKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgaXIuU2VtYW50aWNWYXJpYWJsZUtpbmQuU2F2ZWRWaWV3OlxuICAgICAgICAgICAgLy8gVGhpcyB2YXJpYWJsZSByZXByZXNlbnRzIGEgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgdmlldyBjb250ZXh0LCBhbmQgY2FuIGJlIHVzZWQgdG9cbiAgICAgICAgICAgIC8vIHJlc3RvcmUgdGhhdCBjb250ZXh0IHdpdGhpbiBsaXN0ZW5lciBmdW5jdGlvbnMuXG4gICAgICAgICAgICBzYXZlZFZpZXcgPSB7XG4gICAgICAgICAgICAgIHZpZXc6IG9wLnZhcmlhYmxlLnZpZXcsXG4gICAgICAgICAgICAgIHZhcmlhYmxlOiBvcC54cmVmLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBpci5PcEtpbmQuTGlzdGVuZXI6XG4gICAgICBjYXNlIGlyLk9wS2luZC5Ud29XYXlMaXN0ZW5lcjpcbiAgICAgICAgLy8gTGlzdGVuZXIgZnVuY3Rpb25zIGhhdmUgc2VwYXJhdGUgdmFyaWFibGUgZGVjbGFyYXRpb25zLCBzbyBwcm9jZXNzIHRoZW0gYXMgYSBzZXBhcmF0ZVxuICAgICAgICAvLyBsZXhpY2FsIHNjb3BlLlxuICAgICAgICBwcm9jZXNzTGV4aWNhbFNjb3BlKHVuaXQsIG9wLmhhbmRsZXJPcHMsIHNhdmVkVmlldyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vIE5leHQsIHVzZSB0aGUgYHNjb3BlYCBtYXBwaW5nIHRvIG1hdGNoIGBpci5MZXhpY2FsUmVhZEV4cHJgIHdpdGggZGVmaW5lZCBuYW1lcyBpbiB0aGUgbGV4aWNhbFxuICAvLyBzY29wZS4gQWxzbywgbG9vayBmb3IgYGlyLlJlc3RvcmVWaWV3RXhwcmBzIGFuZCBtYXRjaCB0aGVtIHdpdGggdGhlIHNuYXBzaG90dGVkIHZpZXcgY29udGV4dFxuICAvLyB2YXJpYWJsZS5cbiAgZm9yIChjb25zdCBvcCBvZiBvcHMpIHtcbiAgICBpZiAob3Aua2luZCA9PSBpci5PcEtpbmQuTGlzdGVuZXIgfHwgb3Aua2luZCA9PT0gaXIuT3BLaW5kLlR3b1dheUxpc3RlbmVyKSB7XG4gICAgICAvLyBMaXN0ZW5lcnMgd2VyZSBhbHJlYWR5IHByb2Nlc3NlZCBhYm92ZSB3aXRoIHRoZWlyIG93biBzY29wZXMuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaXIudHJhbnNmb3JtRXhwcmVzc2lvbnNJbk9wKFxuICAgICAgb3AsXG4gICAgICAoZXhwcikgPT4ge1xuICAgICAgICBpZiAoZXhwciBpbnN0YW5jZW9mIGlyLkxleGljYWxSZWFkRXhwcikge1xuICAgICAgICAgIC8vIGBleHByYCBpcyBhIHJlYWQgb2YgYSBuYW1lIHdpdGhpbiB0aGUgbGV4aWNhbCBzY29wZSBvZiB0aGlzIHZpZXcuXG4gICAgICAgICAgLy8gRWl0aGVyIHRoYXQgbmFtZSBpcyBkZWZpbmVkIHdpdGhpbiB0aGUgY3VycmVudCB2aWV3LCBvciBpdCByZXByZXNlbnRzIGEgcHJvcGVydHkgZnJvbSB0aGVcbiAgICAgICAgICAvLyBtYWluIGNvbXBvbmVudCBjb250ZXh0LlxuICAgICAgICAgIGlmIChzY29wZS5oYXMoZXhwci5uYW1lKSkge1xuICAgICAgICAgICAgLy8gVGhpcyB3YXMgYSBkZWZpbmVkIHZhcmlhYmxlIGluIHRoZSBjdXJyZW50IHNjb3BlLlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBpci5SZWFkVmFyaWFibGVFeHByKHNjb3BlLmdldChleHByLm5hbWUpISk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFJlYWRpbmcgZnJvbSB0aGUgY29tcG9uZW50IGNvbnRleHQuXG4gICAgICAgICAgICByZXR1cm4gbmV3IG8uUmVhZFByb3BFeHByKG5ldyBpci5Db250ZXh0RXhwcih1bml0LmpvYi5yb290LnhyZWYpLCBleHByLm5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChleHByIGluc3RhbmNlb2YgaXIuUmVzdG9yZVZpZXdFeHByICYmIHR5cGVvZiBleHByLnZpZXcgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgLy8gYGlyLlJlc3RvcmVWaWV3RXhwcmAgaGFwcGVucyBpbiBsaXN0ZW5lciBmdW5jdGlvbnMgYW5kIHJlc3RvcmVzIGEgc2F2ZWQgdmlldyBmcm9tIHRoZVxuICAgICAgICAgIC8vIHBhcmVudCBjcmVhdGlvbiBsaXN0LiBXZSBleHBlY3QgdG8gZmluZCB0aGF0IHdlIGNhcHR1cmVkIHRoZSBgc2F2ZWRWaWV3YCBwcmV2aW91c2x5LCBhbmRcbiAgICAgICAgICAvLyB0aGF0IGl0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHZpZXcgdG8gYmUgcmVzdG9yZWQuXG4gICAgICAgICAgaWYgKHNhdmVkVmlldyA9PT0gbnVsbCB8fCBzYXZlZFZpZXcudmlldyAhPT0gZXhwci52aWV3KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbkVycm9yOiBubyBzYXZlZCB2aWV3ICR7ZXhwci52aWV3fSBmcm9tIHZpZXcgJHt1bml0LnhyZWZ9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGV4cHIudmlldyA9IG5ldyBpci5SZWFkVmFyaWFibGVFeHByKHNhdmVkVmlldy52YXJpYWJsZSk7XG4gICAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBpci5WaXNpdG9yQ29udGV4dEZsYWcuTm9uZSxcbiAgICApO1xuICB9XG5cbiAgZm9yIChjb25zdCBvcCBvZiBvcHMpIHtcbiAgICBpci52aXNpdEV4cHJlc3Npb25zSW5PcChvcCwgKGV4cHIpID0+IHtcbiAgICAgIGlmIChleHByIGluc3RhbmNlb2YgaXIuTGV4aWNhbFJlYWRFeHByKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQXNzZXJ0aW9uRXJyb3I6IG5vIGxleGljYWwgcmVhZHMgc2hvdWxkIHJlbWFpbiwgYnV0IGZvdW5kIHJlYWQgb2YgJHtleHByLm5hbWV9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IGEgYFNhdmVkVmlld2AgdmFyaWFibGUuXG4gKi9cbmludGVyZmFjZSBTYXZlZFZpZXcge1xuICAvKipcbiAgICogVGhlIHZpZXcgYGlyLlhyZWZJZGAgd2hpY2ggd2FzIHNhdmVkIGludG8gdGhpcyB2YXJpYWJsZS5cbiAgICovXG4gIHZpZXc6IGlyLlhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIGBpci5YcmVmSWRgIG9mIHRoZSB2YXJpYWJsZSBpbnRvIHdoaWNoIHRoZSB2aWV3IHdhcyBzYXZlZC5cbiAgICovXG4gIHZhcmlhYmxlOiBpci5YcmVmSWQ7XG59XG4iXX0=
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZV9uYW1lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvcGhhc2VzL3Jlc29sdmVfbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLENBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRCxPQUFPLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUcvQjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQW1CO0lBQzlDLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FDMUIsSUFBcUIsRUFDckIsR0FBb0QsRUFDcEQsU0FBMkI7SUFFM0IsK0ZBQStGO0lBQy9GLDZDQUE2QztJQUM3QyxFQUFFO0lBQ0YseUZBQXlGO0lBQ3pGLG1GQUFtRjtJQUNuRixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztJQUUzQyw0RkFBNEY7SUFDNUYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztJQUV0RCwrQ0FBK0M7SUFDL0Msa0NBQWtDO0lBQ2xDLHlDQUF5QztJQUN6QyxLQUFLLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hCLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRO2dCQUNyQixRQUFR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LElBQUksS0FBSyxDQUNiLHFFQUFxRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQ2pGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBvIGZyb20gJy4uLy4uLy4uLy4uL291dHB1dC9vdXRwdXRfYXN0JztcbmltcG9ydCAqIGFzIGlyIGZyb20gJy4uLy4uL2lyJztcbmltcG9ydCB7Q29tcGlsYXRpb25Kb2IsIENvbXBpbGF0aW9uVW5pdH0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG4vKipcbiAqIFJlc29sdmVzIGxleGljYWwgcmVmZXJlbmNlcyBpbiB2aWV3cyAoYGlyLkxleGljYWxSZWFkRXhwcmApIHRvIGVpdGhlciBhIHRhcmdldCB2YXJpYWJsZSBvciB0b1xuICogcHJvcGVydHkgcmVhZHMgb24gdGhlIHRvcC1sZXZlbCBjb21wb25lbnQgY29udGV4dC5cbiAqXG4gKiBBbHNvIG1hdGNoZXMgYGlyLlJlc3RvcmVWaWV3RXhwcmAgZXhwcmVzc2lvbnMgd2l0aCB0aGUgdmFyaWFibGVzIG9mIHRoZWlyIGNvcnJlc3BvbmRpbmcgc2F2ZWRcbiAqIHZpZXdzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU5hbWVzKGpvYjogQ29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIHByb2Nlc3NMZXhpY2FsU2NvcGUodW5pdCwgdW5pdC5jcmVhdGUsIG51bGwpO1xuICAgIHByb2Nlc3NMZXhpY2FsU2NvcGUodW5pdCwgdW5pdC51cGRhdGUsIG51bGwpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NMZXhpY2FsU2NvcGUoXG4gIHVuaXQ6IENvbXBpbGF0aW9uVW5pdCxcbiAgb3BzOiBpci5PcExpc3Q8aXIuQ3JlYXRlT3A+IHwgaXIuT3BMaXN0PGlyLlVwZGF0ZU9wPixcbiAgc2F2ZWRWaWV3OiBTYXZlZFZpZXcgfCBudWxsLFxuKTogdm9pZCB7XG4gIC8vIE1hcHMgbmFtZXMgZGVmaW5lZCBpbiB0aGUgbGV4aWNhbCBzY29wZSBvZiB0aGlzIHRlbXBsYXRlIHRvIHRoZSBgaXIuWHJlZklkYHMgb2YgdGhlIHZhcmlhYmxlXG4gIC8vIGRlY2xhcmF0aW9ucyB3aGljaCByZXByZXNlbnQgdGhvc2UgdmFsdWVzLlxuICAvL1xuICAvLyBTaW5jZSB2YXJpYWJsZXMgYXJlIGdlbmVyYXRlZCBpbiBlYWNoIHZpZXcgZm9yIHRoZSBlbnRpcmUgbGV4aWNhbCBzY29wZSAoaW5jbHVkaW5nIGFueVxuICAvLyBpZGVudGlmaWVycyBmcm9tIHBhcmVudCB0ZW1wbGF0ZXMpIG9ubHkgbG9jYWwgdmFyaWFibGVzIG5lZWQgYmUgY29uc2lkZXJlZCBoZXJlLlxuICBjb25zdCBzY29wZSA9IG5ldyBNYXA8c3RyaW5nLCBpci5YcmVmSWQ+KCk7XG5cbiAgLy8gU3ltYm9scyBkZWZpbmVkIHdpdGhpbiB0aGUgY3VycmVudCBzY29wZS4gVGhleSB0YWtlIHByZWNlZGVuY2Ugb3ZlciBvbmVzIGRlZmluZWQgb3V0c2lkZS5cbiAgY29uc3QgbG9jYWxEZWZpbml0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBpci5YcmVmSWQ+KCk7XG5cbiAgLy8gRmlyc3QsIHN0ZXAgdGhyb3VnaCB0aGUgb3BlcmF0aW9ucyBsaXN0IGFuZDpcbiAgLy8gMSkgYnVpbGQgdXAgdGhlIGBzY29wZWAgbWFwcGluZ1xuICAvLyAyKSByZWN1cnNlIGludG8gYW55IGxpc3RlbmVyIGZ1bmN0aW9uc1xuICBmb3IgKGNvbnN0IG9wIG9mIG9wcykge1xuICAgIHN3aXRjaCAob3Aua2luZCkge1xuICAgICAgY2FzZSBpci5PcEtpbmQuVmFyaWFibGU6XG4gICAgICAgIHN3aXRjaCAob3AudmFyaWFibGUua2luZCkge1xuICAgICAgICAgIGNhc2UgaXIuU2VtYW50aWNWYXJpYWJsZUtpbmQuSWRlbnRpZmllcjpcbiAgICAgICAgICAgIGlmIChvcC52YXJpYWJsZS5sb2NhbCkge1xuICAgICAgICAgICAgICBpZiAobG9jYWxEZWZpbml0aW9ucy5oYXMob3AudmFyaWFibGUuaWRlbnRpZmllcikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsb2NhbERlZmluaXRpb25zLnNldChvcC52YXJpYWJsZS5pZGVudGlmaWVyLCBvcC54cmVmKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2NvcGUuaGFzKG9wLnZhcmlhYmxlLmlkZW50aWZpZXIpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2NvcGUuc2V0KG9wLnZhcmlhYmxlLmlkZW50aWZpZXIsIG9wLnhyZWYpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBpci5TZW1hbnRpY1ZhcmlhYmxlS2luZC5BbGlhczpcbiAgICAgICAgICAgIC8vIFRoaXMgdmFyaWFibGUgcmVwcmVzZW50cyBzb21lIGtpbmQgb2YgaWRlbnRpZmllciB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgdGVtcGxhdGUuXG4gICAgICAgICAgICBpZiAoc2NvcGUuaGFzKG9wLnZhcmlhYmxlLmlkZW50aWZpZXIpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2NvcGUuc2V0KG9wLnZhcmlhYmxlLmlkZW50aWZpZXIsIG9wLnhyZWYpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBpci5TZW1hbnRpY1ZhcmlhYmxlS2luZC5TYXZlZFZpZXc6XG4gICAgICAgICAgICAvLyBUaGlzIHZhcmlhYmxlIHJlcHJlc2VudHMgYSBzbmFwc2hvdCBvZiB0aGUgY3VycmVudCB2aWV3IGNvbnRleHQsIGFuZCBjYW4gYmUgdXNlZCB0b1xuICAgICAgICAgICAgLy8gcmVzdG9yZSB0aGF0IGNvbnRleHQgd2l0aGluIGxpc3RlbmVyIGZ1bmN0aW9ucy5cbiAgICAgICAgICAgIHNhdmVkVmlldyA9IHtcbiAgICAgICAgICAgICAgdmlldzogb3AudmFyaWFibGUudmlldyxcbiAgICAgICAgICAgICAgdmFyaWFibGU6IG9wLnhyZWYsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGlyLk9wS2luZC5MaXN0ZW5lcjpcbiAgICAgIGNhc2UgaXIuT3BLaW5kLlR3b1dheUxpc3RlbmVyOlxuICAgICAgICAvLyBMaXN0ZW5lciBmdW5jdGlvbnMgaGF2ZSBzZXBhcmF0ZSB2YXJpYWJsZSBkZWNsYXJhdGlvbnMsIHNvIHByb2Nlc3MgdGhlbSBhcyBhIHNlcGFyYXRlXG4gICAgICAgIC8vIGxleGljYWwgc2NvcGUuXG4gICAgICAgIHByb2Nlc3NMZXhpY2FsU2NvcGUodW5pdCwgb3AuaGFuZGxlck9wcywgc2F2ZWRWaWV3KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gTmV4dCwgdXNlIHRoZSBgc2NvcGVgIG1hcHBpbmcgdG8gbWF0Y2ggYGlyLkxleGljYWxSZWFkRXhwcmAgd2l0aCBkZWZpbmVkIG5hbWVzIGluIHRoZSBsZXhpY2FsXG4gIC8vIHNjb3BlLiBBbHNvLCBsb29rIGZvciBgaXIuUmVzdG9yZVZpZXdFeHByYHMgYW5kIG1hdGNoIHRoZW0gd2l0aCB0aGUgc25hcHNob3R0ZWQgdmlldyBjb250ZXh0XG4gIC8vIHZhcmlhYmxlLlxuICBmb3IgKGNvbnN0IG9wIG9mIG9wcykge1xuICAgIGlmIChvcC5raW5kID09IGlyLk9wS2luZC5MaXN0ZW5lciB8fCBvcC5raW5kID09PSBpci5PcEtpbmQuVHdvV2F5TGlzdGVuZXIpIHtcbiAgICAgIC8vIExpc3RlbmVycyB3ZXJlIGFscmVhZHkgcHJvY2Vzc2VkIGFib3ZlIHdpdGggdGhlaXIgb3duIHNjb3Blcy5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpci50cmFuc2Zvcm1FeHByZXNzaW9uc0luT3AoXG4gICAgICBvcCxcbiAgICAgIChleHByKSA9PiB7XG4gICAgICAgIGlmIChleHByIGluc3RhbmNlb2YgaXIuTGV4aWNhbFJlYWRFeHByKSB7XG4gICAgICAgICAgLy8gYGV4cHJgIGlzIGEgcmVhZCBvZiBhIG5hbWUgd2l0aGluIHRoZSBsZXhpY2FsIHNjb3BlIG9mIHRoaXMgdmlldy5cbiAgICAgICAgICAvLyBFaXRoZXIgdGhhdCBuYW1lIGlzIGRlZmluZWQgd2l0aGluIHRoZSBjdXJyZW50IHZpZXcsIG9yIGl0IHJlcHJlc2VudHMgYSBwcm9wZXJ0eSBmcm9tIHRoZVxuICAgICAgICAgIC8vIG1haW4gY29tcG9uZW50IGNvbnRleHQuXG4gICAgICAgICAgaWYgKGxvY2FsRGVmaW5pdGlvbnMuaGFzKGV4cHIubmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgaXIuUmVhZFZhcmlhYmxlRXhwcihsb2NhbERlZmluaXRpb25zLmdldChleHByLm5hbWUpISk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzY29wZS5oYXMoZXhwci5uYW1lKSkge1xuICAgICAgICAgICAgLy8gVGhpcyB3YXMgYSBkZWZpbmVkIHZhcmlhYmxlIGluIHRoZSBjdXJyZW50IHNjb3BlLlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBpci5SZWFkVmFyaWFibGVFeHByKHNjb3BlLmdldChleHByLm5hbWUpISk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFJlYWRpbmcgZnJvbSB0aGUgY29tcG9uZW50IGNvbnRleHQuXG4gICAgICAgICAgICByZXR1cm4gbmV3IG8uUmVhZFByb3BFeHByKG5ldyBpci5Db250ZXh0RXhwcih1bml0LmpvYi5yb290LnhyZWYpLCBleHByLm5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChleHByIGluc3RhbmNlb2YgaXIuUmVzdG9yZVZpZXdFeHByICYmIHR5cGVvZiBleHByLnZpZXcgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgLy8gYGlyLlJlc3RvcmVWaWV3RXhwcmAgaGFwcGVucyBpbiBsaXN0ZW5lciBmdW5jdGlvbnMgYW5kIHJlc3RvcmVzIGEgc2F2ZWQgdmlldyBmcm9tIHRoZVxuICAgICAgICAgIC8vIHBhcmVudCBjcmVhdGlvbiBsaXN0LiBXZSBleHBlY3QgdG8gZmluZCB0aGF0IHdlIGNhcHR1cmVkIHRoZSBgc2F2ZWRWaWV3YCBwcmV2aW91c2x5LCBhbmRcbiAgICAgICAgICAvLyB0aGF0IGl0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHZpZXcgdG8gYmUgcmVzdG9yZWQuXG4gICAgICAgICAgaWYgKHNhdmVkVmlldyA9PT0gbnVsbCB8fCBzYXZlZFZpZXcudmlldyAhPT0gZXhwci52aWV3KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbkVycm9yOiBubyBzYXZlZCB2aWV3ICR7ZXhwci52aWV3fSBmcm9tIHZpZXcgJHt1bml0LnhyZWZ9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGV4cHIudmlldyA9IG5ldyBpci5SZWFkVmFyaWFibGVFeHByKHNhdmVkVmlldy52YXJpYWJsZSk7XG4gICAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBpci5WaXNpdG9yQ29udGV4dEZsYWcuTm9uZSxcbiAgICApO1xuICB9XG5cbiAgZm9yIChjb25zdCBvcCBvZiBvcHMpIHtcbiAgICBpci52aXNpdEV4cHJlc3Npb25zSW5PcChvcCwgKGV4cHIpID0+IHtcbiAgICAgIGlmIChleHByIGluc3RhbmNlb2YgaXIuTGV4aWNhbFJlYWRFeHByKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQXNzZXJ0aW9uRXJyb3I6IG5vIGxleGljYWwgcmVhZHMgc2hvdWxkIHJlbWFpbiwgYnV0IGZvdW5kIHJlYWQgb2YgJHtleHByLm5hbWV9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IGEgYFNhdmVkVmlld2AgdmFyaWFibGUuXG4gKi9cbmludGVyZmFjZSBTYXZlZFZpZXcge1xuICAvKipcbiAgICogVGhlIHZpZXcgYGlyLlhyZWZJZGAgd2hpY2ggd2FzIHNhdmVkIGludG8gdGhpcyB2YXJpYWJsZS5cbiAgICovXG4gIHZpZXc6IGlyLlhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIGBpci5YcmVmSWRgIG9mIHRoZSB2YXJpYWJsZSBpbnRvIHdoaWNoIHRoZSB2aWV3IHdhcyBzYXZlZC5cbiAgICovXG4gIHZhcmlhYmxlOiBpci5YcmVmSWQ7XG59XG4iXX0=
@@ -11,5 +11,5 @@
11
11
  * Entry point for all public APIs of the compiler package.
12
12
  */
13
13
  import { Version } from './util';
14
- export const VERSION = new Version('18.1.0-next.4');
14
+ export const VERSION = new Version('18.1.0-rc.0');
15
15
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRS9CLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQG1vZHVsZVxuICogQGRlc2NyaXB0aW9uXG4gKiBFbnRyeSBwb2ludCBmb3IgYWxsIHB1YmxpYyBBUElzIG9mIHRoZSBjb21waWxlciBwYWNrYWdlLlxuICovXG5cbmltcG9ydCB7VmVyc2lvbn0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBuZXcgVmVyc2lvbignMC4wLjAtUExBQ0VIT0xERVInKTtcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v18.1.0-next.4
2
+ * @license Angular v18.1.0-rc.0
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -12528,6 +12528,7 @@ function getScopeForView(view, parent) {
12528
12528
  kind: SemanticVariableKind.Identifier,
12529
12529
  name: null,
12530
12530
  identifier,
12531
+ local: false,
12531
12532
  });
12532
12533
  }
12533
12534
  for (const op of view.create) {
@@ -12548,6 +12549,7 @@ function getScopeForView(view, parent) {
12548
12549
  kind: SemanticVariableKind.Identifier,
12549
12550
  name: null,
12550
12551
  identifier: op.localRefs[offset].name,
12552
+ local: false,
12551
12553
  },
12552
12554
  });
12553
12555
  }
@@ -12560,6 +12562,7 @@ function getScopeForView(view, parent) {
12560
12562
  kind: SemanticVariableKind.Identifier,
12561
12563
  name: null,
12562
12564
  identifier: op.declaredName,
12565
+ local: false,
12563
12566
  },
12564
12567
  });
12565
12568
  break;
@@ -18008,8 +18011,11 @@ class _Tokenizer {
18008
18011
  const nameCursor = this._cursor.clone();
18009
18012
  let allowDigit = false;
18010
18013
  this._attemptCharCodeUntilFn((code) => {
18011
- // `@let` names can't start with a digit, but digits are valid anywhere else in the name.
18012
- if (isAsciiLetter(code) || code === $_ || (allowDigit && isDigit(code))) {
18014
+ if (isAsciiLetter(code) ||
18015
+ code == $$ ||
18016
+ code === $_ ||
18017
+ // `@let` names can't start with a digit, but digits are valid anywhere else in the name.
18018
+ (allowDigit && isDigit(code))) {
18013
18019
  allowDigit = true;
18014
18020
  return false;
18015
18021
  }
@@ -22714,6 +22720,8 @@ function processLexicalScope(unit, ops, savedView) {
22714
22720
  // Since variables are generated in each view for the entire lexical scope (including any
22715
22721
  // identifiers from parent templates) only local variables need be considered here.
22716
22722
  const scope = new Map();
22723
+ // Symbols defined within the current scope. They take precedence over ones defined outside.
22724
+ const localDefinitions = new Map();
22717
22725
  // First, step through the operations list and:
22718
22726
  // 1) build up the `scope` mapping
22719
22727
  // 2) recurse into any listener functions
@@ -22722,6 +22730,17 @@ function processLexicalScope(unit, ops, savedView) {
22722
22730
  case OpKind.Variable:
22723
22731
  switch (op.variable.kind) {
22724
22732
  case SemanticVariableKind.Identifier:
22733
+ if (op.variable.local) {
22734
+ if (localDefinitions.has(op.variable.identifier)) {
22735
+ continue;
22736
+ }
22737
+ localDefinitions.set(op.variable.identifier, op.xref);
22738
+ }
22739
+ else if (scope.has(op.variable.identifier)) {
22740
+ continue;
22741
+ }
22742
+ scope.set(op.variable.identifier, op.xref);
22743
+ break;
22725
22744
  case SemanticVariableKind.Alias:
22726
22745
  // This variable represents some kind of identifier which can be used in the template.
22727
22746
  if (scope.has(op.variable.identifier)) {
@@ -22760,7 +22779,10 @@ function processLexicalScope(unit, ops, savedView) {
22760
22779
  // `expr` is a read of a name within the lexical scope of this view.
22761
22780
  // Either that name is defined within the current view, or it represents a property from the
22762
22781
  // main component context.
22763
- if (scope.has(expr.name)) {
22782
+ if (localDefinitions.has(expr.name)) {
22783
+ return new ReadVariableExpr(localDefinitions.get(expr.name));
22784
+ }
22785
+ else if (scope.has(expr.name)) {
22764
22786
  // This was a defined variable in the current scope.
22765
22787
  return new ReadVariableExpr(scope.get(expr.name));
22766
22788
  }
@@ -23971,6 +23993,7 @@ function generateLocalLetReferences(job) {
23971
23993
  kind: SemanticVariableKind.Identifier,
23972
23994
  name: null,
23973
23995
  identifier: op.declaredName,
23996
+ local: true,
23974
23997
  };
23975
23998
  OpList.replace(op, createVariableOp(job.allocateXrefId(), variable, new StoreLetExpr(op.target, op.value, op.sourceSpan), VariableFlags.None));
23976
23999
  }
@@ -29498,7 +29521,7 @@ function publishFacade(global) {
29498
29521
  * @description
29499
29522
  * Entry point for all public APIs of the compiler package.
29500
29523
  */
29501
- const VERSION = new Version('18.1.0-next.4');
29524
+ const VERSION = new Version('18.1.0-rc.0');
29502
29525
 
29503
29526
  class CompilerConfig {
29504
29527
  constructor({ defaultEncapsulation = ViewEncapsulation.Emulated, preserveWhitespaces, strictInjectionParameters, } = {}) {
@@ -31136,7 +31159,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
31136
31159
  function compileDeclareClassMetadata(metadata) {
31137
31160
  const definitionMap = new DefinitionMap();
31138
31161
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
31139
- definitionMap.set('version', literal('18.1.0-next.4'));
31162
+ definitionMap.set('version', literal('18.1.0-rc.0'));
31140
31163
  definitionMap.set('ngImport', importExpr(Identifiers.core));
31141
31164
  definitionMap.set('type', metadata.type);
31142
31165
  definitionMap.set('decorators', metadata.decorators);
@@ -31154,7 +31177,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
31154
31177
  callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? literal(null));
31155
31178
  callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? literal(null));
31156
31179
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
31157
- definitionMap.set('version', literal('18.1.0-next.4'));
31180
+ definitionMap.set('version', literal('18.1.0-rc.0'));
31158
31181
  definitionMap.set('ngImport', importExpr(Identifiers.core));
31159
31182
  definitionMap.set('type', metadata.type);
31160
31183
  definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
@@ -31249,7 +31272,7 @@ function createDirectiveDefinitionMap(meta) {
31249
31272
  const definitionMap = new DefinitionMap();
31250
31273
  const minVersion = getMinimumVersionForPartialOutput(meta);
31251
31274
  definitionMap.set('minVersion', literal(minVersion));
31252
- definitionMap.set('version', literal('18.1.0-next.4'));
31275
+ definitionMap.set('version', literal('18.1.0-rc.0'));
31253
31276
  // e.g. `type: MyDirective`
31254
31277
  definitionMap.set('type', meta.type.value);
31255
31278
  if (meta.isStandalone) {
@@ -31671,7 +31694,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';
31671
31694
  function compileDeclareFactoryFunction(meta) {
31672
31695
  const definitionMap = new DefinitionMap();
31673
31696
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
31674
- definitionMap.set('version', literal('18.1.0-next.4'));
31697
+ definitionMap.set('version', literal('18.1.0-rc.0'));
31675
31698
  definitionMap.set('ngImport', importExpr(Identifiers.core));
31676
31699
  definitionMap.set('type', meta.type.value);
31677
31700
  definitionMap.set('deps', compileDependencies(meta.deps));
@@ -31706,7 +31729,7 @@ function compileDeclareInjectableFromMetadata(meta) {
31706
31729
  function createInjectableDefinitionMap(meta) {
31707
31730
  const definitionMap = new DefinitionMap();
31708
31731
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
31709
- definitionMap.set('version', literal('18.1.0-next.4'));
31732
+ definitionMap.set('version', literal('18.1.0-rc.0'));
31710
31733
  definitionMap.set('ngImport', importExpr(Identifiers.core));
31711
31734
  definitionMap.set('type', meta.type.value);
31712
31735
  // Only generate providedIn property if it has a non-null value
@@ -31757,7 +31780,7 @@ function compileDeclareInjectorFromMetadata(meta) {
31757
31780
  function createInjectorDefinitionMap(meta) {
31758
31781
  const definitionMap = new DefinitionMap();
31759
31782
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
31760
- definitionMap.set('version', literal('18.1.0-next.4'));
31783
+ definitionMap.set('version', literal('18.1.0-rc.0'));
31761
31784
  definitionMap.set('ngImport', importExpr(Identifiers.core));
31762
31785
  definitionMap.set('type', meta.type.value);
31763
31786
  definitionMap.set('providers', meta.providers);
@@ -31790,7 +31813,7 @@ function createNgModuleDefinitionMap(meta) {
31790
31813
  throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
31791
31814
  }
31792
31815
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
31793
- definitionMap.set('version', literal('18.1.0-next.4'));
31816
+ definitionMap.set('version', literal('18.1.0-rc.0'));
31794
31817
  definitionMap.set('ngImport', importExpr(Identifiers.core));
31795
31818
  definitionMap.set('type', meta.type.value);
31796
31819
  // We only generate the keys in the metadata if the arrays contain values.
@@ -31841,7 +31864,7 @@ function compileDeclarePipeFromMetadata(meta) {
31841
31864
  function createPipeDefinitionMap(meta) {
31842
31865
  const definitionMap = new DefinitionMap();
31843
31866
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION));
31844
- definitionMap.set('version', literal('18.1.0-next.4'));
31867
+ definitionMap.set('version', literal('18.1.0-rc.0'));
31845
31868
  definitionMap.set('ngImport', importExpr(Identifiers.core));
31846
31869
  // e.g. `type: MyPipe`
31847
31870
  definitionMap.set('type', meta.type.value);