@golemio/pid 3.17.2-dev.1964072627 → 3.17.2-dev.1969248519

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.
@@ -37,45 +37,28 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
37
37
  var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  return (mod && mod.__esModule) ? mod : { "default": mod };
39
39
  };
40
+ var PositionsManager_1;
40
41
  Object.defineProperty(exports, "__esModule", { value: true });
41
42
  exports.PositionsManager = void 0;
42
43
  const DateTimeUtils_1 = require("../../../../../helpers/DateTimeUtils");
43
44
  const VPContainerToken_1 = require("../../../ioc/VPContainerToken");
44
- const moment_timezone_1 = __importDefault(require("@golemio/core/dist/shared/moment-timezone"));
45
45
  const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
46
46
  const turf = __importStar(require("@turf/turf"));
47
47
  const const_1 = require("../../../../../const");
48
48
  const RouteTypeEnums_1 = require("../../../../../helpers/RouteTypeEnums");
49
+ const BasePositionsManager_1 = require("./BasePositionsManager");
49
50
  const DPPUtils_1 = __importDefault(require("./DPPUtils"));
50
51
  const PositionHandlerEnum_1 = require("./PositionHandlerEnum");
51
52
  const ValidToCalculator_1 = require("./ValidToCalculator");
52
- const AnchorPointSegmenter_1 = require("./anchor-points/AnchorPointSegmenter");
53
53
  const ComputeDelayHelper_1 = __importDefault(require("./compute-positions/ComputeDelayHelper"));
