@effekt-lang/effekt 0.16.0 → 0.18.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.
package/bin/effekt CHANGED
Binary file
@@ -4,6 +4,7 @@ extern io def commandLineArgs(): List[String] =
4
4
  js { js::commandLineArgs() }
5
5
  chez { chez::commandLineArgs() }
6
6
  llvm { llvm::commandLineArgs() }
7
+ vm { Nil() }
7
8
 
8
9
  namespace js {
9
10
  extern type Args // = Array[String]
@@ -16,6 +16,7 @@ extern global def allocate[T](size: Int): Array[T] =
16
16
  %z = call %Pos @c_array_new(%Int ${size})
17
17
  ret %Pos %z
18
18
  """
19
+ vm "array::allocate(Int)"
19
20
 
20
21
  /// Creates a new Array of size `size` filled with the value `init`
21
22
  def array[T](size: Int, init: T): Array[T] = {
@@ -45,6 +46,7 @@ extern pure def size[T](arr: Array[T]): Int =
45
46
  %z = call %Int @c_array_size(%Pos ${arr})
46
47
  ret %Int %z
47
48
  """
49
+ vm "array::size[T](Array[T])"
48
50
 
49
51
  /// Gets the element of the `arr` at given `index` in constant time.
50
52
  /// Unchecked Precondition: `index` is in bounds (0 ≤ index < arr.size)
@@ -57,6 +59,7 @@ extern global def unsafeGet[T](arr: Array[T], index: Int): T =
57
59
  %z = call %Pos @c_array_get(%Pos ${arr}, %Int ${index})
58
60
  ret %Pos %z
59
61
  """
62
+ vm "array::unsafeGet[T](Array[T], Int)"
60
63
 
61
64
  extern js """
62
65
  function array$set(arr, index, value) {
@@ -76,6 +79,7 @@ extern global def unsafeSet[T](arr: Array[T], index: Int, value: T): Unit =
76
79
  %z = call %Pos @c_array_set(%Pos ${arr}, %Int ${index}, %Pos ${value})
77
80
  ret %Pos %z
78
81
  """
82
+ vm "array::unsafeSet[T](Array[T], Int, T)"
79
83
 
80
84
 
81
85
 
@@ -45,6 +45,7 @@ extern def println(value: String): Unit =
45
45
  call void @c_io_println_String(%Pos ${value})
46
46
  ret %Pos zeroinitializer ; Unit
47
47
  """
48
+ vm "effekt::println(String)"
48
49
 
49
50
  def println(value: Int): Unit = println(value.show)
50
51
  def println(value: Unit): Unit = println(value.show)
@@ -59,6 +60,7 @@ extern pure def show(value: Int): String =
59
60
  %z = call %Pos @c_bytearray_show_Int(%Int ${value})
60
61
  ret %Pos %z
61
62
  """
63
+ vm "effekt::show(Int)"
62
64
 
63
65
  def show(value: Unit): String = "()"
64
66
 
@@ -69,6 +71,7 @@ extern pure def show(value: Double): String =
69
71
  %z = call %Pos @c_bytearray_show_Double(%Double ${value})
70
72
  ret %Pos %z
71
73
  """
74
+ vm "effekt::show(Double)"
72
75
 
73
76
  def show(value: String): String =
74
77
  value
@@ -83,6 +86,7 @@ extern pure def show(value: Char): String =
83
86
  %z = call %Pos @c_bytearray_show_Char(%Int ${value})
84
87
  ret %Pos %z
85
88
  """
89
+ vm "effekt::show(Char)"
86
90
 
87
91
  extern pure def show(value: Byte): String =
88
92
  js "'' + ${value}"
@@ -90,6 +94,7 @@ extern pure def show(value: Byte): String =
90
94
  %z = call %Pos @c_bytearray_show_Byte(i8 ${value})
91
95
  ret %Pos %z
92
96
  """
97
+ vm "effekt::show(Byte)"
93
98
 
94
99
  extern pure def genericShow[R](value: R): String =
95
100
  js "$effekt.show(${value})"
@@ -98,6 +103,7 @@ extern pure def genericShow[R](value: R): String =
98
103
  extern io def inspect[R](value: R): Unit =
99
104
  js { println(genericShow(value)) }
100
105
  chez { println(genericShow(value)) }
106
+ vm "effekt::inspect(Any)"
101
107
 
102
108
 
103
109
  // Strings
@@ -109,6 +115,7 @@ extern pure def infixConcat(s1: String, s2: String): String =
109
115
  %spz = call %Pos @c_bytearray_concatenate(%Pos ${s1}, %Pos ${s2})
110
116
  ret %Pos %spz
111
117
  """
118
+ vm "effekt::infixConcat(String, String)"
112
119
 
113
120
  extern pure def length(str: String): Int =
114
121
  js "${str}.length"
@@ -117,6 +124,7 @@ extern pure def length(str: String): Int =
117
124
  %x = call %Int @c_bytearray_size(%Pos ${str})
118
125
  ret %Int %x
119
126
  """
127
+ vm "effekt::length(String)"
120
128
 
121
129
  extern pure def unsafeSubstring(str: String, from: Int, to: Int): String =
122
130
  js "${str}.substring(${from}, ${to})"
@@ -125,6 +133,7 @@ extern pure def unsafeSubstring(str: String, from: Int, to: Int): String =
125
133
  %x = call %Pos @c_bytearray_substring(%Pos ${str}, i64 ${from}, i64 ${to})
126
134
  ret %Pos %x
127
135
  """
136
+ vm "effekt::substring(String, Int, Int)"
128
137
 
129
138
 
130
139
  // Side effecting ops
@@ -133,6 +142,7 @@ extern pure def unsafeSubstring(str: String, from: Int, to: Int): String =
133
142
  extern io def random(): Double =
134
143
  js "Math.random()"
135
144
  chez "(random 1.0)"
145
+ vm "effekt::random()"
136
146
 
137
147
  // References and state
138
148
  // ====================
@@ -192,8 +202,7 @@ def differsFrom[R](x: R, y: R): Bool =
192
202
 
193
203
  // TODO fix this in the pattern matching compiler
194
204
  extern pure def infixEq(x: Unit, y: Unit): Bool =
195
- js "true"
196
- chez "#t"
205
+ default { true }
197
206
 
198
207
  extern pure def infixEq(x: Int, y: Int): Bool =
199
208
  js "${x} === ${y}"
@@ -204,6 +213,7 @@ extern pure def infixEq(x: Int, y: Int): Bool =
204
213
  %adt_boolean = insertvalue %Pos zeroinitializer, i64 %fat_z, 0
205
214
  ret %Pos %adt_boolean
206
215
  """
216
+ vm "effekt::infixEq(Int, Int)"
207
217
 
208
218
  extern pure def infixNeq(x: Int, y: Int): Bool =
209
219
  js "${x} !== ${y}"
@@ -214,6 +224,7 @@ extern pure def infixNeq(x: Int, y: Int): Bool =
214
224
  %adt_boolean = insertvalue %Pos zeroinitializer, i64 %fat_z, 0
215
225
  ret %Pos %adt_boolean
216
226
  """
227
+ vm "effekt::infixNeq(Int, Int)"
217
228
 
218
229
  extern pure def infixEq(x: Char, y: Char): Bool =
219
230
  js "${x} === ${y}"
@@ -224,6 +235,7 @@ extern pure def infixEq(x: Char, y: Char): Bool =
224
235
  %adt_boolean = insertvalue %Pos zeroinitializer, i64 %fat_z, 0
225
236
  ret %Pos %adt_boolean
226
237
  """
238
+ vm "effekt::infixEq(Char, Char)"
227
239
 
228
240
  extern pure def infixNeq(x: Char, y: Char): Bool =
229
241
  js "${x} !== ${y}"
@@ -242,6 +254,7 @@ extern pure def infixEq(x: String, y: String): Bool =
242
254
  %res = call %Pos @c_bytearray_equal(%Pos ${x}, %Pos ${y})
243
255
  ret %Pos %res
244
256
  """
257
+ vm "effekt::infixEq(String, String)"
245
258
 
246
259
  def infixNeq(x: String, y: String): Bool = not(x == y)
247
260
 
@@ -256,6 +269,7 @@ extern pure def infixEq(x: Bool, y: Bool): Bool =
256
269
  %adt_boolean = insertvalue %Pos zeroinitializer, i64 %fat_z, 0
257
270
  ret %Pos %adt_boolean
258
271
  """
272
+ vm "effekt::infixEq(Bool, Bool)"
259
273
 
260
274
  extern pure def infixNeq(x: Bool, y: Bool): Bool =
261
275
  js "${x} !== ${y}"
@@ -276,67 +290,85 @@ extern pure def infixAdd(x: Int, y: Int): Int =
276
290
  js "(${x} + ${y})"
277
291
  chez "(+ ${x} ${y})"
278
292
  llvm "%z = add %Int ${x}, ${y} ret %Int %z"
293
+ vm "effekt::infixAdd(Int, Int)"
279
294
 
280
295
  extern pure def infixMul(x: Int, y: Int): Int =
281
296
  js "(${x} * ${y})"
282
297
  chez "(* ${x} ${y})"
283
298
  llvm "%z = mul %Int ${x}, ${y} ret %Int %z"
299
+ vm "effekt::infixMul(Int, Int)"
284
300
 
285
301
  extern pure def infixDiv(x: Int, y: Int): Int =
286
302
  js "Math.floor(${x} / ${y})"
287
303
  chez "(floor (/ ${x} ${y}))"
288
304
  llvm "%z = sdiv %Int ${x}, ${y} ret %Int %z"
305
+ vm "effekt::infixDiv(Int, Int)"
289
306
 
290
307
  extern pure def infixSub(x: Int, y: Int): Int =
291
308
  js "(${x} - ${y})"
292
309
  chez "(- ${x} ${y})"
293
310
  llvm "%z = sub %Int ${x}, ${y} ret %Int %z"
311
+ vm "effekt::infixSub(Int, Int)"
294
312
 
295
313
  extern pure def mod(x: Int, y: Int): Int =
296
314
  js "(${x} % ${y})"
297
315
  chez "(modulo ${x} ${y})"
298
316
  llvm "%z = srem %Int ${x}, ${y} ret %Int %z"
317
+ vm "effekt::mod(Int, Int)"
299
318
 
300
319
  extern pure def infixAdd(x: Double, y: Double): Double =
301
320
  js "(${x} + ${y})"
302
321
  chez "(+ ${x} ${y})"
303
322
  llvm "%z = fadd %Double ${x}, ${y} ret %Double %z"
323
+ vm "effekt::infixAdd(Double, Double)"
304
324
 
305
325
  extern pure def infixMul(x: Double, y: Double): Double =
306
326
  js "(${x} * ${y})"
307
327
  chez "(* ${x} ${y})"
308
328
  llvm "%z = fmul %Double ${x}, ${y} ret %Double %z"
329
+ vm "effekt::infixMul(Double, Double)"
309
330
 
310
331
  extern pure def infixSub(x: Double, y: Double): Double =
311
332
  js "(${x} - ${y})"
312
333
  chez "(- ${x} ${y})"
313
334
  llvm "%z = fsub %Double ${x}, ${y} ret %Double %z"
335
+ vm "effekt::infixSub(Double, Double)"
314
336
 
315
337
  extern pure def infixDiv(x: Double, y: Double): Double =
316
338
  js "(${x} / ${y})"
317
339
  chez "(/ ${x} ${y})"
318
340
  llvm "%z = fdiv %Double ${x}, ${y} ret %Double %z"
341
+ vm "effekt::infixDiv(Double, Double)"
319
342
 
320
343
  extern pure def cos(x: Double): Double =
321
344
  js "Math.cos(${x})"
322
345
  chez "(cos ${x})"
346
+ vm "effekt::cos(Double)"
347
+ llvm "%z = call %Double @llvm.cos.f64(double ${x}) ret %Double %z"
323
348
 
324
349
  extern pure def sin(x: Double): Double =
325
350
  js "Math.sin(${x})"
326
351
  chez "(sin ${x})"
352
+ vm "effekt::sin(Double)"
353
+ llvm "%z = call %Double @llvm.sin.f64(double ${x}) ret %Double %z"
327
354
 
328
355
  extern pure def atan(x: Double): Double =
329
356
  js "Math.atan(${x})"
330
357
  chez "(atan ${x})"
358
+ vm "effekt::atan(Double)"
359
+ llvm "%z = call %Double @atan(double ${x}) ret %Double %z"
331
360
 
332
361
  extern pure def tan(x: Double): Double =
333
362
  js "Math.tan(${x})"
334
363
  chez "(tan ${x})"
364
+ vm "effekt::tan(Double)"
365
+ llvm "%z = call %Double @tan(double ${x}) ret %Double %z"
335
366
 
336
367
  extern pure def sqrt(x: Double): Double =
337
368
  js "Math.sqrt(${x})"
338
369
  chez "(sqrt ${x})"
339
370
  llvm "%z = call %Double @llvm.sqrt.f64(double ${x}) ret %Double %z"
371
+ vm "effekt::sqrt(Double)"
340
372
 
341
373
  def square(x: Double): Double = x * x
342
374
 
@@ -352,14 +384,19 @@ def abs(n: Double): Double =
352
384
  extern pure def log(x: Double): Double =
353
385
  js "Math.log(${x})"
354
386
  chez "(log ${x})"
387
+ vm "effekt::log(Double)"
388
+ llvm "%z = call %Double @llvm.log.f64(double ${x}) ret %Double %z"
355
389
 
356
390
  extern pure def log1p(x: Double): Double =
357
391
  js "Math.log1p(${x})"
358
392
  chez "(log (+ ${x} 1))"
393
+ llvm "%z = call %Double @log1p(double ${x}) ret %Double %z"
359
394
 
360
395
  extern pure def exp(x: Double): Double =
361
396
  js "Math.exp(${x})"
362
397
  chez "(exp ${x})"
398
+ vm "effekt::exp(Double)"
399
+ llvm "%z = call %Double @llvm.exp.f64(double ${x}) ret %Double %z"
363
400
 
364
401
  def pow(base: Double, exponent: Int): Double = {
365
402
  def loop(base: Double, exponent: Int, acc: Double): Double = {
@@ -377,11 +414,15 @@ def pow(base: Double, exponent: Int): Double = {
377
414
  extern pure def pow(base: Double, exponent: Double): Double =
378
415
  js "Math.pow(${base}, ${exponent})"
379
416
  chez "(expt ${base} ${exponent})"
417
+ vm "effekt::pow(Double, Double)"
418
+ llvm "%z = call %Double @llvm.pow.f64(double ${base}, double ${exponent}) ret %Double %z"
380
419
 
381
420
  // since we do not have "extern val", yet
382
421
  extern pure def _pi(): Double =
383
422
  js "Math.PI"
384
423
  chez "(* 4 (atan 1))"
424
+ vm "effekt::pi()"
425
+ llvm "ret double 3.14159265358979323846264338327950288419716939937510582097494459"
385
426
 
386
427
  val PI: Double = _pi()
387
428
 
@@ -389,11 +430,14 @@ extern pure def toInt(d: Double): Int =
389
430
  js "Math.trunc(${d})"
390
431
  chez "(flonum->fixnum ${d})"
391
432
  llvm "%z = fptosi double ${d} to %Int ret %Int %z"
433
+ vm "effekt::toInt(Double)"
392
434
 
393
435
  extern pure def toDouble(d: Int): Double =
394
436
  js "${d}"
395
437
  chez "${d}"
396
438
  llvm "%z = sitofp i64 ${d} to double ret double %z"
439
+ vm "effekt::toDouble(Int)"
440
+
397
441
 
398
442
  extern pure def round(d: Double): Int =
399
443
  js "Math.round(${d})"
@@ -402,6 +446,7 @@ extern pure def round(d: Double): Int =
402
446
  %i = call %Double @llvm.round.f64(double ${d})
403
447
  %z = fptosi double %i to %Int ret %Int %z
404
448
  """
449
+ vm "effekt::round(Double)"
405
450
 
406
451
  def round(d: Double, digits: Int): Double = {
407
452
  val factor = pow(10.0, digits)
@@ -446,6 +491,7 @@ extern pure def infixLt(x: Int, y: Int): Bool =
446
491
  %adt_boolean = insertvalue %Pos zeroinitializer, i64 %fat_z, 0
447
492
  ret %Pos %adt_boolean
448
493
  """
494
+ vm "effekt::infixLt(Int, Int)"
449
495
 
450
496
  extern pure def infixLte(x: Int, y: Int): Bool =
451
497
  js "(${x} <= ${y})"
@@ -456,6 +502,7 @@ extern pure def infixLte(x: Int, y: Int): Bool =
456
502
  %adt_boolean = insertvalue %Pos zeroinitializer, i64 %fat_z, 0
457
503
  ret %Pos %adt_boolean
458
504
  """
505
+ vm "effekt::infixLte(Int, Int)"
459
506
 
460
507
  extern pure def infixGt(x: Int, y: Int): Bool =
461
508
  js "(${x} > ${y})"
@@ -466,6 +513,7 @@ extern pure def infixGt(x: Int, y: Int): Bool =
466
513
  %adt_boolean = insertvalue %Pos zeroinitializer, i64 %fat_z, 0
467
514
  ret %Pos %adt_boolean
468
515
  """
516
+ vm "effekt::infixGt(Int, Int)"
469
517
 
470
518
  extern pure def infixGte(x: Int, y: Int): Bool =
471
519
  js "(${x} >= ${y})"
@@ -476,14 +524,17 @@ extern pure def infixGte(x: Int, y: Int): Bool =
476
524
  %adt_boolean = insertvalue %Pos zeroinitializer, i64 %fat_z, 0
477
525
  ret %Pos %adt_boolean
478
526
  """
527
+ vm "effekt::infixGte(Int, Int)"
479
528
 
480
529
  extern pure def infixEq(x: Double, y: Double): Bool =
481
530
  js "${x} === ${y}"
482
531
  chez "(= ${x} ${y})"
532
+ vm "effekt::infixEq(Double, Double)"
483
533
 
484
534
  extern pure def infixNeq(x: Double, y: Double): Bool =
485
535
  js "${x} !== ${y}"
486
536
  chez "(not (= ${x} ${y}))"
537
+ vm "effekt::infixNeq(Double, Double)"
487
538
 
488
539
  extern pure def infixLt(x: Double, y: Double): Bool =
489
540
  js "(${x} < ${y})"
@@ -494,10 +545,12 @@ extern pure def infixLt(x: Double, y: Double): Bool =
494
545
  %adt_boolean = insertvalue %Pos zeroinitializer, i64 %fat_z, 0
495
546
  ret %Pos %adt_boolean
496
547
  """
548
+ vm "effekt::infixLt(Double, Double)"
497
549
 
498
550
  extern pure def infixLte(x: Double, y: Double): Bool =
499
551
  js "(${x} <= ${y})"
500
552
  chez "(<= ${x} ${y})"
553
+ vm "effekt::infixLte(Double, Double)"
501
554
 
502
555
  extern pure def infixGt(x: Double, y: Double): Bool =
503
556
  js "(${x} > ${y})"
@@ -508,10 +561,12 @@ extern pure def infixGt(x: Double, y: Double): Bool =
508
561
  %adt_boolean = insertvalue %Pos zeroinitializer, i64 %fat_z, 0
509
562
  ret %Pos %adt_boolean
510
563
  """
564
+ vm "effekt::infixGt(Double, Double)"
511
565
 
512
566
  extern pure def infixGte(x: Double, y: Double): Bool =
513
567
  js "(${x} >= ${y})"
514
568
  chez "(>= ${x} ${y})"
569
+ vm "effekt::infixGte(Double, Double)"
515
570
 
516
571
  // TODO do we really need those? if yes, move to string.effekt
517
572
  extern pure def infixLt(x: String, y: String): Bool =
@@ -542,6 +597,7 @@ extern pure def not(b: Bool): Bool =
542
597
  %adt_q = insertvalue %Pos zeroinitializer, i64 %q, 0
543
598
  ret %Pos %adt_q
544
599
  """
600
+ vm "effekt::not(Bool)"
545
601
 
546
602
  def infixOr { first: => Bool } { second: => Bool }: Bool =
547
603
  if (first()) true else second()
@@ -558,27 +614,32 @@ extern pure def bitwiseShl(x: Int, y: Int): Int =
558
614
  js "(${x} << ${y})"
559
615
  chez "(ash ${x} ${y})"
560
616
  llvm "%z = shl %Int ${x}, ${y} ret %Int %z"
617
+ vm "effekt::bitwiseShl(Int, Int)"
561
618
 
562
619
  /// Arithmetic right shift
563
620
  extern pure def bitwiseShr(x: Int, y: Int): Int =
564
621
  js "(${x} >> ${y})"
565
622
  chez "(ash ${x} (- ${y}))"
566
623
  llvm "%z = ashr %Int ${x}, ${y} ret %Int %z"
624
+ vm "effekt::bitwiseShr(Int, Int)"
567
625
 
568
626
  extern pure def bitwiseAnd(x: Int, y: Int): Int =
569
627
  js "(${x} & ${y})"
570
628
  chez "(logand ${x} ${y})"
571
629
  llvm "%z = and %Int ${x}, ${y} ret %Int %z"
630
+ vm "effekt::bitwiseAnd(Int, Int)"
572
631
 
573
632
  extern pure def bitwiseOr(x: Int, y: Int): Int =
574
633
  js "(${x} | ${y})"
575
634
  chez "(logior ${x} ${y})"
576
635
  llvm "%z = or %Int ${x}, ${y} ret %Int %z"
636
+ vm "effekt::bitwiseOr(Int, Int)"
577
637
 
578
638
  extern pure def bitwiseXor(x: Int, y: Int): Int =
579
639
  js "(${x} ^ ${y})"
580
640
  chez "(logxor ${x} ${y})"
581
641
  llvm "%z = xor %Int ${x}, ${y} ret %Int %z"
642
+ vm "effekt::bitwiseXor(Int, Int)"
582
643
 
583
644
 
584
645
  // Byte operations
@@ -670,35 +670,113 @@ def partition[A](l: List[A]) { pred: A => Bool }: (List[A], List[A]) = {
670
670
  (lefts.reverse, rights.reverse)
671
671
  }
672
672
 
673
- /// Sort a list using a given comparison function.
673
+ /// Utilities for sorting, see 'sortBy' for more details.
674
+ namespace sort {
675
+ /// Splits the given list into monotonic segments (so a list of lists).
676
+ ///
677
+ /// Internally used in the mergesort 'sortBy' to prepare the to-be-merged partitions.
678
+ def sequences[A](list: List[A]) { compare: (A, A) => Bool }: List[List[A]] = list match {
679
+ case Cons(a, Cons(b, rest)) =>
680
+ if (compare(a, b)) {
681
+ ascending(b, rest) { diffRest => Cons(a, diffRest) } {compare}
682
+ } else {
683
+ descending(b, [a], rest) {compare}
684
+ }
685
+ case _ => [list]
686
+ }
687
+
688
+ /// When in an ascending sequence, try to add `current` to `run` (if possible)
689
+ def ascending[A](current: A, rest: List[A]) { runDiff: List[A] => List[A] } { compare: (A, A) => Bool }: List[List[A]] = rest match {
690
+ case Cons(next, tail) and compare(current, next) =>
691
+ ascending(next, tail) { diffRest => runDiff(Cons(current, diffRest)) } {compare}
692
+ case _ => Cons(runDiff([current]), sequences(rest) {compare})
693
+ }
694
+
695
+ /// When in an descending sequence, try to add `current` to `run` (if possible)
696
+ def descending[A](current: A, run: List[A], rest: List[A]) { compare: (A, A) => Bool }: List[List[A]] = rest match {
697
+ case Cons(next, tail) and not(compare(current, next)) =>
698
+ descending(next, Cons(current, run), tail) {compare}
699
+ case _ => Cons(Cons(current, run), sequences(rest) {compare})
700
+ }
701
+
702
+ def mergeAll[A](runs: List[List[A]]) { compare: (A, A) => Bool }: List[A] = runs match {
703
+ case Cons(single, Nil()) => single
704
+ case _ => {
705
+ // recursively merge in pairs until there's only a single list
706
+ val newRuns = mergePairs(runs) {compare}
707
+ mergeAll(newRuns) {compare}
708
+ }
709
+ }
710
+
711
+ def mergePairs[A](runs: List[List[A]]) { compare: (A, A) => Bool }: List[List[A]] = runs match {
712
+ case Cons(a, Cons(b, rest)) =>
713
+ Cons(merge(a, b) {compare}, mergePairs(rest) {compare})
714
+ case _ => runs
715
+ }
716
+
717
+ def merge[A](l1: List[A], l2: List[A]) { compare: (A, A) => Bool }: List[A] =
718
+ (l1, l2) match {
719
+ case (Nil(), _) => l2
720
+ case (_, Nil()) => l1
721
+ case (Cons(h1, t1), Cons(h2, t2)) =>
722
+ if (compare(h1, h2)) {
723
+ Cons(h1, merge(t1, l2) {compare})
724
+ } else {
725
+ Cons(h2, merge(l1, t2) {compare})
726
+ }
727
+ }
728
+ }
729
+
730
+ /// Sort a list given a comparison operator (like less-or-equal!)
731
+ /// The sorting algorithm is stable and should act reasonably well on partially sorted data.
732
+ ///
733
+ /// Examples:
734
+ /// ```
735
+ /// > [1, 3, -1, 5].sortBy { (a, b) => a <= b }
736
+ /// [-1, 1, 3, 5]
737
+ ///
738
+ /// > [1, 3, -1, 5].sortBy { (a, b) => a >= b }
739
+ /// [5, 3, 1, -1]
740
+ ///
741
+ /// > [(1, 0), (0, 1), (-1, 1), (0, 0)].sortBy { (a, b) => a.first + a.second <= b.first + b.second }
742
+ /// [(1, -1), (0, 0), (1, 0), (0, 1)]
743
+ ///
744
+ /// > Nil[Int]().sortBy { (a, b) => a <= b }
745
+ /// []
746
+ /// ```
674
747
  ///
675
748
  /// Note: this implementation is not stacksafe!
749
+ /// (works for ~5M random elements just fine, but OOMs on ~10M random elements)
676
750
  ///
677
- /// O(N log N)
678
- def sortBy[A](l: List[A]) { compare: (A, A) => Bool }: List[A] =
679
- l match {
680
- case Nil() => Nil()
681
- case Cons(pivot, rest) =>
682
- val (lt, gt) = rest.partition { el => compare(el, pivot) };
683
- val leftSorted = sortBy(lt) { (a, b) => compare(a, b) }
684
- val rightSorted = sortBy(gt) { (a, b) => compare(a, b) }
685
- leftSorted.append(Cons(pivot, rightSorted))
686
- }
751
+ /// O(N log N) worstcase
752
+ def sortBy[A](list: List[A]) { lessOrEqual: (A, A) => Bool }: List[A] = {
753
+ val monotonicRuns = sort::sequences(list) {lessOrEqual}
754
+ sort::mergeAll(monotonicRuns) {lessOrEqual}
755
+ }
756
+
757
+ /// Sort a list of integers in an ascending order.
758
+ /// See 'sortBy' for more details.
759
+ ///
760
+ /// O(N log N) worstcase
761
+ def sort(l: List[Int]): List[Int] = l.sortBy { (a, b) => a <= b }
762
+
763
+ /// Sort a list of doubles in an ascending order.
764
+ /// See 'sortBy' for more details.
765
+ ///
766
+ /// O(N log N) worstcase
767
+ def sort(l: List[Double]): List[Double] = l.sortBy { (a, b) => a <= b }
687
768
 
688
- def sort(l: List[Int]): List[Int] = l.sortBy { (a, b) => a < b }
689
- def sort(l: List[Double]): List[Double] = l.sortBy { (a, b) => a < b }
690
769
 
691
- /// Check if a list is sorted according to the given comparison function.
770
+ /// Check if a list is sorted according to the given comparison function (less-or-equal).
692
771
  ///
693
772
  /// O(N)
694
- def isSortedBy[A](list: List[A]) { compare: (A, A) => Bool }: Bool = {
773
+ def isSortedBy[A](list: List[A]) { lessOrEqual: (A, A) => Bool }: Bool = {
695
774
  def go(list: List[A]): Bool = {
696
775
  list match {
697
- case Nil() => true
698
- case Cons(x, Nil()) => true
699
776
  case Cons(x, Cons(y, rest)) =>
700
777
  val next = Cons(y, rest) // Future work: Replace this by an @-pattern!
701
- compare(x, y) && go(next)
778
+ lessOrEqual(x, y) && go(next)
779
+ case _ => true
702
780
  }
703
781
  }
704
782
  go(list)
@@ -30,6 +30,7 @@ extern global def ref[T](init: T): Ref[T] =
30
30
  %z = call %Pos @c_ref_fresh(%Pos ${init})
31
31
  ret %Pos %z
32
32
  """
33
+ vm "ref::ref[T](T)"
33
34
 
34
35
  /// Gets the referenced element of the `ref` in constant time.
35
36
  extern global def get[T](ref: Ref[T]): T =
@@ -39,6 +40,7 @@ extern global def get[T](ref: Ref[T]): T =
39
40
  %z = call %Pos @c_ref_get(%Pos ${ref})
40
41
  ret %Pos %z
41
42
  """
43
+ vm "ref::get[T](Ref[T])"
42
44
 
43
45
  /// Sets the referenced element of the `ref` to `value` in constant time.
44
46
  extern global def set[T](ref: Ref[T], value: T): Unit =
@@ -48,3 +50,4 @@ extern global def set[T](ref: Ref[T], value: T): Unit =
48
50
  %z = call %Pos @c_ref_set(%Pos ${ref}, %Pos ${value})
49
51
  ret %Pos %z
50
52
  """
53
+ vm "ref::set[T](Ref[T], T)"
@@ -109,6 +109,15 @@ declare double @llvm.sqrt.f64(double)
109
109
  declare double @llvm.round.f64(double)
110
110
  declare double @llvm.ceil.f64(double)
111
111
  declare double @llvm.floor.f64(double)
112
+ declare double @llvm.cos.f64(double)
113
+ declare double @llvm.sin.f64(double)
114
+ declare double @llvm.log.f64(double)
115
+ declare double @llvm.exp.f64(double)
116
+ declare double @llvm.pow.f64(double, double)
117
+ declare double @log1p(double)
118
+ ; Intrinsic versions of the following two only added in LLVM 19
119
+ declare double @atan(double)
120
+ declare double @tan(double)
112
121
  declare void @print(i64)
113
122
  declare void @exit(i64)
114
123
  declare void @llvm.assume(i1)
@@ -1,4 +1,4 @@
1
- <!doctype html><html lang=en><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><title>Eclipse Public License 2.0 (EPL) | The Eclipse Foundation</title><meta property="og:title" content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=twitter:title content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta property="og:description" content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=twitter:description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=author content="Wayne Beaton"><link href=/favicon.ico rel=icon type=image/x-icon><meta property="og:image" content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:image content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:card content="summary"><meta name=twitter:site content="@eclipsefdn"><meta name=twitter:creator content="@eclipsefdn"><meta property="og:url" content="https://www.eclipse.org/legal/epl-2.0/"><meta property="og:type" content="website"><meta property="og:site_name" content="Eclipse Foundation"><meta name=keywords content="epl,epl-2.0,legal,foundation,eclipse,eclipse public license,license,licenses"><meta name=generator content="Hugo 0.110.0"><link rel=canonical href=https://www.eclipse.org/legal/epl-2.0/><link rel=alternate href=/legal/epl-2.0/index.xml type=application/rss+xml title><link rel=stylesheet href="/public/css/styles.css?v=1736104525"><script>(function(e,t,n,s,o){e[s]=e[s]||[],e[s].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var a=t.getElementsByTagName(n)[0],i=t.createElement(n),r=s!="dataLayer"?"&l="+s:"";i.async=!0,i.src="https://www.googletagmanager.com/gtm.js?id="+o+r,a.parentNode.insertBefore(i,a)})(window,document,"script","dataLayer","GTM-5WLCZXC")</script><script>var tableClasses="table"</script><link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel=stylesheet type=text/css></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5WLCZXC" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript><a class=sr-only href=#content>Skip to main content</a><header class="header-wrapper header-wrapper" id=header><div class=header-toolbar><div class=container><div class=header-toolbar-row><div class="toolbar-btn toolbar-search-btn dropdown"><button class=dropdown-toggle id=toolbar-search type=button data-toggle=dropdown tabindex=0 aria-label=Search>
1
+ <!doctype html><html lang=en><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><title>Eclipse Public License 2.0 (EPL) | The Eclipse Foundation</title><meta property="og:title" content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=twitter:title content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta property="og:description" content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=twitter:description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=author content="Wayne Beaton"><link href=/favicon.ico rel=icon type=image/x-icon><meta property="og:image" content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:image content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:card content="summary"><meta name=twitter:site content="@eclipsefdn"><meta name=twitter:creator content="@eclipsefdn"><meta property="og:url" content="https://www.eclipse.org/legal/epl-2.0/"><meta property="og:type" content="website"><meta property="og:site_name" content="Eclipse Foundation"><meta name=keywords content="epl,epl-2.0,legal,foundation,eclipse,eclipse public license,license,licenses"><meta name=generator content="Hugo 0.110.0"><link rel=canonical href=https://www.eclipse.org/legal/epl-2.0/><link rel=alternate href=/legal/epl-2.0/index.xml type=application/rss+xml title><link rel=stylesheet href="/public/css/styles.css?v=1737314120"><script>(function(e,t,n,s,o){e[s]=e[s]||[],e[s].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var a=t.getElementsByTagName(n)[0],i=t.createElement(n),r=s!="dataLayer"?"&l="+s:"";i.async=!0,i.src="https://www.googletagmanager.com/gtm.js?id="+o+r,a.parentNode.insertBefore(i,a)})(window,document,"script","dataLayer","GTM-5WLCZXC")</script><script>var tableClasses="table"</script><link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel=stylesheet type=text/css></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5WLCZXC" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript><a class=sr-only href=#content>Skip to main content</a><header class="header-wrapper header-wrapper" id=header><div class=header-toolbar><div class=container><div class=header-toolbar-row><div class="toolbar-btn toolbar-search-btn dropdown"><button class=dropdown-toggle id=toolbar-search type=button data-toggle=dropdown tabindex=0 aria-label=Search>
2
2
  <i class="fa fa-search fa-lg" aria-role=none></i></button><div class="toolbar-search-bar-wrapper dropdown-menu dropdown-menu-right" aria-labelledby=toolbar-search><form action=https://www.eclipse.org/home/search method=get><div class=search-bar><input class=search-bar-input name=q placeholder=Search>
3
3
  <button>
4
4
  <i class="fa fa-search" type=submit></i></button></div></form></div></div><div class="toolbar-btn toolbar-user-menu-btn dropdown"><button class=dropdown-toggle id=toolbar-user-menu type=button data-toggle=dropdown tabindex=0 aria-label="User Menu">
@@ -57,5 +57,5 @@ open source software collaboration and innovation.</p></div><div class=mega-menu
57
57
  <i class="fa-brands fa-linkedin-in fa-stack-1x fa-inverse" aria-hidden=true></i>
58
58
  <span class=sr-only>Linkedin account</span></span></a></li></ul></div></div><div class="footer-sections row equal-height-md font-bold"><div class=col-md-15><div class=row><section id=footer-eclipse-foundation class="footer-section col-sm-8"><div class=menu-heading>Eclipse Foundation</div><ul class=nav><li><a href=https://www.eclipse.org/org/>About</a></li><li><a href=https://projects.eclipse.org/>Projects</a></li><li><a href=https://www.eclipse.org/collaborations/>Collaborations</a></li><li><a href=https://www.eclipse.org/membership/>Membership</a></li><li><a href=https://www.eclipse.org/sponsor/>Sponsor</a></li></ul></section><section id=footer-legal class="footer-section col-sm-8"><div class=menu-heading>Legal</div><ul class=nav><li><a href=https://www.eclipse.org/legal/privacy/>Privacy Policy</a></li><li><a href=https://www.eclipse.org/legal/terms-of-use/>Terms of Use</a></li><li><a href=https://www.eclipse.org/legal/compliance/>Compliance</a></li><li><a href=https://www.eclipse.org/org/documents/Community_Code_of_Conduct.php>Code of Conduct</a></li><li><a href=https://www.eclipse.org/legal/>Legal Resources</a></li><li><a class=toolbar-manage-cookies href=# onclick=event.preventDefault()>Manage Cookies</a></li></ul></section><section id=footer-more class="footer-section col-sm-8"><div class=menu-heading>More</div><ul class=nav><li><a href=https://www.eclipse.org/security/>Report a Vulnerability</a></li><li><a href=https://status.eclipse.org/>Service Status</a></li><li><a href=https://www.eclipse.org/org/foundation/contact.php>Contact Us</a></li><li><a href=https://www.eclipse.org/projects/support/>Support</a></li></ul></section></div></div><div id=footer-end class="footer-section col-md-8 col-md-offset-1 col-sm-24"><div class=footer-end-newsletter><form id=mc-embedded-subscribe-form action=https://eclipsecon.us6.list-manage.com/subscribe/post method=post novalidate target=_blank><label class=footer-end-newsletter-label for=email>Subscribe to our Newsletter</label><div class=footer-end-newsletter-input-wrapper><input class=footer-end-newsletter-input type=email id=email name=EMAIL autocomplete=email placeholder="Enter your email address"><div><i class="fa fa-solid fa-envelope fa-lg" aria-hidden=true></i></div></div><input type=hidden name=u value=eaf9e1f06f194eadc66788a85>
59
59
  <input type=hidden name=id value=46e57eacf1>
60
- <input id=mc-embedded-subscribe type=submit name=subscribe hidden></form></div></div></div><div class="col-sm-24 margin-top-20"><div class=row><div id=copyright class=col-md-16><p id=copyright-text>Copyright &copy; Eclipse Foundation AISBL. All Rights Reserved.</p></div></div></div><a href=# class=scrollup>Back to the top</a></div></footer><div id=footer-js><script src="/public/js/main.js?v1.0?v=1736104525"></script>
60
+ <input id=mc-embedded-subscribe type=submit name=subscribe hidden></form></div></div></div><div class="col-sm-24 margin-top-20"><div class=row><div id=copyright class=col-md-16><p id=copyright-text>Copyright &copy; Eclipse Foundation AISBL. All Rights Reserved.</p></div></div></div><a href=# class=scrollup>Back to the top</a></div></footer><div id=footer-js><script src="/public/js/main.js?v1.0?v=1737314120"></script>
61
61
  <script>(function(){})(jQuery,document)</script></div></body></html>
@@ -214,7 +214,7 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
214
214
  padding: 0 !important;
215
215
  }
216
216
  </style>
217
- <link rel='stylesheet' id='wp-block-library-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/block-library/style.css?ver=19.9.0' type='text/css' media='all' />
217
+ <link rel='stylesheet' id='wp-block-library-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/block-library/style.css?ver=20.0.0' type='text/css' media='all' />
218
218
  <style id='osi-event-list-style-inline-css' type='text/css'>
219
219
  /*!***************************************************************************************************************************************************************************************************************************************!*\
220
220
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[3]!./src/style.scss ***!
@@ -230,7 +230,7 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
230
230
  .wp-block-mfb-meta-field-block,.wp-block-mfb-meta-field-block *{box-sizing:border-box}.wp-block-mfb-meta-field-block.is-layout-flow>.prefix,.wp-block-mfb-meta-field-block.is-layout-flow>.suffix,.wp-block-mfb-meta-field-block.is-layout-flow>.value{margin-block-end:0;margin-block-start:0}.wp-block-mfb-meta-field-block.is-display-inline-block>*{display:inline-block}.wp-block-mfb-meta-field-block.is-display-inline-block .prefix{margin-inline-end:var(--mfb--gap,.5em)}.wp-block-mfb-meta-field-block.is-display-inline-block .suffix{margin-inline-start:var(--mfb--gap,.5em)}
231
231
 
232
232
  </style>
233
- <link rel='stylesheet' id='plethoraplugins-tabs-style-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/plethora-tabs-accordions/build/style-index.css?ver=1.1.5' type='text/css' media='all' />
233
+ <link rel='stylesheet' id='plethoraplugins-tabs-style-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/plethora-tabs-accordions/build/style-index.css?ver=1.3' type='text/css' media='all' />
234
234
  <style id='safe-svg-svg-icon-style-inline-css' type='text/css'>
235
235
  .safe-svg-cover{text-align:center}.safe-svg-cover .safe-svg-inside{display:inline-block;max-width:100%}.safe-svg-cover svg{height:100%;max-height:100%;max-width:100%;width:100%}
236
236
 
@@ -243,7 +243,7 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
243
243
  <link rel='stylesheet' id='coblocks-frontend-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/style-coblocks-1.css?ver=3.1.14' type='text/css' media='all' />
244
244
  <link rel='stylesheet' id='coblocks-extensions-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/style-coblocks-extensions.css?ver=3.1.14' type='text/css' media='all' />
245
245
  <link rel='stylesheet' id='coblocks-animation-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/style-coblocks-animation.css?ver=2677611078ee87eb3b1c' type='text/css' media='all' />
246
- <link rel='stylesheet' id='contact-form-7-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.0.2' type='text/css' media='all' />
246
+ <link rel='stylesheet' id='contact-form-7-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.0.3' type='text/css' media='all' />
247
247
  <link rel='stylesheet' id='events-manager-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager/includes/css/events-manager.min.css?ver=6.6.3' type='text/css' media='all' />
248
248
  <link rel='stylesheet' id='events-manager-pro-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager-pro/includes/css/events-manager-pro.css?ver=3.4.1' type='text/css' media='all' />
249
249
  <style id='global-styles-inline-css' type='text/css'>
@@ -251,9 +251,9 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
251
251
  :root :where(.wp-block-pullquote){font-size: clamp(0.984em, 0.984rem + ((1vw - 0.2em) * 0.645), 1.5em);line-height: 1.6;}
252
252
  </style>
253
253
  <link rel='stylesheet' id='comment_styles-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/wp-discourse/lib/../css/comments.css?ver=1734028771' type='text/css' media='all' />
254
- <link rel='stylesheet' id='cmplz-general-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/assets/css/cookieblocker.min.css?ver=1731609560' type='text/css' media='all' />
254
+ <link rel='stylesheet' id='cmplz-general-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/assets/css/cookieblocker.min.css?ver=1736534359' type='text/css' media='all' />
255
255
  <link rel='stylesheet' id='dashicons-css' href='https://c0.wp.com/c/6.7.1/wp-includes/css/dashicons.min.css' type='text/css' media='all' />
256
- <link rel='stylesheet' id='wp-components-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/components/style.css?ver=19.9.0' type='text/css' media='all' />
256
+ <link rel='stylesheet' id='wp-components-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/components/style.css?ver=20.0.0' type='text/css' media='all' />
257
257
  <link rel='stylesheet' id='godaddy-styles-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/includes/Dependencies/GoDaddy/Styles/build/latest.css?ver=2.0.2' type='text/css' media='all' />
258
258
  <link rel='stylesheet' id='indieweb-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/indieweb/static/css/indieweb.css?ver=4.0.5' type='text/css' media='all' />
259
259
  <link rel='stylesheet' id='webmention-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/webmention/assets/css/webmention.css?ver=5.3.3' type='text/css' media='all' />
@@ -298,7 +298,7 @@ jQuery(function(jQuery){jQuery.datepicker.setDefaults({"closeText":"Close","curr
298
298
  <script type="text/javascript" src="https://c0.wp.com/c/6.7.1/wp-includes/js/jquery/ui/dialog.min.js" id="jquery-ui-dialog-js"></script>
299
299
  <script type="text/javascript" id="events-manager-js-extra">
300
300
  /* <![CDATA[ */
301
- var EM = {"ajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","locationajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php?action=locations_search","firstDay":"1","locale":"en","dateFormat":"yy-mm-dd","ui_css":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager\/includes\/css\/jquery-ui\/build.min.css","show24hours":"0","is_ssl":"1","autocomplete_limit":"10","calendar":{"breakpoints":{"small":560,"medium":908,"large":false}},"phone":"","datepicker":{"format":"Y-m-d"},"search":{"breakpoints":{"small":650,"medium":850,"full":false}},"url":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager","bookingInProgress":"Please wait while the booking is being submitted.","tickets_save":"Save Ticket","bookingajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","bookings_export_save":"Export Bookings","bookings_settings_save":"Save Settings","booking_delete":"Are you sure you want to delete?","booking_offset":"30","bookings":{"submit_button":{"text":{"default":"Submit Booking","free":"Submit Booking","payment":"Submit Booking - %s","processing":"Processing ..."}},"update_listener":""},"bb_full":"Sold Out","bb_book":"Book Now","bb_booking":"Booking...","bb_booked":"Booking Submitted","bb_error":"Booking Error. Try again?","bb_cancel":"Cancel","bb_canceling":"Canceling...","bb_cancelled":"Cancelled","bb_cancel_error":"Cancellation Error. Try again?","txt_search":"Search","txt_searching":"Searching...","txt_loading":"Loading...","cache":"1","api_nonce":"c092e79924","attendance_api_url":"https:\/\/opensource.org\/wp-json\/events-manager\/v1\/attendance"};
301
+ var EM = {"ajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","locationajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php?action=locations_search","firstDay":"1","locale":"en","dateFormat":"yy-mm-dd","ui_css":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager\/includes\/css\/jquery-ui\/build.min.css","show24hours":"0","is_ssl":"1","autocomplete_limit":"10","calendar":{"breakpoints":{"small":560,"medium":908,"large":false}},"phone":"","datepicker":{"format":"Y-m-d"},"search":{"breakpoints":{"small":650,"medium":850,"full":false}},"url":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager","bookingInProgress":"Please wait while the booking is being submitted.","tickets_save":"Save Ticket","bookingajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","bookings_export_save":"Export Bookings","bookings_settings_save":"Save Settings","booking_delete":"Are you sure you want to delete?","booking_offset":"30","bookings":{"submit_button":{"text":{"default":"Submit Booking","free":"Submit Booking","payment":"Submit Booking - %s","processing":"Processing ..."}},"update_listener":""},"bb_full":"Sold Out","bb_book":"Book Now","bb_booking":"Booking...","bb_booked":"Booking Submitted","bb_error":"Booking Error. Try again?","bb_cancel":"Cancel","bb_canceling":"Canceling...","bb_cancelled":"Cancelled","bb_cancel_error":"Cancellation Error. Try again?","txt_search":"Search","txt_searching":"Searching...","txt_loading":"Loading...","cache":"1","api_nonce":"78434fac4e","attendance_api_url":"https:\/\/opensource.org\/wp-json\/events-manager\/v1\/attendance"};
302
302
  /* ]]> */
303
303
  </script>
304
304
  <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager/includes/js/events-manager.js?ver=6.6.3" id="events-manager-js"></script>
@@ -836,7 +836,32 @@ form.customize-unpreviewable {
836
836
  .term-board-member .member-seat.inline-list{display: none;}
837
837
 
838
838
  .page-id-2549 .member-seat.inline-list{display: none;}
839
- </style>
839
+
840
+ .wp-block-osi-main-sponsors-list {
841
+ border:0 !important;
842
+ }
843
+
844
+ .alumni-board-grid {
845
+ display: grid;
846
+ grid-template-columns: repeat(3, 1fr); /* 3 columns */
847
+ gap: 20px; /* Space between grid items */
848
+ margin-top: 20px;
849
+ }
850
+
851
+ .alumni-board-grid .wp-block-post {
852
+ border: 1px solid #ddd;
853
+ border-radius: 10px;
854
+ padding: 15px;
855
+ text-align: center;
856
+ box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); /* Subtle shadow */
857
+ }
858
+
859
+ .alumni-board-grid .wp-block-post img {
860
+ max-width: 100%;
861
+ height: auto;
862
+ border-radius: 8px;
863
+ margin-bottom: 10px;
864
+ } </style>
840
865
  </head>
841
866
 
842
867
  <body data-cmplz=1 class="license-template-default single single-license postid-395 wp-custom-logo wp-embed-responsive jps-theme-osi">
@@ -983,7 +1008,6 @@ form.customize-unpreviewable {
983
1008
  <div class="widgetized-footer footer--widgets wp-block-columns alignwide">
984
1009
  <section class="wp-block-column widget block-17 widget_block"><div class="widget-inner">
985
1010
  <div class="wp-block-group is-layout-constrained wp-block-group-is-layout-constrained"><div class="widget widget_nav_menu"><h2 class="widgettitle">About</h2><div class="menu-about-container"><ul id="menu-about" class="menu"><li id="menu-item-5428" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5428"><a href="https://opensource.org/about">About</a></li>
986
- <li id="menu-item-71945" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-71945"><a href="https://opensource.org/about/team/vacancy-osi-policy-analyst-us">Vacancy: US Policy Analyst</a></li>
987
1011
  <li id="menu-item-17410" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17410"><a href="https://opensource.org/about/team">Our team</a></li>
988
1012
  <li id="menu-item-5430" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5430"><a href="https://opensource.org/associations">Associations</a></li>
989
1013
  <li id="menu-item-20858" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20858"><a href="https://opensource.org/sponsors">Sponsors</a></li>
@@ -1199,7 +1223,7 @@ var coblocksTinyswiper = {"carouselPrevButtonAriaLabel":"Previous","carouselNext
1199
1223
  /* ]]> */
1200
1224
  </script>
1201
1225
  <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/js/coblocks-tinyswiper-initializer.js?ver=3.1.14" id="coblocks-tinyswiper-initializer-js"></script>
1202
- <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.0.2" id="swv-js"></script>
1226
+ <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.0.3" id="swv-js"></script>
1203
1227
  <script type="text/javascript" id="contact-form-7-js-before">
1204
1228
  /* <![CDATA[ */
1205
1229
  var wpcf7 = {
@@ -1211,7 +1235,7 @@ var wpcf7 = {
1211
1235
  };
1212
1236
  /* ]]> */
1213
1237
  </script>
1214
- <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.0.2" id="contact-form-7-js"></script>
1238
+ <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.0.3" id="contact-form-7-js"></script>
1215
1239
  <script type="text/javascript" id="load_comments_js-js-extra">
1216
1240
  /* <![CDATA[ */
1217
1241
  var wpdc = {"commentsURL":"https:\/\/opensource.org\/wp-json\/wp-discourse\/v1\/discourse-comments"};
@@ -1227,37 +1251,37 @@ wp.jpI18nLoader.state = {"baseUrl":"https://opensource.org/wp-content/languages/
1227
1251
  <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/url/index.min.js?ver=499ac283dc628dfb623e" id="wp-url-js"></script>
1228
1252
  <script type="text/javascript" id="jetpack-instant-search-js-before">
1229
1253
  /* <![CDATA[ */
1230
- var JetpackInstantSearchOptions=JSON.parse(decodeURIComponent("%7B%22overlayOptions%22%3A%7B%22colorTheme%22%3A%22light%22%2C%22enableInfScroll%22%3Atrue%2C%22enableFilteringOpensOverlay%22%3Atrue%2C%22enablePostDate%22%3Atrue%2C%22enableSort%22%3Atrue%2C%22highlightColor%22%3A%22%23fdd7b9%22%2C%22overlayTrigger%22%3A%22submit%22%2C%22resultFormat%22%3A%22expanded%22%2C%22showPoweredBy%22%3Atrue%2C%22defaultSort%22%3A%22relevance%22%2C%22excludedPostTypes%22%3A%5B%22attachment%22%5D%7D%2C%22homeUrl%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%22%2C%22locale%22%3A%22en-US%22%2C%22postsPerPage%22%3A12%2C%22siteId%22%3A210318891%2C%22postTypes%22%3A%7B%22post%22%3A%7B%22singular_name%22%3A%22Post%22%2C%22name%22%3A%22Posts%22%7D%2C%22page%22%3A%7B%22singular_name%22%3A%22Page%22%2C%22name%22%3A%22Pages%22%7D%2C%22attachment%22%3A%7B%22singular_name%22%3A%22Media%22%2C%22name%22%3A%22Media%22%7D%2C%22supporter%22%3A%7B%22singular_name%22%3A%22Supporter%22%2C%22name%22%3A%22Supporters%22%7D%2C%22board-member%22%3A%7B%22singular_name%22%3A%22Board%20Member%22%2C%22name%22%3A%22Board%20Members%22%7D%2C%22license%22%3A%7B%22singular_name%22%3A%22License%22%2C%22name%22%3A%22Licenses%22%7D%2C%22meeting-minutes%22%3A%7B%22singular_name%22%3A%22Meeting%20Minutes%22%2C%22name%22%3A%22Meeting%20Minutes%22%7D%2C%22press-mentions%22%3A%7B%22singular_name%22%3A%22Press%20mentions%22%2C%22name%22%3A%22Press%20mentions%22%7D%7D%2C%22webpackPublicPath%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-content%5C%2Fplugins%5C%2Fjetpack%5C%2Fjetpack_vendor%5C%2Fautomattic%5C%2Fjetpack-search%5C%2Fbuild%5C%2Finstant-search%5C%2F%22%2C%22isPhotonEnabled%22%3Atrue%2C%22isFreePlan%22%3Afalse%2C%22apiRoot%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-json%5C%2F%22%2C%22apiNonce%22%3A%22c092e79924%22%2C%22isPrivateSite%22%3Afalse%2C%22isWpcom%22%3Afalse%2C%22hasOverlayWidgets%22%3Atrue%2C%22widgets%22%3A%5B%7B%22filters%22%3A%5B%7B%22name%22%3A%22Post%20Types%22%2C%22type%22%3A%22post_type%22%2C%22count%22%3A6%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22post_type_0%22%7D%2C%7B%22name%22%3A%22Categories%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22category%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_1%22%7D%2C%7B%22name%22%3A%22Tags%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22post_tag%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_2%22%7D%2C%7B%22name%22%3A%22Year%22%2C%22type%22%3A%22date_histogram%22%2C%22count%22%3A5%2C%22field%22%3A%22post_date%22%2C%22interval%22%3A%22year%22%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22date_histogram_3%22%7D%5D%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%7D%5D%2C%22widgetsOutsideOverlay%22%3A%5B%5D%2C%22hasNonSearchWidgets%22%3Afalse%2C%22preventTrackingCookiesReset%22%3Afalse%7D"));
1254
+ var JetpackInstantSearchOptions=JSON.parse(decodeURIComponent("%7B%22overlayOptions%22%3A%7B%22colorTheme%22%3A%22light%22%2C%22enableInfScroll%22%3Atrue%2C%22enableFilteringOpensOverlay%22%3Atrue%2C%22enablePostDate%22%3Atrue%2C%22enableSort%22%3Atrue%2C%22highlightColor%22%3A%22%23fdd7b9%22%2C%22overlayTrigger%22%3A%22submit%22%2C%22resultFormat%22%3A%22expanded%22%2C%22showPoweredBy%22%3Atrue%2C%22defaultSort%22%3A%22relevance%22%2C%22excludedPostTypes%22%3A%5B%22attachment%22%5D%7D%2C%22homeUrl%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%22%2C%22locale%22%3A%22en-US%22%2C%22postsPerPage%22%3A12%2C%22siteId%22%3A210318891%2C%22postTypes%22%3A%7B%22post%22%3A%7B%22singular_name%22%3A%22Post%22%2C%22name%22%3A%22Posts%22%7D%2C%22page%22%3A%7B%22singular_name%22%3A%22Page%22%2C%22name%22%3A%22Pages%22%7D%2C%22attachment%22%3A%7B%22singular_name%22%3A%22Media%22%2C%22name%22%3A%22Media%22%7D%2C%22supporter%22%3A%7B%22singular_name%22%3A%22Supporter%22%2C%22name%22%3A%22Supporters%22%7D%2C%22board-member%22%3A%7B%22singular_name%22%3A%22Board%20Member%22%2C%22name%22%3A%22Board%20Members%22%7D%2C%22license%22%3A%7B%22singular_name%22%3A%22License%22%2C%22name%22%3A%22Licenses%22%7D%2C%22meeting-minutes%22%3A%7B%22singular_name%22%3A%22Meeting%20Minutes%22%2C%22name%22%3A%22Meeting%20Minutes%22%7D%2C%22press-mentions%22%3A%7B%22singular_name%22%3A%22Press%20mentions%22%2C%22name%22%3A%22Press%20mentions%22%7D%7D%2C%22webpackPublicPath%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-content%5C%2Fplugins%5C%2Fjetpack%5C%2Fjetpack_vendor%5C%2Fautomattic%5C%2Fjetpack-search%5C%2Fbuild%5C%2Finstant-search%5C%2F%22%2C%22isPhotonEnabled%22%3Atrue%2C%22isFreePlan%22%3Afalse%2C%22apiRoot%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-json%5C%2F%22%2C%22apiNonce%22%3A%2278434fac4e%22%2C%22isPrivateSite%22%3Afalse%2C%22isWpcom%22%3Afalse%2C%22hasOverlayWidgets%22%3Atrue%2C%22widgets%22%3A%5B%7B%22filters%22%3A%5B%7B%22name%22%3A%22Post%20Types%22%2C%22type%22%3A%22post_type%22%2C%22count%22%3A6%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22post_type_0%22%7D%2C%7B%22name%22%3A%22Categories%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22category%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_1%22%7D%2C%7B%22name%22%3A%22Tags%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22post_tag%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_2%22%7D%2C%7B%22name%22%3A%22Year%22%2C%22type%22%3A%22date_histogram%22%2C%22count%22%3A5%2C%22field%22%3A%22post_date%22%2C%22interval%22%3A%22year%22%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22date_histogram_3%22%7D%5D%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%7D%5D%2C%22widgetsOutsideOverlay%22%3A%5B%5D%2C%22hasNonSearchWidgets%22%3Afalse%2C%22preventTrackingCookiesReset%22%3Afalse%7D"));
1231
1255
  /* ]]> */
1232
1256
  </script>
1233
- <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/jp-search.js?minify=false&amp;ver=986418c32752bbc685a0" id="jetpack-instant-search-js"></script>
1234
- <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="//stats.wp.com/w.js?ver=202502" id="jp-tracks-js"></script>
1257
+ <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/jp-search.js?minify=false&amp;ver=da5ecd9f722e7fcb409e" id="jetpack-instant-search-js"></script>
1258
+ <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="//stats.wp.com/w.js?ver=202504" id="jp-tracks-js"></script>
1235
1259
  <script type="text/javascript" id="osi-theme-scripts-js-before">
1236
1260
  /* <![CDATA[ */
1237
1261
  const OSI_LICENSE_DB = {"ajaxURL":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","action":"osi_license_db"}
1238
1262
  /* ]]> */
1239
1263
  </script>
1240
1264
  <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/themes/osi/assets/js/build/theme.js?ver=1724798073" id="osi-theme-scripts-js"></script>
1241
- <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="https://stats.wp.com/e-202502.js" id="jetpack-stats-js" data-wp-strategy="defer"></script>
1265
+ <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="https://stats.wp.com/e-202504.js" id="jetpack-stats-js" data-wp-strategy="defer"></script>
1242
1266
  <script type="text/javascript" id="jetpack-stats-js-after">
1243
1267
  /* <![CDATA[ */
1244
1268
  _stq = window._stq || [];
1245
- _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"210318891\",\"post\":\"395\",\"tz\":\"0\",\"srv\":\"opensource.org\",\"hp\":\"atomic\",\"ac\":\"3\",\"amp\":\"0\",\"j\":\"1:14.2-a.9\"}") ]);
1269
+ _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"210318891\",\"post\":\"395\",\"tz\":\"0\",\"srv\":\"opensource.org\",\"hp\":\"atomic\",\"ac\":\"3\",\"amp\":\"0\",\"j\":\"1:14.3-a.1\"}") ]);
1246
1270
  _stq.push([ "clickTrackerInit", "210318891", "395" ]);
1247
1271
  /* ]]> */
1248
1272
  </script>
1249
1273
  <script type="text/javascript" id="cmplz-cookiebanner-js-extra">
1250
1274
  /* <![CDATA[ */
1251
- var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"63","version":"7.1.5","store_consent":"","do_not_track_enabled":"1","consenttype":"optin","region":"eu","geoip":"","dismiss_timeout":"","disable_cookiebanner":"1","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https:\/\/opensource.org\/wp-json\/complianz\/v1\/","locale":"lang=en&locale=en_US","set_cookies_on_root":"","cookie_domain":"","current_policy_id":"16","cookie_path":"\/","categories":{"statistics":"statistics","marketing":"marketing"},"tcf_active":"","placeholdertext":"Click to accept {category} cookies and enable this content","css_file":"https:\/\/opensource.org\/wp-content\/uploads\/complianz\/css\/banner-{banner_id}-{type}.css?v=63","page_links":{"eu":{"cookie-statement":{"title":"","url":"https:\/\/opensource.org\/definition-annotated"}}},"tm_categories":"","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Click to accept {category} cookies and enable this content"};
1275
+ var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"67","version":"7.2.0","store_consent":"","do_not_track_enabled":"1","consenttype":"optin","region":"eu","geoip":"","dismiss_timeout":"","disable_cookiebanner":"1","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https:\/\/opensource.org\/wp-json\/complianz\/v1\/","locale":"lang=en&locale=en_US","set_cookies_on_root":"","cookie_domain":"","current_policy_id":"16","cookie_path":"\/","categories":{"statistics":"statistics","marketing":"marketing"},"tcf_active":"","placeholdertext":"Click to accept {category} cookies and enable this content","css_file":"https:\/\/opensource.org\/wp-content\/uploads\/complianz\/css\/banner-{banner_id}-{type}.css?v=67","page_links":{"eu":{"cookie-statement":{"title":"","url":"https:\/\/opensource.org\/license\/mpl-2-0"}}},"tm_categories":"","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Click to accept {category} cookies and enable this content"};
1252
1276
  /* ]]> */
1253
1277
  </script>
1254
- <script defer type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/cookiebanner/js/complianz.min.js?ver=1731609560" id="cmplz-cookiebanner-js"></script>
1278
+ <script defer type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/cookiebanner/js/complianz.min.js?ver=1736534359" id="cmplz-cookiebanner-js"></script>
1255
1279
 
1256
- <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8fd8ac9c0bce57c4',t:'MTczNjEzNDY5Ni4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1280
+ <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'904bff21bdea07c8',t:'MTczNzM0MzkzOC4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1257
1281
  </html>
1258
1282
  <!--
1259
- generated 14 seconds ago
1260
- generated in 0.543 seconds
1283
+ generated 7 seconds ago
1284
+ generated in 0.522 seconds
1261
1285
  served from batcache in 0.003 seconds
1262
- expires in 286 seconds
1286
+ expires in 293 seconds
1263
1287
  -->
@@ -214,7 +214,7 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
214
214
  padding: 0 !important;
215
215
  }
216
216
  </style>
217
- <link rel='stylesheet' id='wp-block-library-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/block-library/style.css?ver=19.9.0' type='text/css' media='all' />
217
+ <link rel='stylesheet' id='wp-block-library-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/block-library/style.css?ver=20.0.0' type='text/css' media='all' />
218
218
  <style id='osi-event-list-style-inline-css' type='text/css'>
219
219
  /*!***************************************************************************************************************************************************************************************************************************************!*\
220
220
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[3]!./src/style.scss ***!
@@ -230,7 +230,7 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
230
230
  .wp-block-mfb-meta-field-block,.wp-block-mfb-meta-field-block *{box-sizing:border-box}.wp-block-mfb-meta-field-block.is-layout-flow>.prefix,.wp-block-mfb-meta-field-block.is-layout-flow>.suffix,.wp-block-mfb-meta-field-block.is-layout-flow>.value{margin-block-end:0;margin-block-start:0}.wp-block-mfb-meta-field-block.is-display-inline-block>*{display:inline-block}.wp-block-mfb-meta-field-block.is-display-inline-block .prefix{margin-inline-end:var(--mfb--gap,.5em)}.wp-block-mfb-meta-field-block.is-display-inline-block .suffix{margin-inline-start:var(--mfb--gap,.5em)}
231
231
 
232
232
  </style>
233
- <link rel='stylesheet' id='plethoraplugins-tabs-style-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/plethora-tabs-accordions/build/style-index.css?ver=1.1.5' type='text/css' media='all' />
233
+ <link rel='stylesheet' id='plethoraplugins-tabs-style-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/plethora-tabs-accordions/build/style-index.css?ver=1.3' type='text/css' media='all' />
234
234
  <style id='safe-svg-svg-icon-style-inline-css' type='text/css'>
235
235
  .safe-svg-cover{text-align:center}.safe-svg-cover .safe-svg-inside{display:inline-block;max-width:100%}.safe-svg-cover svg{height:100%;max-height:100%;max-width:100%;width:100%}
236
236
 
@@ -243,7 +243,7 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
243
243
  <link rel='stylesheet' id='coblocks-frontend-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/style-coblocks-1.css?ver=3.1.14' type='text/css' media='all' />
244
244
  <link rel='stylesheet' id='coblocks-extensions-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/style-coblocks-extensions.css?ver=3.1.14' type='text/css' media='all' />
245
245
  <link rel='stylesheet' id='coblocks-animation-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/style-coblocks-animation.css?ver=2677611078ee87eb3b1c' type='text/css' media='all' />
246
- <link rel='stylesheet' id='contact-form-7-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.0.2' type='text/css' media='all' />
246
+ <link rel='stylesheet' id='contact-form-7-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.0.3' type='text/css' media='all' />
247
247
  <link rel='stylesheet' id='events-manager-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager/includes/css/events-manager.min.css?ver=6.6.3' type='text/css' media='all' />
248
248
  <link rel='stylesheet' id='events-manager-pro-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager-pro/includes/css/events-manager-pro.css?ver=3.4.1' type='text/css' media='all' />
249
249
  <style id='global-styles-inline-css' type='text/css'>
@@ -251,9 +251,9 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
251
251
  :root :where(.wp-block-pullquote){font-size: clamp(0.984em, 0.984rem + ((1vw - 0.2em) * 0.645), 1.5em);line-height: 1.6;}
252
252
  </style>
253
253
  <link rel='stylesheet' id='comment_styles-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/wp-discourse/lib/../css/comments.css?ver=1734028771' type='text/css' media='all' />
254
- <link rel='stylesheet' id='cmplz-general-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/assets/css/cookieblocker.min.css?ver=1731609560' type='text/css' media='all' />
254
+ <link rel='stylesheet' id='cmplz-general-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/assets/css/cookieblocker.min.css?ver=1736534359' type='text/css' media='all' />
255
255
  <link rel='stylesheet' id='dashicons-css' href='https://c0.wp.com/c/6.7.1/wp-includes/css/dashicons.min.css' type='text/css' media='all' />
256
- <link rel='stylesheet' id='wp-components-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/components/style.css?ver=19.9.0' type='text/css' media='all' />
256
+ <link rel='stylesheet' id='wp-components-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/components/style.css?ver=20.0.0' type='text/css' media='all' />
257
257
  <link rel='stylesheet' id='godaddy-styles-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/includes/Dependencies/GoDaddy/Styles/build/latest.css?ver=2.0.2' type='text/css' media='all' />
258
258
  <link rel='stylesheet' id='indieweb-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/indieweb/static/css/indieweb.css?ver=4.0.5' type='text/css' media='all' />
259
259
  <link rel='stylesheet' id='webmention-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/webmention/assets/css/webmention.css?ver=5.3.3' type='text/css' media='all' />
@@ -298,7 +298,7 @@ jQuery(function(jQuery){jQuery.datepicker.setDefaults({"closeText":"Close","curr
298
298
  <script type="text/javascript" src="https://c0.wp.com/c/6.7.1/wp-includes/js/jquery/ui/dialog.min.js" id="jquery-ui-dialog-js"></script>
299
299
  <script type="text/javascript" id="events-manager-js-extra">
300
300
  /* <![CDATA[ */
301
- var EM = {"ajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","locationajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php?action=locations_search","firstDay":"1","locale":"en","dateFormat":"yy-mm-dd","ui_css":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager\/includes\/css\/jquery-ui\/build.min.css","show24hours":"0","is_ssl":"1","autocomplete_limit":"10","calendar":{"breakpoints":{"small":560,"medium":908,"large":false}},"phone":"","datepicker":{"format":"Y-m-d"},"search":{"breakpoints":{"small":650,"medium":850,"full":false}},"url":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager","bookingInProgress":"Please wait while the booking is being submitted.","tickets_save":"Save Ticket","bookingajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","bookings_export_save":"Export Bookings","bookings_settings_save":"Save Settings","booking_delete":"Are you sure you want to delete?","booking_offset":"30","bookings":{"submit_button":{"text":{"default":"Submit Booking","free":"Submit Booking","payment":"Submit Booking - %s","processing":"Processing ..."}},"update_listener":""},"bb_full":"Sold Out","bb_book":"Book Now","bb_booking":"Booking...","bb_booked":"Booking Submitted","bb_error":"Booking Error. Try again?","bb_cancel":"Cancel","bb_canceling":"Canceling...","bb_cancelled":"Cancelled","bb_cancel_error":"Cancellation Error. Try again?","txt_search":"Search","txt_searching":"Searching...","txt_loading":"Loading...","cache":"1","api_nonce":"c092e79924","attendance_api_url":"https:\/\/opensource.org\/wp-json\/events-manager\/v1\/attendance"};
301
+ var EM = {"ajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","locationajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php?action=locations_search","firstDay":"1","locale":"en","dateFormat":"yy-mm-dd","ui_css":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager\/includes\/css\/jquery-ui\/build.min.css","show24hours":"0","is_ssl":"1","autocomplete_limit":"10","calendar":{"breakpoints":{"small":560,"medium":908,"large":false}},"phone":"","datepicker":{"format":"Y-m-d"},"search":{"breakpoints":{"small":650,"medium":850,"full":false}},"url":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager","bookingInProgress":"Please wait while the booking is being submitted.","tickets_save":"Save Ticket","bookingajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","bookings_export_save":"Export Bookings","bookings_settings_save":"Save Settings","booking_delete":"Are you sure you want to delete?","booking_offset":"30","bookings":{"submit_button":{"text":{"default":"Submit Booking","free":"Submit Booking","payment":"Submit Booking - %s","processing":"Processing ..."}},"update_listener":""},"bb_full":"Sold Out","bb_book":"Book Now","bb_booking":"Booking...","bb_booked":"Booking Submitted","bb_error":"Booking Error. Try again?","bb_cancel":"Cancel","bb_canceling":"Canceling...","bb_cancelled":"Cancelled","bb_cancel_error":"Cancellation Error. Try again?","txt_search":"Search","txt_searching":"Searching...","txt_loading":"Loading...","cache":"1","api_nonce":"78434fac4e","attendance_api_url":"https:\/\/opensource.org\/wp-json\/events-manager\/v1\/attendance"};
302
302
  /* ]]> */
303
303
  </script>
304
304
  <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager/includes/js/events-manager.js?ver=6.6.3" id="events-manager-js"></script>
@@ -836,7 +836,32 @@ form.customize-unpreviewable {
836
836
  .term-board-member .member-seat.inline-list{display: none;}
837
837
 
838
838
  .page-id-2549 .member-seat.inline-list{display: none;}
839
- </style>
839
+
840
+ .wp-block-osi-main-sponsors-list {
841
+ border:0 !important;
842
+ }
843
+
844
+ .alumni-board-grid {
845
+ display: grid;
846
+ grid-template-columns: repeat(3, 1fr); /* 3 columns */
847
+ gap: 20px; /* Space between grid items */
848
+ margin-top: 20px;
849
+ }
850
+
851
+ .alumni-board-grid .wp-block-post {
852
+ border: 1px solid #ddd;
853
+ border-radius: 10px;
854
+ padding: 15px;
855
+ text-align: center;
856
+ box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); /* Subtle shadow */
857
+ }
858
+
859
+ .alumni-board-grid .wp-block-post img {
860
+ max-width: 100%;
861
+ height: auto;
862
+ border-radius: 8px;
863
+ margin-bottom: 10px;
864
+ } </style>
840
865
  </head>
841
866
 
842
867
  <body data-cmplz=1 class="license-template-default single single-license postid-373 wp-custom-logo wp-embed-responsive jps-theme-osi">
@@ -981,7 +1006,6 @@ form.customize-unpreviewable {
981
1006
  <div class="widgetized-footer footer--widgets wp-block-columns alignwide">
982
1007
  <section class="wp-block-column widget block-17 widget_block"><div class="widget-inner">
983
1008
  <div class="wp-block-group is-layout-constrained wp-block-group-is-layout-constrained"><div class="widget widget_nav_menu"><h2 class="widgettitle">About</h2><div class="menu-about-container"><ul id="menu-about" class="menu"><li id="menu-item-5428" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5428"><a href="https://opensource.org/about">About</a></li>
984
- <li id="menu-item-71945" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-71945"><a href="https://opensource.org/about/team/vacancy-osi-policy-analyst-us">Vacancy: US Policy Analyst</a></li>
985
1009
  <li id="menu-item-17410" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17410"><a href="https://opensource.org/about/team">Our team</a></li>
986
1010
  <li id="menu-item-5430" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5430"><a href="https://opensource.org/associations">Associations</a></li>
987
1011
  <li id="menu-item-20858" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20858"><a href="https://opensource.org/sponsors">Sponsors</a></li>
@@ -1197,7 +1221,7 @@ var coblocksTinyswiper = {"carouselPrevButtonAriaLabel":"Previous","carouselNext
1197
1221
  /* ]]> */
1198
1222
  </script>
1199
1223
  <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/js/coblocks-tinyswiper-initializer.js?ver=3.1.14" id="coblocks-tinyswiper-initializer-js"></script>
1200
- <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.0.2" id="swv-js"></script>
1224
+ <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.0.3" id="swv-js"></script>
1201
1225
  <script type="text/javascript" id="contact-form-7-js-before">
1202
1226
  /* <![CDATA[ */
1203
1227
  var wpcf7 = {
@@ -1209,7 +1233,7 @@ var wpcf7 = {
1209
1233
  };
1210
1234
  /* ]]> */
1211
1235
  </script>
1212
- <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.0.2" id="contact-form-7-js"></script>
1236
+ <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.0.3" id="contact-form-7-js"></script>
1213
1237
  <script type="text/javascript" id="load_comments_js-js-extra">
1214
1238
  /* <![CDATA[ */
1215
1239
  var wpdc = {"commentsURL":"https:\/\/opensource.org\/wp-json\/wp-discourse\/v1\/discourse-comments"};
@@ -1225,37 +1249,37 @@ wp.jpI18nLoader.state = {"baseUrl":"https://opensource.org/wp-content/languages/
1225
1249
  <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/url/index.min.js?ver=499ac283dc628dfb623e" id="wp-url-js"></script>
1226
1250
  <script type="text/javascript" id="jetpack-instant-search-js-before">
1227
1251
  /* <![CDATA[ */
1228
- var JetpackInstantSearchOptions=JSON.parse(decodeURIComponent("%7B%22overlayOptions%22%3A%7B%22colorTheme%22%3A%22light%22%2C%22enableInfScroll%22%3Atrue%2C%22enableFilteringOpensOverlay%22%3Atrue%2C%22enablePostDate%22%3Atrue%2C%22enableSort%22%3Atrue%2C%22highlightColor%22%3A%22%23fdd7b9%22%2C%22overlayTrigger%22%3A%22submit%22%2C%22resultFormat%22%3A%22expanded%22%2C%22showPoweredBy%22%3Atrue%2C%22defaultSort%22%3A%22relevance%22%2C%22excludedPostTypes%22%3A%5B%22attachment%22%5D%7D%2C%22homeUrl%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%22%2C%22locale%22%3A%22en-US%22%2C%22postsPerPage%22%3A12%2C%22siteId%22%3A210318891%2C%22postTypes%22%3A%7B%22post%22%3A%7B%22singular_name%22%3A%22Post%22%2C%22name%22%3A%22Posts%22%7D%2C%22page%22%3A%7B%22singular_name%22%3A%22Page%22%2C%22name%22%3A%22Pages%22%7D%2C%22attachment%22%3A%7B%22singular_name%22%3A%22Media%22%2C%22name%22%3A%22Media%22%7D%2C%22supporter%22%3A%7B%22singular_name%22%3A%22Supporter%22%2C%22name%22%3A%22Supporters%22%7D%2C%22board-member%22%3A%7B%22singular_name%22%3A%22Board%20Member%22%2C%22name%22%3A%22Board%20Members%22%7D%2C%22license%22%3A%7B%22singular_name%22%3A%22License%22%2C%22name%22%3A%22Licenses%22%7D%2C%22meeting-minutes%22%3A%7B%22singular_name%22%3A%22Meeting%20Minutes%22%2C%22name%22%3A%22Meeting%20Minutes%22%7D%2C%22press-mentions%22%3A%7B%22singular_name%22%3A%22Press%20mentions%22%2C%22name%22%3A%22Press%20mentions%22%7D%7D%2C%22webpackPublicPath%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-content%5C%2Fplugins%5C%2Fjetpack%5C%2Fjetpack_vendor%5C%2Fautomattic%5C%2Fjetpack-search%5C%2Fbuild%5C%2Finstant-search%5C%2F%22%2C%22isPhotonEnabled%22%3Atrue%2C%22isFreePlan%22%3Afalse%2C%22apiRoot%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-json%5C%2F%22%2C%22apiNonce%22%3A%22c092e79924%22%2C%22isPrivateSite%22%3Afalse%2C%22isWpcom%22%3Afalse%2C%22hasOverlayWidgets%22%3Atrue%2C%22widgets%22%3A%5B%7B%22filters%22%3A%5B%7B%22name%22%3A%22Post%20Types%22%2C%22type%22%3A%22post_type%22%2C%22count%22%3A6%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22post_type_0%22%7D%2C%7B%22name%22%3A%22Categories%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22category%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_1%22%7D%2C%7B%22name%22%3A%22Tags%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22post_tag%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_2%22%7D%2C%7B%22name%22%3A%22Year%22%2C%22type%22%3A%22date_histogram%22%2C%22count%22%3A5%2C%22field%22%3A%22post_date%22%2C%22interval%22%3A%22year%22%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22date_histogram_3%22%7D%5D%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%7D%5D%2C%22widgetsOutsideOverlay%22%3A%5B%5D%2C%22hasNonSearchWidgets%22%3Afalse%2C%22preventTrackingCookiesReset%22%3Afalse%7D"));
1252
+ var JetpackInstantSearchOptions=JSON.parse(decodeURIComponent("%7B%22overlayOptions%22%3A%7B%22colorTheme%22%3A%22light%22%2C%22enableInfScroll%22%3Atrue%2C%22enableFilteringOpensOverlay%22%3Atrue%2C%22enablePostDate%22%3Atrue%2C%22enableSort%22%3Atrue%2C%22highlightColor%22%3A%22%23fdd7b9%22%2C%22overlayTrigger%22%3A%22submit%22%2C%22resultFormat%22%3A%22expanded%22%2C%22showPoweredBy%22%3Atrue%2C%22defaultSort%22%3A%22relevance%22%2C%22excludedPostTypes%22%3A%5B%22attachment%22%5D%7D%2C%22homeUrl%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%22%2C%22locale%22%3A%22en-US%22%2C%22postsPerPage%22%3A12%2C%22siteId%22%3A210318891%2C%22postTypes%22%3A%7B%22post%22%3A%7B%22singular_name%22%3A%22Post%22%2C%22name%22%3A%22Posts%22%7D%2C%22page%22%3A%7B%22singular_name%22%3A%22Page%22%2C%22name%22%3A%22Pages%22%7D%2C%22attachment%22%3A%7B%22singular_name%22%3A%22Media%22%2C%22name%22%3A%22Media%22%7D%2C%22supporter%22%3A%7B%22singular_name%22%3A%22Supporter%22%2C%22name%22%3A%22Supporters%22%7D%2C%22board-member%22%3A%7B%22singular_name%22%3A%22Board%20Member%22%2C%22name%22%3A%22Board%20Members%22%7D%2C%22license%22%3A%7B%22singular_name%22%3A%22License%22%2C%22name%22%3A%22Licenses%22%7D%2C%22meeting-minutes%22%3A%7B%22singular_name%22%3A%22Meeting%20Minutes%22%2C%22name%22%3A%22Meeting%20Minutes%22%7D%2C%22press-mentions%22%3A%7B%22singular_name%22%3A%22Press%20mentions%22%2C%22name%22%3A%22Press%20mentions%22%7D%7D%2C%22webpackPublicPath%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-content%5C%2Fplugins%5C%2Fjetpack%5C%2Fjetpack_vendor%5C%2Fautomattic%5C%2Fjetpack-search%5C%2Fbuild%5C%2Finstant-search%5C%2F%22%2C%22isPhotonEnabled%22%3Atrue%2C%22isFreePlan%22%3Afalse%2C%22apiRoot%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-json%5C%2F%22%2C%22apiNonce%22%3A%2278434fac4e%22%2C%22isPrivateSite%22%3Afalse%2C%22isWpcom%22%3Afalse%2C%22hasOverlayWidgets%22%3Atrue%2C%22widgets%22%3A%5B%7B%22filters%22%3A%5B%7B%22name%22%3A%22Post%20Types%22%2C%22type%22%3A%22post_type%22%2C%22count%22%3A6%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22post_type_0%22%7D%2C%7B%22name%22%3A%22Categories%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22category%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_1%22%7D%2C%7B%22name%22%3A%22Tags%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22post_tag%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_2%22%7D%2C%7B%22name%22%3A%22Year%22%2C%22type%22%3A%22date_histogram%22%2C%22count%22%3A5%2C%22field%22%3A%22post_date%22%2C%22interval%22%3A%22year%22%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22date_histogram_3%22%7D%5D%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%7D%5D%2C%22widgetsOutsideOverlay%22%3A%5B%5D%2C%22hasNonSearchWidgets%22%3Afalse%2C%22preventTrackingCookiesReset%22%3Afalse%7D"));
1229
1253
  /* ]]> */
1230
1254
  </script>
1231
- <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/jp-search.js?minify=false&amp;ver=986418c32752bbc685a0" id="jetpack-instant-search-js"></script>
1232
- <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="//stats.wp.com/w.js?ver=202502" id="jp-tracks-js"></script>
1255
+ <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/jp-search.js?minify=false&amp;ver=da5ecd9f722e7fcb409e" id="jetpack-instant-search-js"></script>
1256
+ <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="//stats.wp.com/w.js?ver=202504" id="jp-tracks-js"></script>
1233
1257
  <script type="text/javascript" id="osi-theme-scripts-js-before">
1234
1258
  /* <![CDATA[ */
1235
1259
  const OSI_LICENSE_DB = {"ajaxURL":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","action":"osi_license_db"}
1236
1260
  /* ]]> */
1237
1261
  </script>
1238
1262
  <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/themes/osi/assets/js/build/theme.js?ver=1724798073" id="osi-theme-scripts-js"></script>
1239
- <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="https://stats.wp.com/e-202502.js" id="jetpack-stats-js" data-wp-strategy="defer"></script>
1263
+ <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="https://stats.wp.com/e-202504.js" id="jetpack-stats-js" data-wp-strategy="defer"></script>
1240
1264
  <script type="text/javascript" id="jetpack-stats-js-after">
1241
1265
  /* <![CDATA[ */
1242
1266
  _stq = window._stq || [];
1243
- _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"210318891\",\"post\":\"373\",\"tz\":\"0\",\"srv\":\"opensource.org\",\"hp\":\"atomic\",\"ac\":\"3\",\"amp\":\"0\",\"j\":\"1:14.2-a.9\"}") ]);
1267
+ _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"210318891\",\"post\":\"373\",\"tz\":\"0\",\"srv\":\"opensource.org\",\"hp\":\"atomic\",\"ac\":\"3\",\"amp\":\"0\",\"j\":\"1:14.3-a.1\"}") ]);
1244
1268
  _stq.push([ "clickTrackerInit", "210318891", "373" ]);
1245
1269
  /* ]]> */
1246
1270
  </script>
1247
1271
  <script type="text/javascript" id="cmplz-cookiebanner-js-extra">
1248
1272
  /* <![CDATA[ */
1249
- var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"63","version":"7.1.5","store_consent":"","do_not_track_enabled":"1","consenttype":"optin","region":"eu","geoip":"","dismiss_timeout":"","disable_cookiebanner":"1","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https:\/\/opensource.org\/wp-json\/complianz\/v1\/","locale":"lang=en&locale=en_US","set_cookies_on_root":"","cookie_domain":"","current_policy_id":"16","cookie_path":"\/","categories":{"statistics":"statistics","marketing":"marketing"},"tcf_active":"","placeholdertext":"Click to accept {category} cookies and enable this content","css_file":"https:\/\/opensource.org\/wp-content\/uploads\/complianz\/css\/banner-{banner_id}-{type}.css?v=63","page_links":{"eu":{"cookie-statement":{"title":"","url":"https:\/\/opensource.org\/definition-annotated"}}},"tm_categories":"","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Click to accept {category} cookies and enable this content"};
1273
+ var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"67","version":"7.2.0","store_consent":"","do_not_track_enabled":"1","consenttype":"optin","region":"eu","geoip":"","dismiss_timeout":"","disable_cookiebanner":"1","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https:\/\/opensource.org\/wp-json\/complianz\/v1\/","locale":"lang=en&locale=en_US","set_cookies_on_root":"","cookie_domain":"","current_policy_id":"16","cookie_path":"\/","categories":{"statistics":"statistics","marketing":"marketing"},"tcf_active":"","placeholdertext":"Click to accept {category} cookies and enable this content","css_file":"https:\/\/opensource.org\/wp-content\/uploads\/complianz\/css\/banner-{banner_id}-{type}.css?v=67","page_links":{"eu":{"cookie-statement":{"title":"","url":"https:\/\/opensource.org\/blog\/its-2025-were-ready-for-more-open-source"}}},"tm_categories":"","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Click to accept {category} cookies and enable this content"};
1250
1274
  /* ]]> */
1251
1275
  </script>
1252
- <script defer type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/cookiebanner/js/complianz.min.js?ver=1731609560" id="cmplz-cookiebanner-js"></script>
1276
+ <script defer type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/cookiebanner/js/complianz.min.js?ver=1736534359" id="cmplz-cookiebanner-js"></script>
1253
1277
 
1254
- <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8fd8ac9a999357c4',t:'MTczNjEzNDY5Ni4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1278
+ <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'904bff207c7b07c8',t:'MTczNzM0MzkzOC4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1255
1279
  </html>
1256
1280
  <!--
1257
- generated 33 seconds ago
1258
- generated in 0.586 seconds
1259
- served from batcache in 0.002 seconds
1260
- expires in 267 seconds
1281
+ generated 154 seconds ago
1282
+ generated in 0.525 seconds
1283
+ served from batcache in 0.003 seconds
1284
+ expires in 146 seconds
1261
1285
  -->
@@ -214,7 +214,7 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
214
214
  padding: 0 !important;
215
215
  }
216
216
  </style>
217
- <link rel='stylesheet' id='wp-block-library-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/block-library/style.css?ver=19.9.0' type='text/css' media='all' />
217
+ <link rel='stylesheet' id='wp-block-library-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/block-library/style.css?ver=20.0.0' type='text/css' media='all' />
218
218
  <style id='osi-event-list-style-inline-css' type='text/css'>
219
219
  /*!***************************************************************************************************************************************************************************************************************************************!*\
220
220
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[3]!./src/style.scss ***!
@@ -230,7 +230,7 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
230
230
  .wp-block-mfb-meta-field-block,.wp-block-mfb-meta-field-block *{box-sizing:border-box}.wp-block-mfb-meta-field-block.is-layout-flow>.prefix,.wp-block-mfb-meta-field-block.is-layout-flow>.suffix,.wp-block-mfb-meta-field-block.is-layout-flow>.value{margin-block-end:0;margin-block-start:0}.wp-block-mfb-meta-field-block.is-display-inline-block>*{display:inline-block}.wp-block-mfb-meta-field-block.is-display-inline-block .prefix{margin-inline-end:var(--mfb--gap,.5em)}.wp-block-mfb-meta-field-block.is-display-inline-block .suffix{margin-inline-start:var(--mfb--gap,.5em)}
231
231
 
232
232
  </style>
233
- <link rel='stylesheet' id='plethoraplugins-tabs-style-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/plethora-tabs-accordions/build/style-index.css?ver=1.1.5' type='text/css' media='all' />
233
+ <link rel='stylesheet' id='plethoraplugins-tabs-style-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/plethora-tabs-accordions/build/style-index.css?ver=1.3' type='text/css' media='all' />
234
234
  <style id='safe-svg-svg-icon-style-inline-css' type='text/css'>
235
235
  .safe-svg-cover{text-align:center}.safe-svg-cover .safe-svg-inside{display:inline-block;max-width:100%}.safe-svg-cover svg{height:100%;max-height:100%;max-width:100%;width:100%}
236
236
 
@@ -243,7 +243,7 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
243
243
  <link rel='stylesheet' id='coblocks-frontend-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/style-coblocks-1.css?ver=3.1.14' type='text/css' media='all' />
244
244
  <link rel='stylesheet' id='coblocks-extensions-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/style-coblocks-extensions.css?ver=3.1.14' type='text/css' media='all' />
245
245
  <link rel='stylesheet' id='coblocks-animation-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/style-coblocks-animation.css?ver=2677611078ee87eb3b1c' type='text/css' media='all' />
246
- <link rel='stylesheet' id='contact-form-7-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.0.2' type='text/css' media='all' />
246
+ <link rel='stylesheet' id='contact-form-7-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.0.3' type='text/css' media='all' />
247
247
  <link rel='stylesheet' id='events-manager-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager/includes/css/events-manager.min.css?ver=6.6.3' type='text/css' media='all' />
248
248
  <link rel='stylesheet' id='events-manager-pro-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager-pro/includes/css/events-manager-pro.css?ver=3.4.1' type='text/css' media='all' />
249
249
  <style id='global-styles-inline-css' type='text/css'>
@@ -251,9 +251,9 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
251
251
  :root :where(.wp-block-pullquote){font-size: clamp(0.984em, 0.984rem + ((1vw - 0.2em) * 0.645), 1.5em);line-height: 1.6;}
252
252
  </style>
253
253
  <link rel='stylesheet' id='comment_styles-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/wp-discourse/lib/../css/comments.css?ver=1734028771' type='text/css' media='all' />
254
- <link rel='stylesheet' id='cmplz-general-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/assets/css/cookieblocker.min.css?ver=1731609560' type='text/css' media='all' />
254
+ <link rel='stylesheet' id='cmplz-general-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/assets/css/cookieblocker.min.css?ver=1736534359' type='text/css' media='all' />
255
255
  <link rel='stylesheet' id='dashicons-css' href='https://c0.wp.com/c/6.7.1/wp-includes/css/dashicons.min.css' type='text/css' media='all' />
256
- <link rel='stylesheet' id='wp-components-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/components/style.css?ver=19.9.0' type='text/css' media='all' />
256
+ <link rel='stylesheet' id='wp-components-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/components/style.css?ver=20.0.0' type='text/css' media='all' />
257
257
  <link rel='stylesheet' id='godaddy-styles-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/includes/Dependencies/GoDaddy/Styles/build/latest.css?ver=2.0.2' type='text/css' media='all' />
258
258
  <link rel='stylesheet' id='indieweb-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/indieweb/static/css/indieweb.css?ver=4.0.5' type='text/css' media='all' />
259
259
  <link rel='stylesheet' id='webmention-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/webmention/assets/css/webmention.css?ver=5.3.3' type='text/css' media='all' />
@@ -298,7 +298,7 @@ jQuery(function(jQuery){jQuery.datepicker.setDefaults({"closeText":"Close","curr
298
298
  <script type="text/javascript" src="https://c0.wp.com/c/6.7.1/wp-includes/js/jquery/ui/dialog.min.js" id="jquery-ui-dialog-js"></script>
299
299
  <script type="text/javascript" id="events-manager-js-extra">
300
300
  /* <![CDATA[ */
301
- var EM = {"ajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","locationajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php?action=locations_search","firstDay":"1","locale":"en","dateFormat":"yy-mm-dd","ui_css":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager\/includes\/css\/jquery-ui\/build.min.css","show24hours":"0","is_ssl":"1","autocomplete_limit":"10","calendar":{"breakpoints":{"small":560,"medium":908,"large":false}},"phone":"","datepicker":{"format":"Y-m-d"},"search":{"breakpoints":{"small":650,"medium":850,"full":false}},"url":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager","bookingInProgress":"Please wait while the booking is being submitted.","tickets_save":"Save Ticket","bookingajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","bookings_export_save":"Export Bookings","bookings_settings_save":"Save Settings","booking_delete":"Are you sure you want to delete?","booking_offset":"30","bookings":{"submit_button":{"text":{"default":"Submit Booking","free":"Submit Booking","payment":"Submit Booking - %s","processing":"Processing ..."}},"update_listener":""},"bb_full":"Sold Out","bb_book":"Book Now","bb_booking":"Booking...","bb_booked":"Booking Submitted","bb_error":"Booking Error. Try again?","bb_cancel":"Cancel","bb_canceling":"Canceling...","bb_cancelled":"Cancelled","bb_cancel_error":"Cancellation Error. Try again?","txt_search":"Search","txt_searching":"Searching...","txt_loading":"Loading...","cache":"1","api_nonce":"c092e79924","attendance_api_url":"https:\/\/opensource.org\/wp-json\/events-manager\/v1\/attendance"};
301
+ var EM = {"ajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","locationajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php?action=locations_search","firstDay":"1","locale":"en","dateFormat":"yy-mm-dd","ui_css":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager\/includes\/css\/jquery-ui\/build.min.css","show24hours":"0","is_ssl":"1","autocomplete_limit":"10","calendar":{"breakpoints":{"small":560,"medium":908,"large":false}},"phone":"","datepicker":{"format":"Y-m-d"},"search":{"breakpoints":{"small":650,"medium":850,"full":false}},"url":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager","bookingInProgress":"Please wait while the booking is being submitted.","tickets_save":"Save Ticket","bookingajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","bookings_export_save":"Export Bookings","bookings_settings_save":"Save Settings","booking_delete":"Are you sure you want to delete?","booking_offset":"30","bookings":{"submit_button":{"text":{"default":"Submit Booking","free":"Submit Booking","payment":"Submit Booking - %s","processing":"Processing ..."}},"update_listener":""},"bb_full":"Sold Out","bb_book":"Book Now","bb_booking":"Booking...","bb_booked":"Booking Submitted","bb_error":"Booking Error. Try again?","bb_cancel":"Cancel","bb_canceling":"Canceling...","bb_cancelled":"Cancelled","bb_cancel_error":"Cancellation Error. Try again?","txt_search":"Search","txt_searching":"Searching...","txt_loading":"Loading...","cache":"1","api_nonce":"78434fac4e","attendance_api_url":"https:\/\/opensource.org\/wp-json\/events-manager\/v1\/attendance"};
302
302
  /* ]]> */
303
303
  </script>
304
304
  <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager/includes/js/events-manager.js?ver=6.6.3" id="events-manager-js"></script>
@@ -836,7 +836,32 @@ form.customize-unpreviewable {
836
836
  .term-board-member .member-seat.inline-list{display: none;}
837
837
 
838
838
  .page-id-2549 .member-seat.inline-list{display: none;}
839
- </style>
839
+
840
+ .wp-block-osi-main-sponsors-list {
841
+ border:0 !important;
842
+ }
843
+
844
+ .alumni-board-grid {
845
+ display: grid;
846
+ grid-template-columns: repeat(3, 1fr); /* 3 columns */
847
+ gap: 20px; /* Space between grid items */
848
+ margin-top: 20px;
849
+ }
850
+
851
+ .alumni-board-grid .wp-block-post {
852
+ border: 1px solid #ddd;
853
+ border-radius: 10px;
854
+ padding: 15px;
855
+ text-align: center;
856
+ box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); /* Subtle shadow */
857
+ }
858
+
859
+ .alumni-board-grid .wp-block-post img {
860
+ max-width: 100%;
861
+ height: auto;
862
+ border-radius: 8px;
863
+ margin-bottom: 10px;
864
+ } </style>
840
865
  </head>
841
866
 
842
867
  <body data-cmplz=1 class="license-template-default single single-license postid-395 wp-custom-logo wp-embed-responsive jps-theme-osi">
@@ -983,7 +1008,6 @@ form.customize-unpreviewable {
983
1008
  <div class="widgetized-footer footer--widgets wp-block-columns alignwide">
984
1009
  <section class="wp-block-column widget block-17 widget_block"><div class="widget-inner">
985
1010
  <div class="wp-block-group is-layout-constrained wp-block-group-is-layout-constrained"><div class="widget widget_nav_menu"><h2 class="widgettitle">About</h2><div class="menu-about-container"><ul id="menu-about" class="menu"><li id="menu-item-5428" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5428"><a href="https://opensource.org/about">About</a></li>
986
- <li id="menu-item-71945" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-71945"><a href="https://opensource.org/about/team/vacancy-osi-policy-analyst-us">Vacancy: US Policy Analyst</a></li>
987
1011
  <li id="menu-item-17410" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17410"><a href="https://opensource.org/about/team">Our team</a></li>
988
1012
  <li id="menu-item-5430" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5430"><a href="https://opensource.org/associations">Associations</a></li>
989
1013
  <li id="menu-item-20858" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20858"><a href="https://opensource.org/sponsors">Sponsors</a></li>
@@ -1199,7 +1223,7 @@ var coblocksTinyswiper = {"carouselPrevButtonAriaLabel":"Previous","carouselNext
1199
1223
  /* ]]> */
1200
1224
  </script>
1201
1225
  <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/js/coblocks-tinyswiper-initializer.js?ver=3.1.14" id="coblocks-tinyswiper-initializer-js"></script>
1202
- <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.0.2" id="swv-js"></script>
1226
+ <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.0.3" id="swv-js"></script>
1203
1227
  <script type="text/javascript" id="contact-form-7-js-before">
1204
1228
  /* <![CDATA[ */
1205
1229
  var wpcf7 = {
@@ -1211,7 +1235,7 @@ var wpcf7 = {
1211
1235
  };
1212
1236
  /* ]]> */
1213
1237
  </script>
1214
- <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.0.2" id="contact-form-7-js"></script>
1238
+ <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.0.3" id="contact-form-7-js"></script>
1215
1239
  <script type="text/javascript" id="load_comments_js-js-extra">
1216
1240
  /* <![CDATA[ */
1217
1241
  var wpdc = {"commentsURL":"https:\/\/opensource.org\/wp-json\/wp-discourse\/v1\/discourse-comments"};
@@ -1227,37 +1251,37 @@ wp.jpI18nLoader.state = {"baseUrl":"https://opensource.org/wp-content/languages/
1227
1251
  <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/url/index.min.js?ver=499ac283dc628dfb623e" id="wp-url-js"></script>
1228
1252
  <script type="text/javascript" id="jetpack-instant-search-js-before">
1229
1253
  /* <![CDATA[ */
1230
- var JetpackInstantSearchOptions=JSON.parse(decodeURIComponent("%7B%22overlayOptions%22%3A%7B%22colorTheme%22%3A%22light%22%2C%22enableInfScroll%22%3Atrue%2C%22enableFilteringOpensOverlay%22%3Atrue%2C%22enablePostDate%22%3Atrue%2C%22enableSort%22%3Atrue%2C%22highlightColor%22%3A%22%23fdd7b9%22%2C%22overlayTrigger%22%3A%22submit%22%2C%22resultFormat%22%3A%22expanded%22%2C%22showPoweredBy%22%3Atrue%2C%22defaultSort%22%3A%22relevance%22%2C%22excludedPostTypes%22%3A%5B%22attachment%22%5D%7D%2C%22homeUrl%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%22%2C%22locale%22%3A%22en-US%22%2C%22postsPerPage%22%3A12%2C%22siteId%22%3A210318891%2C%22postTypes%22%3A%7B%22post%22%3A%7B%22singular_name%22%3A%22Post%22%2C%22name%22%3A%22Posts%22%7D%2C%22page%22%3A%7B%22singular_name%22%3A%22Page%22%2C%22name%22%3A%22Pages%22%7D%2C%22attachment%22%3A%7B%22singular_name%22%3A%22Media%22%2C%22name%22%3A%22Media%22%7D%2C%22supporter%22%3A%7B%22singular_name%22%3A%22Supporter%22%2C%22name%22%3A%22Supporters%22%7D%2C%22board-member%22%3A%7B%22singular_name%22%3A%22Board%20Member%22%2C%22name%22%3A%22Board%20Members%22%7D%2C%22license%22%3A%7B%22singular_name%22%3A%22License%22%2C%22name%22%3A%22Licenses%22%7D%2C%22meeting-minutes%22%3A%7B%22singular_name%22%3A%22Meeting%20Minutes%22%2C%22name%22%3A%22Meeting%20Minutes%22%7D%2C%22press-mentions%22%3A%7B%22singular_name%22%3A%22Press%20mentions%22%2C%22name%22%3A%22Press%20mentions%22%7D%7D%2C%22webpackPublicPath%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-content%5C%2Fplugins%5C%2Fjetpack%5C%2Fjetpack_vendor%5C%2Fautomattic%5C%2Fjetpack-search%5C%2Fbuild%5C%2Finstant-search%5C%2F%22%2C%22isPhotonEnabled%22%3Atrue%2C%22isFreePlan%22%3Afalse%2C%22apiRoot%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-json%5C%2F%22%2C%22apiNonce%22%3A%22c092e79924%22%2C%22isPrivateSite%22%3Afalse%2C%22isWpcom%22%3Afalse%2C%22hasOverlayWidgets%22%3Atrue%2C%22widgets%22%3A%5B%7B%22filters%22%3A%5B%7B%22name%22%3A%22Post%20Types%22%2C%22type%22%3A%22post_type%22%2C%22count%22%3A6%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22post_type_0%22%7D%2C%7B%22name%22%3A%22Categories%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22category%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_1%22%7D%2C%7B%22name%22%3A%22Tags%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22post_tag%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_2%22%7D%2C%7B%22name%22%3A%22Year%22%2C%22type%22%3A%22date_histogram%22%2C%22count%22%3A5%2C%22field%22%3A%22post_date%22%2C%22interval%22%3A%22year%22%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22date_histogram_3%22%7D%5D%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%7D%5D%2C%22widgetsOutsideOverlay%22%3A%5B%5D%2C%22hasNonSearchWidgets%22%3Afalse%2C%22preventTrackingCookiesReset%22%3Afalse%7D"));
1254
+ var JetpackInstantSearchOptions=JSON.parse(decodeURIComponent("%7B%22overlayOptions%22%3A%7B%22colorTheme%22%3A%22light%22%2C%22enableInfScroll%22%3Atrue%2C%22enableFilteringOpensOverlay%22%3Atrue%2C%22enablePostDate%22%3Atrue%2C%22enableSort%22%3Atrue%2C%22highlightColor%22%3A%22%23fdd7b9%22%2C%22overlayTrigger%22%3A%22submit%22%2C%22resultFormat%22%3A%22expanded%22%2C%22showPoweredBy%22%3Atrue%2C%22defaultSort%22%3A%22relevance%22%2C%22excludedPostTypes%22%3A%5B%22attachment%22%5D%7D%2C%22homeUrl%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%22%2C%22locale%22%3A%22en-US%22%2C%22postsPerPage%22%3A12%2C%22siteId%22%3A210318891%2C%22postTypes%22%3A%7B%22post%22%3A%7B%22singular_name%22%3A%22Post%22%2C%22name%22%3A%22Posts%22%7D%2C%22page%22%3A%7B%22singular_name%22%3A%22Page%22%2C%22name%22%3A%22Pages%22%7D%2C%22attachment%22%3A%7B%22singular_name%22%3A%22Media%22%2C%22name%22%3A%22Media%22%7D%2C%22supporter%22%3A%7B%22singular_name%22%3A%22Supporter%22%2C%22name%22%3A%22Supporters%22%7D%2C%22board-member%22%3A%7B%22singular_name%22%3A%22Board%20Member%22%2C%22name%22%3A%22Board%20Members%22%7D%2C%22license%22%3A%7B%22singular_name%22%3A%22License%22%2C%22name%22%3A%22Licenses%22%7D%2C%22meeting-minutes%22%3A%7B%22singular_name%22%3A%22Meeting%20Minutes%22%2C%22name%22%3A%22Meeting%20Minutes%22%7D%2C%22press-mentions%22%3A%7B%22singular_name%22%3A%22Press%20mentions%22%2C%22name%22%3A%22Press%20mentions%22%7D%7D%2C%22webpackPublicPath%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-content%5C%2Fplugins%5C%2Fjetpack%5C%2Fjetpack_vendor%5C%2Fautomattic%5C%2Fjetpack-search%5C%2Fbuild%5C%2Finstant-search%5C%2F%22%2C%22isPhotonEnabled%22%3Atrue%2C%22isFreePlan%22%3Afalse%2C%22apiRoot%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-json%5C%2F%22%2C%22apiNonce%22%3A%2278434fac4e%22%2C%22isPrivateSite%22%3Afalse%2C%22isWpcom%22%3Afalse%2C%22hasOverlayWidgets%22%3Atrue%2C%22widgets%22%3A%5B%7B%22filters%22%3A%5B%7B%22name%22%3A%22Post%20Types%22%2C%22type%22%3A%22post_type%22%2C%22count%22%3A6%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22post_type_0%22%7D%2C%7B%22name%22%3A%22Categories%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22category%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_1%22%7D%2C%7B%22name%22%3A%22Tags%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22post_tag%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_2%22%7D%2C%7B%22name%22%3A%22Year%22%2C%22type%22%3A%22date_histogram%22%2C%22count%22%3A5%2C%22field%22%3A%22post_date%22%2C%22interval%22%3A%22year%22%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22date_histogram_3%22%7D%5D%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%7D%5D%2C%22widgetsOutsideOverlay%22%3A%5B%5D%2C%22hasNonSearchWidgets%22%3Afalse%2C%22preventTrackingCookiesReset%22%3Afalse%7D"));
1231
1255
  /* ]]> */
1232
1256
  </script>
1233
- <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/jp-search.js?minify=false&amp;ver=986418c32752bbc685a0" id="jetpack-instant-search-js"></script>
1234
- <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="//stats.wp.com/w.js?ver=202502" id="jp-tracks-js"></script>
1257
+ <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/jp-search.js?minify=false&amp;ver=da5ecd9f722e7fcb409e" id="jetpack-instant-search-js"></script>
1258
+ <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="//stats.wp.com/w.js?ver=202504" id="jp-tracks-js"></script>
1235
1259
  <script type="text/javascript" id="osi-theme-scripts-js-before">
1236
1260
  /* <![CDATA[ */
1237
1261
  const OSI_LICENSE_DB = {"ajaxURL":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","action":"osi_license_db"}
1238
1262
  /* ]]> */
1239
1263
  </script>
1240
1264
  <script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/themes/osi/assets/js/build/theme.js?ver=1724798073" id="osi-theme-scripts-js"></script>
1241
- <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="https://stats.wp.com/e-202502.js" id="jetpack-stats-js" data-wp-strategy="defer"></script>
1265
+ <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="https://stats.wp.com/e-202504.js" id="jetpack-stats-js" data-wp-strategy="defer"></script>
1242
1266
  <script type="text/javascript" id="jetpack-stats-js-after">
1243
1267
  /* <![CDATA[ */
1244
1268
  _stq = window._stq || [];
1245
- _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"210318891\",\"post\":\"395\",\"tz\":\"0\",\"srv\":\"opensource.org\",\"hp\":\"atomic\",\"ac\":\"3\",\"amp\":\"0\",\"j\":\"1:14.2-a.9\"}") ]);
1269
+ _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"210318891\",\"post\":\"395\",\"tz\":\"0\",\"srv\":\"opensource.org\",\"hp\":\"atomic\",\"ac\":\"3\",\"amp\":\"0\",\"j\":\"1:14.3-a.1\"}") ]);
1246
1270
  _stq.push([ "clickTrackerInit", "210318891", "395" ]);
1247
1271
  /* ]]> */
1248
1272
  </script>
1249
1273
  <script type="text/javascript" id="cmplz-cookiebanner-js-extra">
1250
1274
  /* <![CDATA[ */
1251
- var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"63","version":"7.1.5","store_consent":"","do_not_track_enabled":"1","consenttype":"optin","region":"eu","geoip":"","dismiss_timeout":"","disable_cookiebanner":"1","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https:\/\/opensource.org\/wp-json\/complianz\/v1\/","locale":"lang=en&locale=en_US","set_cookies_on_root":"","cookie_domain":"","current_policy_id":"16","cookie_path":"\/","categories":{"statistics":"statistics","marketing":"marketing"},"tcf_active":"","placeholdertext":"Click to accept {category} cookies and enable this content","css_file":"https:\/\/opensource.org\/wp-content\/uploads\/complianz\/css\/banner-{banner_id}-{type}.css?v=63","page_links":{"eu":{"cookie-statement":{"title":"","url":"https:\/\/opensource.org\/license\/wxwindows-php"}}},"tm_categories":"","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Click to accept {category} cookies and enable this content"};
1275
+ var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"67","version":"7.2.0","store_consent":"","do_not_track_enabled":"1","consenttype":"optin","region":"eu","geoip":"","dismiss_timeout":"","disable_cookiebanner":"1","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https:\/\/opensource.org\/wp-json\/complianz\/v1\/","locale":"lang=en&locale=en_US","set_cookies_on_root":"","cookie_domain":"","current_policy_id":"16","cookie_path":"\/","categories":{"statistics":"statistics","marketing":"marketing"},"tcf_active":"","placeholdertext":"Click to accept {category} cookies and enable this content","css_file":"https:\/\/opensource.org\/wp-content\/uploads\/complianz\/css\/banner-{banner_id}-{type}.css?v=67","page_links":{"eu":{"cookie-statement":{"title":"","url":"https:\/\/opensource.org\/license\/mpl-2-0"}}},"tm_categories":"","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Click to accept {category} cookies and enable this content"};
1252
1276
  /* ]]> */
1253
1277
  </script>
1254
- <script defer type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/cookiebanner/js/complianz.min.js?ver=1731609560" id="cmplz-cookiebanner-js"></script>
1278
+ <script defer type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/cookiebanner/js/complianz.min.js?ver=1736534359" id="cmplz-cookiebanner-js"></script>
1255
1279
 
1256
- <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8fd8ac9b6b1a57c4',t:'MTczNjEzNDY5Ni4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1280
+ <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'904bff211d5c07c8',t:'MTczNzM0MzkzOC4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1257
1281
  </html>
1258
1282
  <!--
1259
- generated 25 seconds ago
1260
- generated in 0.577 seconds
1261
- served from batcache in 0.002 seconds
1262
- expires in 275 seconds
1283
+ generated 4 seconds ago
1284
+ generated in 0.499 seconds
1285
+ served from batcache in 0.003 seconds
1286
+ expires in 296 seconds
1263
1287
  -->
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@effekt-lang/effekt",
3
3
  "author": "Jonathan Brachthäuser",
4
- "version": "0.16.0",
4
+ "version": "0.18.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/effekt-lang/effekt.git"