sharjeelyunus/github-issues-dataset huggingface dataset:
Repository: TypeScript
Issue: Narrowing empty string or false in generic misbehaves
Labels: Help Wanted,Possible Improvement

### 🔎 Search Terms

generic, narrowing, empty string, false, falsy

### 🕗 Version & Regression Information

This is the behavior in every version I tried, but it seems to behave a little worse with TS v4.2.3 and prior.


### ⏯ Playground Link

https://www.typescriptlang.org/play?ts=5.5.0-dev.20240417#code/GYVwdgxgLglg9mABKSBGAPAFUQUwB5Q5gAmAzomCALYBGOATogD4UgA2bzi4xOwMYHMS7AAhm1I4uAcmkA+ABR4AXK1oMumAJSIA3gCgAkPRxQQ9JHmYsefAUIDc+gL76U0eEncAmLLgJEZGp0jCyUHFy2-ILCLGISUiyyiirBGizaekYmZhaIVgD8+YhyiAAMiEVWqgC01flOru6wCMjgEADMfviEJOSU6qGsETYkdjEi4pIy8kqqAyGaOgbGpuaWlYgAsqJQABYAdKI0pEo6qniN+voQCKRQ+fPUi6O80UKIALxtaAqyWk5bmB7ogAJ5fH4QbwKGodAE3O4PABeEPcHRhcIcQA

### 💻 Code

```ts
function func1<T extends number | null | undefined | false | ''>(x: number | T) {
	return x || undefined;
}
function func2<T extends number | null | undefined | false | ''>(x: number | T) {
	return x ? x > 0 ? x : -x : x;
}
function func3<T extends number | null | undefined | false | ''>(x: number | T) {
	return x ? Math.abs(x) : x;
}

const x: number | undefined = func1('');
const y = func2(-3);
const z = func3(-3);
```

### 🙁 Actual behavior

The inferred return type of `func1` can contain `false` or `''` depending on `T`. It's wrong because `x || undefined` can never result in `false` or `''` and thus should not be in the resulting type.

`func2` fails type checking: `Operator '>' cannot be applied to types 'number | NonNullable<T>' and 'number'.`. It's wrong because the truthiness check should narrow `x` to `number`. (Note that `func3` succeeds type checking because the signature of `Math.abs` seems to provide supplemental information which narrows `x` to `number`.)

### 🙂 Expected behavior

The inferred return type of `func1` is should `number | undefined`, regardless of `T`.

`func2` is expected to pass type checking, `x` having been narrowed to `number` with the truthiness check.

### Additional information about the issue

All functions act 'correctly' if defined without the use of generics, but it's inadequate because the return type of `func2` and `func3` would always be `number | null | undefined | false | ''` regardless of argument type.

My actual use case is creating functions that transform numeric inputs and propagate falsy values. I've worked around this issue using type assertions in spots where narrowing misbehaves.
Repository: PowerToys
Issue: Programmatically add keyboard remappings for Keyboard Manager
Labels: Idea-Enhancement,Product-Keyboard Shortcut Manager,Needs-Triage

### Description of the new feature / enhancement

There could be some way to import a JSON file, a CSV file, or an export from a .SQL file into Keyboard Manager so you don't have to manually add every keyboard shortcut.

### Scenario when this would be used?

This would be useful when you have a lot of keyboard shortcuts you would like to add quickly and you don't want to click with the mouse and you want to just run a script.

### Supporting information