54
- const PositionStateDelayManager_1 = require("./state-position/PositionStateDelayManager");
55
- const ONE_DAY_IN_SECONDS = 24 * 60 * 60;
56
- const ONE_SECOND_IN_MILLIS = 1000;
57
- let PositionsManager = exports.PositionsManager = class PositionsManager {
54
+ const PositionStateDelayManager = __importStar(require("./state-position/PositionStateDelayManager"));
55
+ let PositionsManager = exports.PositionsManager = PositionsManager_1 = class PositionsManager extends BasePositionsManager_1.BasePositionsManager {
58
56
  constructor(validToCalculator) {
57
+ super({ useEndTimestamp: true, allowCancelState: true });
59
58
  this.validToCalculator = validToCalculator;
60
- /**
61
- * Compute positions and return computed positions
62
- *
63
- * @param {ITripPositionsWithGTFS} tripPositions - Trip positions with shape anchors data
64
- * @returns {IProcessedPositions} - Returns computed/updated positions
65
- */
66
- this.computePositions = (tripPositions, schedule) => {
67
- const startTimestamp = tripPositions.start_timestamp.getTime();
68
- const startDayTimestamp = this.getStartDayTimestamp(startTimestamp, tripPositions.gtfsData.shapes_anchor_points[0].time_scheduled_seconds);
69
- const gtfsRouteType = tripPositions.gtfs_route_type;
70
- const context = this.getCurrentContext(tripPositions);
71
- const computedPositions = [];
72
- const endTimestamp = tripPositions.end_timestamp;
73
- return this.updatePositions({ tripPositions, startTimestamp, endTimestamp, startDayTimestamp, context, computedPositions, gtfsRouteType }, schedule);
74
- };
75
59
  /**
76
60
  * Takes position one by one, set proper handler for type of position, and do the process of position
77
61
  *
78
- * @param {number} i - Iteration
79
62
  * @param {IUpdatePositionsIteratorOptions} options - Initial options
80
63
  * @param {number} cb - Callback function of iterator
81
64
  * @returns {IProcessedPositions} - Returns computed/updated positions
@@ -83,12 +66,14 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
83
66
  this.updatePositions = (options, schedule) => {
84
67
  const { tripPositions, startDayTimestamp, startTimestamp, endTimestamp, context, computedPositions, gtfsRouteType } = options;
85
68
  let isBacktrackingDetected = false;
86
- for (let i = 0; i < tripPositions.positions.length; i++) {
87
- const position = tripPositions.positions[i];
69
+ let lastPositionStaysCanceled = false;
70
+ const positionsSource = tripPositions.positions;
71
+ positionsSource.sort(PositionsManager_1.sortByOriginTimestamp);
72
+ for (const position of positionsSource) {
88
73
  let positionToUpdate = null;
89
74
  // situations
90
75
  switch (this.setPositionUpdateHandler(position)) {
91
- case PositionHandlerEnum_1.PositionHandlerEnum.TRACKING:
76
+ case PositionHandlerEnum_1.PositionHandlerEnum.TRACKING: {
92
77
  const currentPosition = turf.point([position.lng, position.lat], {
93
78
  id: position.id,
94
79
  origin_time: position.origin_time,
@@ -103,48 +88,26 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
103
88
  }
104
89
  positionToUpdate.bearing = position.bearing ?? positionToUpdate.bearing;
105
90
  break;
106
- case PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING:
91
+ }
92
+ case PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING: {
107
93
  // if there is no previous positions with tracking status, set position as before_track
108
94
  const firstShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[0];
109
- if (context.lastPositionTracking === null &&
110
- (endTimestamp === null ||
111
- position.scheduled_timestamp === null ||
112
- endTimestamp > position.scheduled_timestamp)) {
95
+ const invisibleByDpp = DPPUtils_1.default.isInvisible(tripPositions.agency_name_scheduled, position.origin_timestamp, startTimestamp, [position.lng, position.lat], firstShapesAnchorPoint.coordinates, schedule, tripPositions.gtfs_trip_id, context.lastPositionTracking, position.is_tracked);
96
+ if (this.isFreshNewVehicleInSystem(context, position, endTimestamp)) {
113
97
  const firstStopTime = tripPositions.gtfsData.stop_times[0];
114
98
  // if there is propagated delay we can use it for new position
115
99
  const lastPositionDelayed = context.lastPositionBeforeTrackDelayed;
116
100
  // if there is no delay to duplicate and DPP trip is far from start then invisible
117
- const setAsInvisible = !lastPositionDelayed &&
118
- DPPUtils_1.default.isInvisible(tripPositions.agency_name_scheduled, position.origin_timestamp, startTimestamp, [position.lng, position.lat], firstShapesAnchorPoint.coordinates, schedule, tripPositions.gtfs_trip_id, context.lastPositionTracking, position.is_tracked);
119
- positionToUpdate = {
120
- id: position.id,
121
- next_stop_arrival_time: DateTimeUtils_1.DateTimeUtils.getStopDateTimeForDayStart(firstStopTime.arrival_time_seconds, startDayTimestamp),
122
- next_stop_departure_time: DateTimeUtils_1.DateTimeUtils.getStopDateTimeForDayStart(firstStopTime.departure_time_seconds, startDayTimestamp),
123
- next_stop_id: firstStopTime.stop_id,
124
- next_stop_sequence: firstStopTime.stop_sequence,
125
- next_stop_name: firstStopTime.stop.stop_name,
126
- shape_dist_traveled: firstStopTime.shape_dist_traveled,
127
- state_position: setAsInvisible ? const_1.StatePositionEnum.INVISIBLE : const_1.StatePositionEnum.BEFORE_TRACK,
128
- state_process: const_1.StateProcessEnum.PROCESSED,
129
- ...(firstStopTime.stop_headsign && {
130
- last_stop_headsign: firstStopTime.stop_headsign,
131
- }),
132
- };
133
- if (positionToUpdate.state_position === const_1.StatePositionEnum.BEFORE_TRACK) {
134
- positionToUpdate.delay = this.getDelayBeforeTrack(lastPositionDelayed?.delay ?? position.delay, firstStopTime.departure_time_seconds, position.origin_timestamp.getTime(), startDayTimestamp);
135
- }
101
+ const setAsInvisible = !lastPositionDelayed && invisibleByDpp;
102
+ positionToUpdate = this.defaultNonTrackingPositionToUpdate(position, firstStopTime, startDayTimestamp, setAsInvisible, lastPositionDelayed);
136
103
  }
137
104
  else {
138
105
  // if there is tracking 2 position with same origin_timestamp then this position is duplicate
139
- const statePosition = position.origin_timestamp.getTime() === context.lastPositionOriginTimestamp ||
140
- tripPositions.positions.findIndex((positionItem) => positionItem.origin_timestamp.getTime() === position.origin_timestamp.getTime() &&
141
- positionItem.is_tracked) >= 0
142
- ? const_1.StatePositionEnum.DUPLICATE
143
- : const_1.StatePositionEnum.AFTER_TRACK;
106
+ const statePosition = this.detectDuplicatePosition(position, context.lastPositionOriginTimestamp, positionsSource);
144
107
  const lastShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[tripPositions.gtfsData.shapes_anchor_points.length - 1];
145
108
  const lastStopTime = tripPositions.gtfsData.stop_times[tripPositions.gtfsData.stop_times.length - 1];
146
109
  // set as invisible if there are some AFTER_TRACK before
147
- const setAsInvisible = DPPUtils_1.default.isInvisible(tripPositions.agency_name_scheduled, position.origin_timestamp, startTimestamp, [position.lng, position.lat], firstShapesAnchorPoint.coordinates, schedule, tripPositions.gtfs_trip_id, context.lastPositionTracking, position.is_tracked) && statePosition === const_1.StatePositionEnum.AFTER_TRACK;
110
+ const setAsInvisible = invisibleByDpp && statePosition === const_1.StatePositionEnum.AFTER_TRACK;
148
111
  const lastShapesAnchorPointTimeScheduled = DateTimeUtils_1.DateTimeUtils.getStopDateTimeForDayStart(lastShapesAnchorPoint.time_scheduled_seconds, startDayTimestamp);
149
112
  positionToUpdate = {
150
113
  id: position.id,
@@ -163,7 +126,7 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
163
126
  // if state was changed in last 30 seconds, then it is AFTER_TRACK_DELAYED
164
127
  // with delay computation (copied from delay at stop)
165
128
  if (positionToUpdate.state_position === const_1.StatePositionEnum.AFTER_TRACK &&
166
- PositionStateDelayManager_1.PositionStateDelayManager.shouldPropagateAfterTrackDelay(context)) {
129
+ PositionStateDelayManager.PositionStateDelayManager.shouldPropagateAfterTrackDelay(context)) {
167
130
  positionToUpdate.state_position = const_1.StatePositionEnum.AFTER_TRACK_DELAYED;
168
131
  }
169
132
  positionToUpdate = ComputeDelayHelper_1.default.updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType);
@@ -172,7 +135,8 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
172
135
  }
173
136
  }
174
137
  break;
175
- case PositionHandlerEnum_1.PositionHandlerEnum.CANCELED:
138
+ }
139
+ case PositionHandlerEnum_1.PositionHandlerEnum.CANCELED: {
176
140
  positionToUpdate = {
177
141
  id: position.id,
178
142
  lat: position.lat ?? context.lastPositionLat ?? null,
@@ -180,70 +144,35 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
180
144
  state_position: const_1.StatePositionEnum.CANCELED,
181
145
  state_process: const_1.StateProcessEnum.PROCESSED,
182
146
  };
183
- if (positionToUpdate.lat === null || positionToUpdate.lng === null) {
184
- // Null island, to be filtered out on all APIs except for departure boards
185
- // where it is used to indicate a canceled trip
186
- positionToUpdate.lat = 0;
187
- positionToUpdate.lng = 0;
188
- }
147
+ positionToUpdate.lat = positionToUpdate.lat || 0;
148
+ positionToUpdate.lng = positionToUpdate.lng || 0;
189
149
  break;
190
- case PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING:
150
+ }
151
+ case PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING: {
191
152
  break;
192
- default:
153
+ }
154
+ default: {
193
155
  break;
194
- }
195
- // if not null push to update
196
- if (positionToUpdate) {
197
- positionToUpdate.is_tracked ??= position.is_tracked;
198
- positionToUpdate.valid_to = this.validToCalculator.getValidToAttribute(positionToUpdate, position, gtfsRouteType, tripPositions.gtfsData, startTimestamp);
199
- // backtracking detection so we can later invalidate old positions
200
- if (!isBacktrackingDetected && positionToUpdate.last_stop_sequence && context.lastStopSequence) {
201
- isBacktrackingDetected = positionToUpdate.last_stop_sequence < context.lastStopSequence;
202
156
  }
203
- computedPositions.push(positionToUpdate);
204
- }
205
- else {
206
- computedPositions.push(null);
207
- }
208
- // set last known BEFORE_TRACK_DELAYED position
209
- if (position.state_position === const_1.StatePositionEnum.BEFORE_TRACK_DELAYED) {
210
- context.lastPositionBeforeTrackDelayed = {
211
- delay: positionToUpdate?.delay ?? position.delay,
212
- origin_timestamp: positionToUpdate?.origin_timestamp ?? position.origin_timestamp,
213
- };
214
- }
215
- // set last position tracking (only for at_stop and on_track)
216
- if (positionToUpdate?.state_position === const_1.StatePositionEnum.AT_STOP ||
217
- positionToUpdate?.state_position === const_1.StatePositionEnum.ON_TRACK ||
218
- position.state_position === const_1.StatePositionEnum.AT_STOP ||
219
- position.state_position === const_1.StatePositionEnum.ON_TRACK) {
220
- context.lastPositionTracking = turf.point([position.lng, position.lat], {
221
- ...position,
222
- ...positionToUpdate,
223
- });
224
157
  }
158
+ const detection = this.detectBacktracking(position, context, positionToUpdate, gtfsRouteType, tripPositions, startTimestamp, isBacktrackingDetected);
159
+ positionToUpdate = detection.positionToUpdate;
160
+ isBacktrackingDetected = detection.isBacktrackingDetected;
161
+ computedPositions.push(positionToUpdate);
162
+ // sets last known BEFORE_TRACK_DELAYED position
163
+ // sets last position tracking (only for at_stop and on_track)
164
+ this.setLastPositionTracking(position, context, positionToUpdate);
225
165
  // set new first position at stop streak if this stop seqence is set and it is not same as before
226
- if (positionToUpdate
227
- ? positionToUpdate.this_stop_sequence &&
228
- context.atStopStreak.stop_sequence !== positionToUpdate.this_stop_sequence
229
- : position.this_stop_sequence && context.atStopStreak.stop_sequence !== position.this_stop_sequence) {
230
- context.atStopStreak.stop_sequence = positionToUpdate
231
- ? positionToUpdate.this_stop_sequence
232
- : position.this_stop_sequence;
233
- context.atStopStreak.firstPositionTimestamp = position.origin_timestamp.getTime();
234
- context.atStopStreak.firstPositionDelay = positionToUpdate ? positionToUpdate.delay : position.delay;
235
- }
166
+ this.setFirstUniqueStopSequence(positionToUpdate, context, position);
236
167
  // IF currently valid updated position / position was processed before
237
168
  // and it is NOT AT_STOP
238
169
  // then disrupt atStopStreak
239
- if (positionToUpdate &&
240
- positionToUpdate.state_position !== const_1.StatePositionEnum.MISMATCHED &&
241
- !positionToUpdate.this_stop_sequence) {
242
- context.atStopStreak.stop_sequence = null;
243
- }
244
- else if (!positionToUpdate && !position.this_stop_sequence) {
170
+ if (this.disruptAtStopStreak(position, positionToUpdate)) {
245
171
  context.atStopStreak.stop_sequence = null;
246
172
  }
173
+ // based on the fact that current position has some tcp_event
174
+ // allows the canceled boolean to be changed, otherwise use the prev.value
175
+ lastPositionStaysCanceled = this.hasTcpEventOrCancel(position) ?? lastPositionStaysCanceled;
247
176
  // duplicated or mismatched position should not be considered at all
248
177
  if (positionToUpdate &&
249
178
  positionToUpdate.state_position !== const_1.StatePositionEnum.DUPLICATE &&
@@ -252,7 +181,7 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
252
181
  context.lastPositionId = position.id;
253
182
  context.lastPositionLat = position.lat;
254
183
  context.lastPositionLng = position.lng;
255
- context.lastPositionCanceled = position.is_canceled;
184
+ context.lastPositionCanceled = lastPositionStaysCanceled || position.is_canceled;
256
185
  context.lastPositionOriginTimestamp = position.origin_timestamp.getTime();
257
186
  context.lastStopSequence = positionToUpdate.last_stop_sequence ?? context.lastStopSequence ?? null;
258
187
  if (context.lastPositionState !== positionToUpdate.state_position) {
@@ -268,97 +197,6 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
268
197
  isBacktrackingDetected: isBacktrackingDetected,
269
198
  };
270
199
  };
271
- this.getCurrentContext = (tripPositions) => {
272
- const context = tripPositions.last_position_context ?? {
273
- atStopStreak: {
274
- stop_sequence: null,
275
- firstPositionTimestamp: null,
276
- firstPositionDelay: null,
277
- },
278
- lastPositionLastStop: {
279
- id: null,
280
- sequence: null,
281
- arrival_time: null,
282
- arrival_delay: null,
283
- departure_time: null,
284
- departure_delay: null,
285
- },
286
- lastPositionDelay: null,
287
- lastPositionId: null,
288
- lastPositionLat: null,
289
- lastPositionLng: null,
290
- lastPositionOriginTimestamp: null,
291
- lastPositionTracking: null,
292
- lastPositionCanceled: null,
293
- lastPositionBeforeTrackDelayed: null,
294
- lastPositionState: null,
295
- lastStopSequence: null,
296
- lastPositionStateChange: null,
297
- tripId: tripPositions.id,
298
- };
299
- return context;
300
- };
301
- /**
302
- * Decide how to process input position data
303
- *
304
- * @param {IVPTripsPositionAttributes} position - Input vehiclepositions_positions row data
305
- * @returns {PositionHandlerEnum} - Returns action handler enum
306
- */
307
- this.setPositionUpdateHandler = (position) => {
308
- if (position.state_process === const_1.StateProcessEnum.PROCESSED || position.state_process === const_1.StateProcessEnum.INVALIDATED)
309
- return PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING;
310
- else if (position.is_canceled)
311
- return PositionHandlerEnum_1.PositionHandlerEnum.CANCELED;
312
- else if (position.is_tracked)
313
- return PositionHandlerEnum_1.PositionHandlerEnum.TRACKING;
314
- else
315
- return PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING;
316
- };
317
- /**
318
- * Returns estimate of point on shape, where the trip should be with appropriate delay
319
- *
320
- * @param {IShapeAnchorPoint[]} tripShapePoints - Precalculated trip shape equidistant points with scheduled times
321
- * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Current position of trip
322
- * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
323
- * @param {number} startDayTimestamp - Unix timestamp of midnight before trip starts
324
- * @returns {IPositionToUpdate} - Position object to update
325
- */
326
- this.getEstimatedPoint = (tripGtfsData, currentPosition, context, startDayTimestamp, gtfsRouteType) => {
327
- const anchorPointSegmenter = new AnchorPointSegmenter_1.AnchorPointSegmenter(tripGtfsData.shapes_anchor_points, currentPosition);
328
- const defaultStatePosition = const_1.StatePositionEnum.OFF_TRACK;
329
- // Initial value
330
- let estimatedPoint = {
331
- id: currentPosition.properties.id,
332
- state_position: defaultStatePosition,
333
- state_process: const_1.StateProcessEnum.PROCESSED,
334
- tcp_event: currentPosition.properties.tcp_event,
335
- valid_to: this.validToCalculator.getDefaultValidToAttribute(currentPosition.properties.origin_timestamp),
336
- ...(context &&
337
- context.lastPositionTracking?.properties.last_stop_sequence && {
338
- shape_dist_traveled: context.lastPositionTracking?.properties.shape_dist_traveled,
339
- last_stop_arrival_time: context.lastPositionTracking?.properties.last_stop_arrival_time
340
- ? new Date(context.lastPositionTracking?.properties.last_stop_arrival_time)
341
- : undefined,
342
- last_stop_departure_time: context.lastPositionTracking?.properties.last_stop_departure_time
343
- ? new Date(context.lastPositionTracking?.properties.last_stop_departure_time)
344
- : undefined,
345
- last_stop_sequence: context.lastPositionTracking?.properties.last_stop_sequence,
346
- last_stop_id: context.lastPositionTracking?.properties.last_stop_id,
347
- }),
348
- };
349
- let lastStopSequence = null;
350
- if (context?.lastPositionState === const_1.StatePositionEnum.BEFORE_TRACK) {
351
- lastStopSequence = 1;
352
- }
353
- else if (context?.lastPositionTracking) {
354
- lastStopSequence = context.lastPositionTracking.properties.last_stop_sequence;
355
- }
356
- const closesPoint = anchorPointSegmenter.getClosesPoint(lastStopSequence);
357
- if (!closesPoint) {
358
- return estimatedPoint;
359
- }
360
- return this.getClosestPoint(currentPosition, context, startDayTimestamp, closesPoint, tripGtfsData, gtfsRouteType);
361
- };
362
200
  /**
363
201
  * Picks only one closest point for multiple possible points based on delay of last position and stop times
364
202
  *
@@ -421,7 +259,7 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
421
259
  }
422
260
  if (isBusOrTram && this.isAfterTrack(lastStopSequence, lastTripShapePoint)) {
423
261
  statePosition = const_1.StatePositionEnum.AFTER_TRACK;
424
- if (PositionStateDelayManager_1.PositionStateDelayManager.shouldPropagateAfterTrackDelay(context)) {
262
+ if (PositionStateDelayManager.PositionStateDelayManager.shouldPropagateAfterTrackDelay(context)) {
425
263
  statePosition = const_1.StatePositionEnum.AFTER_TRACK_DELAYED;
426
264
  }
427
265
  else {
@@ -472,84 +310,20 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
472
310
  };
473
311
  return estimatedPoint;
474
312
  };
475
- /**
476
- * Corrects time delay at stop with dwelling time
477
- *
478
- * @param {number} timeDelay - Initial computed delay in seconds, can be negative for trip ahead
479
- * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
480
- * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
481
- * @param {IShapeAnchorPoint} thisClosestPoint - Closest point of shape anchors
482
- * @param { departureTime: number; arrivalTime: number } stopTimes - departure and arrival stop times in seconds
483
- * @returns {number} - Result delay in seconds, can be negative for trip ahead
484
- */
485
- this.getCorrectedTimeDelay = (timeDelay, context, currentPosition, thisStopSequence, stopTimes) => {
486
- // compute dwell time in stop, most common is zero
487
- const stopDwellTimeSeconds = stopTimes.departureTime - stopTimes.arrivalTime;
488
- // if dwell time is sheduled as zero, return initial computed delay
489
- if (stopDwellTimeSeconds <= 0) {
490
- return timeDelay;
491
- }
492
- // if last position was not in this same stop or there is no last position at all
493
- if (!context || context.atStopStreak.stop_sequence !== thisStopSequence) {
494
- // timeDelay >= 0 trip is DELAYED
495
- // we presume it will lower delay by shortening its scheduled dwell time,
496
- // cant go under zero of course, trip should not go ahead
497
- // else trip is AHeAD
498
- // left computed delay as it was
499
- return timeDelay >= 0 ? Math.max(timeDelay - stopDwellTimeSeconds, 0) : timeDelay;
500
- }
501
- // we presume that first position at same stop is real arrival time
502
- if (context.atStopStreak.firstPositionDelay >= 0) {
503
- // trip was DELAYED before
504
- // we presume it will lower delay by shortening its scheduled dwell time,
505
- // cant go under zero of course, trip should not go ahead
506
- return Math.max(timeDelay - stopDwellTimeSeconds, 0);
507
- }
508
- // trip was AHEAD before
509
- // real dwell time so far
510
- const realDwellTimeSeconds = Math.round((currentPosition.properties.origin_timestamp.getTime() - context.atStopStreak.firstPositionTimestamp) / 1000);
511
- // if real dwell is longer than scheduled, then add to negative delay time
512
- return context.atStopStreak.firstPositionDelay + Math.max(realDwellTimeSeconds - stopDwellTimeSeconds, 0);
513
- };
514
- /**
515
- * Compute UTC timestamp of start of day when trip starts
516
- *
517
- * @param {number} startTimestamp - Unix timestamp of start of the trip
518
- * @param {number} firstStopTimeScheduledSeconds - Number of seconds from midnight of first stop departure
519
- * @returns {number} - Returns unix timestamp in milliseconds.
520
- */
521
- this.getStartDayTimestamp = (startTimestamp, firstStopTimeScheduledSeconds) => {
522
- let startDayTimestamp = moment_timezone_1.default.utc(startTimestamp).tz("Europe/Prague").startOf("day");
523
- const stopTimeDayOverflow = Math.floor(firstStopTimeScheduledSeconds / ONE_DAY_IN_SECONDS);
524
- // if trip has 24+ stop times set real startDay to yesterday
525
- if (stopTimeDayOverflow > 0) {
526
- startDayTimestamp.subtract(1, "day");
527
- }
528
- return startDayTimestamp.valueOf();
529
- };
530
313
  }
531
- /**
532
- * Get delay in seconds for positions before track to ensure correct delay propagation
533
- *
534
- * @param lastPositionDelay The last position delay in seconds
535
- * @param firstStopDepartureTime The first stop departure time in seconds. The time is measured from "noon minus 12h" of the
536
- * service day (effectively midnight except for days on which daylight savings time changes occur). For times occurring after
537
- * midnight on the service day, enter the time as a value greater than 24:00:00 in seconds. See also
538
- * <https://gtfs.org/schedule/reference/#:~:text=A%20phone%20number.-,Time,-%2D%20Time%20in%20the>.
539
- * @param positionOriginUnixTimestamp The Unix Epoch timestamp of the current position, in milliseconds
540
- * @param startDayUnixTimestamp The Unix Epoch timestamp of the start of the service day, in milliseconds
541
- */
542
- getDelayBeforeTrack(lastPositionDelay, firstStopDepartureTime, positionOriginUnixTimestamp, startDayUnixTimestamp) {
543
- if (typeof lastPositionDelay !== "number") {
544
- return null;
314
+ detectBacktracking(position, context, positionToUpdate, gtfsRouteType, tripPositions, startTimestamp, isBacktrackingDetected) {
315
+ if (positionToUpdate) {
316
+ positionToUpdate.is_tracked ??= position.is_tracked;
317
+ positionToUpdate.valid_to = this.validToCalculator.getValidToAttribute(positionToUpdate, position, gtfsRouteType, tripPositions.gtfsData, startTimestamp);
318
+ // backtracking detection so we can later invalidate old positions
319
+ if (!isBacktrackingDetected && positionToUpdate.last_stop_sequence && context.lastStopSequence) {
320
+ isBacktrackingDetected = positionToUpdate.last_stop_sequence < context.lastStopSequence;
321
+ }
322
+ return { positionToUpdate, isBacktrackingDetected };
323
+ }
324
+ else {
325
+ return { positionToUpdate: null, isBacktrackingDetected };
545
326
  }
546
- const startDayMoment = moment_timezone_1.default.utc(startDayUnixTimestamp).tz(DateTimeUtils_1.DateTimeUtils.TIMEZONE);
547
- startDayMoment.hours(12).minutes(0).seconds(0).milliseconds(0);
548
- startDayMoment.subtract(12, "hours");
549
- startDayMoment.add(firstStopDepartureTime, "seconds");
550
- const departureTimeInSeconds = Math.floor(startDayMoment.toDate().valueOf() / ONE_SECOND_IN_MILLIS);
551
- const positionOriginTimeInSeconds = Math.floor(positionOriginUnixTimestamp / ONE_SECOND_IN_MILLIS);
552
- return Math.max(lastPositionDelay, positionOriginTimeInSeconds - departureTimeInSeconds);
553
327
  }
554
328
  getStateAndStopSequences(gtfsRouteType, thisClosestPoint, positionProperties, context) {
555
329
  let statePosition = thisClosestPoint.this_stop_sequence ? const_1.StatePositionEnum.AT_STOP : const_1.StatePositionEnum.ON_TRACK;
@@ -591,12 +365,25 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
591
365
  nextStopSequence,
592
366
  };
593
367
  }
368
+ hasTcpEventOrCancel(position) {
369
+ const tcpEvent = position.tcp_event;
370
+ if (tcpEvent === const_1.TCPEventEnum.TERMINATED) {
371
+ return true;
372
+ }
373
+ else if (tcpEvent === const_1.TCPEventEnum.ARRIVAL_ANNOUNCED || tcpEvent === const_1.TCPEventEnum.DEPARTURED) {
374
+ return false;
375
+ }
376
+ else if (tcpEvent === const_1.RegionalBusEventEnum.DEPARTURED) {
377
+ return false;
378
+ }
379
+ return null;
380
+ }
594
381
  isAfterTrack(lastStopSequence, lastTripShapePoint) {
595
382
  // Trip is terminated OR the vehicle is close to/in the terminus
596
383
  return lastStopSequence >= lastTripShapePoint.last_stop_sequence;
597
384
  }
598
385
  };
599
- exports.PositionsManager = PositionsManager = __decorate([
386
+ exports.PositionsManager = PositionsManager = PositionsManager_1 = __decorate([
600
387
  (0, tsyringe_1.injectable)(),
601
388
  __param(0, (0, tsyringe_1.inject)(VPContainerToken_1.VPContainerToken.ValidToCalculator)),
602
389
  __metadata("design:paramtypes", [ValidToCalculator_1.ValidToCalculator])
@@ -1 +1 @@
1
- {"version":3,"file":"PositionsManager.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wEAAuD;AACvD,oEAA8E;AAI9E,gGAA+D;AAC/D,iEAAwE;AACxE,iDAAmC;AAEnC,gDAA8E;AAC9E,0EAA+D;AAU/D,0DAAkC;AAClC,+DAA4D;AAC5D,2DAAwD;AACxD,+EAA4E;AAC5E,gGAAwE;AAExE,0FAAuF;AAEvF,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACxC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAG3B,IAAM,gBAAgB,8BAAtB,MAAM,gBAAgB;IACzB,YAAwD,iBAA4C;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAEpG;;;;;WAKG;QACI,qBAAgB,GAAG,CACtB,aAAqC,EACrC,QAAoC,EACjB,EAAE;YACrB,MAAM,cAAc,GAAG,aAAa,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;YAC/D,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAC/C,cAAc,EACd,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,sBAAsB,CACxE,CAAC;YAEF,MAAM,aAAa,GAAG,aAAa,CAAC,eAAe,CAAC;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YACtD,MAAM,iBAAiB,GAAwB,EAAE,CAAC;YAElD,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC;YAEjD,OAAO,IAAI,CAAC,eAAe,CACvB,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,EAC7G,QAAQ,CACX,CAAC;QACN,CAAC,CAAC;QAEF;;;;;;;WAOG;QACI,oBAAe,GAAG,CACrB,OAAwC,EACxC,QAAoC,EACjB,EAAE;YACrB,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAC/G,OAAO,CAAC;YAEZ,IAAI,sBAAsB,GAAG,KAAK,CAAC;YAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrD,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,gBAAgB,GAA6B,IAAI,CAAC;gBAEtD,aAAa;gBACb,QAAQ,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE;oBAC7C,KAAK,yCAAmB,CAAC,QAAQ;wBAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;4BAC7D,EAAE,EAAE,QAAQ,CAAC,EAAE;4BACf,WAAW,EAAE,QAAQ,CAAC,WAAW;4BACjC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;4BAC3C,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;4BACjD,YAAY,EAAE,QAAQ,CAAC,YAAY;4BACnC,SAAS,EAAE,QAAQ,CAAC,SAAS;yBACF,CAAC,CAAC;wBAEjC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CACrC,aAAa,CAAC,QAAQ,EACtB,eAAe,EACf,OAAO,EACP,iBAAiB,EACjB,aAAa,CAAC,eAAe,CAChC,CAAC;wBAEF,IAAI,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,UAAU,EAAE;4BAClE,gBAAgB,GAAG,4BAAkB,CAAC,sBAAsB,CACxD,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,aAAa,CAChB,CAAC;yBACL;wBAED,gBAAgB,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC;wBACxE,MAAM;oBACV,KAAK,yCAAmB,CAAC,YAAY;wBACjC,uFAAuF;wBACvF,MAAM,sBAAsB,GAAsB,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;wBACjG,IACI,OAAO,CAAC,oBAAoB,KAAK,IAAI;4BACrC,CAAC,YAAY,KAAK,IAAI;gCAClB,QAAQ,CAAC,mBAAmB,KAAK,IAAI;gCACrC,YAAY,GAAG,QAAQ,CAAC,mBAAmB,CAAC,EAClD;4BACE,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;4BAC3D,8DAA8D;4BAC9D,MAAM,mBAAmB,GAAG,OAAO,CAAC,8BAA8B,CAAC;4BACnE,kFAAkF;4BAClF,MAAM,cAAc,GAChB,CAAC,mBAAmB;gCACpB,kBAAQ,CAAC,WAAW,CAChB,aAAa,CAAC,qBAAqB,EACnC,QAAQ,CAAC,gBAAgB,EACzB,cAAc,EACd,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,EAC5B,sBAAsB,CAAC,WAAW,EAClC,QAAQ,EACR,aAAa,CAAC,YAAY,EAC1B,OAAO,CAAC,oBAAoB,EAC5B,QAAQ,CAAC,UAAU,CACtB,CAAC;4BAEN,gBAAgB,GAAG;gCACf,EAAE,EAAE,QAAQ,CAAC,EAAE;gCACf,sBAAsB,EAAE,6BAAa,CAAC,0BAA0B,CAC5D,aAAa,CAAC,oBAAoB,EAClC,iBAAiB,CACpB;gCACD,wBAAwB,EAAE,6BAAa,CAAC,0BAA0B,CAC9D,aAAa,CAAC,sBAAsB,EACpC,iBAAiB,CACpB;gCACD,YAAY,EAAE,aAAa,CAAC,OAAO;gCACnC,kBAAkB,EAAE,aAAa,CAAC,aAAa;gCAC/C,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS;gCAC5C,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;gCACtD,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,yBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAiB,CAAC,YAAY;gCAC7F,aAAa,EAAE,wBAAgB,CAAC,SAAS;gCACzC,GAAG,CAAC,aAAa,CAAC,aAAa,IAAI;oCAC/B,kBAAkB,EAAE,aAAa,CAAC,aAAa;iCAClD,CAAC;6BACL,CAAC;4BAEF,IAAI,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,YAAY,EAAE;gCACpE,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAC7C,mBAAmB,EAAE,KAAK,IAAI,QAAQ,CAAC,KAAK,EAC5C,aAAa,CAAC,sBAAsB,EACpC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,EACnC,iBAAiB,CACpB,CAAC;6BACL;yBACJ;6BAAM;4BACH,6FAA6F;4BAC7F,MAAM,aAAa,GACf,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,2BAA2B;gCAC3E,aAAa,CAAC,SAAS,CAAC,SAAS,CAC7B,CAAC,YAAY,EAAE,EAAE,CACb,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE;oCAC/E,YAAY,CAAC,UAAU,CAC9B,IAAI,CAAC;gCACF,CAAC,CAAC,yBAAiB,CAAC,SAAS;gCAC7B,CAAC,CAAC,yBAAiB,CAAC,WAAW,CAAC;4BACxC,MAAM,qBAAqB,GACvB,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;4BACxG,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;4BACrG,wDAAwD;4BACxD,MAAM,cAAc,GAChB,kBAAQ,CAAC,WAAW,CAChB,aAAa,CAAC,qBAAqB,EACnC,QAAQ,CAAC,gBAAgB,EACzB,cAAc,EACd,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,EAC5B,sBAAsB,CAAC,WAAW,EAClC,QAAQ,EACR,aAAa,CAAC,YAAY,EAC1B,OAAO,CAAC,oBAAoB,EAC5B,QAAQ,CAAC,UAAU,CACtB,IAAI,aAAa,KAAK,yBAAiB,CAAC,WAAW,CAAC;4BACzD,MAAM,kCAAkC,GAAG,6BAAa,CAAC,0BAA0B,CAC/E,qBAAqB,CAAC,sBAAsB,EAC5C,iBAAiB,CACpB,CAAC;4BACF,gBAAgB,GAAG;gCACf,EAAE,EAAE,QAAQ,CAAC,EAAE;gCACf,sBAAsB,EAAE,kCAAkC;gCAC1D,wBAAwB,EAAE,kCAAkC;gCAC5D,YAAY,EAAE,YAAY,CAAC,OAAO;gCAClC,kBAAkB,EAAE,qBAAqB,CAAC,kBAAkB;gCAC5D,mBAAmB,EAAE,qBAAqB,CAAC,mBAAmB;gCAC9D,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,yBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;gCAC5E,aAAa,EAAE,wBAAgB,CAAC,SAAS;gCACzC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI;gCAC7B,GAAG,CAAC,YAAY,CAAC,aAAa,IAAI;oCAC9B,kBAAkB,EAAE,YAAY,CAAC,aAAa;iCACjD,CAAC;6BACL,CAAC;4BAEF,0EAA0E;4BAC1E,qDAAqD;4BACrD,IACI,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,WAAW;gCACjE,qDAAyB,CAAC,8BAA8B,CAAC,OAAO,CAAC,EACnE;gCACE,gBAAgB,CAAC,cAAc,GAAG,yBAAiB,CAAC,mBAAmB,CAAC;6BAC3E;4BAED,gBAAgB,GAAG,4BAAkB,CAAC,sBAAsB,CACxD,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,aAAa,CAChB,CAAC;4BAEF,IAAI,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,mBAAmB,EAAE;gCAC3E,gBAAgB,CAAC,KAAK,GAAG,gBAAgB,CAAC,kBAAkB,IAAI,IAAI,CAAC;6BACxE;yBACJ;wBACD,MAAM;oBACV,KAAK,yCAAmB,CAAC,QAAQ;wBAC7B,gBAAgB,GAAG;4BACf,EAAE,EAAE,QAAQ,CAAC,EAAE;4BACf,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,eAAe,IAAI,IAAI;4BACpD,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,eAAe,IAAI,IAAI;4BACpD,cAAc,EAAE,yBAAiB,CAAC,QAAQ;4BAC1C,aAAa,EAAE,wBAAgB,CAAC,SAAS;yBAC5C,CAAC;wBACF,IAAI,gBAAgB,CAAC,GAAG,KAAK,IAAI,IAAI,gBAAgB,CAAC,GAAG,KAAK,IAAI,EAAE;4BAChE,0EAA0E;4BAC1E,+CAA+C;4BAC/C,gBAAgB,CAAC,GAAG,GAAG,CAAC,CAAC;4BACzB,gBAAgB,CAAC,GAAG,GAAG,CAAC,CAAC;yBAC5B;wBACD,MAAM;oBACV,KAAK,yCAAmB,CAAC,UAAU;wBAC/B,MAAM;oBACV;wBACI,MAAM;iBACb;gBAED,6BAA6B;gBAC7B,IAAI,gBAAgB,EAAE;oBAClB,gBAAgB,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,CAAC;oBACpD,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAClE,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,aAAa,CAAC,QAAQ,EACtB,cAAc,CACjB,CAAC;oBAEF,kEAAkE;oBAClE,IAAI,CAAC,sBAAsB,IAAI,gBAAgB,CAAC,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,EAAE;wBAC5F,sBAAsB,GAAG,gBAAgB,CAAC,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;qBAC3F;oBAED,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;iBAC5C;qBAAM;oBACH,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAChC;gBAED,+CAA+C;gBAC/C,IAAI,QAAQ,CAAC,cAAc,KAAK,yBAAiB,CAAC,oBAAoB,EAAE;oBACpE,OAAO,CAAC,8BAA8B,GAAG;wBACrC,KAAK,EAAE,gBAAgB,EAAE,KAAK,IAAI,QAAQ,CAAC,KAAK;wBAChD,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,IAAI,QAAQ,CAAC,gBAAgB;qBACpF,CAAC;iBACL;gBACD,6DAA6D;gBAC7D,IACI,gBAAgB,EAAE,cAAc,KAAK,yBAAiB,CAAC,OAAO;oBAC9D,gBAAgB,EAAE,cAAc,KAAK,yBAAiB,CAAC,QAAQ;oBAC/D,QAAQ,CAAC,cAAc,KAAK,yBAAiB,CAAC,OAAO;oBACrD,QAAQ,CAAC,cAAc,KAAK,yBAAiB,CAAC,QAAQ,EACxD;oBACE,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;wBACpE,GAAG,QAAQ;wBACX,GAAG,gBAAgB;qBACQ,CAAC,CAAC;iBACpC;gBAED,iGAAiG;gBACjG,IACI,gBAAgB;oBACZ,CAAC,CAAC,gBAAgB,CAAC,kBAAkB;wBACnC,OAAO,CAAC,YAAY,CAAC,aAAa,KAAK,gBAAgB,CAAC,kBAAkB;oBAC5E,CAAC,CAAC,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC,aAAa,KAAK,QAAQ,CAAC,kBAAkB,EACzG;oBACE,OAAO,CAAC,YAAY,CAAC,aAAa,GAAG,gBAAgB;wBACjD,CAAC,CAAC,gBAAgB,CAAC,kBAAmB;wBACtC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;oBAClC,OAAO,CAAC,YAAY,CAAC,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;oBAClF,OAAO,CAAC,YAAY,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;iBACzG;gBACD,sEAAsE;gBACtE,wBAAwB;gBACxB,4BAA4B;gBAC5B,IACI,gBAAgB;oBAChB,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,UAAU;oBAChE,CAAC,gBAAgB,CAAC,kBAAkB,EACtC;oBACE,OAAO,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC;iBAC7C;qBAAM,IAAI,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;oBAC1D,OAAO,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC;iBAC7C;gBAED,oEAAoE;gBACpE,IACI,gBAAgB;oBAChB,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,SAAS;oBAC/D,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,SAAS;oBAC/D,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,UAAU,EAClE;oBACE,OAAO,CAAC,cAAc,GAAG,QAAQ,CAAC,EAAE,CAAC;oBACrC,OAAO,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC;oBACvC,OAAO,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC;oBACvC,OAAO,CAAC,oBAAoB,GAAG,QAAQ,CAAC,WAAW,CAAC;oBACpD,OAAO,CAAC,2BAA2B,GAAG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;oBAC1E,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;oBAEnG,IAAI,OAAO,CAAC,iBAAiB,KAAK,gBAAgB,CAAC,cAAc,EAAE;wBAC/D,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,cAAc,CAAC;wBAC5D,OAAO,CAAC,uBAAuB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;qBAC9D;oBAED,4BAAkB,CAAC,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;iBACxF;aACJ;YAED,OAAO;gBACH,OAAO;gBACP,SAAS,EAAE,iBAAiB;gBAC5B,sBAAsB,EAAE,sBAAsB;aACjD,CAAC;QACN,CAAC,CAAC;QAEM,sBAAiB,GAAG,CAAC,aAAqC,EAA+B,EAAE;YAC/F,MAAM,OAAO,GAAgC,aAAa,CAAC,qBAAqB,IAAI;gBAChF,YAAY,EAAE;oBACV,aAAa,EAAE,IAAI;oBACnB,sBAAsB,EAAE,IAAI;oBAC5B,kBAAkB,EAAE,IAAI;iBAC3B;gBACD,oBAAoB,EAAE;oBAClB,EAAE,EAAE,IAAI;oBACR,QAAQ,EAAE,IAAI;oBACd,YAAY,EAAE,IAAI;oBAClB,aAAa,EAAE,IAAI;oBACnB,cAAc,EAAE,IAAI;oBACpB,eAAe,EAAE,IAAI;iBACxB;gBACD,iBAAiB,EAAE,IAAI;gBACvB,cAAc,EAAE,IAAI;gBACpB,eAAe,EAAE,IAAI;gBACrB,eAAe,EAAE,IAAI;gBACrB,2BAA2B,EAAE,IAAI;gBACjC,oBAAoB,EAAE,IAAI;gBAC1B,oBAAoB,EAAE,IAAI;gBAC1B,8BAA8B,EAAE,IAAI;gBACpC,iBAAiB,EAAE,IAAI;gBACvB,gBAAgB,EAAE,IAAI;gBACtB,uBAAuB,EAAE,IAAI;gBAC7B,MAAM,EAAE,aAAa,CAAC,EAAE;aAC3B,CAAC;YAEF,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC;QAEF;;;;;WAKG;QACK,6BAAwB,GAAG,CAAC,QAAoC,EAAuB,EAAE;YAC7F,IAAI,QAAQ,CAAC,aAAa,KAAK,wBAAgB,CAAC,SAAS,IAAI,QAAQ,CAAC,aAAa,KAAK,wBAAgB,CAAC,WAAW;gBAChH,OAAO,yCAAmB,CAAC,UAAU,CAAC;iBACrC,IAAI,QAAQ,CAAC,WAAW;gBAAE,OAAO,yCAAmB,CAAC,QAAQ,CAAC;iBAC9D,IAAI,QAAQ,CAAC,UAAU;gBAAE,OAAO,yCAAmB,CAAC,QAAQ,CAAC;;gBAC7D,OAAO,yCAAmB,CAAC,YAAY,CAAC;QACjD,CAAC,CAAC;QAEF;;;;;;;;WAQG;QACK,sBAAiB,GAAG,CACxB,YAA8B,EAC9B,eAA2D,EAC3D,OAA2C,EAC3C,iBAAyB,EACzB,aAAgC,EACf,EAAE;YACnB,MAAM,oBAAoB,GAAG,IAAI,2CAAoB,CAAC,YAAY,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;YAC1G,MAAM,oBAAoB,GAAG,yBAAiB,CAAC,SAAS,CAAC;YAEzD,gBAAgB;YAChB,IAAI,cAAc,GAAsB;gBACpC,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE;gBACjC,cAAc,EAAE,oBAAoB;gBACpC,aAAa,EAAE,wBAAgB,CAAC,SAAS;gBACzC,SAAS,EAAE,eAAe,CAAC,UAAU,CAAC,SAAS;gBAC/C,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,eAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBACxG,GAAG,CAAC,OAAO;oBACP,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,kBAAkB,IAAI;oBAC3D,mBAAmB,EAAE,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,mBAAoB;oBAClF,sBAAsB,EAAE,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,sBAAsB;wBACnF,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,sBAAsB,CAAC;wBAC3E,CAAC,CAAC,SAAS;oBACf,wBAAwB,EAAE,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,wBAAwB;wBACvF,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,wBAAwB,CAAC;wBAC7E,CAAC,CAAC,SAAS;oBACf,kBAAkB,EAAE,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,kBAAmB;oBAChF,YAAY,EAAE,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,YAAa;iBACvE,CAAC;aACT,CAAC;YAEF,IAAI,gBAAgB,GAAkB,IAAI,CAAC;YAC3C,IAAI,OAAO,EAAE,iBAAiB,KAAK,yBAAiB,CAAC,YAAY,EAAE;gBAC/D,gBAAgB,GAAG,CAAC,CAAC;aACxB;iBAAM,IAAI,OAAO,EAAE,oBAAoB,EAAE;gBACtC,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,kBAAkB,CAAC;aACjF;YAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YAC1E,IAAI,CAAC,WAAW,EAAE;gBACd,OAAO,cAAc,CAAC;aACzB;YAED,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QACvH,CAAC,CAAC;QAEF;;;;;;;;;WASG;QACK,oBAAe,GAAG,CACtB,eAA2D,EAC3D,OAA2C,EAC3C,iBAAyB,EACzB,gBAAmC,EACnC,YAA8B,EAC9B,aAAgC,EACf,EAAE;YACnB,6EAA6E;YAC7E,MAAM,eAAe,GAAG,YAAY,CAAC,oBAAoB,CAAC;YAC1D,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC;YAC9C,MAAM,mBAAmB,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,kBAAkB,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACvE,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,mBAAmB,CAAC;YACtE,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,CAAC;YAEhD,MAAM,sBAAsB,GAAG,6BAAa,CAAC,0BAA0B;YACnE,6CAA6C;YAC7C,gBAAgB,CAAC,kBAAkB;gBAC/B,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,oBAAoB;gBAC7E,CAAC,CAAC,gBAAgB,CAAC,sBAAsB,EAC7C,iBAAiB,CACpB,CAAC;YAEF,IAAI,kBAAkB,GAAkB,IAAI,CAAC,KAAK,CAC9C,CAAC,eAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,sBAAsB,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CACpG,CAAC;YAEF,MAAM,WAAW,GACb,aAAa,KAAK,kCAAiB,CAAC,GAAG;gBACvC,aAAa,KAAK,kCAAiB,CAAC,UAAU;gBAC9C,aAAa,KAAK,kCAAiB,CAAC,IAAI,CAAC;YAE7C,yFAAyF;YACzF,IACI,WAAW;gBACX,eAAe,CAAC,UAAU,CAAC,SAAS,KAAK,oBAAY,CAAC,iBAAiB;gBACvE,gBAAgB,CAAC,kBAAkB,KAAK,IAAI,EAC9C;gBACE,IAAI,gBAAgB,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE;oBAC7E,gBAAgB,GAAG,mBAAmB,CAAC;iBAC1C;qBAAM;oBACH,IAAI,qBAAqB,GAAG,gBAAgB,CAAC,KAAK,CAAC;oBACnD,OAAO,gBAAgB,CAAC,kBAAkB,KAAK,IAAI,IAAI,qBAAqB,GAAG,kBAAkB,CAAC,KAAK,EAAE;wBACrG,qBAAqB,EAAE,CAAC;wBACxB,gBAAgB,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAC;qBAC7D;iBACJ;aACJ;YAED,sCAAsC;YACtC,IAAI,gBAAgB,CAAC,kBAAkB,EAAE;gBACrC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;gBAC7D,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE;oBAC5G,aAAa,EAAE,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,sBAAsB;oBACzE,WAAW,EAAE,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,oBAAoB;iBACxE,CAAC,CAAC;gBAEH,gEAAgE;gBAChE,IAAI,gBAAgB,KAAK,mBAAmB,CAAC,kBAAkB,EAAE;oBAC7D,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;iBACxD;aACJ;YAED,IAAI,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,wBAAwB,CACvG,aAAa,EACb,gBAAgB,EAChB,eAAe,CAAC,UAAU,EAC1B,OAAO,CACV,CAAC;YAEF,2FAA2F;YAC3F,IACI,eAAe,CAAC,UAAU,CAAC,SAAS,KAAK,oBAAY,CAAC,UAAU;gBAChE,gBAAgB,KAAK,kBAAkB,CAAC,kBAAkB,EAC5D;gBACE,aAAa,GAAG,yBAAiB,CAAC,QAAQ,CAAC;aAC9C;YAED,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAE;gBACxE,aAAa,GAAG,yBAAiB,CAAC,WAAW,CAAC;gBAE9C,IAAI,qDAAyB,CAAC,8BAA8B,CAAC,OAAO,CAAC,EAAE;oBACnE,aAAa,GAAG,yBAAiB,CAAC,mBAAmB,CAAC;iBACzD;qBAAM;oBACH,mFAAmF;oBACnF,kBAAkB,GAAG,IAAI,CAAC;iBAC7B;gBAED,gBAAgB,GAAG,kBAAkB,CAAC,kBAAkB,CAAC;gBACzD,gBAAgB,GAAG,kBAAkB,CAAC,kBAAkB,CAAC;gBACzD,gBAAgB,GAAG,IAAI,CAAC;aAC3B;YAED,MAAM,SAAS,GAAG,aAAa,KAAK,yBAAiB,CAAC,OAAO,IAAI,aAAa,KAAK,yBAAiB,CAAC,QAAQ,CAAC;YAE9G,qBAAqB;YACrB,MAAM,cAAc,GAAG;gBACnB,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE;gBACjC,2EAA2E;gBAC3E,4EAA4E;gBAC5E,OAAO,EAAE,cAAc;gBACvB,mBAAmB,EAAE,wBAAwB;gBAC7C,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;gBACnF,YAAY,EAAE,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,OAAO;gBACzD,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;gBAC5F,cAAc,EAAE,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;gBAClE,kBAAkB,EAAE,gBAAgB;gBACpC,kBAAkB,EAAE,gBAAgB;gBACpC,sBAAsB,EAAE,gBAAgB;oBACpC,CAAC,CAAC,6BAAa,CAAC,0BAA0B,CACpC,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,oBAAoB,EACxD,iBAAiB,CACpB;oBACH,CAAC,CAAC,IAAI;gBACV,sBAAsB,EAAE,6BAAa,CAAC,0BAA0B,CAC5D,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,oBAAoB,EACxD,iBAAiB,CACpB;gBACD,wBAAwB,EAAE,gBAAgB;oBACtC,CAAC,CAAC,6BAAa,CAAC,0BAA0B,CACpC,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,sBAAsB,EAC1D,iBAAiB,CACpB;oBACH,CAAC,CAAC,IAAI;gBACV,wBAAwB,EAAE,6BAAa,CAAC,0BAA0B,CAC9D,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,sBAAsB,EAC1D,iBAAiB,CACpB;gBACD,KAAK,EAAE,kBAAkB;gBACzB,YAAY,EACR,CAAC,aAAa,KAAK,yBAAiB,CAAC,OAAO;oBACxC,gBAAgB;oBAChB,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;oBAChD,SAAS;gBACb,cAAc,EACV,CAAC,aAAa,KAAK,yBAAiB,CAAC,OAAO;oBACxC,gBAAgB;oBAChB,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;oBACvD,SAAS;gBACb,kBAAkB,EAAE,CAAC,aAAa,KAAK,yBAAiB,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,SAAS;gBAClG,kBAAkB,EAAE,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,SAAS;gBAClF,cAAc,EAAE,aAAa;gBAC7B,aAAa,EAAE,wBAAgB,CAAC,SAAS;gBACzC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,eAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBACxG,UAAU,EAAE,SAAS;aACxB,CAAC;YAEF,OAAO,cAAc,CAAC;QAC1B,CAAC,CAAC;QAEF;;;;;;;;;WASG;QACK,0BAAqB,GAAG,CAC5B,SAAiB,EACjB,OAA2C,EAC3C,eAA2D,EAC3D,gBAAwB,EACxB,SAAyD,EACnD,EAAE;YACR,kDAAkD;YAClD,MAAM,oBAAoB,GAAG,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC;YAC7E,mEAAmE;YACnE,IAAI,oBAAoB,IAAI,CAAC,EAAE;gBAC3B,OAAO,SAAS,CAAC;aACpB;YAED,iFAAiF;YACjF,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,aAAa,KAAK,gBAAgB,EAAE;gBACrE,iCAAiC;gBACjC,yEAAyE;gBACzE,yDAAyD;gBACzD,qBAAqB;gBACrB,gCAAgC;gBAChC,OAAO,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;aACrF;YAED,mEAAmE;YACnE,IAAI,OAAO,CAAC,YAAY,CAAC,kBAAmB,IAAI,CAAC,EAAE;gBAC/C,0BAA0B;gBAC1B,yEAAyE;gBACzE,yDAAyD;gBACzD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,oBAAoB,EAAE,CAAC,CAAC,CAAC;aACxD;YAED,wBAAwB;YACxB,yBAAyB;YACzB,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CACnC,CAAC,eAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,sBAAuB,CAAC,GAAG,IAAI,CAChH,CAAC;YAEF,0EAA0E;YAC1E,OAAO,OAAO,CAAC,YAAY,CAAC,kBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,GAAG,oBAAoB,EAAE,CAAC,CAAC,CAAC;QAC/G,CAAC,CAAC;QAgCF;;;;;;WAMG;QACK,yBAAoB,GAAG,CAAC,cAAsB,EAAE,6BAAqC,EAAU,EAAE;YACrG,IAAI,iBAAiB,GAAG,yBAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtF,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,GAAG,kBAAkB,CAAC,CAAC;YAC3F,4DAA4D;YAC5D,IAAI,mBAAmB,GAAG,CAAC,EAAE;gBACzB,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;aACxC;YACD,OAAO,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACvC,CAAC,CAAC;IA1qBqG,CAAC;IA6nBxG;;;;;;;;;;OAUG;IACK,mBAAmB,CACvB,iBAA4C,EAC5C,sBAA8B,EAC9B,2BAAmC,EACnC,qBAA6B;QAE7B,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;YACvC,OAAO,IAAI,CAAC;SACf;QAED,MAAM,cAAc,GAAG,yBAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,6BAAa,CAAC,QAAQ,CAAC,CAAC;QACpF,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/D,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACrC,cAAc,CAAC,GAAG,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,oBAAoB,CAAC,CAAC;QACpG,MAAM,2BAA2B,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,GAAG,oBAAoB,CAAC,CAAC;QACnG,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,2BAA2B,GAAG,sBAAsB,CAAC,CAAC;IAC7F,CAAC;IAmBO,wBAAwB,CAC5B,aAAgC,EAChC,gBAAmC,EACnC,kBAA8C,EAC9C,OAAyE;QAEzE,IAAI,aAAa,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,yBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAiB,CAAC,QAAQ,CAAC;QACjH,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;QAC3D,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;QAC3D,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;QAE3D,2EAA2E;QAC3E,IACI,aAAa,KAAK,kCAAiB,CAAC,KAAK;YACzC,kBAAkB,CAAC,SAAS,KAAK,oBAAY,CAAC,IAAI;YAClD,OAAO,EAAE,oBAAoB,EAC/B;YACE,MAAM,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC;YACnF,MAAM,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,kBAAkB,IAAI,CAAC,CAAC;YAEjG,4GAA4G;YAC5G,+DAA+D;YAC/D,kFAAkF;YAClF,2BAA2B;YAC3B,iEAAiE;YACjE,gFAAgF;YAChF,yBAAyB;YACzB,IAAI,wBAAwB,KAAK,oBAAY,CAAC,iBAAiB,IAAI,gBAAgB,GAAG,wBAAwB,EAAE;gBAC5G,aAAa,GAAG,yBAAiB,CAAC,UAAU,CAAC;aAChD;iBAAM,IAAI,wBAAwB,KAAK,oBAAY,CAAC,UAAU,IAAI,gBAAgB,EAAE;gBACjF,IAAI,gBAAgB,KAAK,wBAAwB,EAAE;oBAC/C,aAAa,GAAG,yBAAiB,CAAC,QAAQ,CAAC;iBAC9C;qBAAM,IAAI,gBAAgB,GAAG,wBAAwB,EAAE;oBACpD,aAAa,GAAG,yBAAiB,CAAC,UAAU,CAAC;iBAChD;aACJ;YAED,IAAI,aAAa,KAAK,yBAAiB,CAAC,UAAU,IAAI,aAAa,KAAK,yBAAiB,CAAC,QAAQ,EAAE;gBAChG,gBAAgB,GAAG,IAAI,CAAC;aAC3B;SACJ;QAED,OAAO;YACH,aAAa;YACb,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;SACnB,CAAC;IACN,CAAC;IAEO,YAAY,CAAC,gBAAwB,EAAE,kBAAqC;QAChF,gEAAgE;QAChE,OAAO,gBAAgB,IAAI,kBAAkB,CAAC,kBAAkB,CAAC;IACrE,CAAC;CACJ,CAAA;2BAnuBY,gBAAgB;IAD5B,IAAA,qBAAU,GAAE;IAEI,WAAA,IAAA,iBAAM,EAAC,mCAAgB,CAAC,iBAAiB,CAAC,CAAA;qCAA4B,qCAAiB;GAD3F,gBAAgB,CAmuB5B"}
1
+ {"version":3,"file":"PositionsManager.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wEAAuD;AACvD,oEAA8E;AAI9E,iEAAwE;AACxE,iDAAmC;AAEnC,gDAAoG;AACpG,0EAA+D;AAU/D,iEAA8D;AAC9D,0DAAkC;AAClC,+DAA4D;AAC5D,2DAAwD;AACxD,gGAAwE;AAExE,sGAAwF;AAGjF,IAAM,gBAAgB,mDAAtB,MAAM,gBAAiB,SAAQ,2CAAoB;IACtD,YAAwD,iBAA8C;QAClG,KAAK,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QADK,sBAAiB,GAAjB,iBAAiB,CAAmB;QAItG;;;;;;WAMG;QACI,oBAAe,GAAG,CACrB,OAAwC,EACxC,QAAoC,EACjB,EAAE;YACrB,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAC/G,OAAO,CAAC;YAEZ,IAAI,sBAAsB,GAAG,KAAK,CAAC;YACnC,IAAI,yBAAyB,GAAG,KAAK,CAAC;YAEtC,MAAM,eAAe,GAAiC,aAAa,CAAC,SAAS,CAAC;YAE9E,eAAe,CAAC,IAAI,CAAC,kBAAgB,CAAC,qBAAqB,CAAC,CAAC;YAE7D,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE;gBACpC,IAAI,gBAAgB,GAA6B,IAAI,CAAC;gBAEtD,aAAa;gBACb,QAAQ,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE;oBAC7C,KAAK,yCAAmB,CAAC,QAAQ,CAAC,CAAC;wBAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;4BAC7D,EAAE,EAAE,QAAQ,CAAC,EAAE;4BACf,WAAW,EAAE,QAAQ,CAAC,WAAW;4BACjC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;4BAC3C,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;4BACjD,YAAY,EAAE,QAAQ,CAAC,YAAY;4BACnC,SAAS,EAAE,QAAQ,CAAC,SAAS;yBACF,CAAC,CAAC;wBAEjC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CACrC,aAAa,CAAC,QAAQ,EACtB,eAAe,EACf,OAAO,EACP,iBAAiB,EACjB,aAAa,CAAC,eAAe,CAChC,CAAC;wBAEF,IAAI,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,UAAU,EAAE;4BAClE,gBAAgB,GAAG,4BAAkB,CAAC,sBAAsB,CACxD,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,aAAa,CAChB,CAAC;yBACL;wBAED,gBAAgB,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC;wBACxE,MAAM;qBACT;oBACD,KAAK,yCAAmB,CAAC,YAAY,CAAC,CAAC;wBACnC,uFAAuF;wBACvF,MAAM,sBAAsB,GAAsB,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;wBAEjG,MAAM,cAAc,GAAG,kBAAQ,CAAC,WAAW,CACvC,aAAa,CAAC,qBAAqB,EACnC,QAAQ,CAAC,gBAAgB,EACzB,cAAc,EACd,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,EAC5B,sBAAsB,CAAC,WAAW,EAClC,QAAQ,EACR,aAAa,CAAC,YAAY,EAC1B,OAAO,CAAC,oBAAoB,EAC5B,QAAQ,CAAC,UAAU,CACtB,CAAC;wBAEF,IAAI,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE;4BACjE,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;4BAC3D,8DAA8D;4BAC9D,MAAM,mBAAmB,GAAG,OAAO,CAAC,8BAA8B,CAAC;4BACnE,kFAAkF;4BAClF,MAAM,cAAc,GAAY,CAAC,mBAAmB,IAAI,cAAc,CAAC;4BAEvE,gBAAgB,GAAG,IAAI,CAAC,kCAAkC,CACtD,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,mBAAmB,CACtB,CAAC;yBACL;6BAAM;4BACH,6FAA6F;4BAC7F,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAC9C,QAAQ,EACR,OAAO,CAAC,2BAA2B,EACnC,eAAe,CAClB,CAAC;4BACF,MAAM,qBAAqB,GACvB,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;4BACxG,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;4BACrG,wDAAwD;4BACxD,MAAM,cAAc,GAAY,cAAc,IAAI,aAAa,KAAK,yBAAiB,CAAC,WAAW,CAAC;4BAClG,MAAM,kCAAkC,GAAG,6BAAa,CAAC,0BAA0B,CAC/E,qBAAqB,CAAC,sBAAsB,EAC5C,iBAAiB,CACpB,CAAC;4BACF,gBAAgB,GAAG;gCACf,EAAE,EAAE,QAAQ,CAAC,EAAE;gCACf,sBAAsB,EAAE,kCAAkC;gCAC1D,wBAAwB,EAAE,kCAAkC;gCAC5D,YAAY,EAAE,YAAY,CAAC,OAAO;gCAClC,kBAAkB,EAAE,qBAAqB,CAAC,kBAAkB;gCAC5D,mBAAmB,EAAE,qBAAqB,CAAC,mBAAmB;gCAC9D,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,yBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;gCAC5E,aAAa,EAAE,wBAAgB,CAAC,SAAS;gCACzC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI;gCAC7B,GAAG,CAAC,YAAY,CAAC,aAAa,IAAI;oCAC9B,kBAAkB,EAAE,YAAY,CAAC,aAAa;iCACjD,CAAC;6BACL,CAAC;4BAEF,0EAA0E;4BAC1E,qDAAqD;4BACrD,IACI,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,WAAW;gCACjE,yBAAyB,CAAC,yBAAyB,CAAC,8BAA8B,CAAC,OAAO,CAAC,EAC7F;gCACE,gBAAgB,CAAC,cAAc,GAAG,yBAAiB,CAAC,mBAAmB,CAAC;6BAC3E;4BAED,gBAAgB,GAAG,4BAAkB,CAAC,sBAAsB,CACxD,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,aAAa,CAChB,CAAC;4BAEF,IAAI,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,mBAAmB,EAAE;gCAC3E,gBAAgB,CAAC,KAAK,GAAG,gBAAgB,CAAC,kBAAkB,IAAI,IAAI,CAAC;6BACxE;yBACJ;wBACD,MAAM;qBACT;oBACD,KAAK,yCAAmB,CAAC,QAAQ,CAAC,CAAC;wBAC/B,gBAAgB,GAAG;4BACf,EAAE,EAAE,QAAQ,CAAC,EAAE;4BACf,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,eAAe,IAAI,IAAI;4BACpD,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,eAAe,IAAI,IAAI;4BACpD,cAAc,EAAE,yBAAiB,CAAC,QAAQ;4BAC1C,aAAa,EAAE,wBAAgB,CAAC,SAAS;yBAC5C,CAAC;wBACF,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAC;wBACjD,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAC;wBACjD,MAAM;qBACT;oBACD,KAAK,yCAAmB,CAAC,UAAU,CAAC,CAAC;wBACjC,MAAM;qBACT;oBACD,OAAO,CAAC,CAAC;wBACL,MAAM;qBACT;iBACJ;gBAED,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CACrC,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,EACd,sBAAsB,CACzB,CAAC;gBACF,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;gBAC9C,sBAAsB,GAAG,SAAS,CAAC,sBAAsB,CAAC;gBAE1D,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAEzC,gDAAgD;gBAChD,8DAA8D;gBAC9D,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;gBAElE,iGAAiG;gBACjG,IAAI,CAAC,0BAA0B,CAAC,gBAAgB,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAErE,sEAAsE;gBACtE,wBAAwB;gBACxB,4BAA4B;gBAC5B,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE;oBACtD,OAAO,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC;iBAC7C;gBAED,6DAA6D;gBAC7D,0EAA0E;gBAC1E,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,yBAAyB,CAAC;gBAE5F,oEAAoE;gBACpE,IACI,gBAAgB;oBAChB,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,SAAS;oBAC/D,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,SAAS;oBAC/D,gBAAgB,CAAC,cAAc,KAAK,yBAAiB,CAAC,UAAU,EAClE;oBACE,OAAO,CAAC,cAAc,GAAG,QAAQ,CAAC,EAAE,CAAC;oBACrC,OAAO,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC;oBACvC,OAAO,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC;oBACvC,OAAO,CAAC,oBAAoB,GAAG,yBAAyB,IAAI,QAAQ,CAAC,WAAW,CAAC;oBACjF,OAAO,CAAC,2BAA2B,GAAG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;oBAC1E,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;oBAEnG,IAAI,OAAO,CAAC,iBAAiB,KAAK,gBAAgB,CAAC,cAAc,EAAE;wBAC/D,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,cAAc,CAAC;wBAC5D,OAAO,CAAC,uBAAuB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;qBAC9D;oBAED,4BAAkB,CAAC,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;iBACxF;aACJ;YAED,OAAO;gBACH,OAAO;gBACP,SAAS,EAAE,iBAAiB;gBAC5B,sBAAsB,EAAE,sBAAsB;aACjD,CAAC;QACN,CAAC,CAAC;QAEF;;;;;;;;;WASG;QACO,oBAAe,GAAG,CACxB,eAA2D,EAC3D,OAA2C,EAC3C,iBAAyB,EACzB,gBAAmC,EACnC,YAA8B,EAC9B,aAAgC,EACf,EAAE;YACnB,6EAA6E;YAC7E,MAAM,eAAe,GAAG,YAAY,CAAC,oBAAoB,CAAC;YAC1D,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC;YAC9C,MAAM,mBAAmB,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,kBAAkB,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACvE,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,mBAAmB,CAAC;YACtE,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,CAAC;YAEhD,MAAM,sBAAsB,GAAG,6BAAa,CAAC,0BAA0B;YACnE,6CAA6C;YAC7C,gBAAgB,CAAC,kBAAkB;gBAC/B,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,oBAAoB;gBAC7E,CAAC,CAAC,gBAAgB,CAAC,sBAAsB,EAC7C,iBAAiB,CACpB,CAAC;YAEF,IAAI,kBAAkB,GAAkB,IAAI,CAAC,KAAK,CAC9C,CAAC,eAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,sBAAsB,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CACpG,CAAC;YAEF,MAAM,WAAW,GACb,aAAa,KAAK,kCAAiB,CAAC,GAAG;gBACvC,aAAa,KAAK,kCAAiB,CAAC,UAAU;gBAC9C,aAAa,KAAK,kCAAiB,CAAC,IAAI,CAAC;YAE7C,yFAAyF;YACzF,IACI,WAAW;gBACX,eAAe,CAAC,UAAU,CAAC,SAAS,KAAK,oBAAY,CAAC,iBAAiB;gBACvE,gBAAgB,CAAC,kBAAkB,KAAK,IAAI,EAC9C;gBACE,IAAI,gBAAgB,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE;oBAC7E,gBAAgB,GAAG,mBAAmB,CAAC;iBAC1C;qBAAM;oBACH,IAAI,qBAAqB,GAAG,gBAAgB,CAAC,KAAK,CAAC;oBACnD,OAAO,gBAAgB,CAAC,kBAAkB,KAAK,IAAI,IAAI,qBAAqB,GAAG,kBAAkB,CAAC,KAAK,EAAE;wBACrG,qBAAqB,EAAE,CAAC;wBACxB,gBAAgB,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAC;qBAC7D;iBACJ;aACJ;YAED,sCAAsC;YACtC,IAAI,gBAAgB,CAAC,kBAAkB,EAAE;gBACrC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;gBAC7D,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE;oBAC5G,aAAa,EAAE,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,sBAAsB;oBACzE,WAAW,EAAE,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,oBAAoB;iBACxE,CAAC,CAAC;gBAEH,gEAAgE;gBAChE,IAAI,gBAAgB,KAAK,mBAAmB,CAAC,kBAAkB,EAAE;oBAC7D,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;iBACxD;aACJ;YAED,IAAI,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,wBAAwB,CACvG,aAAa,EACb,gBAAgB,EAChB,eAAe,CAAC,UAAU,EAC1B,OAAO,CACV,CAAC;YAEF,2FAA2F;YAC3F,IACI,eAAe,CAAC,UAAU,CAAC,SAAS,KAAK,oBAAY,CAAC,UAAU;gBAChE,gBAAgB,KAAK,kBAAkB,CAAC,kBAAkB,EAC5D;gBACE,aAAa,GAAG,yBAAiB,CAAC,QAAQ,CAAC;aAC9C;YAED,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAE;gBACxE,aAAa,GAAG,yBAAiB,CAAC,WAAW,CAAC;gBAE9C,IAAI,yBAAyB,CAAC,yBAAyB,CAAC,8BAA8B,CAAC,OAAO,CAAC,EAAE;oBAC7F,aAAa,GAAG,yBAAiB,CAAC,mBAAmB,CAAC;iBACzD;qBAAM;oBACH,mFAAmF;oBACnF,kBAAkB,GAAG,IAAI,CAAC;iBAC7B;gBAED,gBAAgB,GAAG,kBAAkB,CAAC,kBAAkB,CAAC;gBACzD,gBAAgB,GAAG,kBAAkB,CAAC,kBAAkB,CAAC;gBACzD,gBAAgB,GAAG,IAAI,CAAC;aAC3B;YAED,MAAM,SAAS,GAAG,aAAa,KAAK,yBAAiB,CAAC,OAAO,IAAI,aAAa,KAAK,yBAAiB,CAAC,QAAQ,CAAC;YAE9G,qBAAqB;YACrB,MAAM,cAAc,GAAsB;gBACtC,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE;gBACjC,2EAA2E;gBAC3E,4EAA4E;gBAC5E,OAAO,EAAE,cAAc;gBACvB,mBAAmB,EAAE,wBAAwB;gBAC7C,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;gBACnF,YAAY,EAAE,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,OAAO;gBACzD,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;gBAC5F,cAAc,EAAE,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;gBAClE,kBAAkB,EAAE,gBAAgB;gBACpC,kBAAkB,EAAE,gBAAgB;gBACpC,sBAAsB,EAAE,gBAAgB;oBACpC,CAAC,CAAC,6BAAa,CAAC,0BAA0B,CACpC,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,oBAAoB,EACxD,iBAAiB,CACpB;oBACH,CAAC,CAAC,IAAI;gBACV,sBAAsB,EAAE,6BAAa,CAAC,0BAA0B,CAC5D,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,oBAAoB,EACxD,iBAAiB,CACpB;gBACD,wBAAwB,EAAE,gBAAgB;oBACtC,CAAC,CAAC,6BAAa,CAAC,0BAA0B,CACpC,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,sBAAsB,EAC1D,iBAAiB,CACpB;oBACH,CAAC,CAAC,IAAI;gBACV,wBAAwB,EAAE,6BAAa,CAAC,0BAA0B,CAC9D,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,sBAAsB,EAC1D,iBAAiB,CACpB;gBACD,KAAK,EAAE,kBAAkB;gBACzB,YAAY,EACR,CAAC,aAAa,KAAK,yBAAiB,CAAC,OAAO;oBACxC,gBAAgB;oBAChB,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;oBAChD,SAAS;gBACb,cAAc,EACV,CAAC,aAAa,KAAK,yBAAiB,CAAC,OAAO;oBACxC,gBAAgB;oBAChB,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;oBACvD,SAAS;gBACb,kBAAkB,EAAE,CAAC,aAAa,KAAK,yBAAiB,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,SAAS;gBAClG,kBAAkB,EAAE,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,SAAS;gBAClF,cAAc,EAAE,aAAa;gBAC7B,aAAa,EAAE,wBAAgB,CAAC,SAAS;gBACzC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,eAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBACxG,UAAU,EAAE,SAAS;aACxB,CAAC;YAEF,OAAO,cAAc,CAAC;QAC1B,CAAC,CAAC;IA9XF,CAAC;IAgYO,kBAAkB,CACtB,QAAoC,EACpC,OAAoC,EACpC,gBAA0C,EAC1C,aAAgC,EAChC,aAAqC,EACrC,cAAsB,EACtB,sBAA+B;QAE/B,IAAI,gBAAgB,EAAE;YAClB,gBAAgB,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,CAAC;YACpD,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAClE,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,aAAa,CAAC,QAAQ,EACtB,cAAc,CACjB,CAAC;YAEF,kEAAkE;YAClE,IAAI,CAAC,sBAAsB,IAAI,gBAAgB,CAAC,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,EAAE;gBAC5F,sBAAsB,GAAG,gBAAgB,CAAC,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;aAC3F;YAED,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,CAAC;SACvD;aAAM;YACH,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;SAC7D;IACL,CAAC;IAEO,wBAAwB,CAC5B,aAAgC,EAChC,gBAAmC,EACnC,kBAA8C,EAC9C,OAAyE;QAEzE,IAAI,aAAa,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,yBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAiB,CAAC,QAAQ,CAAC;QACjH,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;QAC3D,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;QAC3D,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;QAE3D,2EAA2E;QAC3E,IACI,aAAa,KAAK,kCAAiB,CAAC,KAAK;YACzC,kBAAkB,CAAC,SAAS,KAAK,oBAAY,CAAC,IAAI;YAClD,OAAO,EAAE,oBAAoB,EAC/B;YACE,MAAM,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC;YACnF,MAAM,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,kBAAkB,IAAI,CAAC,CAAC;YAEjG,4GAA4G;YAC5G,+DAA+D;YAC/D,kFAAkF;YAClF,2BAA2B;YAC3B,iEAAiE;YACjE,gFAAgF;YAChF,yBAAyB;YACzB,IAAI,wBAAwB,KAAK,oBAAY,CAAC,iBAAiB,IAAI,gBAAgB,GAAG,wBAAwB,EAAE;gBAC5G,aAAa,GAAG,yBAAiB,CAAC,UAAU,CAAC;aAChD;iBAAM,IAAI,wBAAwB,KAAK,oBAAY,CAAC,UAAU,IAAI,gBAAgB,EAAE;gBACjF,IAAI,gBAAgB,KAAK,wBAAwB,EAAE;oBAC/C,aAAa,GAAG,yBAAiB,CAAC,QAAQ,CAAC;iBAC9C;qBAAM,IAAI,gBAAgB,GAAG,wBAAwB,EAAE;oBACpD,aAAa,GAAG,yBAAiB,CAAC,UAAU,CAAC;iBAChD;aACJ;YAED,IAAI,aAAa,KAAK,yBAAiB,CAAC,UAAU,IAAI,aAAa,KAAK,yBAAiB,CAAC,QAAQ,EAAE;gBAChG,gBAAgB,GAAG,IAAI,CAAC;aAC3B;SACJ;QAED,OAAO;YACH,aAAa;YACb,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;SACnB,CAAC;IACN,CAAC;IAEO,mBAAmB,CAAC,QAAoC;QAC5D,MAAM,QAAQ,GAAkB,QAAQ,CAAC,SAAS,CAAC;QACnD,IAAI,QAAQ,KAAK,oBAAY,CAAC,UAAU,EAAE;YACtC,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,QAAQ,KAAK,oBAAY,CAAC,iBAAiB,IAAI,QAAQ,KAAK,oBAAY,CAAC,UAAU,EAAE;YAC5F,OAAO,KAAK,CAAC;SAChB;aAAM,IAAI,QAAQ,KAAK,4BAAoB,CAAC,UAAU,EAAE;YACrD,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,YAAY,CAAC,gBAAwB,EAAE,kBAAqC;QAChF,gEAAgE;QAChE,OAAO,gBAAgB,IAAI,kBAAkB,CAAC,kBAAkB,CAAC;IACrE,CAAC;CACJ,CAAA;2BAneY,gBAAgB;IAD5B,IAAA,qBAAU,GAAE;IAEI,WAAA,IAAA,iBAAM,EAAC,mCAAgB,CAAC,iBAAiB,CAAC,CAAA;qCAA8B,qCAAiB;GAD7F,gBAAgB,CAme5B"}
@@ -1,37 +1,17 @@
1
- import { IProcessedPositions, ITripPositionsWithGTFS, IUpdatePositionsIteratorOptions } from "../../interfaces/VPInterfaces";
1
+ import { IVPTripsLastPositionContext } from "../../../../../../schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces";
2
+ import { Feature, Point } from "@turf/turf";
3
+ import { IComputationTrip, ICurrentPositionProperties, IPositionToUpdate, IProcessedPositions, IShapeAnchorPoint, IUpdatePositionsIteratorOptions } from "../../interfaces/VPInterfaces";
2
4
  import { ValidToCalculator } from "../ValidToCalculator";
3
- export declare class RegionalBusPositionsManager {
4
- private validToCalculator;
5
+ import { BasePositionsManager } from "../BasePositionsManager";
6
+ import { IScheduleDto } from "../../../../../../schema-definitions/vehicle-positions/redis/interfaces/IGtfsRunTripCacheDto";
7
+ import { GTFSRouteTypeEnum } from "../../../../../../helpers/RouteTypeEnums";
8
+ export declare class RegionalBusPositionsManager extends BasePositionsManager {
9
+ protected validToCalculator: ValidToCalculator;
5
10
  constructor(validToCalculator: ValidToCalculator);
6
- /**
7
- * Compute positions and return computed positions
8
- *
9
- * @param {ITripPositionsWithGTFS} tripPositions - Trip positions with shape anchors data
10
- * @returns {IProcessedPositions} - Returns computed/updated positions
11
- */
12
- computePositions: (tripPositions: ITripPositionsWithGTFS) => IProcessedPositions;
13
11
  /**
14
12
  * Takes position one by one, set proper handler for type of position, and do the process of position
15
13
  */
16
- updatePositions: (options: IUpdatePositionsIteratorOptions) => IProcessedPositions;
17
- private getCurrentContext;
18
- /**
19
- * Decide how to process input position data
20
- *
21
- * @param {IVPTripsPositionAttributes} position - Input vehiclepositions_positions row data
22
- * @returns {PositionHandlerEnum} - Returns action handler enum
23
- */
24
- private setPositionUpdateHandler;
25
- /**
26
- * Returns estimate of point on shape, where the trip should be with appropriate delay
27
- *
28
- * @param {IShapeAnchorPoint[]} tripShapePoints - Precalculated trip shape equidistant points with scheduled times
29
- * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Current position of trip
30
- * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
31
- * @param {number} startDayTimestamp - Unix timestamp of midnight before trip starts
32
- * @returns {IPositionToUpdate} - Position object to update
33
- */
34
- private getEstimatedPoint;
14
+ updatePositions: (options: IUpdatePositionsIteratorOptions, _schedule: IScheduleDto[] | undefined) => IProcessedPositions;
35
15
  /**
36
16
  * Picks only one closest point for multiple possible points based on delay of last position and stop times
37
17
  *
@@ -42,25 +22,6 @@ export declare class RegionalBusPositionsManager {
42
22
  * @param {IComputationTrip} tripGtfsData - GTFS data and all set of known positions
43
23
  * @returns {IPositionToUpdate} - Result point as position to update in DB
44
24
  */
45
- private getClosestPoint;
46
- /**
47
- * Corrects time delay at stop with dwelling time
48
- *
49
- * @param {number} timeDelay - Initial computed delay in seconds, can be negative for trip ahead
50
- * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
51
- * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
52
- * @param {IShapeAnchorPoint} thisClosestPoint - Closest point of shape anchors
53
- * @param { departureTime: number; arrivalTime: number } stopTimes - departure and arrival stop times in seconds
54
- * @returns {number} - Result delay in seconds, can be negative for trip ahead
55
- */
56
- private getCorrectedTimeDelay;
57
- /**
58
- * Compute UTC timestamp of start of day when trip starts
59
- *
60
- * @param {number} startTimestamp - Unix timestamp of start of the trip
61
- * @param {number} firstStopTimeScheduledSeconds - Number of seconds from midnight of first stop departure
62
- * @returns {number} - Returns unix timestamp in milliseconds.
63
- */
64
- private getStartDayTimestamp;
25
+ protected getClosestPoint: (currentPosition: Feature<Point, ICurrentPositionProperties>, context: IVPTripsLastPositionContext | null, startDayTimestamp: number, thisClosestPoint: IShapeAnchorPoint, tripGtfsData: IComputationTrip, _gtfsRouteType?: GTFSRouteTypeEnum) => IPositionToUpdate;
65
26
  private determineStatePosition;
66
27
  }