I have a database of keyboard combinations.
[keyboard_shortcut_51bf5d42_8560_41e6_99fd_d5dffe2ebb4c_20240417_174918.sql.txt](https://github.com/microsoft/PowerToys/files/15017412/keyboard_shortcut_51bf5d42_8560_41e6_99fd_d5dffe2ebb4c_20240417_174918.sql.txt)
Repository: next.js
Issue: Client Router Cache Caching Errors
Labels: bug

### Link to the code that reproduces this issue

https://github.com/cjonesdoordash/next-router-cache-issue

### To Reproduce

1. Start the application in production mode
2. Hit the url localhost:3000/success-page
3. Click the link to hit failure page and notice the error content gets displayed and you get a request to `/failure-page?rsc=some-value` noting that you hit the server.
4. Click the link to hit success page and notice you don't see see an outgoing request to `/success-page?rsc=some-value` noting that you hit the router cache.
5. Click the link to hit the failure page and notice you also don't see an outgoing request to `/failure-page?rsc=some-value` noting you hit the router cache which cached a page with a failure in the RSC response.

### Current vs. Expected behavior

Server components with failures don't get cached by the client-side router cache

### Provide environment information

```bash
Operating System:
  Platform: darwin
  Arch: x64
  Version: Darwin Kernel Version 23.4.0: Fri Mar 15 00:11:05 PDT 2024; root:xnu-10063.101.17~1/RELEASE_X86_64
  Available memory (MB): 32768
  Available CPU cores: 16
Binaries:
  Node: 18.17.0
  npm: 9.6.7
  Yarn: 1.22.5
  pnpm: 8.10.0
Relevant Packages:
  next: 14.2.1 // Latest available version is detected (14.2.1).
  eslint-config-next: N/A
  react: 18.2.0
  react-dom: 18.2.0
  typescript: 5.1.3
Next.js Config:
  output: N/A
```


### Which area(s) are affected? (Select all that apply)

Runtime

### Which stage(s) are affected? (Select all that apply)

next build (local), Other (Deployed)

### Additional context

Note this is using 14.2.1 - I tried running this against latest canary and my `error.tsx` file was never able to be displayed no matter what I tried, which seems like some other potential bug.
Repository: ui
Issue: [bug]: Input component can't handle type tel and pattern
Labels: bug

### Describe the bug

Input component can't handle type tel and pattern. I can type letters on it even type is tel.

<div className="grid gap-2">
 <Label htmlFor="phoneNumber">Phone number</Label>
  <Input
   id="phoneNumber"
   type="tel"
   pattern="[0-9]*"
   placeholder="90842600"
   name="phoneNumber"
   value={formData.phoneNumber}
   onChange={handleChange}
 />
</div>

### Affected component/components

import { Input } from "@/app/components/shadcn/ui/input";

### How to reproduce

Use input component on page like this template then write letter on it.
<div className="grid gap-2">
 <Label htmlFor="phoneNumber">Phone number</Label>
  <Input
   id="phoneNumber"
   type="tel"
   pattern="[0-9]*"
   placeholder="90842600"
   name="phoneNumber"
   value={formData.phoneNumber}
   onChange={handleChange}
 />
</div>

### Codesandbox/StackBlitz link

_No response_

### Logs

_No response_

### System Info

```bash
OS Name	Microsoft Windows 11 Pro
Version	10.0.22631 Build 22631
```


### Before submitting

- [X] I've made research efforts and searched the documentation
- [X] I've searched for existing issues
Repository: pytorch
Issue: PreDispatch tracing doesn't produce correct "val" for Sparse Fake tensors.
Labels: oncall: export,module: pt2-dispatcher

### 🐛 Describe the bug

```python
from torch._functorch.aot_autograd import aot_export_module

class M(torch.nn.Module):
    def __init__(self):
        super().__init__()

    def forward(self, x):
        return (torch.ops.aten._to_sparse.sparse_dim(x, 1),)

gm, _ = aot_export_module(M(), [torch.randn(5, 5),], trace_joint=False, pre_dispatch=True)
for node in gm.graph.nodes:
    if node.op == "call_function":
        print(node.meta["val"] if "val" in node.meta else None)
# prints 
tensor(indices=tensor(..., size=(1, 0)),
       values=tensor(..., size=(0, 5)),
       device='meta', size=(5, 5), layout=torch.sparse_coo)
```

### Versions

main

cc @avikchaudhuri @gmagogsfm @zhxchen17 @angelayi @suo @ydwu4 @zou3519 @bdhirsh
Repository: next.js
Issue: Querying LDAP database VIA route handler having issues in build but not dev
Labels: bug

### Link to the code that reproduces this issue

https://github.com/boncz92/nextjsLdapissue

### To Reproduce

To reproduce issue
1. run 'npm i'
2. run 'npm run build'
3. run 'npm run start'
4. Hit the endpoint with postman (front end is irrelevant for this report)


To see that it works in dev
1. run 'npm i'
2. run 'npm run dev'
3. Hit endpoint with postman

### Current vs. Expected behavior

I would expect the build version to work the same way the development version does.

### Provide environment information

```bash
Operating System:
  Platform: win32
  Arch: x64
  Version: Windows 11 Pro
  Available memory (MB): 65350
  Available CPU cores: 28
Binaries:
  Node: 20.12.2
  npm: N/A
  Yarn: N/A
  pnpm: N/A
Relevant Packages:
  next: 14.2.1 // Latest available version is detected (14.2.1).
  eslint-config-next: 14.2.1
  react: 18.2.0
  react-dom: 18.2.0
  typescript: 5.4.5
Next.js Config:
  output: N/A


This has also been tested on RHEL linux, and Ubuntu
```


### Which area(s) are affected? (Select all that apply)

Not sure, Testing

### Which stage(s) are affected? (Select all that apply)

next dev (local), next build (local), next start (local)

### Additional context

The repository is using a publicly available ldap database to maintain reproducability.
Repository: vscode
Issue: Light HC theme "prominent" status bar items are low contrast
Labels: bug,themes

Testing adding a status bar entry in core:

```ts
		const statusbarEntry: IStatusbarEntry = {
			name: localize('terminalDevMode', 'Terminal Dev Mode'),
			text: `$(terminal) ${localize('ptyHostStatus.short', 'test')}`,
			// tooltip: localize('nonResponsivePtyHost', "The connection to the terminal's pty host process is unresponsive, terminals may stop working. Click to manually restart the pty host."),
			ariaLabel: localize('ptyHostStatus.ariaLabel', 'test'),
			// command: TerminalCommandId.RestartPtyHost,
			kind: 'prominent'
		};
		this._statusbarService.addEntry(statusbarEntry, 'terminal.promptInput', StatusbarAlignment.LEFT);
```

Shows this:

<img width="546" alt="Screenshot 2024-04-17 at 3 56 30 PM" src="https://github.com/microsoft/vscode/assets/2193314/df62f216-91de-4291-8737-0bb8202fed23">
Repository: godot
Issue: Anti aliasing on second viewport causes white edges
Labels: bug,topic:rendering

### Tested versions

Lastest version.

### System information

Godot v4.2.1.stable - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 4070 Ti (NVIDIA; 31.0.15.5186) - AMD Ryzen 7 5800X3D 8-Core Processor (16 Threads)

### Issue description

When using a main viewport and a secondary to draw 3D models and enabling anti aliasing on the second one. The edges of the 3D models white-out on different angles of the light.



### Steps to reproduce

Create a SubViewport. Add 3d Model to a camera. Enable anti aliasing on the viewport.

https://imgur.com/tNIj7cX
https://i.imgur.com/mTdHzy8.png
https://i.imgur.com/QXZ6zho.png

### Minimal reproduction project (MRP)

[Test.zip](https://github.com/godotengine/godot/files/15017808/Test.zip)
Repository: godot
Issue: PackedScene won't save nodes added to non-root nodes
Labels: bug,topic:core

### Tested versions

v4.2.stable.official [46dc27791]

### System information

Godot v4.2.stable - Windows 10.0.22631 - GLES3 (Compatibility) - Intel(R) Iris(R) Plus Graphics (Intel Corporation; 27.20.100.9664) - Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz (8 Threads)

### Issue description

When saving with `PackedScene.pack()`, child nodes that are added at run time to nodes which are not the root of a scene will not be saved regardless of what owner they have.

Code in MRP:
```
func _on_button_add_feather_pressed():
	for c in get_children():
		if c.scene_file_path == "res://duck.tscn":
			var label = c.find_child("Sprite2D")
			
			var new1 = scn_feather.instantiate()
			var new2 = scn_feather.instantiate()
			
			c.add_child(new1) ##this adds the node to the root of duck.tscn
			new1.text = "this will be saved"
			
			label.add_child(new2) ##this adds the node to a non-root node inside duck.tscn
			new2.text = "this won't be saved"
```
Note that in the MRP, the `owner` of all saved nodes is set by a recursive call in main.gd, but the exact way the owner is set does not matter.

### Steps to reproduce

with MRP:
1. open and run
2. click "make pond"
3. click "spawn ducks" on the pond
4. click "add feather" on the pond
5. click "save" then "load"
6. you will see that the feather (label) added to the root of duck.tscn will appear in the copy but the feather added to the sprite of the duck will not.

### Minimal reproduction project (MRP)

[PackedScene save test.zip](https://github.com/godotengine/godot/files/15018162/PackedScene.save.test.zip)
Repository: pytorch
Issue: Inconsistent argument parsing behavior for torch.ops bindings between Tensor and FakeTensor
Labels: triaged,oncall: pt2,module: dynamic shapes

### 🐛 Describe the bug

I actually think people have noticed this and worked around it.

This program passes:

```
import torch
import torch.ao.quantization.fx._decomposed
import torch._dynamo.config

torch._dynamo.config.capture_scalar_outputs = True

#@torch.compile(fullgraph=True)
def f(x, y, z):
    return torch.ops.aten.dropout(x, y, True)
    #return torch.ops.quantized_decomposed.quantize_per_tensor(x, y, z, 0, 10, torch.uint8)

f(torch.randn(10), torch.tensor(0.5, dtype=torch.float64), torch.tensor(0, dtype=torch.int64))
```

If you uncomment torch.compile, it fails with:

```
torch._dynamo.exc.TorchRuntimeError: Failed running call_function aten.dropout(*(FakeTensor(..., size=(10,)), FakeTensor(..., size=(), dtype=torch.float64), True), **{}):
aten::dropout() Expected a value of type 'float' for argument 'p' but instead found type 'FakeTensor'.
Position: 1
Value: FakeTensor(..., size=(), dtype=torch.float64)
Declaration: aten::dropout(Tensor input, float p, bool train) -> Tensor
Cast error details: Unable to cast Python instance of type <class 'torch._subclasses.fake_tensor.FakeTensor'> to C++ type '?' (#define PYBIND11_DETAILED_ERROR_MESSAGES or compile in debug mode for details)
```

The reason it fails is an incredibly funny rube goldberg machine. What happens is that when we are expecting a float argument, we attempt to convert any given argument into float via PyFloat_AsDouble (via pybind11 type caster). This goes to THPVariable_float_scalar. This is implemented in two steps. First, we call item() on the tensor and with capture_scalar_outputs, we dutifully return an unbacked SymFloat packaged in a Scalar. Next, we try to convert it into a C double, which fails, because this would specialize the unbacked SymFloat but we don't know what the real value is.

In the example above, this ends up leading to a user visible error. However, in the other example quantize_per_tensor, we have an alternate overload that accepts Tensors. So the error ends up getting swallowed and we eventually get to the right overload (but not without having allocated some useless unbacked symfloats in the meantime).

### Versions

main

cc @msaroufim @bdhirsh @anijain2305 @chauhang
Repository: godot
Issue: Collapsing a func that ends in a region shows #endregion
Labels: bug,topic:editor,topic:gui

### Tested versions

- Reproducible in Godot 4.2.1

### System information

Windows 11 - Godot 4.2.1 stable - Compatibility render

### Issue description

Using GDScript, collapsing a function that ends in a region returns #endregion

### Steps to reproduce

func test():
#region Test
	print_debug("hi")
#endregion

-> then collapse the func

### Minimal reproduction project (MRP)

N/A
Repository: PowerToys
Issue: Prevent Command Not Found creating an empty $PROFILE unless installed
Labels: Issue-Bug,Needs-Triage,Product-CommandNotFound

### Microsoft PowerToys version

0.80.1

### Installation method

PowerToys auto-update, Microsoft Store

### Running as admin

Yes

### Area(s) with issue?

Command not found

### Steps to reproduce

With a non-existent `$PROFILE`, open the "Command Not Found" page of the PowerToys app.

### ✔️ Expected Behavior

PowerToys checks whether the module is installed without changing `$PROFILE`.

### ❌ Actual Behavior

PowerToys creates an empty profile at `$PROFILE` if it doesn't exist.

![](https://github.com/microsoft/PowerToys/assets/7352580/79d17ab3-6e1d-4ea2-8b6d-5865dd2d3516)

The check script should terminate immediately if `$PROFILE` doesn't exist 👇. No `$PROFILE` = not installed 💁.

https://github.com/microsoft/PowerToys/blob/31df322f706af94c8ac5ea04f1cdbe744493336b/src/settings-ui/Settings.UI/Assets/Settings/Scripts/CheckCmdNotFoundRequirements.ps1#L23-L28

### Other Software

_No response_
Repository: next.js
Issue: multi set-cookie merged into one header when cookie name is same
Labels: bug,Runtime

### Link to the code that reproduces this issue

https://github.com/yeliex/stackblitz-starters-kfmrzz

### To Reproduce

```
yarn
yarn dev
```

then open `${host}/api/test`, open dev-tools or read terminal output, you would find `set-cookie` headers.

### Current vs. Expected behavior

### Expected
```
set-cookie: session=1713406956812; Path=/; Domain=.example1.com; Secure; HttpOnly; SameSite=none
set-cookie: session=1713406956812; Path=/; Domain=.example2.com; Secure; HttpOnly; SameSite=none
```

### Current
```
## server response
set-cookie: session=1713406956812; Path=/; Domain=.example1.com; Secure; HttpOnly; SameSite=none, session=1713406956812; Path=/; Domain=.example2.com; Secure; HttpOnly; SameSite=none

## dev-tools response header
Set-Cookie: session=1713407480483; Path=/; Domain=.example2.com; Secure; HttpOnly; SameSite=none
```

### Provide environment information

```bash
Operating System:
  Platform: linux
  Arch: x64
  Version: #1 SMP PREEMPT_DYNAMIC Sun Aug  6 20:05:33 UTC 2023
  Available memory (MB): 4102
  Available CPU cores: 2
Binaries:
  Node: 20.12.0
  npm: 10.5.0
  Yarn: 1.22.19
  pnpm: 8.15.6
Relevant Packages:
  next: 14.3.0-canary.9 // Latest available version is detected (14.3.0-canary.9).
  eslint-config-next: N/A
  react: 18.2.0
  react-dom: 18.2.0
  typescript: 5.2.2
Next.js Config:
  output: N/A
```


### Which area(s) are affected? (Select all that apply)

Not sure

### Which stage(s) are affected? (Select all that apply)

next dev (local), Other (Deployed)

### Additional context

when set multi cookie with same name, it would merged into one `set-cookie` header, then when response to client, only the last one remains
Repository: ollama
Issue: i cant't convert chatglm model to GGUF format,how can i run a chatglm model local?
Labels: model request

hi,
i cant't convert chatglm model to GGUF format,how can i run a chatglm model local?
Repository: godot
Issue: Invalid java SDK path in Editor Settings.Missing 'bin' directory!
Labels: discussion,topic:editor,regression,topic:export

### Tested versions

- Reproducible in Godot 4.2.2 (Linux)
- Not reproducible in Goodot 4.2.1 (Linux)

### System information

Ubuntu 23.10

### Issue description

Error "Invalid java SDK path in Editor Settings.Missing 'bin' directory!" with exporting game to Android, but all java paths a same as Godot 4.2.1 and have no problem to export.

Problem only with 4.2.2 version.

### Steps to reproduce

1. Download Godot 4.2.2 for Linux
2. Try export game to Android

### Minimal reproduction project (MRP)

![2024-04-17 22-15-03](https://github.com/godotengine/godot/assets/63397434/b38a76c9-18f8-4872-8fc5-f0a0fd152a17)
![2024-04-17 22-14-26](https://github.com/godotengine/godot/assets/63397434/e2010a6e-dfa5-49ed-8987-5cc6b5b3e304)
Repository: flutter
Issue: [gen_l10n] Incorrect Traditional Chinese characters in the same locale with different devices
Labels: e: device-specific,platform-android,tool,a: internationalization,P2,team-tool,triaged-tool

### Steps to reproduce

1.  Generate the localization by `flutter gen-l10n` with `app_en.arb` and `app_zh_Hant_HK.arb`.
    ``` dart
    static const List<Locale> supportedLocales = <Locale>[
     Locale('en'),
     Locale('zh'),
     Locale.fromSubtags(languageCode: 'zh', countryCode: 'HK', scriptCode: 'Hant')
    ];
    ```

2. Modify the build function as below.
   ``` dart
   return Scaffold(
     appBar: AppBar(
       title: const Text('Chinese Character'),
     ),
     body: const Column(
       mainAxisAlignment: MainAxisAlignment.center,
       children: <Widget>[
         Text(
           '亮 滑 以 角 沒 過 化 骨 麵 廣 房 空 ， 。',
           locale: Locale.fromSubtags(
               languageCode: 'zh', scriptCode: 'Hant', countryCode: 'HK'),
           style: TextStyle(fontSize: 60),
         ),
       ],
     ),
   );
   ```

3. Get the result as below. Android device got the correct Traditional Chinese characters but not Huawei device.

4. You may take this for your reference. 
    Top: Standard for Taiwan and Hong Kong
    Below: Standard for China
    <img src="https://github.com/flutter/flutter/assets/14847957/3624c613-2bf1-471f-8bb7-0903a4ae7277" alt="TW_CN_COMPARISON_correct" width="400"/>

**Huawei Device information**
- model: FOA-AL00
- version: HarmonyOS 4.0.0
- build: .apk


### Expected results

Android device got the correct Traditional Chinese characters.
<img src="https://github.com/flutter/flutter/assets/14847957/377b688d-766d-432c-9f69-6a161a455a6d" alt="Screenshot_20240418_114146" width="200"/>


### Actual results

Huawei device cannot got the correct Traditional Chinese characters.
<img src="https://github.com/flutter/flutter/assets/14847957/b51d31bc-b0df-4a77-be7c-2059f4335093" alt="Screenshot_20240418_114256" width="200"/>


### Code sample

``` dart
return Scaffold(
  appBar: AppBar(
    title: const Text('Chinese Character'),
  ),
  body: const Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
      Text(
        '亮 滑 以 角 沒 過 化 骨 麵 廣 房 空 ， 。',
        locale: Locale.fromSubtags(
            languageCode: 'zh', scriptCode: 'Hant', countryCode: 'HK'),
        style: TextStyle(fontSize: 60),
      ),
    ],
  ),
);
```

### Screenshots or Video

_No response_

### Logs

_No response_

### Flutter Doctor output

<details open><summary>Doctor output</summary>

```console
[✓] Flutter (Channel stable, 3.19.5, on macOS 14.4 23E214 darwin-arm64, locale en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
[✓] Android Studio (version 2023.2)
[✓] IntelliJ IDEA Community Edition (version 2023.2.6)
[✓] VS Code (version 1.88.1)
[✓] Connected device (3 available)
[✓] Network resources

• No issues found!
```

</details>
Repository: vscode
Issue: Unable to resize with mouse, right half of window not clickable Ubuntu 24.04
Labels: bug,help wanted,upstream,electron,wayland

Same symptoms as in #188407 that go away with `code --ozone-platform=wayland`

>  any attempt to resize the application window larger, or click maximize, results in the application appearing to be fullscreen, but any space larger than the original window the app opened in is unclickable. If another window is behind the app in that space, it will click whatever is behind it. Tried this using VS Code from the Ubuntu Software app (snap), and same result using the .deb binary downloaded directly from Microsoft. No extensions installed, happens with fresh install.

<!-- ⚠️⚠️ Do Not Delete This! bug_report_template ⚠️⚠️ -->
<!-- Please read our Rules of Conduct: https://opensource.microsoft.com/codeofconduct/ -->
<!-- 🕮 Read our guide about submitting issues: https://github.com/microsoft/vscode/wiki/Submitting-Bugs-and-Suggestions -->
<!-- 🔎 Search existing issues to avoid creating duplicates. -->
<!-- 🧪 Test using the latest Insiders build to see if your issue has already been fixed: https://code.visualstudio.com/insiders/ -->
<!-- 💡 Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. -->
<!-- 🔧 Launch with `code --disable-extensions` to check. -->
Does this issue occur when all extensions are disabled?: Yes/No

<!-- 🪓 If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. -->
<!-- 📣 Issues caused by an extension need to be reported directly to the extension publisher. The 'Help > Report Issue' dialog can assist with this. -->
- VS Code Version: 1.88.1
- OS Version: Ubuntu 24.04

Steps to Reproduce:

not sure